diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java index 41a8ffa7e752c0b75960b6c2b478524fd49e486e..85f5fc10cf7337738f4b0ed7756ac3195ff304ff 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/MasterHandler.java @@ -157,6 +157,7 @@ import handlers.itemhandlers.BeastSpice; import handlers.itemhandlers.BeastSpiritShot; import handlers.itemhandlers.BlessedSpiritShot; import handlers.itemhandlers.Book; +import handlers.itemhandlers.Calculator; import handlers.itemhandlers.Disguise; import handlers.itemhandlers.Elixir; import handlers.itemhandlers.EnchantAttribute; @@ -492,6 +493,7 @@ public class MasterHandler BlessedSpiritShot.class, BeastSoulShot.class, BeastSpiritShot.class, + Calculator.class, PaganKeys.class, Maps.class, NicknameColor.class, diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java index 1442f608499479c565a6b81f2475407c8b9b1b4b..63dd4baf2214f47ef180a64d0a2c1ba2ffb0f10b 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/admincommandhandlers/AdminBuffs.java @@ -184,7 +184,7 @@ public class AdminBuffs implements IAdminCommandHandler try { - player.getReuseTimeStamp().clear(); + player.getSkillReuseTimeStamps().clear(); player.getDisabledSkills().clear(); player.sendPacket(new SkillCoolTime(player)); activeChar.sendMessage("Skill reuse was removed from " + player.getName() + "."); 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 7ac392f3fd0592e3faf5b2036e0338ff022e1a88..46f7e0b4b9f8a8f98d63767b14054b0a18cf8efa 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 @@ -26,45 +26,40 @@ import com.l2jserver.gameserver.util.Broadcast; /** * Beast SoulShot Handler - * * @author Tempy */ public class BeastSoulShot implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (playable == null) - return; + return false; L2PcInstance activeOwner = null; if (playable instanceof L2Summon) { activeOwner = ((L2Summon) playable).getOwner(); activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM); - return; + return false; } else if (playable instanceof L2PcInstance) activeOwner = (L2PcInstance) playable; if (activeOwner == null) - return; + return false; L2Summon activePet = activeOwner.getPet(); if (activePet == null) { activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME); - return; + return false; } if (activePet.isDead()) { activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET); - return; + return false; } int itemId = item.getItemId(); @@ -76,7 +71,7 @@ public class BeastSoulShot implements IItemHandler // Not enough Soulshots to use. if (!activeOwner.disableAutoShot(itemId)) activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS_FOR_PET); - return; + return false; } L2ItemInstance weaponInst = null; @@ -87,7 +82,7 @@ public class BeastSoulShot implements IItemHandler if (weaponInst == null) { if (activePet.getChargedSoulShot() != L2ItemInstance.CHARGED_NONE) - return; + return false; activePet.setChargedSoulShot(L2ItemInstance.CHARGED_SOULSHOT); } @@ -96,7 +91,7 @@ public class BeastSoulShot implements IItemHandler if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE) { // SoulShots are already active. - return; + return false; } weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT); } @@ -106,12 +101,13 @@ public class BeastSoulShot implements IItemHandler { if (!activeOwner.disableAutoShot(itemId)) activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS_FOR_PET); - return; + return false; } // 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*/); + 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 a56aad85a28f9be86fd036c7e815729d8376585c..95441b08cbf5e73da345623bef0c1e717015733f 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 @@ -25,22 +25,18 @@ import com.l2jserver.gameserver.network.SystemMessageId; public class BeastSpice implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; if (!(activeChar.getTarget() instanceof L2FeedableBeastInstance)) { activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); - return; + return false; } int skillId = 0; @@ -56,5 +52,6 @@ public class BeastSpice implements IItemHandler 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 faf02219a85c8b26c83b8fdf68455e760b5d871b..63bd83216e9c0ec14e59dc59ebd3d9da6ab925a5 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 @@ -26,27 +26,22 @@ import com.l2jserver.gameserver.util.Broadcast; /** * Beast SpiritShot Handler - * * @author Tempy */ public class BeastSpiritShot implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (playable == null) - return; + return false; L2PcInstance activeOwner = playable.getActingPlayer(); if (playable instanceof L2Summon) { activeOwner.sendPacket(SystemMessageId.PET_CANNOT_USE_ITEM); - return; + return false; } L2Summon activePet = activeOwner.getPet(); @@ -54,13 +49,13 @@ public class BeastSpiritShot implements IItemHandler if (activePet == null) { activeOwner.sendPacket(SystemMessageId.PETS_ARE_NOT_AVAILABLE_AT_THIS_TIME); - return; + return false; } if (activePet.isDead()) { activeOwner.sendPacket(SystemMessageId.SOULSHOTS_AND_SPIRITSHOTS_ARE_NOT_AVAILABLE_FOR_A_DEAD_PET); - return; + return false; } int itemId = item.getItemId(); @@ -73,7 +68,7 @@ public class BeastSpiritShot implements IItemHandler // Not enough SpiritShots to use. if (!activeOwner.disableAutoShot(itemId)) activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITHOTS_FOR_PET); - return; + return false; } L2ItemInstance weaponInst = null; @@ -84,7 +79,7 @@ public class BeastSpiritShot implements IItemHandler if (weaponInst == null) { if (activePet.getChargedSpiritShot() != L2ItemInstance.CHARGED_NONE) - return; + return false; if (isBlessed) activePet.setChargedSpiritShot(L2ItemInstance.CHARGED_BLESSED_SPIRITSHOT); @@ -96,7 +91,7 @@ public class BeastSpiritShot implements IItemHandler if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) { // SpiritShots are already active. - return; + return false; } if (isBlessed) @@ -109,7 +104,7 @@ public class BeastSpiritShot implements IItemHandler { if (!activeOwner.disableAutoShot(itemId)) activeOwner.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITHOTS_FOR_PET); - return; + return false; } // Pet uses the power of spirit. @@ -131,5 +126,6 @@ public class BeastSpiritShot implements IItemHandler break; } Broadcast.toSelfAndKnownPlayersInRadius(activeOwner, new MagicSkillUse(activePet, activePet, skillId, 1, 0, 0), 360000/*600*/); + 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 da30b18389c97010b458c17cceeed2a7c6117576..d2375d8383c9166bccf47cdc4523b28ad8024169 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 @@ -24,23 +24,13 @@ import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; import com.l2jserver.gameserver.util.Broadcast; -/** - * This class ... - * - * @version $Revision: 1.1.2.1.2.5 $ $Date: 2005/03/27 15:30:07 $ - */ - public class BlessedSpiritShot implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public synchronized void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public synchronized boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance(); @@ -52,12 +42,12 @@ public class BlessedSpiritShot implements IItemHandler { if (!activeChar.getAutoSoulShot().contains(itemId)) activeChar.sendPacket(SystemMessageId.CANNOT_USE_SPIRITSHOTS); - return; + return false; } // Check if Blessed SpiritShot is already active (it can be charged over SpiritShot) if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) - return; + return false; // Check for correct grade final int weaponGrade = weaponItem.getCrystalType(); @@ -99,7 +89,7 @@ public class BlessedSpiritShot implements IItemHandler if (!activeChar.getAutoSoulShot().contains(itemId)) activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH); - return; + return false; } @@ -108,7 +98,7 @@ public class BlessedSpiritShot implements IItemHandler { if (!activeChar.disableAutoShot(itemId)) activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS); - return; + return false; } // Charge Blessed SpiritShot @@ -155,5 +145,6 @@ public class BlessedSpiritShot implements IItemHandler } Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000); + 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 a092a080542f63e54c08dde72d7ccd0ea9384c09..b1bd5c1596ac7d3e55f684d2ab8d0dae4f640580 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 @@ -24,15 +24,11 @@ import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage; public class Book implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; final int itemId = item.getItemId(); @@ -54,5 +50,6 @@ public class Book implements IItemHandler } activeChar.sendPacket(ActionFailed.STATIC_PACKET); + return true; } } 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 new file mode 100644 index 0000000000000000000000000000000000000000..019bad0c4e67fc14ac7c846e6e01bb49bbce7515 --- /dev/null +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/Calculator.java @@ -0,0 +1,39 @@ +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. + */ +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.serverpackets.ShowCalculator; + +/** + * @author Zoey76 + */ +public class Calculator implements IItemHandler +{ + private static final int CalculatorId = 4393; + + @Override + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + { + if (!playable.isPlayer()) + { + return false; + } + playable.broadcastPacket(new ShowCalculator(CalculatorId)); + 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 6b493c0d11de1147ca03c20633e32d0dfa143c20..e2bc0fafbb27da8bfd7ab65b6fc459d532e82f12 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 @@ -22,15 +22,12 @@ import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; +import com.l2jserver.gameserver.network.SystemMessageId; public class ChristmasTree implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { L2PcInstance activeChar = (L2PcInstance) playable; L2NpcTemplate template1 = null; @@ -46,7 +43,7 @@ public class ChristmasTree implements IItemHandler } if (template1 == null) - return; + return false; L2Object target = activeChar.getTarget(); if (target == null) @@ -63,10 +60,12 @@ public class ChristmasTree implements IItemHandler activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); activeChar.sendMessage("Created " + template1.getName() + " at x: " + spawn.getLocx() + " y: " + spawn.getLocy() + " z: " + spawn.getLocz()); + return true; } catch (Exception e) { - activeChar.sendMessage("Target is not ingame."); + activeChar.sendPacket(SystemMessageId.TARGET_CANT_FOUND); + return 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 82658740ea711bdec6cff25c8de7a79243f0a164..76f2597202bc02c518e5836d9aeafc2049ea2d64 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 @@ -22,23 +22,15 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.SystemMessageId; /** - * This class provides handling for items that should display a map - * when double clicked. - * - * @version $Revision: 1.1.4.3 $ $Date: 2005/03/27 15:30:07 $ + * This class provides handling for items that should display a map when double clicked. */ - public class Disguise implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; @@ -48,21 +40,22 @@ public class Disguise implements IItemHandler if (activeChar.getClan() != null && activeChar.getClan().getHasCastle() > 0) { activeChar.sendPacket(SystemMessageId.TERRITORY_OWNING_CLAN_CANNOT_USE_DISGUISE_SCROLL); - return; + return false; } TerritoryWarManager.getInstance().addDisguisedPlayer(activeChar.getObjectId()); activeChar.broadcastUserInfo(); playable.destroyItem("Consume", item.getObjectId(), 1, null, false); + return true; } else if (regId > 0) { activeChar.sendPacket(SystemMessageId.THE_DISGUISE_SCROLL_MEANT_FOR_DIFFERENT_TERRITORY); - return; + return false; } else { activeChar.sendPacket(SystemMessageId.TERRITORY_WAR_SCROLL_CAN_NOT_USED_NOW); - return; + return false; } } } 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 d4682750cc31353ca829d6b6857cf0839fb295cb..242e1c3df33280f6a89d7ad2d81adce98aacf3cc 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 @@ -21,18 +21,14 @@ import com.l2jserver.gameserver.network.SystemMessageId; public class Elixir extends ItemSkills { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) { playable.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); - return; + return false; } - super.useItem(playable, item, forceUse); + return super.useItem(playable, item, forceUse); } } 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 26dcd6f5c62b4985bc3b058a93e991a91384aa21..076faac09efb36c37d303895c42a5de5a5269c11 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 @@ -24,22 +24,23 @@ import com.l2jserver.gameserver.network.serverpackets.ExChooseInventoryAttribute public class EnchantAttribute implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; final L2PcInstance activeChar = (L2PcInstance) playable; if (activeChar.isCastingNow()) - return; + return false; if (activeChar.isEnchanting()) { activeChar.sendPacket(SystemMessageId.ENCHANTMENT_ALREADY_IN_PROGRESS); - return; + return false; } activeChar.setActiveEnchantAttrItem(item); activeChar.sendPacket(new ExChooseInventoryAttributeItem(item)); + return true; } } 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 42019f3c55a8aac0f3913afe2c883ff25a24fbbe..ef0fe55b9d65128dc836587e57223b6442ef6d29 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 @@ -23,27 +23,24 @@ import com.l2jserver.gameserver.network.serverpackets.ChooseInventoryItem; public class EnchantScrolls implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; final L2PcInstance activeChar = (L2PcInstance) playable; if (activeChar.isCastingNow()) - return; + return false; if (activeChar.isEnchanting()) { activeChar.sendPacket(SystemMessageId.ENCHANTMENT_ALREADY_IN_PROGRESS); - return; + return false; } activeChar.setActiveEnchantItem(item); activeChar.sendPacket(new ChooseInventoryItem(item.getItemId())); + return true; } } 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 6743eb4c3e9e8a5aca9827cb6e04a0b1a86cd207..69ad172b88020b02950461e2bd356c297052f608 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 @@ -25,15 +25,11 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage; public class EnergyStarStone extends ItemSkills { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; final L2AirShipInstance ship = ((L2PcInstance)playable).getAirShip(); if (ship == null @@ -44,8 +40,8 @@ public class EnergyStarStone extends ItemSkills sm.addItemName(item); playable.sendPacket(sm); playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } - super.useItem(playable, item, forceUse); + return super.useItem(playable, item, forceUse); } } \ No newline at end of file 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 37daf5910c9708df1a9a47e3fbdfe0a0bd416151..c13ac838ef327f222fd3a25da83e952b3baeebff 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 @@ -1,5 +1,16 @@ -/** +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. */ package handlers.itemhandlers; @@ -20,14 +31,12 @@ public class EventItem implements IItemHandler { private static final Logger _log = Logger.getLogger(EventItem.class.getName()); - /* (non-Javadoc) - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.item.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { + boolean used = false; if(!(playable instanceof L2PcInstance)) - return; + return false; final L2PcInstance activeChar = (L2PcInstance)playable; @@ -35,17 +44,18 @@ public class EventItem implements IItemHandler switch(itemId) { case 13787: // Handy's Block Checker Bond - useBlockCheckerItem(activeChar, item); + used = useBlockCheckerItem(activeChar, item); break; case 13788: // Handy's Block Checker Land Mine - useBlockCheckerItem(activeChar, item); + used = useBlockCheckerItem(activeChar, item); break; default: _log.warning("EventItemHandler: Item with id: "+itemId+" is not handled"); } + return used; } - private final void useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item) + private final boolean useBlockCheckerItem(final L2PcInstance castor, L2ItemInstance item) { final int blockCheckerArena = castor.getBlockCheckerArena(); if(blockCheckerArena == -1) @@ -53,16 +63,16 @@ public class EventItem implements IItemHandler SystemMessage msg = SystemMessage.getSystemMessage(SystemMessageId.S1_CANNOT_BE_USED); msg.addItemName(item); castor.sendPacket(msg); - return; + return false; } final L2Skill sk = item.getEtcItem().getSkills()[0].getSkill(); if(sk == null) - return; + return false; if(!castor.destroyItem("Consume", item, 1, castor, true)) - return; + return false; final L2BlockInstance block = (L2BlockInstance) castor.getTarget(); @@ -76,8 +86,9 @@ public class EventItem implements IItemHandler if(enemyTeam != -1 && enemyTeam != team) sk.getEffects(castor, pc); } + return true; } - else - _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 7dc5dad97cd90ae8967356b87a5ad0b74d84c837..be2dc8b96408dfee4ea47e92a2258d5097899968 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 @@ -12,7 +12,6 @@ * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ - package handlers.itemhandlers; import java.util.List; @@ -37,11 +36,11 @@ public class ExtractableItems implements IItemHandler private static Logger _log = Logger.getLogger(ItemTable.class.getName()); @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) { - return; + return false; } final L2PcInstance activeChar = playable.getActingPlayer(); @@ -52,13 +51,13 @@ public class ExtractableItems implements IItemHandler if (exitem == null) { _log.info("No extractable data defined for " + etcitem); - return; + return false; } //destroy item if (!activeChar.destroyItem("Extract", item.getObjectId(), 1, activeChar, true)) { - return; + return false; } boolean created = false; @@ -86,5 +85,6 @@ public class ExtractableItems implements IItemHandler { activeChar.sendPacket(SystemMessageId.NOTHING_INSIDE_THAT); } + return true; } } 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 5dfb9275bffdcb43e93a121b1e78fc603dc063ba..5f746f6182970ef58b993bc45f98d6b8e469d4b9 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 @@ -28,7 +28,6 @@ import com.l2jserver.gameserver.util.Broadcast; /** * @author -Nemesiss- - * */ public class FishShots implements IItemHandler { @@ -37,26 +36,22 @@ public class FishShots implements IItemHandler 2181, 2182, 2183, 2184, 2185, 2186 }; - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance(); L2Weapon weaponItem = activeChar.getActiveWeaponItem(); if (weaponInst == null || weaponItem.getItemType() != L2WeaponType.FISHINGROD) - return; + return false; if (weaponInst.getChargedFishshot()) // spirit shot is already active - return; + return false; int FishshotId = item.getItemId(); int grade = weaponItem.getCrystalType(); @@ -67,11 +62,11 @@ public class FishShots implements IItemHandler { //1479 - This fishing shot is not fit for the fishing pole crystal. activeChar.sendPacket(SystemMessageId.WRONG_FISHINGSHOT_GRADE); - return; + return false; } if (count < 1) - return; + return false; weaponInst.setChargedFishshot(true); activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), 1, null, false); @@ -80,5 +75,6 @@ public class FishShots implements IItemHandler Broadcast.toSelfAndKnownPlayers(activeChar, new MagicSkillUse(activeChar, SKILL_IDS[grade], 1, 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 85863f9a953f717efb123c1e33b97b3ff8c670b1..4da29f4075898adc324e5859a5779b8dc83b03f4 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 @@ -33,18 +33,14 @@ public class Harvester implements IItemHandler L2PcInstance _activeChar; L2MonsterInstance _target; - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance _item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance _item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; if (CastleManorManager.getInstance().isDisabled()) - return; + return false; _activeChar = (L2PcInstance) playable; @@ -52,7 +48,7 @@ public class Harvester implements IItemHandler { _activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); _activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } _target = (L2MonsterInstance) _activeChar.getTarget(); @@ -60,11 +56,12 @@ public class Harvester implements IItemHandler if (_target == null || !_target.isDead()) { _activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } L2Skill skill = SkillTable.getInstance().getInfo(2098, 1); //harvesting skill if (skill != null) _activeChar.useMagic(skill, false, false); + return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java index 8fb1e62912f3f3b05f3b6f407acf292d682078c0..a5c6a1a932ce086ebd834d1d8b52416bac5de1bb 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkills.java @@ -25,14 +25,14 @@ import com.l2jserver.gameserver.network.SystemMessageId; public class ItemSkills extends ItemSkillsTemplate { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { final L2PcInstance activeChar = playable.getActingPlayer(); if ((activeChar != null) && activeChar.isInOlympiadMode()) { activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); - return; + return false; } - super.useItem(playable, item, forceUse); + return super.useItem(playable, item, forceUse); } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java index e04f7ce61551faf2439130f78d7cf31922cd199a..b5e6493fbb67b5b608748358f780604c19a0fe28 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ItemSkillsTemplate.java @@ -18,20 +18,15 @@ import com.l2jserver.gameserver.ai.CtrlIntention; 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.L2PcInstance.TimeStamp; -import com.l2jserver.gameserver.model.actor.instance.L2PetInstance; import com.l2jserver.gameserver.model.actor.instance.L2ServitorInstance; 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.items.type.L2EtcItemType; import com.l2jserver.gameserver.model.skills.L2Skill; -import com.l2jserver.gameserver.model.skills.L2SkillType; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; -import com.l2jserver.gameserver.network.serverpackets.ExUseSharedGroupItem; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; -import com.l2jserver.gameserver.util.L2TIntObjectHashMap; /** * Template for item skills handler.<br> @@ -40,192 +35,179 @@ import com.l2jserver.gameserver.util.L2TIntObjectHashMap; public class ItemSkillsTemplate implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { - L2PcInstance activeChar; - boolean isPet = playable instanceof L2PetInstance; - if (isPet) + final L2PcInstance activeChar = playable.getActingPlayer(); + if (!playable.isPet() && !playable.isPlayer()) { - activeChar = ((L2PetInstance) playable).getOwner(); - } - else if (playable instanceof L2PcInstance) - { - activeChar = (L2PcInstance) playable; - } - else - { - return; + return false; } if (!TvTEvent.onScrollUse(playable.getObjectId())) { playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } - // pets can use items only when they are tradeable - if (isPet && !item.isTradeable()) + // Pets can use items only when they are tradable. + if (playable.isPet() && !item.isTradeable()) { activeChar.sendPacket(SystemMessageId.ITEM_NOT_FOR_PETS); - return; + return false; + } + + System.out.println("Trying to use item Id: " + item.getItemId() + "!!!!!!"); + if (!checkReuse(activeChar, null, item)) + { + System.out.println("Avoiding item usage due reuse time!"); + return false; } int skillId; int skillLvl; final SkillHolder[] skills = item.getEtcItem().getSkills(); - if (skills != null) + if (skills == null) + { + _log.info("Item " + item + " does not have registered any skill for handler."); + return false; + } + + for (SkillHolder skillInfo : skills) { - for (SkillHolder skillInfo : skills) + if (skillInfo == null) { - if (skillInfo == null) + continue; + } + + skillId = skillInfo.getSkillId(); + skillLvl = skillInfo.getSkillLvl(); + L2Skill itemSkill = skillInfo.getSkill(); + + if (itemSkill != null) + { + if (!itemSkill.checkCondition(playable, playable.getTarget(), false)) { - continue; + return false; } - skillId = skillInfo.getSkillId(); - skillLvl = skillInfo.getSkillLvl(); - L2Skill itemSkill = skillInfo.getSkill(); + if (playable.isSkillDisabled(itemSkill)) + { + checkReuse(activeChar, itemSkill, item); + return false; + } - if (itemSkill != null) + if (!itemSkill.isPotion() && playable.isCastingNow()) { - if (!itemSkill.checkCondition(playable, playable.getTarget(), false)) - { - return; - } - - if (playable.isSkillDisabled(itemSkill)) - { - reuse(activeChar, itemSkill, item); - return; - } - - if (!itemSkill.isPotion() && playable.isCastingNow()) - { - return; - } - - if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0) && (itemSkill.isPotion() || itemSkill.isSimultaneousCast())) - { - if (!playable.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false)) - { - activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); - return; - } - } - - // send message to owner - if (isPet) + return false; + } + + if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0) && (itemSkill.isPotion() || itemSkill.isSimultaneousCast())) + { + if (!playable.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false)) { - SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1); - sm.addString(itemSkill.getName()); - activeChar.sendPacket(sm); + activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); + return false; } - else + } + + // send message to owner + if (playable.isPet()) + { + SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.PET_USES_S1); + sm.addString(itemSkill.getName()); + activeChar.sendPacket(sm); + } + else + { + switch (skillId) { - switch (skillId) - { - // short buff icon for healing potions - case 2031: - case 2032: - case 2037: - case 26025: - case 26026: - int buffId = activeChar._shortBuffTaskSkillId; - // greater healing potions - if ((skillId == 2037) || (skillId == 26025)) - { - activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000); - } - else if (((skillId == 2032) || (skillId == 26026)) && (buffId != 2037) && (buffId != 26025)) + // short buff icon for healing potions + case 2031: + case 2032: + case 2037: + case 26025: + case 26026: + int buffId = activeChar._shortBuffTaskSkillId; + // greater healing potions + if ((skillId == 2037) || (skillId == 26025)) + { + activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000); + } + else if (((skillId == 2032) || (skillId == 26026)) && (buffId != 2037) && (buffId != 26025)) + { + activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000); + // lesser healing potions + } + else + { + if ((buffId != 2037) && (buffId != 26025) && (buffId != 2032) && (buffId != 26026)) { activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000); - // lesser healing potions } - else - { - if ((buffId != 2037) && (buffId != 26025) && (buffId != 2032) && (buffId != 26026)) - { - activeChar.shortBuffStatusUpdate(skillId, skillLvl, itemSkill.getBuffDuration() / 1000); - } - } - break; - } + } + break; } - - if (itemSkill.isPotion() || itemSkill.isSimultaneousCast()) + } + + if (itemSkill.isPotion() || itemSkill.isSimultaneousCast()) + { + playable.doSimultaneousCast(itemSkill); + // Summons should be affected by herbs too, self time effect is handled at L2Effect constructor + if (!playable.isPet() && (item.getItemType() == L2EtcItemType.HERB) && (activeChar.getPet() != null) && (activeChar.getPet() instanceof L2ServitorInstance)) { - playable.doSimultaneousCast(itemSkill); - // Summons should be affected by herbs too, self time effect is handled at L2Effect constructor - if (!isPet && (item.getItemType() == L2EtcItemType.HERB) && (activeChar.getPet() != null) && (activeChar.getPet() instanceof L2ServitorInstance)) - { - activeChar.getPet().doSimultaneousCast(itemSkill); - } + activeChar.getPet().doSimultaneousCast(itemSkill); } - else + } + else + { + playable.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); + + if (!playable.useMagic(itemSkill, forceUse, false)) { - playable.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); - - // TODO: Remove when reuse time for sub-class is implemented. - if (activeChar.isSubClassActive() && (itemSkill.getSkillType() == L2SkillType.EXTRACTABLE) && (itemSkill.getReuseDelay() > 5000)) - { - activeChar.sendPacket(SystemMessageId.MAIN_CLASS_SKILL_ONLY); - return; - } - - if (!playable.useMagic(itemSkill, forceUse, false)) - { - return; - } - - // Consume. - if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0)) - { - if (!activeChar.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false)) - { - activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); - return; - } - } + return false; } - if (itemSkill.getReuseDelay() > 0) + // Consume. + if ((itemSkill.getItemConsumeId() == 0) && (itemSkill.getItemConsume() > 0)) { - activeChar.addTimeStamp(itemSkill, itemSkill.getReuseDelay()); - // activeChar.disableSkill(itemSkill, itemSkill.getReuseDelay()); - if (item.isEtcItem()) + if (!activeChar.destroyItem("Consume", item.getObjectId(), itemSkill.getItemConsume(), null, false)) { - final int group = item.getEtcItem().getSharedReuseGroup(); - if (group >= 0) - { - activeChar.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, itemSkill.getReuseDelay(), itemSkill.getReuseDelay())); - } + activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_ITEMS); + return false; } } } + + if (itemSkill.getReuseDelay() > 0) + { + activeChar.addTimeStamp(itemSkill, itemSkill.getReuseDelay()); + } } } - else - { - _log.info("Item " + item + " does not have registered any skill for handler."); - } + return true; } - private void reuse(L2PcInstance player, L2Skill skill, L2ItemInstance item) + /** + * @param player + * @param skill + * @param item + * @return + */ + private boolean checkReuse(L2PcInstance player, L2Skill skill, L2ItemInstance item) { - SystemMessage sm = null; - final L2TIntObjectHashMap<TimeStamp> timeStamp = player.getReuseTimeStamp(); - - if ((timeStamp != null) && timeStamp.containsKey(skill.getReuseHashCode())) + final SystemMessage sm; + final long remainingTime = (skill != null) ? player.getSkillRemainingReuseTime(skill.getReuseHashCode()) : player.getItemRemainingReuseTime(item.getObjectId()); + final boolean isAvailable = remainingTime <= 0; + if (!isAvailable) { - final long remainingTime = player.getReuseTimeStamp().get(skill.getReuseHashCode()).getRemaining(); final int hours = (int) (remainingTime / 3600000L); final int minutes = (int) (remainingTime % 3600000L) / 60000; final int seconds = (int) ((remainingTime / 1000) % 60); if (hours > 0) { sm = SystemMessage.getSystemMessage(SystemMessageId.S2_HOURS_S3_MINUTES_S4_SECONDS_REMAINING_FOR_REUSE_S1); - if (skill.isPotion()) + if ((skill == null) || skill.isPotion()) { sm.addItemName(item); } @@ -239,7 +221,7 @@ public class ItemSkillsTemplate implements IItemHandler else if (minutes > 0) { sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MINUTES_S3_SECONDS_REMAINING_FOR_REUSE_S1); - if (skill.isPotion()) + if ((skill == null) || skill.isPotion()) { sm.addItemName(item); } @@ -252,7 +234,7 @@ public class ItemSkillsTemplate implements IItemHandler else { sm = SystemMessage.getSystemMessage(SystemMessageId.S2_SECONDS_REMAINING_FOR_REUSE_S1); - if (skill.isPotion()) + if ((skill == null) || skill.isPotion()) { sm.addItemName(item); } @@ -262,15 +244,6 @@ public class ItemSkillsTemplate implements IItemHandler } } sm.addNumber(seconds); - - if (item.isEtcItem()) - { - final int group = item.getEtcItem().getSharedReuseGroup(); - if (group >= 0) - { - player.sendPacket(new ExUseSharedGroupItem(item.getItemId(), group, (int) remainingTime, skill.getReuseDelay())); - } - } } else { @@ -278,5 +251,6 @@ public class ItemSkillsTemplate implements IItemHandler sm.addItemName(item); } player.sendPacket(sm); + return isAvailable; } } diff --git a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java index b7850ceeaf915e5f6dfe70310f574edf6a59bc67..496f9a31d03e877c4072a8c6f2451b88550f79ce 100644 --- a/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java +++ b/L2J_DataPack_BETA/dist/game/data/scripts/handlers/itemhandlers/ManaPotion.java @@ -21,18 +21,14 @@ import com.l2jserver.gameserver.network.SystemMessageId; public class ManaPotion extends ItemSkills { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!Config.L2JMOD_ENABLE_MANA_POTIONS_SUPPORT) { playable.sendPacket(SystemMessageId.NOTHING_HAPPENED); - return; + return false; } - super.useItem(playable, item, forceUse); + return super.useItem(playable, item, forceUse); } } \ No newline at end of file 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 8cb79610d6b995f14a0901b3d82498edb70df035..36aac6fb0566aaff1a8ed2763128b36eaf291b2c 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 @@ -21,24 +21,17 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.serverpackets.ShowMiniMap; /** - * This class provides handling for items that should display a map - * when double clicked. - * - * @version $Revision: 1.1.4.3 $ $Date: 2005/03/27 15:30:07 $ + * This class provides handling for items that should display a map when double clicked. */ - public class Maps implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + 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 0e758600e18c2fba622ff1b1b085ff80b8eb38be..adb87b58f423276b5292d880d33c49925ccc57d3 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 @@ -39,7 +39,7 @@ public class MercTicket implements IItemHandler * 3) Remove the item from the person's inventory */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { int itemId = item.getItemId(); L2PcInstance activeChar = (L2PcInstance) playable; @@ -52,17 +52,17 @@ public class MercTicket implements IItemHandler if (MercTicketManager.getInstance().getTicketCastleId(itemId) != castleId) { activeChar.sendPacket(SystemMessageId.MERCENARIES_CANNOT_BE_POSITIONED_HERE); - return; + return false; } else if (!activeChar.isCastleLord(castleId)) { activeChar.sendPacket(SystemMessageId.YOU_DO_NOT_HAVE_AUTHORITY_TO_POSITION_MERCENARIES); - return; + return false; } else if (castle.getSiege().getIsInProgress()) { activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } //Checking Seven Signs Quest Period @@ -70,7 +70,7 @@ public class MercTicket implements IItemHandler { //_log.warning("Someone has tried to spawn a guardian during Quest Event Period of The Seven Signs."); activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } //Checking the Seal of Strife status switch (SevenSigns.getInstance().getSealOwner(SevenSigns.SEAL_STRIFE)) @@ -81,7 +81,7 @@ public class MercTicket implements IItemHandler { //_log.warning("Someone has tried to spawn a Dawn Mercenary though the Seal of Strife is not controlled by anyone."); activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } break; } @@ -91,7 +91,7 @@ public class MercTicket implements IItemHandler { //_log.warning("Someone has tried to spawn a non-Rookie Mercenary though the Seal of Strife is controlled by Revolutionaries of Dusk."); activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } break; } @@ -104,21 +104,22 @@ public class MercTicket implements IItemHandler if(MercTicketManager.getInstance().isAtCasleLimit(item.getItemId())) { activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } else if (MercTicketManager.getInstance().isAtTypeLimit(item.getItemId())) { activeChar.sendPacket(SystemMessageId.THIS_MERCENARY_CANNOT_BE_POSITIONED_ANYMORE); - return; + return false; } else if (MercTicketManager.getInstance().isTooCloseToAnotherTicket(activeChar.getX(), activeChar.getY(), activeChar.getZ())) { activeChar.sendPacket(SystemMessageId.POSITIONING_CANNOT_BE_DONE_BECAUSE_DISTANCE_BETWEEN_MERCENARIES_TOO_SHORT); - return; + return false; } MercTicketManager.getInstance().addTicket(item.getItemId(), activeChar, null); activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false); // Remove item from char's inventory activeChar.sendPacket(SystemMessageId.PLACE_CURRENT_LOCATION_DIRECTION); + return true; } } 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 8748cb46ef500f0b31062eb3f5107b46fc22cbc6..477ebaca02197f3bdcd83e1a7905922b6497be32 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 @@ -23,10 +23,11 @@ import com.l2jserver.gameserver.network.serverpackets.ExRequestChangeNicknameCol public class NicknameColor implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; playable.sendPacket(new ExRequestChangeNicknameColor(item.getObjectId())); + return true; } } \ No newline at end of file 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 e00509cfd0d4d66291cf51b41332a1aef9489239..f02d10a135bc05cdd1aadd732e558770f8bc851e 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 @@ -32,16 +32,12 @@ public class PaganKeys implements IItemHandler { public static final int INTERACTION_DISTANCE = 100; - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { int itemId = item.getItemId(); if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; L2Object target = activeChar.getTarget(); @@ -49,7 +45,7 @@ public class PaganKeys implements IItemHandler { activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } L2DoorInstance door = (L2DoorInstance) target; @@ -57,17 +53,17 @@ public class PaganKeys implements IItemHandler { activeChar.sendMessage("Too far."); activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } if (activeChar.getAbnormalEffect() > 0 || activeChar.isInCombat()) { activeChar.sendMessage("You cannot use the key now."); activeChar.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } if (!playable.destroyItem("Consume", item.getObjectId(), 1, null, false)) - return; + return false; switch (itemId) { @@ -127,5 +123,6 @@ public class PaganKeys implements IItemHandler } break; } + return true; } } 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 25b4404b1c0ba73defa01e188d0415cde35d3d94..5486a7eaab6f7af914a07655a98ac6b208451be3 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 @@ -34,42 +34,44 @@ import com.l2jserver.gameserver.util.Util; public class PetFood implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { int itemId = item.getItemId(); + boolean used = false; switch (itemId) { case 2515: //Food For Wolves - useFood(playable, 2048, item); + used = useFood(playable, 2048, item); break; case 4038: //Food For Hatchling - useFood(playable, 2063, item); + used = useFood(playable, 2063, item); break; case 5168: //Food for Strider - useFood(playable, 2101, item); + used = useFood(playable, 2101, item); break; case 5169: //Deluxe Food for Strider - useFood(playable, 2102, item); + used = useFood(playable, 2102, item); break; case 6316: //Food for Wyvern - useFood(playable, 2180, item); + used = useFood(playable, 2180, item); break; case 7582: //Baby Spice - useFood(playable, 2048, item); + used = useFood(playable, 2048, item); break; case 9668: //Great Wolf Food - useFood(playable, 2361, item); + used = useFood(playable, 2361, item); break; case 10425: //Improved Baby Pet Food - useFood(playable, 2361, item); + used = useFood(playable, 2361, item); break; case 14818: //Enriched Pet Food for Wolves - useFood(playable, 2916, item); + used = useFood(playable, 2916, item); break; default: _log.warning("Pet Food Id: " + itemId + " without handler!"); break; } + return used; } public boolean useFood(L2Playable activeChar, int magicId, L2ItemInstance item) 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 5d440f2582d523f728e0a9b436b92141c1c51f63..0b241fb9f7f2d81e18641a7fcbdeda5bc7c9f7d9 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 @@ -1,5 +1,16 @@ -/** +/* + * This program is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free Software + * Foundation, either version 3 of the License, or (at your option) any later + * version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see <http://www.gnu.org/licenses/>. */ package handlers.itemhandlers; @@ -13,24 +24,19 @@ import com.l2jserver.gameserver.model.quest.QuestState; /** * @author BiggBoss - * */ public class QuestItems implements IItemHandler { - - /* (non-Javadoc) - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.L2ItemInstance) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceuse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceuse) { if(!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance player = (L2PcInstance) playable; if(!player.destroyItem("Item Handler - QuestItems", item, player, true)) - return; + return false; L2Item itm = item.getItem(); for(Quest quest : itm.getQuestEvents()) @@ -41,5 +47,6 @@ public class QuestItems implements IItemHandler quest.notifyItemUse(itm, player); } + return true; } } 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 b081daea0484373755133894027dd407afd9dd8a..d3f7890b1c2ca390c60a7c0eff65e6c2c10ffcd4 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 @@ -29,11 +29,11 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage; public class Recipes implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) { - return; + return false; } final L2PcInstance activeChar = playable.getActingPlayer(); @@ -41,19 +41,19 @@ public class Recipes implements IItemHandler if (activeChar.isInCraftMode()) { activeChar.sendPacket(SystemMessageId.CANT_ALTER_RECIPEBOOK_WHILE_CRAFTING); - return; + return false; } final L2RecipeList rp = RecipeController.getInstance().getRecipeByItemId(item.getItemId()); if (rp == null) { - return; + return false; } if (activeChar.hasRecipeList(rp.getId())) { activeChar.sendPacket(SystemMessageId.RECIPE_ALREADY_REGISTERED); - return; + return false; } boolean canCraft = false; @@ -77,13 +77,13 @@ public class Recipes implements IItemHandler if (!canCraft) { activeChar.sendPacket(SystemMessageId.CANT_REGISTER_NO_ABILITY_TO_CRAFT); - return; + return false; } if (recipeLevel) { activeChar.sendPacket(SystemMessageId.CREATE_LVL_TOO_LOW_TO_REGISTER); - return; + return false; } if (recipeLimit) @@ -91,7 +91,7 @@ public class Recipes implements IItemHandler final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.UP_TO_S1_RECIPES_CAN_REGISTER); sm.addNumber(rp.isDwarvenRecipe() ? activeChar.getDwarfRecipeLimit() : activeChar.getCommonRecipeLimit()); activeChar.sendPacket(sm); - return; + return false; } if (rp.isDwarvenRecipe()) @@ -107,5 +107,6 @@ public class Recipes implements IItemHandler final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_ADDED); sm.addItemName(item); activeChar.sendPacket(sm); + return true; } } 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 df8333c9ff1dab300c4a7a1026c8618bdb374375..eed240af3fbcd53c0888b7c6d2dad0d7161e5534 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 @@ -25,23 +25,13 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.util.Broadcast; import com.l2jserver.util.Rnd; -/** - * This class ... - * - * @version $Revision: 1.1.4.2 $ $Date: 2005/03/27 15:30:07 $ - */ - public class RollingDice implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; int itemId = item.getItemId(); @@ -49,7 +39,7 @@ public class RollingDice implements IItemHandler if (activeChar.isInOlympiadMode()) { activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); - return; + return false; } if (itemId == 4625 || itemId == 4626 || itemId == 4627 || itemId == 4628) @@ -58,7 +48,7 @@ public class RollingDice implements IItemHandler if (number == 0) { activeChar.sendPacket(SystemMessageId.YOU_MAY_NOT_THROW_THE_DICE_AT_THIS_TIME_TRY_AGAIN_LATER); - return; + return false; } Broadcast.toSelfAndKnownPlayers(activeChar, new Dice(activeChar.getObjectId(), item.getItemId(), number, activeChar.getX() - 30, activeChar.getY() - 30, activeChar.getZ())); @@ -72,11 +62,12 @@ public class RollingDice implements IItemHandler Broadcast.toKnownPlayers(activeChar, sm); else if (activeChar.isInParty()) activeChar.getParty().broadcastToPartyMembers(activeChar, sm); + return true; } + return false; } /** - * * @param player * @return */ 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 caee52a9ae7d8769fb3780a9859a9b33c9f10e6b..2754eba31c20e7db4fba42699cd937de3ff5ff6c 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 @@ -29,161 +29,174 @@ import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ActionFailed; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; -/** - * This class ... - * - * @version $Revision: 1.1.2.2.2.7 $ $Date: 2005/04/05 19:41:13 $ - */ - public class ScrollOfResurrection implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + { + return false; + } L2PcInstance activeChar = (L2PcInstance) playable; if (!TvTEvent.onScrollUse(playable.getObjectId())) { playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } if (activeChar.isSitting()) { activeChar.sendPacket(SystemMessageId.CANT_MOVE_SITTING); - return; + return false; } if (activeChar.isMovementDisabled()) - return; + { + return false; + } int itemId = item.getItemId(); - //boolean blessedScroll = (itemId != 737); + // boolean blessedScroll = (itemId != 737); boolean petScroll = (itemId == 6387); // SoR Animation section L2Character target = (L2Character) activeChar.getTarget(); - if (target != null && target.isDead()) + if ((target == null) || target.isDead()) + { + activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); + return false; + } + + L2PcInstance targetPlayer = null; + + if (target instanceof L2PcInstance) + { + targetPlayer = (L2PcInstance) target; + } + + L2PetInstance targetPet = null; + + if (target instanceof L2PetInstance) + { + targetPet = (L2PetInstance) target; + } + + if ((targetPlayer != null) || (targetPet != null)) { - L2PcInstance targetPlayer = null; + boolean condGood = true; - if (target instanceof L2PcInstance) - targetPlayer = (L2PcInstance) target; + // check target is not in a active siege zone + Castle castle = null; - L2PetInstance targetPet = null; + if (targetPlayer != null) + { + castle = CastleManager.getInstance().getCastle(targetPlayer.getX(), targetPlayer.getY(), targetPlayer.getZ()); + } + else + { + castle = CastleManager.getInstance().getCastle(targetPet.getOwner().getX(), targetPet.getOwner().getY(), targetPet.getOwner().getZ()); + } - if (target instanceof L2PetInstance) - targetPet = (L2PetInstance) target; + if ((castle != null) && castle.getSiege().getIsInProgress()) + { + condGood = false; + activeChar.sendPacket(SystemMessageId.CANNOT_BE_RESURRECTED_DURING_SIEGE); + } - if (targetPlayer != null || targetPet != null) + if (targetPet != null) { - boolean condGood = true; - - //check target is not in a active siege zone - Castle castle = null; - - if (targetPlayer != null) - castle = CastleManager.getInstance().getCastle(targetPlayer.getX(), targetPlayer.getY(), targetPlayer.getZ()); - else - castle = CastleManager.getInstance().getCastle(targetPet.getOwner().getX(), targetPet.getOwner().getY(), targetPet.getOwner().getZ()); - - if (castle != null && castle.getSiege().getIsInProgress()) + if (targetPet.getOwner() != activeChar) { - condGood = false; - activeChar.sendPacket(SystemMessageId.CANNOT_BE_RESURRECTED_DURING_SIEGE); - } - - if (targetPet != null) - { - if (targetPet.getOwner() != activeChar) + if (targetPet.getOwner().isReviveRequested()) { - if (targetPet.getOwner().isReviveRequested()) + if (targetPet.getOwner().isRevivingPet()) + { + activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed. + } + else { - if (targetPet.getOwner().isRevivingPet()) - activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed. - else - activeChar.sendPacket(SystemMessageId.CANNOT_RES_PET2); // A pet cannot be resurrected while it's owner is in the process of resurrecting. - condGood = false; + activeChar.sendPacket(SystemMessageId.CANNOT_RES_PET2); // A pet cannot be resurrected while it's owner is in the process of resurrecting. } + condGood = false; } } - else + } + else + { + if (targetPlayer.isFestivalParticipant()) // Check to see if the current player target is in a festival. { - if (targetPlayer.isFestivalParticipant()) // Check to see if the current player target is in a festival. - { - condGood = false; - activeChar.sendMessage("You may not resurrect participants in a festival."); - } - if (targetPlayer.isReviveRequested()) + condGood = false; + activeChar.sendMessage("You may not resurrect participants in a festival."); + } + if (targetPlayer.isReviveRequested()) + { + if (targetPlayer.isRevivingPet()) { - if (targetPlayer.isRevivingPet()) - activeChar.sendPacket(SystemMessageId.MASTER_CANNOT_RES); // While a pet is attempting to resurrect, it cannot help in resurrecting its master. - else - activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed. - condGood = false; + activeChar.sendPacket(SystemMessageId.MASTER_CANNOT_RES); // While a pet is attempting to resurrect, it cannot help in resurrecting its master. } - else if (petScroll) + else { - condGood = false; - activeChar.sendMessage("You do not have the correct scroll"); + activeChar.sendPacket(SystemMessageId.RES_HAS_ALREADY_BEEN_PROPOSED); // Resurrection is already been proposed. } + condGood = false; } + else if (petScroll) + { + condGood = false; + activeChar.sendMessage("You do not have the correct scroll"); + } + } + + if (condGood) + { + if (!activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false)) + { + return false; + } + + int skillId = 0; + int skillLevel = 1; - if (condGood) + switch (itemId) { - if (!activeChar.destroyItem("Consume", item.getObjectId(), 1, null, false)) - return; - - 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 - } + 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 + } + + if (skillId != 0) + { + L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); + activeChar.useMagic(skill, true, true); - if (skillId != 0) - { - 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); - } + SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED); + sm.addItemName(item); + activeChar.sendPacket(sm); } + return true; } } - else - { - activeChar.sendPacket(SystemMessageId.INCORRECT_TARGET); - } + return false; } } 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 cec25eabc79a1cef969a55cb105be52391eaaae2..96a1099a23953c3d5ab5f52106535d52e57e7a43 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 @@ -36,31 +36,27 @@ import com.l2jserver.gameserver.network.serverpackets.ActionFailed; */ public class Seed implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; if (CastleManorManager.getInstance().isDisabled()) - return; + return false; final L2Object tgt = playable.getTarget(); if (!(tgt instanceof L2Npc)) { playable.sendPacket(SystemMessageId.INCORRECT_TARGET); playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } 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; + return false; } final L2MonsterInstance target = (L2MonsterInstance)tgt; @@ -68,32 +64,33 @@ public class Seed implements IItemHandler { playable.sendPacket(SystemMessageId.INCORRECT_TARGET); playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } if (target.isSeeded()) { playable.sendPacket(ActionFailed.STATIC_PACKET); - return; + return false; } final int seedId = item.getItemId(); - if (areaValid(seedId, MapRegionManager.getInstance().getAreaCastle(playable))) + if (!areaValid(seedId, MapRegionManager.getInstance().getAreaCastle(playable))) + { + playable.sendPacket(SystemMessageId.THIS_SEED_MAY_NOT_BE_SOWN_HERE); + return false; + } + + target.setSeeded(seedId, (L2PcInstance)playable); + final SkillHolder[] skills = item.getEtcItem().getSkills(); + if (skills != null) { - target.setSeeded(seedId, (L2PcInstance)playable); - final SkillHolder[] skills = item.getEtcItem().getSkills(); - if (skills != null) - { - if(skills[0] == null) - return; - - L2Skill itemskill = skills[0].getSkill(); - ((L2PcInstance)playable).useMagic(itemskill, false, false); - } + if(skills[0] == null) + return false; + L2Skill itemskill = skills[0].getSkill(); + ((L2PcInstance)playable).useMagic(itemskill, false, false); } - else - playable.sendPacket(SystemMessageId.THIS_SEED_MAY_NOT_BE_SOWN_HERE); + return true; } /** 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 9744a458b4b9069dab5eb4098704b69c713d5c9c..e7a94330220a654eae00c9bab90a92fae7d154b5 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 @@ -22,21 +22,17 @@ import com.l2jserver.gameserver.network.serverpackets.SSQStatus; /** * Item Handler for Seven Signs Record - * * @author Tempy */ public class SevenSignsRecord implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; playable.sendPacket(new SSQStatus(playable.getObjectId(), 1)); + return true; } } \ No newline at end of file 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 8809322d92077b353348f9d52a30c671d5df6af3..e4fad7db083e000f7069029a31a6ab528c21123f 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 @@ -28,11 +28,11 @@ import com.l2jserver.gameserver.util.Broadcast; public class SoulShots implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) { - return; + return false; } final L2PcInstance activeChar = playable.getActingPlayer(); @@ -47,7 +47,7 @@ public class SoulShots implements IItemHandler { activeChar.sendPacket(SystemMessageId.CANNOT_USE_SOULSHOTS); } - return; + return false; } boolean gradeCheck = true; @@ -100,7 +100,7 @@ public class SoulShots implements IItemHandler { activeChar.sendPacket(SystemMessageId.SOULSHOTS_GRADE_MISMATCH); } - return; + return false; } activeChar.soulShotLock.lock(); @@ -109,7 +109,7 @@ public class SoulShots implements IItemHandler // Check if Soul shot is already active if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE) { - return; + return false; } // Consume Soul shots if player has enough of them @@ -122,7 +122,7 @@ public class SoulShots implements IItemHandler { activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SOULSHOTS); } - return; + return false; } // Charge soul shot weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT); @@ -172,5 +172,6 @@ public class SoulShots implements IItemHandler // Send message to client activeChar.sendPacket(SystemMessageId.ENABLED_SOULSHOT); Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000); + 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 a51266429fa5635ea8e9473fc3be4dd9971765ec..ced98108a73e5339a5219f00e26c41312c0a8081 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 @@ -21,21 +21,17 @@ import com.l2jserver.gameserver.model.items.instance.L2ItemInstance; import com.l2jserver.gameserver.network.serverpackets.ShowXMasSeal; /** - * - * @author devScarlet & mrTJO + * @author devScarlet & mrTJO */ public class SpecialXMas implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + 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 e09261d3da8305687dfb653390f1583c4e4c01f9..6dabbdd353b45c7a47d0e523b445689a833793a0 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 @@ -24,23 +24,13 @@ import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.MagicSkillUse; import com.l2jserver.gameserver.util.Broadcast; -/** - * This class ... - * - * @version $Revision: 1.1.2.1.2.5 $ $Date: 2005/03/27 15:30:07 $ - */ - public class SpiritShot implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public synchronized void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public synchronized boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance activeChar = (L2PcInstance) playable; L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance(); @@ -52,12 +42,12 @@ public class SpiritShot implements IItemHandler { if (!activeChar.getAutoSoulShot().contains(itemId)) activeChar.sendPacket(SystemMessageId.CANNOT_USE_SPIRITSHOTS); - return; + return false; } // Check if Spirit shot is already active if (weaponInst.getChargedSpiritshot() != L2ItemInstance.CHARGED_NONE) - return; + return false; final int weaponGrade = weaponItem.getCrystalType(); @@ -98,7 +88,7 @@ public class SpiritShot implements IItemHandler if (!activeChar.getAutoSoulShot().contains(itemId)) activeChar.sendPacket(SystemMessageId.SPIRITSHOTS_GRADE_MISMATCH); - return; + return false; } // Consume Spirit shot if player has enough of them @@ -106,7 +96,7 @@ public class SpiritShot implements IItemHandler { if (!activeChar.disableAutoShot(itemId)) activeChar.sendPacket(SystemMessageId.NOT_ENOUGH_SPIRITSHOTS); - return; + return false; } // Charge Spirit shot @@ -153,5 +143,6 @@ public class SpiritShot implements IItemHandler // Send message to client activeChar.sendPacket(SystemMessageId.ENABLED_SPIRITSHOT); Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, skillId, 1, 0, 0), 360000); + 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 9c96f40b68d66c3407765fddf83d5aae323589a1..552f2fda38be00d7e38da7b0eb5e8fbc3222279e 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 @@ -49,65 +49,61 @@ import com.l2jserver.gameserver.util.Broadcast; public class SummonItems implements IItemHandler { - /** - * - * @see com.l2jserver.gameserver.handler.IItemHandler#useItem(com.l2jserver.gameserver.model.actor.L2Playable, com.l2jserver.gameserver.model.items.instance.L2ItemInstance, boolean) - */ @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (!(playable instanceof L2PcInstance)) - return; + return false; if (!TvTEvent.onItemSummon(playable.getObjectId())) - return; + return false; final L2PcInstance activeChar = (L2PcInstance) playable; if (!activeChar.getFloodProtectors().getItemPetSummon().tryPerformAction("summon items")) - return; + return false; if (activeChar.isSitting()) { activeChar.sendPacket(SystemMessageId.CANT_MOVE_SITTING); - return; + return false; } if(activeChar.getBlockCheckerArena() != -1) - return; + return false; if (activeChar.inObserverMode()) - return; + return false; if (activeChar.isInOlympiadMode()) { activeChar.sendPacket(SystemMessageId.THIS_ITEM_IS_NOT_AVAILABLE_FOR_THE_OLYMPIAD_EVENT); - return; + return false; } if (activeChar.isAllSkillsDisabled() || activeChar.isCastingNow()) - return; + return false; final L2SummonItem sitem = SummonItemsData.getInstance().getSummonItem(item.getItemId()); if ((activeChar.getPet() != null || activeChar.isMounted()) && sitem.isPetSummon()) { activeChar.sendPacket(SystemMessageId.YOU_ALREADY_HAVE_A_PET); - return; + return false; } if (activeChar.isAttackingNow()) { activeChar.sendPacket(SystemMessageId.YOU_CANNOT_SUMMON_IN_COMBAT); - return; + return false; } final int npcId = sitem.getNpcId(); if (npcId == 0) - return; + return false; final L2NpcTemplate npcTemplate = NpcTable.getInstance().getTemplate(npcId); if (npcTemplate == null) - return; + return false; activeChar.stopMove(null, false); @@ -124,7 +120,7 @@ public class SummonItems implements IItemHandler SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.CANNOT_SUMMON_S1_AGAIN); sm.addCharName(ch); activeChar.sendPacket(sm); - return; + return false; } } @@ -166,6 +162,7 @@ public class SummonItems implements IItemHandler activeChar.mount(sitem.getNpcId(), item.getObjectId(), false); break; } + return true; } static class PetSummonFeedWait implements Runnable 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 115d960efc734700656e6c6a5985da6fac9b3c33..63c47dedbd7346a549bc7c983832867b4ce8043f 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 @@ -23,23 +23,22 @@ import com.l2jserver.gameserver.network.serverpackets.SystemMessage; /** * Teleport Bookmark Slot Handler - * * @author ShanSoft */ public class TeleportBookmark implements IItemHandler { @Override - public void useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) + public boolean useItem(L2Playable playable, L2ItemInstance item, boolean forceUse) { if (playable == null || item == null || !(playable instanceof L2PcInstance)) - return; + return false; L2PcInstance player = (L2PcInstance) playable; if(player.getBookMarkSlot() >= 9) { player.sendPacket(SystemMessageId.YOUR_NUMBER_OF_MY_TELEPORTS_SLOTS_HAS_REACHED_ITS_MAXIMUM_LIMIT); - return; + return false; } player.destroyItem("Consume", item.getObjectId(), 1, null, false); @@ -50,5 +49,6 @@ public class TeleportBookmark implements IItemHandler SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.S1_DISAPPEARED); sm.addItemName(item.getItemId()); player.sendPacket(sm); + return true; } } diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml index 10b25a46f48f623dfa68267932c02040e2aca713..7ddfc4bf91a1f827e6154e0e7191e58fd1dcb53f 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/items/04300-04399.xml @@ -883,6 +883,7 @@ <set name="material" val="steel" /> <set name="weight" val="20" /> <set name="price" val="100" /> + <set name="handler" val="Calculator" /> </item> <item id="4394" type="EtcItem" name="Hanellin's White Flower"> <set name="icon" val="icon.etc_flower_i00" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml index 97c18f298e2fcd909f6754996131b07cabb1d450..f7e75c639b81b1418ecf74acb25e1b0e70da3a04 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/items/10600-10699.xml @@ -400,6 +400,7 @@ <set name="is_sellable" val="false" /> <set name="is_depositable" val="false" /> <set name="is_stackable" val="true" /> + <set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. --> <set name="handler" val="ItemSkills" /> <set name="item_skill" val="2510-1" /> </item> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml index 3e37af94196aacf5ccaef43266182421bc1cd6fd..6fcf7bcf45eff754a9707ec88e24087f98263959 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/items/13000-13099.xml @@ -381,6 +381,7 @@ <set name="is_dropable" val="false" /> <set name="is_sellable" val="false" /> <set name="is_premium" val="true" /> + <set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. --> <set name="handler" val="ItemSkills" /> <set name="item_skill" val="2606-1" /> <set name="time" val="43200" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml b/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml index eb536fcb30270e26b617c9f9136ec30d9d1e06d9..54688929b0fe9ffe6c11d6192e2b699bb3a0ca63 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/items/21100-21199.xml @@ -46,6 +46,7 @@ <set name="is_depositable" val="false" /> <set name="is_dropable" val="false" /> <set name="is_stackable" val="true" /> + <set name="reuse_delay" val="86400000" /><!-- TODO: Manage global (main class <-> subclasses) reuse for skills. --> <set name="handler" val="ItemSkills" /> <set name="item_skill" val="22180-1" /> </item> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml index e0c57e91b37ba7af673eb3641d8dc03462d52061..4f16ac10baf684b19f727a592025a2932f3218c9 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02200-02299.xml @@ -1508,8 +1508,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="600000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="HEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -1527,8 +1525,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="MANAHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -1545,8 +1541,6 @@ <set name="isPotion" val="true" /> <set name="itemConsumeCount" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2289-1" /> <set name="skillType" val="COMBATPOINTHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml index ae54be903f545724eaa5f315d2affdd8ff53b41d..4e039fd6c06a0befbd25fff00b19daa4c9e84260 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02500-02599.xml @@ -149,7 +149,7 @@ </table> <set name="capsuled_items_skill" val="#extractableItems" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="86400000" /> + <!-- set name="reuseDelay" val="86400000" / --> <set name="skillType" val="EXTRACTABLE" /> <set name="staticHitTime" val="true" /> <set name="staticReuse" val="true" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml index 0366e5ba19b015aaf8adcc3d8708e9d0f1b13cbf..5a49ae208b13718c3bca8e70a0cbea579cf5aa17 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02600-02699.xml @@ -50,7 +50,7 @@ <set name="capsuled_items_skill" val="#extractableItems" /> <set name="itemConsumeCount" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="86400000" /> + <!-- set name="reuseDelay" val="86400000" / --> <set name="skillType" val="EXTRACTABLE" /> <set name="staticReuse" val="true" /> <set name="target" val="TARGET_SELF" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml index 899f2d8e16d0f5930eb065874ead4f7097f17813..4f7dbbc629fda1ba9bc5bb5c01e7971f82189f0d 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/02800-02899.xml @@ -1020,8 +1020,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="HEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -1039,8 +1037,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="MANAHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -1058,8 +1054,6 @@ <set name="isPotion" val="true" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2289-1" /> <set name="skillType" val="COMBATPOINTHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml index 00d65aec7d17c0ec447ed0cfd582910a592812b3..e7cc2ee7e9205fe14e15e0e16b3099c4e4da7d1b 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22000-22099.xml @@ -583,8 +583,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2289-1" /> <set name="skillType" val="COMBATPOINTHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -602,8 +600,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="300000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="HEAL_PERCENT" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml index 63b44e2ba0ce53adc91efed49a688c870edda245..ea882d1d20c8217029ca21fec04badc4611a5e82 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/22100-22199.xml @@ -1011,8 +1011,9 @@ 10633,1,35;10642,1,25;10634,1,20;10643,1,10;10635,1,4;10644,1,3;10636,1,1.2;10645,1,0.8;10637,1,0.6;10646,1,0.4 </table> <set name="capsuled_items_skill" val="#extractableItems" /> + <set name="itemConsumeCount" val="1" /> <set name="operateType" val="A1" /><!-- TODO: Confirm. --> - <set name="reuseDelay" val="86400000" /> + <!-- set name="reuseDelay" val="86400000" / --> <set name="skillType" val="EXTRACTABLE" /> <set name="staticHitTime" val="true" /> <set name="staticReuse" val="true" /> diff --git a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml index b3e6b1481d111d211effe536c7db2162597d18b9..17b88dd3e1efa75ecd48eb24722306d58fe19903 100644 --- a/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml +++ b/L2J_DataPack_BETA/dist/game/data/stats/skills/26000-26099.xml @@ -250,8 +250,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="600000" /> - <set name="sharedReuse" val="2289-1" /> <set name="skillType" val="COMBATPOINTHEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> @@ -271,8 +269,6 @@ <set name="itemConsumeCount" val="1" /> <set name="magicLvl" val="1" /> <set name="operateType" val="A1" /> - <set name="reuseDelay" val="600000" /> - <set name="sharedReuse" val="2287-1" /> <set name="skillType" val="HEAL" /> <set name="target" val="TARGET_SELF" /> <cond msgId="113" addName="1"> diff --git a/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql b/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql new file mode 100644 index 0000000000000000000000000000000000000000..3a95c1a1736c9ba66cef33fac76fdfc75ea34ce6 --- /dev/null +++ b/L2J_DataPack_BETA/dist/sql/game/character_item_reuse_save.sql @@ -0,0 +1,8 @@ +CREATE TABLE IF NOT EXISTS `character_item_reuse_save` ( + `charId` INT NOT NULL default 0, + `itemId` INT NOT NULL default 0, + `itemObjId` INT(3) NOT NULL default 1, + `reuseDelay` INT(8) NOT NULL DEFAULT 0, + `systime` BIGINT UNSIGNED NOT NULL DEFAULT 0, + PRIMARY KEY (`charId`,`itemId`,`itemObjId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; \ No newline at end of file