本文整理汇总了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);
}
}
示例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;
//.........这里部分代码省略.........
示例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));
}
}
}