当前位置: 首页>>代码示例>>C#>>正文


C# Player.heal方法代码示例

本文整理汇总了C#中WorldServer.player.Player.heal方法的典型用法代码示例。如果您正苦于以下问题:C# Player.heal方法的具体用法?C# Player.heal怎么用?C# Player.heal使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在WorldServer.player.Player的用法示例。


在下文中一共展示了Player.heal方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: newMagicAttack


//.........这里部分代码省略.........
            Combat.setSkull(p, target);
            if (damage > 0) {
                frozen = freezeTarget(index, target);
                if (!frozen && index == 31) {
                    endGfx = 1677;
                }
            }
            if (AIR_GFX[index] != -1 || ((index == 31 || index == 27) && target is Player && ((Player)target).getWalkingQueue().isRunning())) {
                sendProjectile(index, target, p);
            }
            if (damage > target.getHp()) {
                damage = target.getHp();
            }
            if (index == 47 && misc.random(2) == 0) {
                endGfx = 85;
            }
            Combat.checkIfWillDie(target, damage);
            Event doMagicAttackEvent = new Event(getSpellHitDelay(index));
            doMagicAttackEvent.setAction(() => {
                doMagicAttackEvent.stop();
                if (p == null || p.isDead() || !fakeNPC && (target.isDead() || target.isHidden() || target.isDestroyed())) {
                    return;
                }
                if (target.isAutoRetaliating() && target.getTarget() == null && damage > 0) {
                    if (target is Npc) {
                    } else {
                        if (((Player) target).getTemporaryAttribute("autoCastSpell") != null) {
                            int autoCastSpell = (int)((Player) target).getTemporaryAttribute("autoCastSpell");
                            ((Player) target).setTemporaryAttribute("autoCasting", true);
                            target.setTarget(p);
                            MagicCombat.newMagicAttack((Player) target, p, autoCastSpell, ((Player) target).getTemporaryAttribute("autoCastAncients") != null);
                        }
                    }
                    target.getFollow().setFollowing(p);
                    target.setEntityFocus(p.getClientIndex());
                    if ((target.getCombatTurns() <= (target.getAttackSpeed() / 2) || target.getCombatTurns() >= (target.getAttackSpeed()))) {
                        target.setCombatTurns(target.getAttackSpeed() / 2);
                    }
                    target.setTarget(p);
                    if (target is Player) {
                        ((Player) target).getWalkingQueue().resetWalkingQueue();
                        ((Player) target).getPackets().clearMapFlag();
                    }
                }
                addMagicXp(p, target, damage, index, true);
                target.setLastGraphics(new Graphics(endGfx, 0, getGroundHeight(index, endGfx)));
                if (index == 47 && endGfx != 85) { // teleblock
                    if (target is Player) {
                        teleblockPlayer(p, (Player)target);
                    }
                }
                if (damage != 0) {
                    Combat.checkRecoil(p, target, damage);
                    Combat.checkSmite(p, target, damage);
                    Combat.checkVengeance(p, target, damage);
                    hitInMulti(p, target, index);
                    applyMiasmicEffects(p, target, index);
                    if ((target.getCombatTurns() > 2 || target.getCombatTurns() < 0) && !target.isDead()) {
                        target.setLastAnimation(new Animation(target.getDefenceAnimation()));
                    }
                    if (index != 27) {
                        target.hit((int)damage);
                        if (index == 18 || index == 22 || index == 26 || index == 30) {
                            p.heal(Convert.ToInt32(damage / 4));
                        }
                    } else if (index == 27){
                        Event doHitEvent = new Event(1000);
                        doHitEvent.setAction(() => {
                                doHitEvent.stop();
                                target.hit((int)damage);
                        });
                        Server.registerEvent(doHitEvent);
                    }
                }
            });
            Server.registerEvent(doMagicAttackEvent);
            if (p.getTemporaryAttribute("autoCasting") != null) {
                if (p.getTemporaryAttribute("autoCastSpell") != null) {
                    if (id != (int)p.getTemporaryAttribute("autoCastSpell")) {
                        p.setTarget(null);
                        return;
                    }
                }
                if (!fakeNPC) {
                    p.setTemporaryAttribute("autocastLocation", target.getLocation());
                    p.setTemporaryAttribute("autocastEntity", target);
                }
                Event autoCastSpellEvent = new Event(3500);
                autoCastSpellEvent.setAction(() => {
                    autoCastSpellEvent.stop();
                    if (p.getTemporaryAttribute("autoCasting") != null && p.getTemporaryAttribute("autoCastSpell") != null) {
                        int autoCastSpell = (int)p.getTemporaryAttribute("autoCastSpell");
                        MagicCombat.newMagicAttack(p, p.getTarget(), autoCastSpell, p.getTemporaryAttribute("autoCastAncients") != null);
                    }
                });
                Server.registerEvent(autoCastSpellEvent);
            } else {
                p.setTarget(null);
            }
        }
