Untitled
unknown
java
4 years ago
50 kB
5
Indexable
package com.rs.game.player; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import com.rs.cache.loaders.ItemDefinitions; import com.rs.game.Animation; import com.rs.game.Entity; import com.rs.game.Graphics; import com.rs.game.WorldTile; import com.rs.game.activites.duel.ArenaControler; import com.rs.game.activites.lastmanstanding.game.LastManStandingGameController; import com.rs.game.activites.lastmanstanding.lobby.LastManStandingLobbyController; import com.rs.game.activites.lastmanstanding.postgame.LastManStandingPostGameController; import com.rs.game.item.Item; import com.rs.game.item.ItemsContainer; import com.rs.game.npc.NPC; import com.rs.game.npc.others.Revenant; import com.rs.game.player.actions.firemaking.Bonfire; import com.rs.game.player.content.ItemConstants; import com.rs.game.player.content.Magic; import com.rs.game.player.content.SkillCapeCustomizer; import com.rs.game.player.content.items.EliteOutfits; import com.rs.game.player.content.items.PrayerBooks; import com.rs.game.player.controllers.DungeonController; import com.rs.game.player.dialogue.impl.Transportation; import com.rs.game.player.rebirth.data.RebirthSkillsData.RebirthPerks; import com.rs.game.player.rebirth.data.RebirthSkillsData.RebirthPerks10; import com.rs.network.protocol.codec.decode.WorldPacketsDecoder; import com.rs.network.protocol.codec.decode.impl.ButtonHandler; import com.rs.utils.Colors; import com.rs.utils.ItemExamines; import com.rs.utils.ItemWeights; import com.rs.utils.Utils; import lombok.val; public final class Equipment implements Serializable { public static final class SavedCosmetic implements Serializable { /** * */ private static final long serialVersionUID = 3243926269985535095L; private ItemsContainer<Item> cosmeticItems; private String cosmeticName; public SavedCosmetic(String cosmeticName, ItemsContainer<Item> cosmeticItems) { this.cosmeticName = cosmeticName; this.cosmeticItems = cosmeticItems; } public ItemsContainer<Item> getCosmeticItems() { return cosmeticItems; } public String getCosmeticName() { return cosmeticName; } } private static final long serialVersionUID = -4147163237095647617L; public static final byte SLOT_HAT = 0, SLOT_CAPE = 1, SLOT_AMULET = 2, SLOT_WEAPON = 3, SLOT_CHEST = 4, SLOT_SHIELD = 5, SLOT_LEGS = 7, SLOT_HANDS = 9, SLOT_FEET = 10, SLOT_RING = 12, SLOT_ARROWS = 13, SLOT_AURA = 14, SLOT_POCKET = 17; public static boolean hideArms(Item item) { return item.getDefinitions().getEquipType() == 6; } /** * public static boolean scrimshaw(Item item) { String name = * item.getName().toLowerCase(); return item.getDefinitions().getEquipType() == * 17 || name.contains("scrimshaw"); } **/ public static boolean hideHair(Item item) { String name = item.getName().toLowerCase(); return item.getDefinitions().getEquipType() == 8 || name.contains("full helm") || (name.startsWith("void") && name.contains("ranger")) || name.contains("dragon mask") || name.contains("we'en mask") || name.contains("fox mask"); } public static boolean showBear(Item item) { String name = item.getName().toLowerCase(); return !hideHair(item) || name.contains("horns") || name.contains("hat") || name.contains("afro") || name.contains("bronze full") || name.contains("cowl") || name.contains("tattoo") || name.contains("headdress") || name.contains("hood") || name.contains("bearhead") || name.equals("santa hat") || name.contains("partyhat") || name.contains("sleeping") || name.contains("coif") || name.contains("wig") || name.contains("bandana") || name.contains("mitre") || (name.contains("mask") && !name.contains("ween") && !name.contains("sirenic")) || name.contains("med helm") || name.contains("chicken head") || (name.contains("helm") && !name.contains("full") || name.contains("headwear") || item.getId() == 32386); } private ItemsContainer<Item> items; private boolean[] hiddenSlots; private boolean hideAll; private transient double equipmentWeight; public void checkItems() { if (cosmeticItems == null) { cosmeticItems = new ItemsContainer<>(19, false); } if (keepSakeItems == null) { keepSakeItems = new ArrayList<>(50); } if (savedCosmetics == null) { savedCosmetics = new ArrayList<>(); } int size = items.getSize(); int newSize = 15; if (size != newSize) { Item[] copy = items.getItemsCopy(); items = new ItemsContainer<Item>(newSize, false); items.addAll(copy); } for (int i = 0; i < size; i++) { Item item = items.get(i); if (item == null) { continue; } if (!ItemConstants.canWear(item, player)) { items.set(i, null); player.getInventory().addItemDrop(item.getId(), item.getAmount()); } } } private transient Player player; private transient int equipmentHpIncrease; // cosmetics private ItemsContainer<Item> cosmeticItems; private transient ItemsContainer<Item> cosmeticPreviewItems; private List<Item> keepSakeItems; private List<SavedCosmetic> savedCosmetics; private int costumeColor; static final int[] DISABLED_SLOTS = new int[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 }; // try public static int getItemSlot(int itemId) { if (itemId == 14632) { return Equipment.SLOT_SHIELD; } if (itemId == 1917 || itemId == 1963 || itemId == 8794 || itemId == 288) { return -1; } return ItemDefinitions.getItemDefinitions(itemId).getEquipSlot(); } public static boolean isTwoHandedWeapon(Item item) { return item.getDefinitions().getEquipType() == 5; } /** * Sets the attack render animation. * * @param player The player to set the r'emote to. */ public int getWeaponStance() { boolean combatStance = player.getCombatDefinitions().isCombatStance(); Item weapon = items.get(3); if (weapon == null) { Item offhand = items.get(SLOT_SHIELD); if (offhand == null) { return combatStance ? 2688 : 2699; } int emote = offhand.getDefinitions().getCombatOpcode(combatStance ? 2955 : 2954); return emote == 0 ? combatStance ? 2688 : 2699 : emote; } int emote = weapon.getDefinitions().getCombatOpcode(combatStance ? 2955 : 2954); if (weapon.getId() == 4084) { return 1119; } return emote == 0 ? combatStance ? 2688 : 2699 : emote; } public Equipment() { items = new ItemsContainer<Item>(15, false); cosmeticItems = new ItemsContainer<>(15, false); keepSakeItems = new ArrayList<>(50); savedCosmetics = new ArrayList<>(); hiddenSlots = new boolean[15]; } public void deleteItem(int itemId, int amount) { Item[] itemsBefore = items.getItemsCopy(); items.remove(new Item(itemId, amount)); refreshItems(itemsBefore); } public int getAmmoId() { Item item = items.get(SLOT_ARROWS); if (item == null) { return -1; } return item.getId(); } public int getAmuletId() { Item item = items.get(SLOT_AMULET); if (item == null) { return -1; } return item.getId(); } public int getAuraId() { Item item = items.get(SLOT_AURA); if (item == null) { return -1; } return item.getId(); } /** * public int getScrimshawId() { Item item = items.get(SLOT_POCKET); if (item == * null) return -1; return item.getId(); } **/ public int getBootsId() { Item item = items.get(SLOT_FEET); if (item == null) { return -1; } return item.getId(); } public int getCapeId() { Item item = items.get(SLOT_CAPE); if (item == null) { return -1; } return item.getId(); } public int getChestId() { Item item = items.get(SLOT_CHEST); if (item == null) { return -1; } return item.getId(); } public int getEquipmentHpIncrease() { return equipmentHpIncrease; } public int getGlovesId() { Item item = items.get(SLOT_HANDS); if (item == null) { return -1; } return item.getId(); } public int getHatId() { Item item = items.get(SLOT_HAT); if (item == null) { return -1; } return item.getId(); } public Item getItem(int slot) { return items.get(slot); } public ItemsContainer<Item> getItems() { return items; } public int getLegsId() { Item item = items.get(SLOT_LEGS); if (item == null) { return -1; } return item.getId(); } public int getRingId() { Item item = items.get(SLOT_RING); if (item == null) { return -1; } return item.getId(); } public int getShieldId() { Item item = items.get(SLOT_SHIELD); if (item == null) { return -1; } return item.getId(); } public int getWeaponId() { Item item = items.get(SLOT_WEAPON); if (item == null) { return -1; } return item.getId(); } public boolean hasShield() { return items.get(5) != null; } public boolean hasTwoHandedWeapon() { Item weapon = items.get(SLOT_WEAPON); return weapon != null && isTwoHandedWeapon(weapon); } public void init() { if (cosmeticItems == null) { cosmeticItems = new ItemsContainer<>(15, false); } if (hiddenSlots == null) { hiddenSlots = new boolean[15]; } if (keepSakeItems == null) { keepSakeItems = new ArrayList<>(50); } if (savedCosmetics == null) { savedCosmetics = new ArrayList<>(); } player.getPackets().sendItems(94, items); refresh(null); } public void refreshItemContainer() { player.getPackets().sendItems(94, items); refresh(); } public void refresh(int... slots) { if (slots != null) { if (player.getTemporaryAttributtes().get("Cosmetics") != null) { Item[] cosmetics = items.getItemsCopy(); for (int i = 0; i < cosmetics.length; i++) { Item item = cosmetics[i]; if (item == null) { cosmetics[i] = new Item(0); } } player.getPackets().sendUpdateItems(94, cosmetics, slots); } else { player.getPackets().sendUpdateItems(94, items, slots); } player.getCombatDefinitions().checkAttackStyle(); } player.getCombatDefinitions().refreshBonuses(); refreshConfigs(slots == null); } public int rebirthHpIncrease() { boolean hpRebirthPerk = player.Rebirth().isActivatedFirstPerk(RebirthPerks.CONSTITUION); // if (hpRebirthPerk) { // return (int) player.Rebirth().getFirstPerkBenefit(RebirthPerks.CONSTITUION); // } return 0; } private int hpIncrease(int equipSlot, int itemId) { switch (equipSlot) { case Equipment.SLOT_HAT: switch (itemId) { // elite nex armour case 18418: case 18428: case 18438: return 69; // nex armour case 20135:// torva case 20137:// augmented torva case 20147:// pernix case 20149:// augmented pernix case 20159:// virtus case 20161:// augmented virtus return 66; case 26325:// tetsu helm case 26328: // Tetsu helm (worn) case 26337:// seasinger case 26340: // Seasinger's hood (worn) case 26346:// death lotus case 26349: // Death Lotus hood (worn) return 93; case 26322:// superior tetsu helm case 26334:// superior sea singer case 26352:// superior death lotus return 106; case 18376:// elite bandos helm case 18386:// elite armadyl helm case 18396:// elite dragon mage return 26; } break; case Equipment.SLOT_CHEST: switch (itemId) { // elite nex armour case 18420: case 18430: case 18440: return 211; case 20139:// torva case 20141:// torva case 20151:// pernix case 20153:// pernix case 20163:// virtus case 20165:// virtus case 36481:// augmented torva case 36485:// augmented pernix case 36477:// augmented virtus return 200; case 26326:// tetsu body case 26329: // Tetsu body (worn) case 26338:// seassinger body case 26341: // Seasinger's robe top (worn) case 26347:// death lotus body case 26350: // Death Lotus chestplate (worn) return 280; case 26323:// superior tetsu body case 26335:// superior tetsu body case 26353:// death lotus body return 320; case 18378: // Elite Bandos chestplate case 18412: // Augmented Elite Bandos chestplate case 18388: // Elite Armadyl chestplate case 18414: // Augmented Elite Armadyl chestplate case 18398: // Elite Dragon mage top case 18416: // Augmented Elite Dragon mage top return 94; } break; case Equipment.SLOT_LEGS: switch (itemId) { // elite nex armour case 18422: case 18432: case 18442: return 138; case 20143: case 20145: // torva case 20155: case 20157: // pernix case 20167: case 20169: // virtus case 36483: // augmented torva case 36487: // augmented pernix case 36479: // augmented virtus return 134; case 26327:// Tetsu platelegs case 26330: // Tetsu platelegs (worn) case 26339: // Seasinger's robe bottom case 26342: // Seasinger's robe bottom (worn) case 26348: // Death Lotus chaps case 26351: // Death Lotus chaps (worn) return 188; case 26324: // Superior tetsu platelegs case 26336: // Superior seasinger's robe bottom case 26354: // Superior Death Lotus chaps return 214; case 18380: // Elite Bandos tassets case 18413: // Augmented Elite Bandos tassets case 18390: // Elite Armadyl chainskirt case 18415: // Augmented Elite Armadyl chainskirt case 18400: // Elite Dragon mage bottoms case 18417: // Augmented Elite Dragon mage bottoms return 62; } break; case Equipment.SLOT_FEET: switch (itemId) { // elite nex armour case 18426: case 18446: case 18436: return 27; case 18384: // Elite Bandos boots case 18394: // Elite Armadyl boots case 18404: // Elite Dragon mage boots return 10; } break; case Equipment.SLOT_HANDS: switch (itemId) { // elite nex armour case 18424: case 18434: case 18444: return 17; case 18382: // Elite Bandos gloves case 18392: // Elite Armadyl gloves case 18402: // Elite Dragon mage gloves return 6; } break; } return 0; } public void refreshConfigs(boolean init) { double hpIncrease = 0; for (int index = 0; index < items.getSize(); index++) { Item item = items.get(index); if (item == null) { continue; } refreshItems(item); hpIncrease += hpIncrease(index, item.getId()); if (player.getLastBonfire() > 0) { int maxhp = player.getSkills().getLevel(Skills.HITPOINTS) * 10; hpIncrease += (maxhp * (Bonfire.getBonfireBoostMultiplier(player) * (player.Rebirth().isActivatedSecondPerk(RebirthPerks10.FIREMAKING) ? 1.5 : 1))) - maxhp; } if (player.getHpBoostMultiplier() != 0) { int maxhp = player.getSkills().getLevel(Skills.HITPOINTS) * 10; hpIncrease += maxhp * player.getHpBoostMultiplier(); } if (hpIncrease != equipmentHpIncrease) { equipmentHpIncrease = (int) hpIncrease; if (!init) { player.refreshHitPoints(); } } double w = 0; for (Item item1 : items.getItems()) { if (item1 == null) { continue; } w += ItemWeights.getWeight(item1, true); } equipmentWeight = w; player.getPackets().refreshWeight(); } } public double getEquipmentWeight() { return equipmentWeight; } public void refreshItems(Item[] itemsBefore) { int[] changedSlots = new int[itemsBefore.length]; int count = 0; for (int index = 0; index < itemsBefore.length; index++) { if (itemsBefore[index] != items.getItems()[index]) { changedSlots[count++] = index; } } int[] finalChangedSlots = new int[count]; System.arraycopy(changedSlots, 0, finalChangedSlots, 0, count); refresh(finalChangedSlots); } public void handleEquipment(int componentId, int slotId, int itemId, int packetId) { player.closeInterfaces(); if (player.getInterfaceManager().containsInventoryInter()) { return; } int option = packetId == WorldPacketsDecoder.ACTION_BUTTON1_PACKET ? 0 : packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET ? 1 : packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET ? 2 : packetId == WorldPacketsDecoder.ACTION_BUTTON4_PACKET ? 3 : packetId == WorldPacketsDecoder.ACTION_BUTTON5_PACKET ? 4 : packetId == WorldPacketsDecoder.ACTION_BUTTON9_PACKET ? 5 : packetId == WorldPacketsDecoder.ACTION_BUTTON8_PACKET ? 6 : -1; if (option == -1) { return; } ItemDefinitions def = ItemDefinitions.getItemDefinitions(itemId); if (itemId >= 39893 && itemId <= 39901) { if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) { player.getDialogueManager().startDialogue("AttuneGemstoneArmourD"); return; } else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET) { player.getDialogueManager().startDialogue("GemstoneChargesD"); return; } } // if(option == ) String clickedOption = def.getEquipmentOptions()[option]; if (slotId == Equipment.SLOT_CAPE && SkillCapeCustomizer.isCustomizable(itemId)) { switch (clickedOption) { case "Max Guild": Magic.compCapeTeleport(player, 2276, 3315, 1); break; case "Kandarin Monastery": Magic.compCapeTeleport(player, 2606, 3222, 0); break; case "Summoning restore": Long sumRestore = (Long) player.getTemporaryAttributtes().get("sum_restore"); if (sumRestore != null && sumRestore + 1500000 > Utils.currentTimeMillis()) { player.sendMessage("You can only restore your summoning points once every 15 minutes."); return; } player.getSkills().set(Skills.SUMMONING, 99); player.getTemporaryAttributtes().put("sum_restore", Utils.currentTimeMillis()); player.sendMessage("Summoning points restored, you can do this again in 15 minutes."); break; case "Customise": SkillCapeCustomizer.startCustomizing(player, itemId); break; } return; } switch (componentId) { case 6:// HAT if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) { if (itemId == 34030 || itemId == 34031 || itemId == 34032 || itemId == 34033 || itemId == 34034 || itemId == 34035 || itemId == 34036) { player.getDialogueManager().startDialogue("SunglassesD", itemId); return; } if (EliteOutfits.isComponent(itemId)) { if (EliteOutfits.wearingSentinel(player)) { player.getDialogueManager().startDialogue("SentinelTeleports", EliteOutfits.getPrefix(def.getName())); } else { player.getDialogueManager().startDialogue("SimpleItemMessage", 39745, 1, Colors.shade(Colors.SALMON) + "You need to be wearing a full set of matching Sentinel outfit!"); } return; } if (itemId == 24431) { player.setNextGraphics(new Graphics(3187)); return; } if (itemId == 35963 || itemId == 35968 || itemId == 35973 || itemId == 35978) { Magic.sendNormalTeleportSpell(player, 1, 0, new WorldTile(3134, 3228, 0)); return; } if (itemId >= 15493 && itemId <= 15494) { player.getDialogueManager().startDialogue("Kuradal"); return; } if (itemId == 10507) { player.setNextGraphics(new Graphics(263)); player.setNextAnimation(new Animation(7531)); player.sendMessage("You act like a reindeer.. I think."); player.lock(2); return; } final Item idam = player.getEquipment().getItem(Equipment.SLOT_HAT); if (idam != null) { if (player.getCharges().checkCharges(idam)) { return; } } } break; case 9:// CAPE switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: if (itemId == 10498 || itemId == 10499 || itemId == 20068) { player.sendMessage("You can not operate that."); } if (itemId == 12645) { player.setNextAnimation(new Animation(8903)); player.setNextGraphics(new Graphics(1566)); player.lock(6); } if (def.isMaxCape() || def.isCompletionistCape()) { Magic.compCapeTeleport(player, 2274, 3340, 1); } if (clickedOption.equals("Communicate")) { if (itemId == 37694) { player.getDialogueManager().startDialogue("SkillingMasterD", false); return; } else if (itemId == 25450) { if (player.getContracts().canTalkToAdvancedMaster(true)) { player.getDialogueManager().startDialogue("SkillingMasterD", true); } return; } } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (def.isMaxCape() || def.isCompletionistCape()) { SkillCapeCustomizer.startCustomizing(player, itemId); } break; case WorldPacketsDecoder.ACTION_BUTTON8_PACKET: final Item idam1 = player.getEquipment().getItem(Equipment.SLOT_CAPE); if (idam1 != null) { if (player.getCharges().checkCharges(idam1)) { return; } } break; case WorldPacketsDecoder.ACTION_BUTTON9_PACKET: if (itemId == 20769 || itemId == 20771 || itemId == 32152 || itemId == 32153) { SkillCapeCustomizer.startCustomizing(player, itemId); } break; } break; case 12:// AMULET switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: int amuletId = player.getEquipment().getAmuletId(); if (amuletId == 37130 || amuletId >= 39298 && amuletId <= 39307) { player.getDialogueManager().startDialogue("ChicScarfD", amuletId, true); return; } else if (amuletId == 21514) { player.sendMessage("Your arcane capacitor has " + player.getEquipment().getItem(Equipment.SLOT_AMULET).getCharges() + " charges left in it."); return; } if (amuletId <= 1712 && amuletId >= 1706) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3087, 3496, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } else if (amuletId >= 11105 && amuletId <= 11111) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2614, 3382, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } else if (amuletId == 1704 || amuletId == 10352) { player.sendMessage("The amulet has ran out of charges."); return; } else if (amuletId == 11113) { player.sendMessage("The amulet has ran out of charges."); return; } else if (amuletId >= 3853 && amuletId <= 3867) { player.getDialogueManager().startDialogue("Transportation2", "Burthrope Games Room", new WorldTile(2880, 3559, 0), "Barbarian Outpost", new WorldTile(2519, 3571, 0), "Gamers' Grotto", new WorldTile(2970, 9679, 0), "Corporeal Beast", new WorldTile(2886, 4377, 0), amuletId); return; } final Item idam2 = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (idam2 != null) { if (player.getCharges().checkCharges(idam2)) { return; } } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (itemId <= 1712 && itemId >= 1706) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2918, 3176, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } else if (itemId >= 11105 && itemId <= 11111) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3021, 3339, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } break; case WorldPacketsDecoder.ACTION_BUTTON4_PACKET: if (itemId <= 1712 && itemId >= 1706) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3105, 3251, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } else if (itemId >= 11105 && itemId <= 11111) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2933, 3296, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } break; case WorldPacketsDecoder.ACTION_BUTTON5_PACKET: if (itemId <= 1712 && itemId >= 1706) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3293, 3163, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } else if (itemId >= 11105 && itemId <= 11111) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3142, 3440, 0))) { Item amulet = player.getEquipment().getItem(Equipment.SLOT_AMULET); if (amulet != null) { amulet.setId(amulet.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_AMULET); } } } break; } break; case 15:// WEAPON switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: if (itemId == 15426) { player.setNextAnimation(new Animation(12664)); } if (itemId == 20084) { player.setNextAnimation(new Animation(15150)); } final Item idam3 = player.getEquipment().getItem(Equipment.SLOT_WEAPON); if (idam3 != null) { if (player.getCharges().checkCharges(idam3)) { return; } } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (itemId == 20084) { player.setNextGraphics(new Graphics(2953)); player.setNextAnimation(new Animation(15149)); } break; } break; case 18:// BODY if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) { final Item idam4 = player.getEquipment().getItem(Equipment.SLOT_CHEST); if (idam4 != null) { if (player.getCharges().checkCharges(idam4)) { return; } } } break; case 21:// SHIELD switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: final Item idam5 = player.getEquipment().getItem(Equipment.SLOT_SHIELD); if (idam5 != null) { if (PrayerBooks.isGodBook(idam5.getId(), true)) { PrayerBooks.sermanize(player, idam5.getId()); return; } } int shieldId = player.getEquipment().getShieldId(); if (shieldId == 11283 || shieldId == 25558 || shieldId == 25561) { if (player.getDFSDelay() >= Utils.currentTimeMillis()) { player.sendMessage("You must wait two minutes before performing this attack once more."); return; } player.getTemporaryAttributtes().put("dfs_shield_active", true); } else if (shieldId == 11284 || shieldId == 25559 || shieldId == 25562) { player.sendMessage("You don't have any charges left in your shield."); } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: final Item idam6 = player.getEquipment().getItem(Equipment.SLOT_SHIELD); if (idam6.getId() == 14632) { player.performInstantSpecial(idam6.getId()); return; } if (idam6 != null) { if (idam6.getId() == 30014 || idam6.getId() == 30018 || idam6.getId() == 30022) { Entity target = (Entity) player.getTemporaryAttributtes().get("last_target"); if (target != null && !target.isDead() && !target.hasFinished()) { if (target instanceof Player) { player.sendMessage("You cannot provoke players."); return; } else if (target instanceof NPC) { long lastProvoke = player.getTemporaryAttributtes().get("provoke") == null ? 0 : (long) player.getTemporaryAttributtes().get("provoke"); if (lastProvoke > Utils.currentTimeMillis()) { final int seconds = (int) ((lastProvoke - Utils.currentTimeMillis()) / 1000 + 1); player.sendMessage("You need to wait another " + seconds + " second" + (seconds == 1 ? "" : "s") + " to use provoke."); return; } player.getTemporaryAttributtes().put("provoke", Utils.currentTimeMillis() + 30000); target.setTarget(player); player.setNextAnimation(new Animation(18130)); } } else { player.sendMessage("You need to be engaged in combat to use provoke."); } return; } if (player.getCharges().checkCharges(idam6)) { return; } } break; } break; case 24:// LEGS if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) { final Item idam7 = player.getEquipment().getItem(Equipment.SLOT_LEGS); if (idam7 != null) { if (player.getCharges().checkCharges(idam7)) { return; } } } break; case 27:// HANDS switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: if (itemId >= 11118 && itemId <= 11124) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2880, 3542, 0))) { Item gloves = player.getEquipment().getItem(Equipment.SLOT_HANDS); if (gloves != null) { gloves.setId(gloves.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_HANDS); } } } else if (itemId == 11126) { player.sendMessage("The bracelet has ran out of charges."); return; } final Item idam8 = player.getEquipment().getItem(Equipment.SLOT_HANDS); if (itemId >= 13845 && itemId <= 13857) { player.sendMessage("Your " + idam8.getName() + " have " + (int) Math.ceil((double) idam8.getCharges() / Revenant.getBrawlersCharges(itemId) * 100) + "% of its charges left."); return; } if (idam8 != null) { if (player.getCharges().checkCharges(idam8)) { return; } } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (itemId >= 11118 && itemId <= 11124) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3191, 3367, 0))) { Item gloves = player.getEquipment().getItem(Equipment.SLOT_HANDS); if (gloves != null) { gloves.setId(gloves.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_HANDS); } } } break; case WorldPacketsDecoder.ACTION_BUTTON4_PACKET: if (itemId >= 11118 && itemId <= 11124) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3051, 3491, 0))) { Item gloves = player.getEquipment().getItem(Equipment.SLOT_HANDS); if (gloves != null) { gloves.setId(gloves.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_HANDS); } } } break; case WorldPacketsDecoder.ACTION_BUTTON5_PACKET: if (itemId >= 11118 && itemId <= 11124) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2655, 3441, 0))) { Item gloves = player.getEquipment().getItem(Equipment.SLOT_HANDS); if (gloves != null) { gloves.setId(gloves.getId() + 2); player.getEquipment().refresh(Equipment.SLOT_HANDS); } } } break; } break; case 30:// BOOTS if (packetId == WorldPacketsDecoder.ACTION_BUTTON2_PACKET) { final Item idam9 = player.getEquipment().getItem(Equipment.SLOT_FEET); if (idam9 != null) { if (idam9.getId() >= 30920 && idam9.getId() <= 30924) { if (idam9.getCharges() == 0) { player.sendMessage("There are no charges left in your Silverhawk boots."); } else { player.sendMessage("There " + (idam9.getCharges() == 1 ? "is " : "are ") + idam9.getCharges() + " charges left in your Silverhawk boots."); } return; } if (player.getCharges().checkCharges(idam9)) { return; } } } else if (packetId == WorldPacketsDecoder.ACTION_BUTTON3_PACKET) { if (player.isUnderCombat()) { player.sendMessage("You need to be out of combat to do this emote."); return; } player.lock(15); player.stopAll(); player.setNextAnimation(new Animation(22794)); player.setNextGraphics(new Graphics(4604)); player.setNextGraphics(new Graphics(4603)); return; } break; case 33:// RING switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: if (itemId == 15707 || ItemDefinitions.getItemDefinitions(itemId).isRingOfKinship()) { player.getDungManager().openPartyInterface(); return; } if (itemId >= 13281 && itemId <= 13288) { player.getDialogueManager().startDialogue("Kuradal", 9085); return; } if (itemId == 2572) { player.getInterfaceManager().sendBossKillLog(); return; } if (itemId >= 34987 && itemId <= 34995) { player.getDialogueManager().startDialogue("KethsiRing", itemId, false); return; } if (itemId >= 2552 && itemId <= 2566) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(3315, 3234, 0))) { Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); if (ring != null) { if (ring.getId() == 2566) { ring.setId(1635); } else { ring.setId(ring.getId() + 2); } player.getEquipment().refresh(Equipment.SLOT_RING); } } return; } if (itemId == 2568) { int left = 140 - player.ironOres; player.sendMessage("Your ring of forging has " + Colors.RED + left + "</col> charges left."); return; } if (itemId >= 20655 && itemId <= 20659) { Magic.sendItemTeleportSpell(player, true, 9603, 1684, 4, new WorldTile(2581, 3845, 0)); Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); ring.setId(ring.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_RING); return; } if (itemId == 20653) { Magic.sendItemTeleportSpell(player, true, 9603, 1684, 4, new WorldTile(2581, 3845, 0)); Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); player.getEquipment().refresh(Equipment.SLOT_RING); ring.setId(2572); return; } final Item idam9 = player.getEquipment().getItem(Equipment.SLOT_RING); if (idam9 != null) { if (player.getCharges().checkCharges(idam9)) { return; } } break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (itemId == 15707) { Magic.daemonheimTeleport(player, new WorldTile(3448, 3699, 0)); return; } else if (ItemDefinitions.getItemDefinitions(itemId).isRingOfKinship()) { player.getRingOfKinship().quickSwitch(new Item(itemId)); return; } if (itemId >= 13281 && itemId <= 13288) { player.getDialogueManager().startDialogue("Kuradal", 9085); return; } if (itemId >= 2552 && itemId <= 2566) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2442, 3088, 0))) { Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); if (ring != null) { if (ring.getId() == 2566) { ring.setId(1635); } else { ring.setId(ring.getId() + 2); } player.getEquipment().refresh(Equipment.SLOT_RING); } } } if (itemId >= 20655 && itemId <= 20659) { Magic.sendItemTeleportSpell(player, true, 9603, 1684, 4, new WorldTile(3164, 3468, 0)); Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); ring.setId(ring.getId() - 2); player.getEquipment().refresh(Equipment.SLOT_RING); return; } if (itemId == 20653) { Magic.sendItemTeleportSpell(player, true, 9603, 1684, 4, new WorldTile(3164, 3468, 0)); Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); ring.setId(2572); player.getEquipment().refresh(Equipment.SLOT_RING); return; } break; case WorldPacketsDecoder.ACTION_BUTTON4_PACKET: /* * if (itemId == 15707) { player.sendMessage("You cannot customise your ring."); * return; } */ if (itemId == 15707 || ItemDefinitions.getItemDefinitions(itemId).isRingOfKinship()) { player.getRingOfKinship().openInterface(new Item(itemId, 1)); // player.getRingOfKinship().openInterface(new Item(itemId, 1)); // System.out.println(packetId); // Magic.daemonheimTeleport(player, new WorldTile(3448, // 3699, 0)); return; } if (itemId >= 13281 && itemId <= 13288) { player.getInterfaceManager().sendInterface(1309); return; } if (itemId >= 2552 && itemId <= 2566) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(2413, 2848, 0))) { Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); if (ring != null) { if (ring.getId() == 2566) { ring.setId(1635); } else { ring.setId(ring.getId() + 2); } player.getEquipment().refresh(Equipment.SLOT_RING); } } } break; case WorldPacketsDecoder.ACTION_BUTTON5_PACKET: if (itemId >= 2552 && itemId <= 2566) { if (Magic.sendItemTeleportSpell(player, true, Transportation.EMOTE, Transportation.GFX, 4, new WorldTile(1679, 5599, 0))) { Item ring = player.getEquipment().getItem(Equipment.SLOT_RING); if (ring != null) { if (ring.getId() == 2566) { ring.setId(1635); } else { ring.setId(ring.getId() + 2); } player.getEquipment().refresh(Equipment.SLOT_RING); } } } break; } break; case 37:// ARROWS break; case 46:// AURA switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON2_PACKET: player.getAuraManager().activate(); break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: player.getAuraManager().sendAuraRemainingTime(); break; case WorldPacketsDecoder.ACTION_BUTTON4_PACKET: ButtonHandler.sendRemove(player, Equipment.SLOT_AURA, false); player.getAuraManager().removeAura(); break; } break; case 38: player.closeInterfaces(); ButtonHandler.openEquipmentBonuses(player, false); break; case 41: player.stopAll(); if (player.getControlerManager().getControler() instanceof DungeonController) { // player.getDungeoneeringToolbelt().openToolbelt(); return; } player.getInterfaceManager().sendInterface(1178); player.getToolBelt().refresh(); break; } switch (packetId) { case WorldPacketsDecoder.ACTION_BUTTON1_PACKET: ButtonHandler.sendRemove(player, componentId == 6 ? 0 : componentId == 9 ? 1 : componentId == 12 ? 2 : componentId == 37 ? 13 : componentId == 15 ? 3 : componentId == 18 ? 4 : componentId == 21 ? 5 : componentId == 24 ? 7 : componentId == 27 ? 9 : componentId == 30 ? 10 : componentId == 33 ? 12 : componentId == 45 ? 14 : -1, false); break; case WorldPacketsDecoder.ACTION_BUTTON3_PACKET: if (itemId == 34200 || itemId == 34205 || itemId == 34210 || itemId == 34215) { player.getDialogueManager().startDialogue("SharkConsumeOption"); return; } break; case WorldPacketsDecoder.ACTION_BUTTON8_PACKET: player.getEquipment().sendExamine(componentId == 6 ? 0 : componentId == 9 ? 1 : componentId == 12 ? 2 : componentId == 37 ? 13 : componentId == 15 ? 3 : componentId == 18 ? 4 : componentId == 21 ? 5 : componentId == 24 ? 7 : componentId == 27 ? 9 : componentId == 30 ? 10 : componentId == 33 ? 12 : componentId == 45 ? 14 : -1); break; } } public void removeAmmo(int ammoId, int ammount) { if (ammount == -1) { val superiorMorrigansJavelinItemId = 39139; val superiorMorrigansThrowingAxeItemId = 39143; if (ammoId == superiorMorrigansJavelinItemId || ammoId == superiorMorrigansThrowingAxeItemId) { return; } items.remove(SLOT_WEAPON, new Item(ammoId, 1)); refresh(SLOT_WEAPON); } else { items.remove(SLOT_ARROWS, new Item(ammoId, ammount)); refresh(SLOT_ARROWS); } player.getAppearence().generateAppearenceData(); } public void removeAmmo(int ammoId, int ammount, boolean primary) { if (ammount == -1) { items.remove(primary ? SLOT_WEAPON : SLOT_SHIELD, new Item(ammoId, 1)); refresh(primary ? SLOT_WEAPON : SLOT_SHIELD); } else { items.remove(SLOT_ARROWS, new Item(ammoId, ammount)); refresh(SLOT_ARROWS); } player.getAppearence().generateAppearenceData(); } public void setGear(byte gear) { int slot = gear; items.remove(slot, new Item(items.get(slot))); refresh(gear); } public void reset() { items.reset(); init(); } public void sendExamine(int slotId) { Item item = items.get(slotId); if (item == null) { return; } player.getPackets().sendGameMessage(ItemExamines.getExamine(item)); } public void setEquipmentHpIncrease(int hp) { this.equipmentHpIncrease = hp; } public void setPlayer(Player player) { this.player = player; } public boolean wearingArmourExceptAura() { return getItem(SLOT_HAT) != null || getItem(SLOT_CAPE) != null || getItem(SLOT_AMULET) != null || getItem(SLOT_WEAPON) != null || getItem(SLOT_CHEST) != null || getItem(SLOT_SHIELD) != null || getItem(SLOT_LEGS) != null || getItem(SLOT_HANDS) != null || getItem(SLOT_FEET) != null || getItem(SLOT_ARROWS) != null || getItem(SLOT_RING) != null; } public boolean wearingArmour() { return getItem(SLOT_HAT) != null || getItem(SLOT_CAPE) != null || getItem(SLOT_AMULET) != null || getItem(SLOT_WEAPON) != null || getItem(SLOT_CHEST) != null || getItem(SLOT_SHIELD) != null || getItem(SLOT_LEGS) != null || getItem(SLOT_HANDS) != null || getItem(SLOT_FEET) != null || getItem(SLOT_ARROWS) != null || getItem(SLOT_AURA) != null || getItem(SLOT_RING) != null; } public ItemsContainer<Item> getItemsContainer() { return items; } public void set(int i, Item item) { items.set(i, item); refresh(); } public boolean containsOneItem(int... itemIds) { for (int itemId : itemIds) { if (items.containsOne(new Item(itemId, 1))) { return true; } } return false; } /** * Explicitly used for Warpriest upgrading. * * @param itemId the Item ID to upgrade. */ private boolean refreshItems(Item item) { int defenceLvl = player.getSkills().getLevelForXp(Skills.DEFENCE); int items50[] = { 30306, 30309, 30312, 30315, 30318, 30321, 28773, 28776, 28779, 28782, 28785, 28788, 28755, 28758, 28761, 28764, 28767, 28770, 30288, 30291, 30294, 30297, 30300, 30303 }; int items75[] = { 30307, 30310, 30313, 30316, 30319, 30322, 28774, 28777, 28780, 28783, 28786, 28789, 28756, 28759, 28762, 28765, 28768, 28771, 30289, 30292, 30295, 30298, 30301, 30304 }; if (defenceLvl >= 50 && defenceLvl < 75) { for (int itemId : items50) { if (item.getId() == itemId) { player.sendMessage("Your " + item.getName() + " upgraded to a higher tier."); item.setId(item.getId() + 1); return true; } } } if (defenceLvl >= 75) { for (int itemId : items75) { if (item.getId() == itemId) { player.sendMessage("Your " + item.getName() + " upgraded to a higher tier."); item.setId(item.getId() + 1); return true; } } for (int itemId : items50) { if (item.getId() == itemId) { player.sendMessage("Your " + item.getName() + " upgraded to a higher tier."); item.setId(item.getId() + 2); return true; } } } return false; } public int getWeaponEndCombatEmote() { Item weapon = items.get(3); if (weapon == null) { Item offhand = items.get(SLOT_SHIELD); if (offhand == null) { return -1; } int emote = offhand.getDefinitions().getCombatOpcode(2918); return emote == 0 ? 18025 : emote; } int emote = weapon.getDefinitions().getCombatOpcode(2918); return emote == 0 ? 18025 : emote; } public ItemsContainer<Item> getCosmeticItems() { return cosmeticItems; } public List<Item> getKeepSakeItems() { return keepSakeItems; } public boolean containsKeepSakeItem(int itemId) { for (Item item : keepSakeItems) { if (item == null) { continue; } if (item.getId() == itemId) { return true; } } return false; } public List<SavedCosmetic> getSavedCosmetics() { if (savedCosmetics == null) { savedCosmetics = new ArrayList<>(); } return savedCosmetics; } public boolean[] getHiddenSlots() { return hiddenSlots; } public boolean isCanDisplayCosmetic() { if (player.getControlerManager().getControler() != null && player.getControlerManager().getControler() instanceof ArenaControler) { return false; } if (player.getControlerManager().getControler() instanceof LastManStandingLobbyController || player.getControlerManager().getControler() instanceof LastManStandingGameController || player.getControlerManager().getControler() instanceof LastManStandingPostGameController) { return false; } if (player.isOwner()) { return true; } return !player.isCanPvp(); } public int getCostumeColor() { return costumeColor; } public void setCostumeColor(int costumeColor) { this.costumeColor = costumeColor; player.getAppearence().generateAppearenceData(); } public boolean isHideAll() { return hideAll; } public void setHideAll(boolean hideAll) { this.hideAll = hideAll; } public void resetCosmetics() { cosmeticItems.reset(); } public static final class Cosmetic implements Serializable { /** * */ private static final long serialVersionUID = 3243926269985535095L; private ItemsContainer<Item> cosmeticItems; private boolean[] hiddenSlots; private String cosmeticName; public Cosmetic(String cosmeticName, ItemsContainer<Item> cosmeticItems, boolean[] hiddenSlots) { this.cosmeticName = cosmeticName; this.cosmeticItems = cosmeticItems; this.hiddenSlots = hiddenSlots; } public ItemsContainer<Item> getCosmeticItems() { return cosmeticItems; } public boolean[] getHiddenSlots() { return hiddenSlots; } public String getCosmeticName() { return cosmeticName; } } public int getWeaponRenderEmote() { Item weapon = items.get(3); if (weapon == null) { return 1426; } if (weapon.getName().toLowerCase().contains("mace") || weapon.getName().toLowerCase().contains("halberd")) { return 1426; } return weapon.getDefinitions().getRenderAnimId(); } public ItemsContainer<Item> getCosmeticPreviewItems() { return cosmeticPreviewItems; } public void setCosmeticPreviewItems(ItemsContainer<Item> cosmeticPreviewItems) { this.cosmeticPreviewItems = cosmeticPreviewItems; } public void resetEquipmentSlots() { ItemsContainer<Item> i = items.asItemContainer(); items = new ItemsContainer<Item>(19, false); for (int x = 0; x < 19; x++) { items.set(x, i.get(x)); } } public long getEquipmentValue() { long value = 0; for (Item equipment : player.getEquipment().getItems().toArray()) { if (equipment == null) { continue; } long amount = equipment.getAmount(); value += equipment.getDefinitions().getValue() * amount; } return value; } public void resetExcept(int slot) { for (byte i = 0; i <= SLOT_ARROWS; i++) { if (i == slot) { continue; } if (items.get(i) != null) { setGear(i); } } } }
Editor is loading...