本文整理匯總了C#中RS2.Server.player.Player.setLastAnimation方法的典型用法代碼示例。如果您正苦於以下問題:C# Player.setLastAnimation方法的具體用法?C# Player.setLastAnimation怎麽用?C# Player.setLastAnimation使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類RS2.Server.player.Player
的用法示例。
在下文中一共展示了Player.setLastAnimation方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: execute
public void execute(Player player, string[] arguments)
{
if (arguments.Length == 0)
{
player.getPackets().sendMessage("[Animation command]: ::emote emote_number");
return;
}
int animation = 0;
if (!int.TryParse(arguments[0], out animation))
{
player.getPackets().sendMessage("[Animation command]: ::emote emote_number");
return;
}
player.setLastAnimation(new model.Animation(animation));
}
示例2: crossDitch
public static void crossDitch(Player p, int x, int y)
{
if (p.getTemporaryAttribute("unmovable") != null)
{
return;
}
AreaEvent crossDitchAreaEvent = new AreaEvent(p, x, y - 1, x, y + 2);
crossDitchAreaEvent.setAction(() =>
{
p.getPackets().closeInterfaces();
p.getWalkingQueue().resetWalkingQueue();
p.setTemporaryAttribute("unmovable", true);
int newY = p.getLocation().getY() >= 3523 ? p.getLocation().getY() - 3 : p.getLocation().getY() + 3;
int dir = newY == 3 ? 0 : 4;
Location faceLocation = new Location(p.getLocation().getX(), dir == 3 ? 3523 : 3520, 0);
p.setFaceLocation(faceLocation);
Event crossDitchMoveEvent = new Event(500);
crossDitchMoveEvent.setAction(() =>
{
crossDitchMoveEvent.stop();
p.setLastAnimation(new Animation(6132));
int regionX = p.getUpdateFlags().getLastRegion().getRegionX();
int regionY = p.getUpdateFlags().getLastRegion().getRegionY();
int lX = (p.getLocation().getX() - ((regionX - 6) * 8));
int lY = (p.getLocation().getY() - ((regionY - 6) * 8));
ForceMovement movement = new ForceMovement(lX, lY, lX, newY, 33, 60, dir);
p.setForceMovement(movement);
p.setFaceLocation(new Location(x, y, 0));
Event crossDitchTeleportEvent = new Event(1250);
crossDitchTeleportEvent.setAction(() =>
{
crossDitchTeleportEvent.stop();
int playerY = p.getLocation().getY();
int nY = playerY >= 3523 ? 3520 : 3523;
p.teleport(new Location(p.getLocation().getX(), nY, 0));
p.removeTemporaryAttribute("unmovable");
});
Server.registerEvent(crossDitchTeleportEvent);
});
Server.registerEvent(crossDitchMoveEvent);
});
Server.registerCoordinateEvent(crossDitchAreaEvent);
}
示例3: castCharge
public static void castCharge(Player p)
{
p.removeTemporaryAttribute("autoCasting");
if (p.getSkills().getCurLevel(Skills.SKILL.MAGIC) < 80)
{
p.getPackets().sendMessage("You need a Magic level of 80 to cast Charge.");
return;
}
if (!hasRunes(p, CHARGE_RUNES, CHARGE_RUNE_AMOUNT))
{
p.getPackets().sendMessage("You do not have enough runes to cast Charge.");
return;
}
if (p.getTemporaryAttribute("godCharged") != null)
{
p.getPackets().sendMessage("You have already charged your god spells.");
return;
}
if (hasGodCapeAndStaff(p))
{
p.getPackets().sendMessage("You must wear a God cape and wield the matching staff to cast Charge.");
return;
}
if (!deleteRunes(p, CHARGE_RUNES, CHARGE_RUNE_AMOUNT))
{
return;
}
p.setTemporaryAttribute("godCharged", true);
p.setLastGraphics(new Graphics(308, 800, 90));
p.setLastAnimation(new Animation(811));
p.getPackets().sendMessage("You feel charged with magical power..");
int delay = 60000 + Misc.random(120000); //60 seconds + possible 120 seconds so, 1 minute to 2 minutes.
Event removeGodChargeEvent = new Event(delay);
removeGodChargeEvent.setAction(() =>
{
removeGodChargeEvent.stop();
p.removeTemporaryAttribute("godCharged");
p.getPackets().sendMessage("Your magical charge fades away.");
});
Server.registerEvent(removeGodChargeEvent);
}
示例4: slashWeb
public static void slashWeb(Player p, ushort webId, Location webLocation)
{
AreaEvent slashWebAreaEvent = new AreaEvent(p, webLocation.getX() - 1, webLocation.getY() - 1, webLocation.getX() + 1, webLocation.getY() + 1);
slashWebAreaEvent.setAction(() =>
{
long lastSlash = 0;
p.setFaceLocation(webLocation);
if (p.getTemporaryAttribute("lastWebSlash") != null)
{
lastSlash = (int)p.getTemporaryAttribute("lastWebSlash");
}
if (Environment.TickCount - lastSlash <= 800)
{
return;
}
if (Server.getGlobalObjects().originalObjectExists(webId, webLocation))
{
p.setLastAnimation(new Animation(p.getAttackAnimation()));
p.setTemporaryAttribute("lastWebSlash", Environment.TickCount);
Event attemptCutWebEvent = new Event(500);
attemptCutWebEvent.setAction(() =>
{
attemptCutWebEvent.stop();
bool webExists = Server.getGlobalObjects().originalObjectExists(webId, webLocation);
Server.getGlobalObjects().lowerHealth(webId, webLocation);
if (Server.getGlobalObjects().originalObjectExists(webId, webLocation))
{
p.getPackets().sendMessage("You fail to cut through the web.");
}
else
{
if (webExists)
{ // This means we slashed it, if !webExists, someone else slashed it in the last 500ms
p.getPackets().sendMessage("You slash through the web!");
}
}
});
Server.registerEvent(attemptCutWebEvent);
}
});
Server.registerCoordinateEvent(slashWebAreaEvent);
}
示例5: useLever
public static void useLever(Player p, int id, Location leverLocation)
{
if (p.getTemporaryAttribute("teleporting") != null)
{
return;
}
foreach (LoadedLaddersAndStairs.Lever lever in LoadedLaddersAndStairs.levers)
{
if (lever.getId() == id)
{
if (lever.getLeverLocation().Equals(leverLocation))
{
LoadedLaddersAndStairs.Lever l = lever;
//TODO when in use it cant be used (in use = lever is facing down)
CoordinateEvent useLeverCoordinateEvent = new CoordinateEvent(p, l.getLeverLocation());
useLeverCoordinateEvent.setAction(() =>
{
p.setFaceLocation(l.getFaceLocation());
if (p.getTemporaryAttribute("teleblocked") != null)
{
p.getPackets().sendMessage("A magical force prevents you from teleporting!");
return;
}
else if ((p.getTemporaryAttribute("teleporting") != null))
{
return;
}
p.setLastAnimation(new Animation(2140));
p.getPackets().closeInterfaces();
p.setTemporaryAttribute("teleporting", true);
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
SkillHandler.resetAllSkills(p);
l.setInUse(true);
Event useLeverEvent = new Event(700);
useLeverEvent.setAction(() =>
{
useLeverEvent.stop();
p.setLastAnimation(new Animation(8939, 0));
p.setLastGraphics(new Graphics(1576, 0));
l.setInUse(false);
Event setLeverTeleportEvent = new Event(1800);
setLeverTeleportEvent.setAction(() =>
{
setLeverTeleportEvent.stop();
p.teleport(l.getTeleLocation());
p.setLastAnimation(new Animation(8941, 0));
p.setLastGraphics(new Graphics(1577, 0));
Teleport.resetTeleport(p);
});
Server.registerEvent(setLeverTeleportEvent);
});
Server.registerEvent(useLeverEvent);
});
Server.registerCoordinateEvent(useLeverCoordinateEvent);
break;
}
}
}
}
示例6: emote
//.........這裏部分代碼省略.........
skillcapeAnimation = 4969;
skillcapeGraphic = 835;
break;
/*
* Agility cape.
*/
case 9771:
case 9772:
skill = Skills.SKILL.AGILITY;
skillcapeAnimation = 4977;
skillcapeGraphic = 830;
break;
/*
* Thieving cape.
*/
case 9777:
case 9778:
skill = Skills.SKILL.THIEVING;
skillcapeAnimation = 4965;
skillcapeGraphic = 826;
break;
/*
* Slayer cape.
*/
case 9786:
case 9787:
skill = Skills.SKILL.SLAYER;
skillcapeAnimation = 4937;//need animation
skillcapeGraphic = 812;//need graphic
break;
/*
* Farming cape.
*/
case 9810:
case 9811:
skill = Skills.SKILL.FARMING;
skillcapeAnimation = 4963;
skillcapeGraphic = 825;
break;
/*
* Runecraft cape.
*/
case 9765:
case 9766:
skill = Skills.SKILL.RUNECRAFTING;
skillcapeAnimation = 4947;
skillcapeGraphic = 817;
break;
/*
* Hunter's cape
*/
case 9948:
case 9949:
skill = Skills.SKILL.HUNTER;
skillcapeAnimation = 5158;
skillcapeGraphic = 907;
break;
/*
* Construct. cape.
*/
case 9789:
case 9790:
skill = Skills.SKILL.CONSTRUCTION;
skillcapeAnimation = 4953;
skillcapeGraphic = 820;
break;
/*
* Summoning cape.
*/
case 12169:
case 12170:
skill = Skills.SKILL.SUMMONING;
skillcapeAnimation = 8525;
skillcapeGraphic = 1515;
break;
/*
* Quest cape.
*/
case 9813:
skillcapeAnimation = 4945;
skillcapeGraphic = 816;
player.setLastAnimation(new Animation(skillcapeAnimation));
player.setLastGraphics(new Graphics(skillcapeGraphic));
return true;
default:
didEmote = false;
break;
}
if (player.getSkills().getMaxLevel(skill) == 99)
{
player.setLastAnimation(new Animation(skillcapeAnimation));
player.setLastGraphics(new Graphics(skillcapeGraphic));
}
else
{
didEmote = false;
}
return didEmote;
}
示例7: leverTeleport
public static void leverTeleport(Player p, int option)
{
p.getPackets().closeInterfaces();
Location teleLocation = new Location(LEVER_COORDINATES[option][0], LEVER_COORDINATES[option][1], LEVER_COORDINATES[option][2]);
Event leverTeleportEvent = new Event(200);
leverTeleportEvent.setAction(() =>
{
leverTeleportEvent.stop();
if (p.getTemporaryAttribute("teleblocked") != null)
{
p.getPackets().sendMessage("A magical force prevents you from teleporting!");
return;
}
else if ((p.getTemporaryAttribute("teleporting") != null))
{
return;
}
p.setLastAnimation(new Animation(2140));
p.getPackets().closeInterfaces();
p.setTemporaryAttribute("teleporting", true);
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
SkillHandler.resetAllSkills(p);
Event levelTeleportStartEvent = new Event(700);
levelTeleportStartEvent.setAction(() =>
{
levelTeleportStartEvent.stop();
p.setLastAnimation(new Animation(8939, 0));
p.setLastGraphics(new Graphics(1576, 0));
Event levelTeleportFinishEvent = new Event(1800);
levelTeleportFinishEvent.setAction(() =>
{
levelTeleportFinishEvent.stop();
p.teleport(teleLocation);
p.setLastAnimation(new Animation(8941, 0));
p.setLastGraphics(new Graphics(1577, 0));
Teleport.resetTeleport(p);
});
Server.registerEvent(levelTeleportFinishEvent);
});
Server.registerEvent(levelTeleportStartEvent);
});
Server.registerEvent(leverTeleportEvent);
}
示例8: handleInvenClickItem
private void handleInvenClickItem(Player player, Packet packet)
{
int slot = packet.readLEShortA();
int item = packet.readShortA();
int childId = packet.readLEShort();
int interfaceId = packet.readLEShort();
if (slot > 28 || slot < 0 || player.isDead() || player.getTemporaryAttribute("cantDoAnything") != null)
{
return;
}
SkillHandler.resetAllSkills(player);
if (player.getInventory().getItemInSlot(slot) == item)
{
player.getPackets().closeInterfaces();
if (Consumables.isEating(player, player.getInventory().getItemInSlot(slot), slot))
return;
else if (Herblore.idHerb(player, player.getInventory().getItemInSlot(slot)))
return;
else if (RuneCraft.fillPouch(player, (RuneCraftData.POUCHES)player.getInventory().getItemInSlot(slot)))
return;
else if (Prayer.wantToBury(player, player.getInventory().getItemInSlot(slot), slot))
return;
else if (Teleport.useTeletab(player, player.getInventory().getItemInSlot(slot), slot))
return;
else if (FarmingAmulet.showOptions(player, player.getInventory().getItemInSlot(slot)))
return;
switch (item)
{
case 4155: // Slayer gem
Slayer.doDialogue(player, 1051);
break;
case 6: // Dwarf multicannon
if (player.getCannon() != null)
{
player.getPackets().sendMessage("You already have a cannon set up!");
break;
}
player.setCannon(new DwarfCannon(player));
break;
case 5073: // Nest with seeds.
case 5074: // Nest with jewellery.
Woodcutting.randomNestItem(player, item);
break;
case 952: // Spade
player.setLastAnimation(new Animation(830));
if (Barrows.enterCrypt(player))
{
player.getPackets().sendMessage("You've broken into a crypt!");
break;
}
player.getPackets().sendMessage("You find nothing.");
break;
}
}
}
示例9: teleport
public static bool teleport(Player p, int opt, JewellerySlot js)
{
if (js == null)
{
return false;
}
if (js.index == -1 || js.index > 3 || opt > 6)
{
return false;
}
if (!canTeleport(p, js))
{
p.getPackets().closeInterfaces();
return true;
}
if ((js.index == 2 && opt == 4) || (js.index != 2 && opt == 6))
{
p.getPackets().sendMessage("You stay where you are.");
p.getPackets().closeInterfaces();
return true;
}
opt -= 2; // Used to get the 'index' from the button id.
p.setLastGraphics(new Graphics(1684));
p.setLastAnimation(new Animation(9603));
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
p.setTemporaryAttribute("teleporting", true);
p.setTemporaryAttribute("unmovable", true);
p.removeTemporaryAttribute("autoCasting");
p.removeTemporaryAttribute("lootedBarrowChest");
p.setTarget(null);
changeJewellery(p, js);
int option = opt;
p.getPackets().closeInterfaces();
Event teleportEvent = new Event(2000);
teleportEvent.setAction(() =>
{
teleportEvent.stop();
p.teleport(new Location(TELEPORT_COORDINATES[js.index][option][0], TELEPORT_COORDINATES[js.index][option][1], 0));
p.setLastAnimation(new Animation(65535));
Teleport.resetTeleport(p);
p.removeTemporaryAttribute("unmovable");
});
Server.registerEvent(teleportEvent);
return true;
}
示例10: doObstacle
public static void doObstacle(Player p, int index)
{
if (p.getTemporaryAttribute("unmovable") != null)
{
return;
}
switch (index)
{
case 0: // 3 planks, northern (east side)
case 1: // 3 planks, middle (east side)
case 2: // 3 planks, southern (east side)
case 3: // 3 planks, northern (west side)
case 4: // 3 planks, middle (west side)
case 5: // 3 planks, southern (west side)
int logXCoord = index <= 2 ? (int)AGILITY_ARENA_OBJECTS[index][1] + 1 : (int)AGILITY_ARENA_OBJECTS[index][1] - 1;
int logDirectionX = index <= 2 ? -7 : +7;
CoordinateEvent plankObstaclesCoordinateEvent = new CoordinateEvent(p, new Location(logXCoord, (int)AGILITY_ARENA_OBJECTS[index][2], 3));
plankObstaclesCoordinateEvent.setAction(() =>
{
bool running = p.getWalkingQueue().isRunToggled();
p.getWalkingQueue().setRunToggled(false);
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
p.setTemporaryAttribute("unmovable", true);
p.getAppearance().setWalkAnimation(155);
p.getUpdateFlags().setAppearanceUpdateRequired(true);
p.getWalkingQueue().forceWalk(logDirectionX, 0);
Event plankObstaclesEvent = new Event(4300);
plankObstaclesEvent.setAction(() =>
{
plankObstaclesEvent.stop();
p.removeTemporaryAttribute("unmovable");
p.getAppearance().setWalkAnimation(-1);
p.getUpdateFlags().setAppearanceUpdateRequired(true);
p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]);
p.getWalkingQueue().setRunToggled(running);
});
Server.registerEvent(plankObstaclesEvent);
});
Server.registerCoordinateEvent(plankObstaclesCoordinateEvent);
break;
case 6: //Handholds obstacle east of planks.
case 7: //Handholds obstacle west of planks.
int handHoldsDirectionX = 1;
int handHoldsDirectionY = 1;
if (index == 6)
{
handHoldsDirectionX = -1;
handHoldsDirectionY = +1;
}
else if (index == 7)
{
handHoldsDirectionX = +1;
handHoldsDirectionY = -1;
}
CoordinateEvent handholdsObstacleCoordinateEvent = new CoordinateEvent(p, new Location((int)AGILITY_ARENA_OBJECTS[index][1], (int)AGILITY_ARENA_OBJECTS[index][2], 3));
handholdsObstacleCoordinateEvent.setAction(() =>
{
bool running = p.getWalkingQueue().isRunToggled();
p.getWalkingQueue().setRunToggled(false);
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
p.setTemporaryAttribute("unmovable", true);
p.setLastAnimation(new Animation(1121));
p.setFaceLocation(new Location(p.getLocation().getX(), p.getLocation().getY() + handHoldsDirectionY, 3));
Event handholdsObstaclesEvent = new Event(700);
int handholdsObstaclesCounter = 0;
handholdsObstaclesEvent.setAction(() =>
{
p.setLastAnimation(new Animation(1122));
int regionX = p.getUpdateFlags().getLastRegion().getRegionX();
int regionY = p.getUpdateFlags().getLastRegion().getRegionY();
int lX = (p.getLocation().getX() - ((regionX - 6) * 8));
int lY = (p.getLocation().getY() - ((regionY - 6) * 8));
p.setForceMovement(new ForceMovement(lX, lY, lX + handHoldsDirectionX, lY, 0, 5, 0));
if (handholdsObstaclesCounter++ >= 7)
{
p.setLastAnimation(new Animation(65535));
handholdsObstaclesEvent.stop();
p.removeTemporaryAttribute("unmovable");
p.getSkills().addXp(Skills.SKILL.AGILITY, (double)AGILITY_ARENA_OBJECTS[index][3]);
p.getWalkingQueue().setRunToggled(running);
return;
}
Event teleportEvent = new Event(500);
teleportEvent.setAction(() =>
{
teleportEvent.stop();
p.teleport(new Location(p.getLocation().getX() + handHoldsDirectionX, p.getLocation().getY(), 3));
});
Server.registerEvent(teleportEvent);
});
Server.registerEvent(handholdsObstaclesEvent);
});
Server.registerCoordinateEvent(handholdsObstacleCoordinateEvent);
break;
}
}
示例11: newMagicAttack
//.........這裏部分代碼省略.........
int endGfx = END_GFX[index];
double damage = Misc.random(CombatFormula.getMagicHit(p, target, getSpellMaxHit(p, index)));
bool mp = false;
bool magicProtect = mp;
if (target is Player)
{
mp = ((Player)target).getPrayers().getHeadIcon() == PrayerData.MAGIC;
}
if (magicProtect)
{
damage *= 0.60;
}
if (p.getEquipment().getItemInSlot(ItemData.EQUIP.WEAPON) == 8841)
{
damage *= 1.10; // void mace 10% hit increase.
}
if (damage == 0 && index != 41 && index != 42 && index != 43 && index != 44 && index != 45 && index != 46 && index != 47)
{
endGfx = 85;
}
if (!deleteRunes(p, RUNES[index], RUNE_AMOUNTS[index]))
{
p.setTarget(null);
return;
}
p.getFollow().setFollowing(null);
p.getWalkingQueue().resetWalkingQueue();
p.getPackets().clearMapFlag();
p.setFaceLocation(target.getLocation());
if (HANDS_GFX[index] != -1)
{
p.setLastGraphics(new Graphics(HANDS_GFX[index], 0, getStartingGraphicHeight(index)));
}
p.setLastAnimation(new Animation(SPELL_ANIM[index]));
p.getPackets().closeInterfaces();
if (target is Player)
{
((Player)target).getPackets().closeInterfaces();
}
target.setAttacker(p);
p.setTarget(target);
target.setLastAttacked(Environment.TickCount);
p.setLastAttack(Environment.TickCount);
p.setLastMagicAttack(Environment.TickCount);
p.setCombatTurns(p.getAttackSpeed());
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;
}
示例12: teleport
public static void teleport(Player p, LoadedLaddersAndStairs.HeightObject obj)
{
p.getWalkingQueue().resetWalkingQueue();
p.setTemporaryAttribute("unmovable", true);
p.setFaceLocation(obj.getLocation());
if (obj.getAnimation() != -1)
{
p.setLastAnimation(new Animation(obj.getAnimation()));
}
Event teleportEvent = new Event(obj.getAnimation() != -1 ? obj.getTeleDelay() : 500);
teleportEvent.setAction(() =>
{
teleportEvent.stop();
p.teleport(obj.getTeleLocation());
p.removeTemporaryAttribute("unmovable");
});
Server.registerEvent(teleportEvent);
}
示例13: drinkPotion
//.........這裏部分代碼省略.........
case 6: //Agility potion [restores 2 or 3 agility points]
int newAgility = Misc.random(2, 3) + p.getSkills().getCurLevel(Skills.SKILL.AGILITY);
if (newAgility < p.getSkills().getMaxLevel(Skills.SKILL.AGILITY))
p.getSkills().setCurLevel(Skills.SKILL.AGILITY, newAgility);
break;
case 7: //Combat potion [Should be 10% of attack+strength and +3 to each].
statBoost(p, Skills.SKILL.ATTACK, 0.10, 3, false);
statBoost(p, Skills.SKILL.STRENGTH, 0.10, 3, false);
break;
case 8: //Prayer potion, [heals 7-31, formula = 7+floor(prayerlevel/4)]
int newPrayer = 7 + (int)Math.Floor((double)(p.getSkills().getMaxLevel(Skills.SKILL.PRAYER) / 4)) + p.getSkills().getCurLevel(Skills.SKILL.PRAYER);
if (newPrayer < p.getSkills().getCurLevel(Skills.SKILL.PRAYER))
p.getSkills().setCurLevel(Skills.SKILL.PRAYER, newPrayer);
checkOverdose(p, Skills.SKILL.PRAYER);
break;
case 9: //Summoning potion [25% of players summoning + 7]
int newSummoning = (7 + (int)((double)p.getSkills().getMaxLevel(Skills.SKILL.SUMMONING) * 0.25)) + p.getSkills().getCurLevel(Skills.SKILL.SUMMONING);
if (newSummoning < p.getSkills().getCurLevel(Skills.SKILL.SUMMONING))
p.getSkills().setCurLevel(Skills.SKILL.SUMMONING, newSummoning);
statBoost(p, Skills.SKILL.STRENGTH, 0.10, 3, false);
break;
case 10: //Super attack potion [15% of players attack + 5]
statBoost(p, Skills.SKILL.ATTACK, 0.15, 5, false);
break;
case 11: // super antipoison
p.setPoisonAmount(0);
p.setSuperAntipoisonCycles(20);
break;
case 12: //Fishing potion [fishing +3]
if (p.getSkills().getCurLevel(Skills.SKILL.FISHING) < (p.getSkills().getMaxLevel(Skills.SKILL.FISHING) + 3))
p.getSkills().setCurLevel(Skills.SKILL.FISHING, p.getSkills().getCurLevel(Skills.SKILL.FISHING) + 3);
break;
case 13:
p.setRunEnergy(p.getRunEnergy() + 20);
if (p.getRunEnergy() >= 100)
{
p.setRunEnergy(100);
}
break;
case 14: //Hunter potion [hunting + 3]
if (p.getSkills().getCurLevel(Skills.SKILL.HUNTER) < (p.getSkills().getMaxLevel(Skills.SKILL.HUNTER) + 3))
p.getSkills().setCurLevel(Skills.SKILL.HUNTER, p.getSkills().getCurLevel(Skills.SKILL.HUNTER) + 3);
break;
case 15: //Super strength [strength 15% +5]
statBoost(p, Skills.SKILL.STRENGTH, 0.15, 5, false);
break;
case 16: //restores all skills by 33%.
foreach (Skills.SKILL skill in Enum.GetValues(typeof(Skills.SKILL)))
superRestorePotion(p, skill, 0.33);
break;
case 17://Super defence [defence 15% +5]
statBoost(p, Skills.SKILL.DEFENCE, 0.15, 5, false);
break;
case 18: // Antifire potion
p.setAntifireCycles(20);
break;
case 19: //Ranging potions
statBoost(p, Skills.SKILL.RANGE, 0.10, 4, false);
break;
case 20: //Magic potion.
if (p.getSkills().getCurLevel(Skills.SKILL.MAGIC) < (p.getSkills().getMaxLevel(Skills.SKILL.MAGIC) + 4))
p.getSkills().setCurLevel(Skills.SKILL.MAGIC, p.getSkills().getCurLevel(Skills.SKILL.MAGIC) + 4);
break;
case 21: //Zamorak brew potion. [Attack %20+2][Strength %12 +2][Defense -10% + -2][hitpoints -10% + 20]
statBoost(p, Skills.SKILL.ATTACK, 0.20, 2, false);
statBoost(p, Skills.SKILL.STRENGTH, 0.12, 2, false);
statBoost(p, Skills.SKILL.DEFENCE, 0.10, 2, true);
statBoost(p, Skills.SKILL.HITPOINTS, 0.10, 20, true);
break;
case 22: //Saradomin brew potion. [Hitpoints +%15][Defense +25%][Strength, Attack, Magic and Ranged -10%]
statBoost(p, Skills.SKILL.HITPOINTS, 0.15, 0, false);
statBoost(p, Skills.SKILL.DEFENCE, 0.25, 0, false);
statBoost(p, Skills.SKILL.STRENGTH, 0.10, 0, true);
statBoost(p, Skills.SKILL.ATTACK, 0.10, 0, true);
statBoost(p, Skills.SKILL.MAGIC, 0.10, 0, true);
statBoost(p, Skills.SKILL.RANGE, 0.10, 0, true);
break;
}
p.setLastAnimation(new Animation(829));
p.getPackets().sendSkillLevels();
});
Server.registerEvent(drinkPotionEvent);
}
示例14: fightCaveAttacks
public static void fightCaveAttacks(Npc npc, Player p)
{
if (npc.isDead() || npc.isDestroyed() || p.isDead() || p.isDestroyed() || p.isDead() || !Location.inFightCave(p.getLocation()) || p.getTeleportTo() != null)
{
return;
}
int damage = Misc.random(npc.getMaxHit());
int prayer = p.getPrayers().getHeadIcon();
int hitDelay = npc.getHitDelay();
int animation = npc.getAttackAnimation();
switch (npc.getId())
{
case 2734: // Tz-Kih (lvl 22)
case 2735:
if (prayer == PrayerData.MELEE)
{
damage = 0;
}
break;
case 2739: // Tz-Xil (lvl 90)
case 2740:
if (prayer == PrayerData.RANGE)
{
damage = 0;
}
p.getPackets().sendProjectile(npc.getLocation(), p.getLocation(), 32, 1616, 50, 40, 34, 50, p);
break;
case 2741: // Yt-MejKot (lvl 180)
case 2742:
if (prayer == PrayerData.MELEE)
{
damage = 0;
}
// TODO healing
break;
case 2743: // Ket-Zek (lvl 360)
case 2744:
if (!p.getLocation().withinDistance(npc.getLocation(), 2))
{
hitDelay = 1600;
animation = 9266;
npc.setLastGraphics(new Graphics(1622));
damage = Misc.random(49);
if (prayer == PrayerData.MAGIC)
{
damage = 0;
}
Event sendProjectileToNpc = new Event(300);
sendProjectileToNpc.setAction(() =>
{
sendProjectileToNpc.stop();
p.getPackets().sendProjectile(npc.getLocation(), p.getLocation(), 32, 1623, 50, 40, 34, 80, p);
});
Server.registerEvent(sendProjectileToNpc);
}
else
{
damage = Misc.random(64);
if (prayer == PrayerData.MELEE)
{
damage = 0;
}
}
break;
case 2745: // TzTok Jad (lvl 702)
doJadAttacks(p, npc);
break;
}
if (npc.getId() == 2745)
{
return;
}
if (animation != 65535)
{
npc.setLastAnimation(new Animation(animation));
}
p.setLastAttacked(Environment.TickCount);
npc.setLastAttack(Environment.TickCount);
p.setAttacker(npc);
npc.resetCombatTurns();
if (damage > p.getHp())
{
damage = p.getHp();
}
int npcId = npc.getId();
Event losePrayerFightingEvent = new Event(hitDelay);
losePrayerFightingEvent.setAction(() =>
{
losePrayerFightingEvent.stop();
if (!Location.inFightCave(p.getLocation()) || p.getTeleportTo() != null)
{
return;
}
if (npcId == 2734 || npcId == 2735)
{
//.........這裏部分代碼省略.........
示例15: doJadAttacks
private static void doJadAttacks(Player p, Npc npc)
{
if (npc.getHp() <= (npc.getMaxHp() * 0.50))
{
if (p.getFightCave() != null)
{
if (!p.getFightCave().isHealersSpawned())
{
summonJadHealers(p, npc);
p.getFightCave().setHealersSpawned(true);
}
}
}
npc.resetCombatTurns();
npc.setEntityFocus(p.getClientIndex());
switch (Misc.random(1))
{
case 0: // Range
npc.setLastAnimation(new Animation(9276));
npc.setLastGraphics(new Graphics(1625));
Event jadRangeAttackEvent = new Event(1600);
int jadRangeAttackStatus = 0;
jadRangeAttackEvent.setAction(() =>
{
int hit = 0;
int prayer = p.getPrayers().getHeadIcon();
if (jadRangeAttackStatus == 0)
{
jadRangeAttackStatus++;
jadRangeAttackEvent.setTick(1500);
p.setLastGraphics(new Graphics(451));
if (prayer == PrayerData.RANGE)
{
hit = 0;
}
else
{
hit = Misc.random(96);
}
}
else
{
if (prayer != PrayerData.RANGE)
{
hit = Misc.random(96);
}
jadRangeAttackEvent.stop();
p.setLastAttacked(Environment.TickCount);
npc.setLastAttack(Environment.TickCount);
p.setAttacker(npc);
if (hit > p.getHp())
{
hit = p.getHp();
}
if (!Location.inFightCave(p.getLocation()) || p.getTeleportTo() != null)
{
return;
}
if ((p.getCombatTurns() > 2 || p.getCombatTurns() < 0))
{
p.setLastAnimation(new Animation(p.getDefenceAnimation()));
}
p.hit(hit);
Event animationEvent = new Event(100);
animationEvent.setAction(() =>
{
animationEvent.stop();
p.setLastGraphics(new Graphics(157, 0, 100));
});
Server.registerEvent(animationEvent);
}
});
Server.registerEvent(jadRangeAttackEvent);
break;
case 1: // Magic
npc.setLastGraphics(new Graphics(1626));
Event jadMagicAttackEvent = new Event(300);
int jadMagicAttackStatus = 0;
jadMagicAttackEvent.setAction(() =>
{
int hit = 0;
int prayer = p.getPrayers().getHeadIcon();
npc.setLastAnimation(new Animation(9278));
if (jadMagicAttackStatus == 0)
{
jadMagicAttackStatus++;
jadMagicAttackEvent.setTick(1600);
p.getPackets().sendProjectile(npc.getLocation(), p.getLocation(), 32, 1627, 50, 40, 34, 90, p);
}
else
{
jadMagicAttackEvent.stop();
if (prayer == PrayerData.MAGIC)
{
hit = 0;
}
else
{
hit = Misc.random(96);
//.........這裏部分代碼省略.........