开发者ID:Krill156,项目名称:SharpEMU,代码行数:101,代码来源:MagicCombat.cs

示例2: applyBoltGraphic

        private static int applyBoltGraphic(Player killer, Entity target, int damage, int bolt)
        {
            int hit = misc.random(10);
            if (hit != 0 || getBowType(killer) != BOW_TYPE.CROSSBOW) {
                return damage;
            }
            double maxDamage = getDamage((Player)killer, target, ((Player)killer).getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON), bolt);
            switch(bolt) {
                case 9236: // Opal.
                    target.setLastGraphics(new Graphics(749));
                    maxDamage *= 1.25;
                    break;

                case 9237: // Jade.
                    target.setLastGraphics(new Graphics(756));
                    //TODO Falling emote
                    break;

                case 9238: // Pearl.
                    target.setLastGraphics(new Graphics(750));
                    break;

                case 9239: // Topaz.
                    target.setLastGraphics(new Graphics(757, 0, 0));
                    if (target is Player) {
                        int magicLevel = ((Player) target).getSkills().getCurLevel(Skills.SKILL.MAGIC);
                        if (magicLevel == 1)
                            return (int)maxDamage;
                        int magicLevelDeduction = misc.random(1,10);
                        magicLevelDeduction = Math.Min(magicLevelDeduction, (magicLevel - 1));
                        string s = magicLevelDeduction == 1 ? "" : "s";
                        ((Player)target).getSkills().setCurLevel(Skills.SKILL.MAGIC, magicLevel - magicLevelDeduction);
                        ((Player)target).getPackets().sendSkillLevel(Skills.SKILL.MAGIC);
                        ((Player)target).getPackets().sendMessage("Your Magic level has been reduced by " + magicLevelDeduction + " level" + s + " !");
                    }
                    break;

                case 9240: // Sapphire.
                    target.setLastGraphics(new Graphics(751));
                    if (target is Player) {
                        int prayerLevel = ((Player)target).getSkills().getCurLevel(Skills.SKILL.PRAYER);
                        if (prayerLevel == 1)
                            return (int)maxDamage;
                        int prayerLevelDeduction = misc.random(1, 10);
                        prayerLevelDeduction = Math.Min(prayerLevelDeduction, (prayerLevel - 1));
                        string s = prayerLevelDeduction == 1 ? "" : "s";
                        ((Player)target).getSkills().setCurLevel(Skills.SKILL.PRAYER, prayerLevel - prayerLevelDeduction);
                        ((Player)target).getPackets().sendSkillLevel(Skills.SKILL.PRAYER);
                        ((Player)target).getPackets().sendMessage("Your Prayer level has been lowered by " + prayerLevelDeduction + " level" + s + " !");
                        killer.getPackets().sendMessage("You steal " + prayerLevelDeduction + " Prayer point" + s + " from your opponent!");

                        int prayerLevelObtained = Math.Min(killer.getSkills().getCurLevel(Skills.SKILL.PRAYER)+prayerLevelDeduction, killer.getSkills().getMaxLevel(Skills.SKILL.PRAYER));
                        killer.getSkills().setCurLevel(Skills.SKILL.PRAYER, prayerLevelObtained);
                        killer.getPackets().sendSkillLevel(Skills.SKILL.PRAYER);
                    }
                    break;

                case 9241: // Emerald.
                    if (!target.isPoisoned()) {
                        Server.registerEvent(new PoisonEvent(target, 6));
                        target.setLastGraphics(new Graphics(752));
                    }
                    break;

                case 9242: // Ruby
                    target.setLastGraphics(new Graphics(754));
                    int currentHP = killer.getHp();
                    bool has11Percent = (currentHP * 0.11) < currentHP;
                    int removeFromOpponent = (int) (target.getHp() * 0.20); //20% off opponents HP.
                    if (has11Percent) {
                        killer.hit((int)(currentHP * 0.10));
                        target.hit(removeFromOpponent);
                        killer.getPackets().sendMessage("You sacrifice some of your own health to deal more damage to your opponent!");
                    }
                    break;

                case 9243: // Diamond.
                    target.setLastGraphics(new Graphics(758));
                    maxDamage *= 1.15;
                    //TODO this affects opponents range defence for X minutes.
                    break;

                case 9244: // Dragon.
                    bool hitsFire = true;
                    if (target is Player) {
                        int shield = ((Player)target).getEquipment().getItemInSlot(ItemData.EQUIP.SHIELD);
                        /*
                         * Opponent has anti-fire shield.
                         */
                        if (shield == 11283 || shield == 1540) {
                            hitsFire = false;
                        }
                    } else {
                        int id = ((Npc)target).getId();
                        /*
                         * NPC is a dragon
                         */
                        if ((id >= 50 && id <= 55) || id == 941 || (id >= 1589 && id <= 1592) || id == 2642 || id == 3376
                            || id == 3588 || id == 3590 || (id >= 4665 && id <= 4684) || id == 5178 || id == 5362 || id == 5363) {
                            hitsFire = false;
//.........这里部分代码省略.........
开发者ID:Krill156,项目名称:SharpEMU,代码行数:101,代码来源:RangeCombat.cs

示例3: hitInMulti

 public static void hitInMulti(Player p, Entity mainTarget, int index)
 {
     if (!Location.inMultiCombat(p.getLocation()) || !Location.inMultiCombat(mainTarget.getLocation())) {
         return;
     }
     else if (!hitsMulti(p, index)) {
         return;
     }
     Location l = mainTarget.getLocation();
     double totalDamage = 0;
     if (mainTarget is Npc) {
         foreach(Npc n in Server.getNpcList()) {
             if (n == null || n.Equals(mainTarget) || n.isDead() || n.isHidden() || n.isDestroyed()) {
                 continue;
             }
             if (n.getLocation().inArea(l.getX() - 1, l.getY() - 1, l.getX() + 1, l.getY() + 1)) {
                 if (!canCastSpell2(p, mainTarget, index, false)) {
                     continue;
                 }
                 if (n.isAutoRetaliating() && n.getTarget() == null) {
                     //n.getFollow().setFollowing(killer);
                     n.setEntityFocus(p.getClientIndex());
                     n.setCombatTurns(n.getAttackSpeed() / 2);
                     n.setTarget(p);
                 }
                 int damage = misc.random(misc.random(getSpellMaxHit(p, index))); //double randomize? uhh wtf?
                 int graphic = END_GFX[index];
                 if (damage == 0) {
                     graphic = 85;
                 }
                 if (damage > n.getHp()) {
                     damage = n.getHp();
                 }
                 if (damage > 0) {
                     bool frozen = freezeTarget(index, n);
                     if (!frozen && index == 31) {
                         graphic = 1677;
                     }
                 }
                 totalDamage += damage;
                 n.setAttacker(p);
                 n.setLastAttacked(Environment.TickCount);
                 n.setLastGraphics(new Graphics(graphic, 0, getGroundHeight(index, graphic)));
                 n.hit(damage);
                 if ((n.getCombatTurns() > 2 || n.getCombatTurns() < 0)) {
                     n.setLastAnimation(new Animation(n.getDefenceAnimation()));
                 }
                 addDamage(p, n, damage);
             }
         }
     } else {
         foreach(Player target in Server.getPlayerList()) {
             if (mainTarget == null || target.Equals(mainTarget) || target.isDead() || target.isHidden() || target.isDestroyed()) {
                 continue;
             }
             if (target.getLocation().inArea(l.getX() - 1, l.getY() - 1, l.getX() + 1, l.getY() + 1)) {
                 if (!canCastSpell2(p, mainTarget, index, false)) {
                     continue;
                 }
                 if (target.isAutoRetaliating() && target.getTarget() == null) {
                     //n.getFollow().setFollowing(killer);
                     target.setEntityFocus(p.getClientIndex());
                     target.setCombatTurns(target.getAttackSpeed() / 2);
                     target.setTarget(p);
                 }
                 int damage = misc.random(misc.random(getSpellMaxHit(p, index))); //double randomize? uhh wtf?
                 int graphic = END_GFX[index];
                 if (damage == 0) {
                     graphic = 85;
                 }
                 if (damage > target.getHp()) {
                     damage = target.getHp();
                 }
                 if (damage > 0) {
                     bool frozen = freezeTarget(index, target);
                     if (!frozen && index == 31) {
                         graphic = 1677;
                     }
                 }
                 totalDamage += damage;
                 target.setAttacker(p);
                 target.setLastAttacked(Environment.TickCount);
                 target.setLastGraphics(new Graphics(graphic, 0, getGroundHeight(index, graphic)));
                 target.hit(damage);
                 if ((target.getCombatTurns() > 2 || target.getCombatTurns() < 0)) {
                     target.setLastAnimation(new Animation(target.getDefenceAnimation()));
                 }
                 addDamage(p, target, damage);
             }
         }
     }
     if (totalDamage > 0) {
         addMagicXp(p, null, totalDamage, index, false);
         if (index == 18 || index == 22 || index == 26 || index == 30) {
             p.heal((int) (totalDamage * 0.25));
         }
     }
 }
开发者ID:Krill156,项目名称:SharpEMU,代码行数:98,代码来源:MagicCombat.cs


注:本文中的WorldServer.player.Player.heal方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。