diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java index 46f7e0b4b9f8a8f98d63767b14054b0a18cf8efa..a1262e469a6745852a4f9626089af4ce8a7a57ed 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSoulShot.java @@ -14,11 +14,13 @@ */ package handlers.itemhandlers; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.L2Summon; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; @@ -33,21 +35,19 @@ public class BeastSoulShot implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (playable == null) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance activeOwner = null; - if (playable instanceof L2Summon) + L2PcInstance activeOwner = playable.getActingPlayer(); + if (!playable.isPlayer()) { - activeOwner = ((L2Summon) playable).getOwner(); - activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM); + playable.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM); return false; } - else if (playable instanceof L2PcInstance) - activeOwner = (L2PcInstance) playable; - if (activeOwner == null) - return false; L2Summon activePet = activeOwner.getPet(); if (activePet == null) @@ -62,9 +62,16 @@ public class BeastSoulShot implements IItemHandler return false; } - int itemId = item.getItemId(); - short shotConsumption = activePet.getSoulShotsPerHit(); - long shotCount = item.getCount(); + final int itemId = item.getItemId(); + final short shotConsumption = activePet.getSoulShotsPerHit(); + final long shotCount = item.getCount(); + final SkillHolder[] skills = item.getItem().getSkills(); + + if (skills == null) + { + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); + return false; + } if (!(shotCount > shotConsumption)) { @@ -74,23 +81,21 @@ public class BeastSoulShot implements IItemHandler return false; } - L2ItemInstance weaponInst = null; - - if (activePet instanceof L2PetInstance) - weaponInst = ((L2PetInstance) activePet).getActiveWeaponInstance(); + L2ItemInstance weaponInst = activePet.getActiveWeaponInstance(); if (weaponInst == null) { - if (activePet.getChargedSoulShot() != L2ItemInstance.CHARGED_NONE) + if (activePet.getChargedSoulShot() != L2ItemInstance.CHARGED_NONE) // SoulShots are already active. + { return false; + } activePet.setChargedSoulShot(L2ItemInstance.CHARGED_SOULSHOT); } else { - if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE) - { - // SoulShots are already active. + if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE) // SoulShots are already active. + { return false; } weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT); @@ -107,7 +112,7 @@ public class BeastSoulShot implements IItemHandler // Pet uses the power of spirit. activeOwner.sendPacket(SystemMessageId.PET_USE_SPIRITSHOT); - Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, itemId == 6645 ? 2033 : 22036, 1, 0, 0), 360000/*600*/); + Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 2000); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java index 95441b08cbf5e73da345623bef0c1e717015733f..522f72329b1d83db3c9d6079558a3b06733b3b77 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpice.java @@ -14,13 +14,14 @@ */ package handlers.itemhandlers; -import com.l2jserver.gameserver.datatables.SkillTable; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2FeedableBeastInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; -import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; public class BeastSpice implements IItemHandler @@ -28,10 +29,20 @@ public class BeastSpice implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } + + final L2PcInstance activeChar = playable.getActingPlayer(); + final SkillHolder[] skills = item.getItem().getSkills(); - L2PcInstance activeChar = (L2PcInstance) playable; + if (skills == null) + { + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); + return false; + } if (!(activeChar.getTarget() instanceof L2FeedableBeastInstance)) { @@ -39,19 +50,10 @@ public class BeastSpice implements IItemHandler return false; } - int skillId = 0; - switch (item.getItemId()) + for (SkillHolder sk : skills) { - case 6643: - skillId = 2188; - break; - case 6644: - skillId = 2189; - break; + activeChar.useMagic(sk.getSkill(), false, false); } - L2Skill skill = SkillTable.getInstance().getInfo(skillId, 1); - if (skill != null) - activeChar.useMagic(skill, false, false); return true; } } \ No newline at end of file diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java index 63bd83216e9c0ec14e59dc59ebd3d9da6ab925a5..c91f839b91781759c7babe48b425037028a1ec44 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BeastSpiritShot.java @@ -14,11 +14,13 @@ */ package handlers.itemhandlers; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.L2Summon; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; @@ -33,12 +35,15 @@ public class BeastSpiritShot implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (playable == null) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } L2PcInstance activeOwner = playable.getActingPlayer(); - if (playable instanceof L2Summon) + if (!playable.isPlayer()) { activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM); return false; @@ -58,9 +63,16 @@ public class BeastSpiritShot implements IItemHandler return false; } - int itemId = item.getItemId(); - boolean isBlessed = (itemId == 6647 || itemId == 20334); - short shotConsumption = activePet.getSpiritShotsPerHit(); + final int itemId = item.getItemId(); + final boolean isBlessed = (itemId == 6647 || itemId == 20334); // TODO: Unhardcode these! + final short shotConsumption = activePet.getSpiritShotsPerHit(); + final SkillHolder[] skills = item.getItem().getSkills(); + + if (skills == null) + { + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); + return false; + } long shotCount = item.getCount(); if (!(shotCount > shotConsumption)) @@ -71,14 +83,11 @@ public class BeastSpiritShot implements IItemHandler return false; } - L2ItemInstance weaponInst = null; - - if (activePet instanceof L2PetInstance) - weaponInst = ((L2PetInstance) activePet).getActiveWeaponInstance(); + L2ItemInstance weaponInst = activePet.getActiveWeaponInstance(); if (weaponInst == null) { - if (activePet.getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE) + if (activePet.getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE) // SoulShots are already active. return false; if (isBlessed) @@ -88,7 +97,7 @@ public class BeastSpiritShot implements IItemHandler } else { - if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) + if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) // SoulShots are already active. { // SpiritShots are already active. return false; @@ -109,23 +118,7 @@ public class BeastSpiritShot implements IItemHandler // Pet uses the power of spirit. activeOwner.sendPacket(SystemMessageId.PET_USE_SPIRITSHOT); - int skillId = 0; - switch (itemId) - { - case 6646: - skillId = 2008; - break; - case 6647: - skillId = 2009; - break; - case 20333: - skillId = 22037; - break; - case 20334: - skillId = 22038; - break; - } - Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skillId, 1, 0, 0), 360000/*600*/); + Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 2000); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java index b31c95e7c55669e9ec801ccbad0467749d9c564d..65b82c3e4153f06210a257de182c6f998d96851f 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/BlessedSpiritShot.java @@ -34,6 +34,7 @@ public class BlessedSpiritShot implements IItemHandler { if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } @@ -59,7 +60,7 @@ public class BlessedSpiritShot implements IItemHandler } // Check if Blessed SpiritShot is already active (it can be charged over SpiritShot) - if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) + if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) // SoulShots are already active. return false; // Check for correct grade @@ -86,7 +87,7 @@ public class BlessedSpiritShot implements IItemHandler // Send message to client activeChar.sendPacket(SystemMessageId.ENABLED_SPIRITSHOT); - Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 360000); + Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 2000); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java index b1bd5c1596ac7d3e55f684d2ab8d0dae4f640580..11cab12794376bd156dd281b77eda9fa44417526 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Book.java @@ -19,6 +19,7 @@ import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; @@ -27,8 +28,12 @@ public class Book implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } + L2PcInstance activeChar = (L2PcInstance) playable; final int itemId = item.getItemId(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java index 019bad0c4e67fc14ac7c846e6e01bb49bbce7515..ed4b8cd61827fddd7b0372c58fa5449d4f1d4f7c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java @@ -17,6 +17,7 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ShowCalculator; /** @@ -24,16 +25,16 @@ import com.l2jserver.gameserver.network.serverpackets.ShowCalculator; */ public class Calculator implements IItemHandler { - private static final int CalculatorId = 4393; - @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } - playable.broadcastPacket(new ShowCalculator(CalculatorId)); + + playable.sendPacket(new ShowCalculator(item.getItemId())); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java index e2bc0fafbb27da8bfd7ab65b6fc459d532e82f12..a7e51dfd56229e614c893d1717277db30ead238c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ChristmasTree.java @@ -29,7 +29,13 @@ public class ChristmasTree implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - L2PcInstance activeChar = (L2PcInstance) playable; + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); + return false; + } + + L2PcInstance activeChar = playable.getActingPlayer(); L2NpcTemplate template1 = null; switch (item.getItemId()) @@ -55,6 +61,7 @@ public class ChristmasTree implements IItemHandler spawn.setLocx(target.getX()); spawn.setLocy(target.getY()); spawn.setLocz(target.getZ()); + spawn.setInstanceId(activeChar.getInstanceId()); spawn.spawnOne(false); activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java index 940267c08f7aab40fbf8e9eb709b87e73cad7224..cbe596218dfb4fe11c8d2709ee65adceff6ff0d4 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Disguise.java @@ -29,10 +29,13 @@ public class Disguise implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance activeChar = (L2PcInstance) playable; + L2PcInstance activeChar = playable.getActingPlayer(); int regId = TerritoryWarManager.getInstance().getRegisteredTerritoryId(activeChar); if (regId > 0 && regId == (item.getItemId() - 13596)) diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java index 242e1c3df33280f6a89d7ad2d81adce98aacf3cc..c16f8d013af8ff635b76182c09c436d2e9ba23d6 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Elixir.java @@ -15,7 +15,6 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.model.actor.L2Playable; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.SystemMessageId; @@ -24,7 +23,7 @@ public class Elixir extends ItemSkills @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) { playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java index 076faac09efb36c37d303895c42a5de5a5269c11..d033c111b188d05c89a255aeda93621105a7decb 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantAttribute.java @@ -26,12 +26,17 @@ public class EnchantAttribute implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - final L2PcInstance activeChar = (L2PcInstance) playable; + final L2PcInstance activeChar = playable.getActingPlayer(); if (activeChar.isCastingNow()) + { return false; + } if (activeChar.isEnchanting()) { diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java index ef0fe55b9d65128dc836587e57223b6442ef6d29..e2733f1ef69bd3bf9b6dccd13701f7ea6ee499b1 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnchantScrolls.java @@ -26,12 +26,17 @@ public class EnchantScrolls implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - final L2PcInstance activeChar = (L2PcInstance) playable; + final L2PcInstance activeChar = playable.getActingPlayer(); if (activeChar.isCastingNow()) + { return false; + } if (activeChar.isEnchanting()) { diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java index 69ad172b88020b02950461e2bd356c297052f608..43649de809cf835f4b097594261049d8e3b48ea9 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EnergyStarStone.java @@ -17,7 +17,6 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2AirShipInstance; import com.l2jserver.gameserver.model.actor.instance.L2ControllableAirShipInstance; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; @@ -28,13 +27,14 @@ public class EnergyStarStone extends ItemSkills @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - final L2AirShipInstance ship = ((L2PcInstance)playable).getAirShip(); - if (ship == null - || !(ship instanceof L2ControllableAirShipInstance) - || ship.getFuel() >= ship.getMaxFuel()) + final L2AirShipInstance ship = playable.getActingPlayer().getAirShip(); + if (ship == null || !(ship instanceof L2ControllableAirShipInstance) || ship.getFuel() >= ship.getMaxFuel()) { final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED); sm.addItemName(item); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java index c13ac838ef327f222fd3a25da83e952b3baeebff..90db74ffdbbaa0fea8fa793ac99f3f562cd4d621 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/EventItem.java @@ -34,14 +34,18 @@ public class EventItem implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - boolean used = false; - if(!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - final L2PcInstance activeChar = (L2PcInstance)playable; + boolean used = false; + + final L2PcInstance activeChar = playable.getActingPlayer(); final int itemId = item.getItemId(); - switch(itemId) + switch (itemId) { case 13787: // Handy's Block Checker Bond used = useBlockCheckerItem(activeChar, item); @@ -50,7 +54,7 @@ public class EventItem implements IItemHandler used = useBlockCheckerItem(activeChar, item); break; default: - _log.warning("EventItemHandler: Item with id: "+itemId+" is not handled"); + _log.warning("EventItemHandler: Item with id: " + itemId + " is not handled"); } return used; } @@ -58,7 +62,7 @@ public class EventItem implements IItemHandler private final boolean useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item) { final int blockCheckerArena = castor.getBlockCheckerArena(); - if(blockCheckerArena == -1) + if (blockCheckerArena == -1) { SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED); msg.addItemName(item); @@ -66,29 +70,28 @@ public class EventItem implements IItemHandler return false; } - final L2Skill sk = item.getEtcItem().getSkills()[0].getSkill(); - if(sk == null) + if (sk == null) return false; - if(!castor.destroyItem("Consume", item, 1, castor, true)) + if (!castor.destroyItem("Consume", item, 1, castor, true)) return false; final L2BlockInstance block = (L2BlockInstance) castor.getTarget(); final ArenaParticipantsHolder holder = HandysBlockCheckerManager.getInstance().getHolder(blockCheckerArena); - if(holder != null) + if (holder != null) { final int team = holder.getPlayerTeam(castor); - for(final L2PcInstance pc : block.getKnownList().getKnownPlayersInRadius(sk.getEffectRange())) + for (final L2PcInstance pc : block.getKnownList().getKnownPlayersInRadius(sk.getEffectRange())) { final int enemyTeam = holder.getPlayerTeam(pc); - if(enemyTeam != -1 && enemyTeam != team) + if (enemyTeam != -1 && enemyTeam != team) sk.getEffects(castor, pc); } return true; } - _log.warning("Char: "+castor.getName()+"["+castor.getObjectId()+"] has unknown block checker arena"); + _log.warning("Char: " + castor.getName() + "[" + castor.getObjectId() + "] has unknown block checker arena"); return false; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java index fe42ec33026c7152599bb084a6de0678f493df2a..c46f448d12edeaf97077d4ec08feb50e94e495c3 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ExtractableItems.java @@ -38,8 +38,9 @@ public class ExtractableItems implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } @@ -52,7 +53,7 @@ public class ExtractableItems implements IItemHandler return false; } - //destroy item + // destroy item if (!activeChar.destroyItem("Extract", item.getObjectId(), 1, activeChar, true)) { return false; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java index 5f746f6182970ef58b993bc45f98d6b8e469d4b9..445a38b1364b7f8544f948481c37d70251fbcb22 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/FishShots.java @@ -14,13 +14,16 @@ */ package handlers.itemhandlers; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.L2Object; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; -import com.l2jserver.gameserver.model.items.L2Item; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.L2Weapon; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.model.items.type.L2ActionType; import com.l2jserver.gameserver.model.items.type.L2WeaponType; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; @@ -31,36 +34,38 @@ import com.l2jserver.gameserver.util.Broadcast; */ public class FishShots implements IItemHandler { - private static final int[] SKILL_IDS = - { - 2181, 2182, 2183, 2184, 2185, 2186 - }; - @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance activeChar = (L2PcInstance) playable; - L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance(); - L2Weapon weaponItem = activeChar.getActiveWeaponItem(); + final L2PcInstance activeChar = playable.getActingPlayer(); + final L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance(); + final L2Weapon weaponItem = activeChar.getActiveWeaponItem(); if (weaponInst == null || weaponItem.getItemType() != L2WeaponType.FISHINGROD) return false; - if (weaponInst.getChargedFishshot()) - // spirit shot is already active + if (weaponInst.getChargedFishshot()) // spirit shot is already active return false; - int FishshotId = item.getItemId(); - int grade = weaponItem.getCrystalType(); - long count = item.getCount(); + final long count = item.getCount(); + final SkillHolder[] skills = item.getItem().getSkills(); + + if (skills == null) + { + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); + return false; + } + + boolean gradeCheck = item.isEtcItem() && item.getEtcItem().getDefaultAction() == L2ActionType.fishingshot && weaponInst.getItem().getItemGradeSPlus() == item.getItem().getItemGradeSPlus(); - if ((grade == L2Item.CRYSTAL_NONE && FishshotId != 6535) || (grade == L2Item.CRYSTAL_D && FishshotId != 6536) || (grade == L2Item.CRYSTAL_C && FishshotId != 6537) || (grade == L2Item.CRYSTAL_B && FishshotId != 6538) - || (grade == L2Item.CRYSTAL_A && FishshotId != 6539) || (FishshotId != 6540 && grade == L2Item.CRYSTAL_S )) + if (!gradeCheck) { - //1479 - This fishing shot is not fit for the fishing pole crystal. activeChar.sendPacket(SystemMessageId.WRONG_FISHINGSHOT_GRADE); return false; } @@ -73,7 +78,7 @@ public class FishShots implements IItemHandler L2Object oldTarget = activeChar.getTarget(); activeChar.setTarget(activeChar); - Broadcast.toSelfAndKnownPlayers(activeChar, new MagicSkillUse(activeChar, SKILL_IDS[grade], 1, 0, 0)); + Broadcast.toSelfAndKnownPlayers(activeChar, new MagicSkillUse(activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0)); activeChar.setTarget(oldTarget); return true; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java index 4da29f4075898adc324e5859a5779b8dc83b03f4..1b28519987884b51b7f7bb951fed76a57a3b8316 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Harvester.java @@ -14,54 +14,62 @@ */ package handlers.itemhandlers; -import com.l2jserver.gameserver.datatables.SkillTable; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.instancemanager.CastleManorManager; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; -import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; /** - * @author l3x + * @author l3x */ public class Harvester implements IItemHandler { - L2PcInstance _activeChar; - L2MonsterInstance _target; - @Override - public boolean useItem(L2Playable playable, L2ItemInstance _item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } if (CastleManorManager.getInstance().isDisabled()) + { return false; + } - _activeChar = (L2PcInstance) playable; + final L2PcInstance activeChar = playable.getActingPlayer(); + final SkillHolder[] skills = item.getItem().getSkills(); + L2MonsterInstance target = null; + if (activeChar.getTarget() != null && activeChar.getTarget().isMonster()) + { + target = (L2MonsterInstance) activeChar.getTarget(); + } - if (!(_activeChar.getTarget() instanceof L2MonsterInstance)) + if (skills == null) { - _activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); - _activeChar.sendPacket(ActionFailed.STATIC_PACKET); + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); return false; } - _target = (L2MonsterInstance) _activeChar.getTarget(); - - if (_target == null || !_target.isDead()) + if (target == null || !target.isDead()) { - _activeChar.sendPacket(ActionFailed.STATIC_PACKET); + activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); + activeChar.sendPacket(ActionFailed.STATIC_PACKET); return false; } - L2Skill skill = SkillTable.getInstance().getInfo(2098, 1); //harvesting skill - if (skill != null) - _activeChar.useMagic(skill, false, false); + for (SkillHolder sk : skills) + { + activeChar.useMagic(sk.getSkill(), false, false); + } return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java index 36aac6fb0566aaff1a8ed2763128b36eaf291b2c..0b0f0b404da859c14c2b03fd9f75e67421558ac6 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Maps.java @@ -16,8 +16,8 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ShowMiniMap; /** @@ -28,8 +28,11 @@ public class Maps implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } playable.sendPacket(new ShowMiniMap(item.getItemId())); return true; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java index adb87b58f423276b5292d880d33c49925ccc57d3..8f2fdfd0a4a585ba075d7e853e7745e2d091cc8c 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/MercTicket.java @@ -41,6 +41,12 @@ public class MercTicket implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); + return false; + } + int itemId = item.getItemId(); L2PcInstance activeChar = (L2PcInstance) playable; Castle castle = CastleManager.getInstance().getCastle(activeChar); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java index 477ebaca02197f3bdcd83e1a7905922b6497be32..c393b8d0f2ed670ffb7b5d93d3d7e19b2cef8e14 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/NicknameColor.java @@ -16,8 +16,8 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ExRequestChangeNicknameColor; public class NicknameColor implements IItemHandler @@ -25,8 +25,12 @@ public class NicknameColor implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } + playable.sendPacket(new ExRequestChangeNicknameColor(item.getObjectId())); return true; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java index 3a4cb1cce3ef50f8b95b0f8304e2dda8605d424c..7e6fd5e7a07579141600e478d837108eff8b8089 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PaganKeys.java @@ -26,7 +26,7 @@ import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; /** - * @author chris + * @author chris */ public class PaganKeys implements IItemHandler { @@ -35,11 +35,15 @@ public class PaganKeys implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - int itemId = item.getItemId(); - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; - L2PcInstance activeChar = (L2PcInstance) playable; - L2Object target = activeChar.getTarget(); + } + + final int itemId = item.getItemId(); + final L2PcInstance activeChar = (L2PcInstance) playable; + final L2Object target = activeChar.getTarget(); if (!(target instanceof L2DoorInstance)) { @@ -65,6 +69,7 @@ public class PaganKeys implements IItemHandler if (!playable.destroyItem("Consume", item.getObjectId(), 1, null, false)) return false; + // TODO: Unhardcode these! switch (itemId) { case 9698: @@ -73,10 +78,13 @@ public class PaganKeys implements IItemHandler if (activeChar.getInstanceId() != door.getInstanceId()) { for (L2DoorInstance instanceDoor : InstanceManager.getInstance().getInstance(activeChar.getInstanceId()).getDoors()) + { if (instanceDoor.getDoorId() == door.getDoorId()) { instanceDoor.openMe(); + break; } + } } else { @@ -94,10 +102,13 @@ public class PaganKeys implements IItemHandler if (activeChar.getInstanceId() != door.getInstanceId()) { for (L2DoorInstance instanceDoor : InstanceManager.getInstance().getInstance(activeChar.getInstanceId()).getDoors()) + { if (instanceDoor.getDoorId() == door.getDoorId()) { instanceDoor.openMe(); + break; } + } } else { @@ -110,7 +121,7 @@ public class PaganKeys implements IItemHandler } break; case 8056: - if (door.getDoorId() == 23150004||door.getDoorId() == 23150003) + if (door.getDoorId() == 23150004 || door.getDoorId() == 23150003) { DoorTable.getInstance().getDoor(23150003).openMe(); DoorTable.getInstance().getDoor(23150004).openMe(); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java index e228b8c4dfff505f8c833812d58f498e0ac872a8..9ed95302b270fe0ae7ae60f8e596df93aeb4ee68 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/PetFood.java @@ -23,6 +23,7 @@ import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; @@ -37,64 +38,38 @@ public class PetFood implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - int itemId = item.getItemId(); - boolean used = false; - switch (itemId) + final SkillHolder[] skills = item.getItem().getSkills(); + if (skills != null) { - case 2515: // Food For Wolves - used = useFood(playable, 2048, item); - break; - case 4038: // Food For Hatchling - used = useFood(playable, 2063, item); - break; - case 5168: // Food for Strider - used = useFood(playable, 2101, item); - break; - case 5169: // Deluxe Food for Strider - used = useFood(playable, 2102, item); - break; - case 6316: // Food for Wyvern - used = useFood(playable, 2180, item); - break; - case 7582: // Baby Spice - used = useFood(playable, 2048, item); - break; - case 9668: // Great Wolf Food - used = useFood(playable, 2361, item); - break; - case 10425: // Improved Baby Pet Food - used = useFood(playable, 2361, item); - break; - case 14818: // Enriched Pet Food for Wolves - used = useFood(playable, 2916, item); - break; - default: - _log.warning("Pet Food Id: " + itemId + " without handler!"); - break; + for (SkillHolder sk : skills) + { + useFood(playable, sk.getSkillId(), sk.getSkillLvl(), item); + } } - return used; + return true; } - public boolean useFood(L2Playable activeChar, int magicId, L2ItemInstance item) + public boolean useFood(L2Playable activeChar, int skillId, int skillLevel, L2ItemInstance item) { - L2Skill skill = SkillTable.getInstance().getInfo(magicId, 1); + L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); if (skill != null) { - if (activeChar instanceof L2PetInstance) + if (activeChar.isPet()) { - if (((L2PetInstance) activeChar).destroyItem("Consume", item.getObjectId(), 1, null, false)) + L2PetInstance pet = (L2PetInstance) activeChar; + if (pet.destroyItem("Consume", item.getObjectId(), 1, null, false)) { - activeChar.broadcastPacket(new MagicSkillUse(activeChar, activeChar, magicId, 1, 0, 0)); - ((L2PetInstance) activeChar).setCurrentFed(((L2PetInstance) activeChar).getCurrentFed() + (skill.getFeed() * Config.PET_FOOD_RATE)); - ((L2PetInstance) activeChar).broadcastStatusUpdate(); - if (((L2PetInstance) activeChar).getCurrentFed() < ((((L2PetInstance) activeChar).getPetData().getHungryLimit() / 100f) * ((L2PetInstance) activeChar).getPetLevelData().getPetMaxFeed())) + pet.broadcastPacket(new MagicSkillUse(pet, pet, skillId, skillLevel, 0, 0)); + pet.setCurrentFed(((L2PetInstance) activeChar).getCurrentFed() + (skill.getFeed() * Config.PET_FOOD_RATE)); + pet.broadcastStatusUpdate(); + if (pet.getCurrentFed() < ((pet.getPetData().getHungryLimit() / 100f) * pet.getPetLevelData().getPetMaxFeed())) { activeChar.sendPacket(SystemMessageId.YOUR_PET_ATE_A_LITTLE_BUT_IS_STILL_HUNGRY); } return true; } } - else if (activeChar instanceof L2PcInstance) + else if (activeChar.isPlayer()) { final L2PcInstance player = activeChar.getActingPlayer(); if (player.isMounted()) @@ -104,7 +79,7 @@ public class PetFood implements IItemHandler { if (player.destroyItem("Consume", item.getObjectId(), 1, null, false)) { - player.broadcastPacket(new MagicSkillUse(activeChar, activeChar, magicId, 1, 0, 0)); + player.broadcastPacket(new MagicSkillUse(activeChar, activeChar, skillId, skillLevel, 0, 0)); player.setCurrentFeed(player.getCurrentFeed() + skill.getFeed()); } return true; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java index 0b241fb9f7f2d81e18641a7fcbdeda5bc7c9f7d9..a6420e5a741c39ec14dc0250c15333a2848cb481 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/QuestItems.java @@ -21,6 +21,7 @@ import com.l2jserver.gameserver.model.items.L2Item; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.QuestState; +import com.l2jserver.gameserver.network.SystemMessageId; /** * @author BiggBoss @@ -30,19 +31,22 @@ public class QuestItems implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceuse) { - if(!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance player = (L2PcInstance) playable; + L2PcInstance player = playable.getActingPlayer(); - if(!player.destroyItem("Item Handler - QuestItems", item, player, true)) + if (!player.destroyItem("Item Handler - QuestItems", item, player, true)) return false; L2Item itm = item.getItem(); - for(Quest quest : itm.getQuestEvents()) + for (Quest quest : itm.getQuestEvents()) { QuestState state = player.getQuestState(quest.getName()); - if(state == null || !state.isStarted()) + if (state == null || !state.isStarted()) continue; quest.notifyItemUse(itm, player); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java index 149bede1752b7004157f5b6f9e45bdbffcb0072c..089328683ec0babc8b60c7a6b551556951a29f8f 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Recipes.java @@ -31,8 +31,9 @@ public class Recipes implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java index eed240af3fbcd53c0888b7c6d2dad0d7161e5534..f685c44f259f7a157ca5185764645a3264f7a81a 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/RollingDice.java @@ -30,10 +30,13 @@ public class RollingDice implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance activeChar = (L2PcInstance) playable; + L2PcInstance activeChar = playable.getActingPlayer(); int itemId = item.getItemId(); if (activeChar.isInOlympiadMode()) @@ -42,29 +45,30 @@ public class RollingDice implements IItemHandler return false; } - if (itemId == 4625 || itemId == 4626 || itemId == 4627 || itemId == 4628) + int number = rollDice(activeChar); + if (number == 0) { - int number = rollDice(activeChar); - if (number == 0) - { - activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_THROW_THE_DICE_AT_THIS_TIME_TRY_AGAIN_LATER); - return false; - } - - Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), item.getItemId(), number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ())); - - SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_ROLLED_S2); - sm.addString(activeChar.getName()); - sm.addNumber(number); - - activeChar.sendPacket(sm); - if (activeChar.isInsideZone(L2Character.ZONE_PEACE)) - Broadcast.toKnownPlayers(activeChar, sm); - else if (activeChar.isInParty()) - activeChar.getParty().broadcastToPartyMembers(activeChar, sm); - return true; + activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_THROW_THE_DICE_AT_THIS_TIME_TRY_AGAIN_LATER); + return false; } - return false; + + Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), itemId, number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ())); + + SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_ROLLED_S2); + sm.addString(activeChar.getName()); + sm.addNumber(number); + + activeChar.sendPacket(sm); + if (activeChar.isInsideZone(L2Character.ZONE_PEACE)) + { + Broadcast.toKnownPlayers(activeChar, sm); + } + else if (activeChar.isInParty()) // TODO: Verify this! + { + activeChar.getParty().broadcastToPartyMembers(activeChar, sm); + } + return true; + } /** @@ -74,8 +78,7 @@ public class RollingDice implements IItemHandler private int rollDice(L2PcInstance player) { // Check if the dice is ready - if (!player.getFloodProtectors().getRollDice(). - tryPerformAction("roll dice")) + if (!player.getFloodProtectors().getRollDice().tryPerformAction("roll dice")) { return 0; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java index 084af158973183cf1b2d7131e14c6d716a2c650d..77eb2815f6f49167bf8796c8c758e8c915272695 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ScrollOfResurrection.java @@ -14,7 +14,8 @@ */ package handlers.itemhandlers; -import com.l2jserver.gameserver.datatables.SkillTable; +import java.util.logging.Level; + import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.instancemanager.CastleManager; import com.l2jserver.gameserver.model.actor.L2Character; @@ -23,8 +24,8 @@ import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; import com.l2jserver.gameserver.model.entity.Castle; import com.l2jserver.gameserver.model.entity.TvTEvent; +import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; -import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; @@ -36,6 +37,7 @@ public class ScrollOfResurrection implements IItemHandler { if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } @@ -58,8 +60,14 @@ public class ScrollOfResurrection implements IItemHandler } final int itemId = item.getItemId(); - // boolean blessedScroll = (itemId != 737); - boolean petScroll = (itemId == 6387); + final boolean petScroll = (itemId == 6387); + final SkillHolder[] skills = item.getItem().getSkills(); + + if (skills == null) + { + _log.log(Level.WARNING, getClass().getSimpleName() + ": is missing skills!"); + return false; + } // SoR Animation section final L2Character target = (L2Character) activeChar.getTarget(); @@ -154,42 +162,13 @@ public class ScrollOfResurrection implements IItemHandler return false; } - int skillId = 0; - int skillLevel = 1; - - switch (itemId) - { - case 737: - skillId = 2014; - break; // Scroll of Resurrection - case 3936: - skillId = 2049; - break; // Blessed Scroll of Resurrection - case 3959: - skillId = 2062; - break; // L2Day - Blessed Scroll of Resurrection - case 6387: - skillId = 2179; - break; // Blessed Scroll of Resurrection: For Pets - case 9157: - skillId = 2321; - break; // Blessed Scroll of Resurrection Event - case 10150: - skillId = 2393; - break; // Blessed Scroll of Battlefield Resurrection - case 13259: - skillId = 2596; - break; // Gran Kain's Blessed Scroll of Resurrection - } + SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED); + sm.addItemName(item); + activeChar.sendPacket(sm); - if (skillId != 0) + for (SkillHolder sk : skills) { - L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); - activeChar.useMagic(skill, true, true); - - SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED); - sm.addItemName(item); - activeChar.sendPacket(sm); + activeChar.useMagic(sk.getSkill(), true, true); } return true; } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java index 96a1099a23953c3d5ab5f52106535d52e57e7a43..f69d0a585e99d21a97a911e0a5f5f70b888582ce 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Seed.java @@ -27,23 +27,27 @@ import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; -import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; /** - * @author l3x + * @author l3x */ public class Seed implements IItemHandler { @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } if (CastleManorManager.getInstance().isDisabled()) + { return false; + } final L2Object tgt = playable.getTarget(); if (!(tgt instanceof L2Npc)) @@ -52,14 +56,14 @@ public class Seed implements IItemHandler playable.sendPacket(ActionFailed.STATIC_PACKET); return false; } - if (!(tgt instanceof L2MonsterInstance) || tgt instanceof L2ChestInstance || ((L2Character)tgt).isRaid()) + if (!(tgt instanceof L2MonsterInstance) || tgt instanceof L2ChestInstance || ((L2Character) tgt).isRaid()) { playable.sendPacket(SystemMessageId.THE_TARGET_IS_UNAVAILABLE_FOR_SEEDING); playable.sendPacket(ActionFailed.STATIC_PACKET); return false; } - final L2MonsterInstance target = (L2MonsterInstance)tgt; + final L2MonsterInstance target = (L2MonsterInstance) tgt; if (target.isDead()) { playable.sendPacket(SystemMessageId.INCORRECT_TARGET); @@ -80,21 +84,20 @@ public class Seed implements IItemHandler return false; } - target.setSeeded(seedId, (L2PcInstance)playable); - final SkillHolder[] skills = item.getEtcItem().getSkills(); + target.setSeeded(seedId, (L2PcInstance) playable); + final SkillHolder[] skills = item.getItem().getSkills(); + final L2PcInstance activeChar = playable.getActingPlayer(); if (skills != null) { - if(skills[0] == null) - return false; - - L2Skill itemskill = skills[0].getSkill(); - ((L2PcInstance)playable).useMagic(itemskill, false, false); + for (SkillHolder sk : skills) + { + activeChar.useMagic(sk.getSkill(), false, false); + } } return true; } /** - * * @param seedId * @param castleId * @return diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java index e7a94330220a654eae00c9bab90a92fae7d154b5..0fc5863089564a6c16d1dbf483b862ce82fe4d35 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SevenSignsRecord.java @@ -16,8 +16,8 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.SSQStatus; /** @@ -29,8 +29,11 @@ public class SevenSignsRecord implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } playable.sendPacket(new SSQStatus(playable.getObjectId(), 1)); return true; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java index e2c2330c8255c532ef35d2e856fa8ed96a033609..74659326674d23c1d3fdbac862a804f881255bda 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SoulShots.java @@ -35,6 +35,7 @@ public class SoulShots implements IItemHandler { if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } @@ -106,7 +107,7 @@ public class SoulShots implements IItemHandler // Send message to client activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT); - Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 360000); + Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 2000); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java index ced98108a73e5339a5219f00e26c41312c0a8081..2d594fbfb1c1f30f69765691707d6dfe31f22878 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpecialXMas.java @@ -16,8 +16,8 @@ package handlers.itemhandlers; import com.l2jserver.gameserver.handler.IItemHandler; import com.l2jserver.gameserver.model.actor.L2Playable; -import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ShowXMasSeal; /** @@ -28,8 +28,11 @@ public class SpecialXMas implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } playable.broadcastPacket(new ShowXMasSeal(item.getItemId())); return true; diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java index 377037ae9ccfbb6c94b55eb5c6b15caaa30ab373..695c99481a3a95dc27eb5d20b6258fe42dc394ee 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SpiritShot.java @@ -34,6 +34,7 @@ public class SpiritShot implements IItemHandler { if (!playable.isPlayer()) { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; } @@ -85,7 +86,7 @@ public class SpiritShot implements IItemHandler // Send message to client activeChar.sendPacket(SystemMessageId.ENABLED_SPIRITSHOT); - Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 360000); + Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skills[0].getSkillId(), skills[0].getSkillLvl(), 0, 0), 2000); return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java index 552f2fda38be00d7e38da7b0eb5e8fbc3222279e..dec15a3d224cbc61893c241d348087cb6492f69d 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/SummonItems.java @@ -46,14 +46,19 @@ import com.l2jserver.gameserver.network.serverpackets.PetItemList; import com.l2jserver.gameserver.network.serverpackets.SetupGauge; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.util.Broadcast; - +/** + * UnAfraid: TODO: Rewrite me :D + */ public class SummonItems implements IItemHandler { @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (!(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } if (!TvTEvent.onItemSummon(playable.getObjectId())) return false; @@ -69,9 +74,9 @@ public class SummonItems implements IItemHandler return false; } - if(activeChar.getBlockCheckerArena() != -1) + if (activeChar.getBlockCheckerArena() != -1) return false; - + if (activeChar.inObserverMode()) return false; @@ -216,9 +221,7 @@ public class SummonItems implements IItemHandler _activeChar.setIsCastingNow(false); // check for summon item validity - if (_item == null - || _item.getOwnerId() != _activeChar.getObjectId() - || _item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY) + if (_item == null || _item.getOwnerId() != _activeChar.getObjectId() || _item.getLocation() != L2ItemInstance.ItemLocation.INVENTORY) return; final L2PetInstance petSummon = L2PetInstance.spawnPet(_npcTemplate, _activeChar, _item); @@ -243,8 +246,8 @@ public class SummonItems implements IItemHandler _activeChar.setPet(petSummon); - //JIV remove - done on spawn - //L2World.getInstance().storeObject(petSummon); + // JIV remove - done on spawn + // L2World.getInstance().storeObject(petSummon); petSummon.spawnMe(_activeChar.getX() + 50, _activeChar.getY() + 100, _activeChar.getZ()); petSummon.startFeed(); _item.setEnchantLevel(petSummon.getLevel()); diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java index 63c47dedbd7346a549bc7c983832867b4ce8043f..b08d775cfcfedfed631d0b493a00d72b8353eb82 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/TeleportBookmark.java @@ -30,12 +30,15 @@ public class TeleportBookmark implements IItemHandler @Override public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - if (playable == null || item == null || !(playable instanceof L2PcInstance)) + if (!playable.isPlayer()) + { + playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); return false; + } - L2PcInstance player = (L2PcInstance) playable; + L2PcInstance player = playable.getActingPlayer(); - if(player.getBookMarkSlot() >= 9) + if (player.getBookMarkSlot() >= 9) { player.sendPacket(SystemMessageId.YOUR_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_REACHED_ITS_MAXIMUM_LIMIT); return false; @@ -43,7 +46,7 @@ public class TeleportBookmark implements IItemHandler player.destroyItem("Consume", item.getObjectId(), 1, null, false); - player.setBookMarkSlot(player.getBookMarkSlot()+3); + player.setBookMarkSlot(player.getBookMarkSlot() + 3); player.sendPacket(SystemMessageId.THE_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_BEEN_INCREASED); SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED);