From caf2b1e6cf9659b22f928af0d8bac6736319c230 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sun, 1 Oct 2017 12:13:02 +0000 Subject: [PATCH] Check for available items needed before skill casting. --- .../gameserver/model/skills/SkillCaster.java | 36 ++++++++++++------- .../gameserver/model/skills/SkillCaster.java | 36 ++++++++++++------- .../gameserver/model/skills/SkillCaster.java | 36 ++++++++++++------- .../gameserver/model/skills/SkillCaster.java | 36 ++++++++++++------- 4 files changed, 92 insertions(+), 52 deletions(-) diff --git a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index 680e67b8b0..466dacc40c 100644 --- a/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_1.0_Ertheia/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -447,7 +447,16 @@ public class SkillCaster implements Runnable return false; } - // Noptify skill is casted. + // Consume skill reduced item on success. + if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) + { + if (!caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true)) + { + return false; + } + } + + // Notify skill is casted. EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster); // Call the skill's effects and AI interraction and stuff. @@ -468,12 +477,6 @@ public class SkillCaster implements Runnable // On each repeat recharge shots before cast. caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false); - // Consume skill reduced item on success. - if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) - { - caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true); - } - return true; } @@ -905,17 +908,24 @@ public class SkillCaster implements Runnable } } - // Check if a summon spell consumes an item. - if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) + // Check if a spell consumes an item. + if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) { // Get the L2ItemInstance consumed by the spell final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId()); if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount())) { - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); - sm.addItemName(skill.getItemConsumeId()); - sm.addInt(skill.getItemConsumeCount()); - caster.sendPacket(sm); + if (skill.hasEffectType(L2EffectType.SUMMON)) + { + final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); + sm.addItemName(skill.getItemConsumeId()); + sm.addInt(skill.getItemConsumeCount()); + caster.sendPacket(sm); + } + else + { + caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL)); + } return false; } } diff --git a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index 680e67b8b0..466dacc40c 100644 --- a/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_2.5_Underground/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -447,7 +447,16 @@ public class SkillCaster implements Runnable return false; } - // Noptify skill is casted. + // Consume skill reduced item on success. + if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) + { + if (!caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true)) + { + return false; + } + } + + // Notify skill is casted. EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster); // Call the skill's effects and AI interraction and stuff. @@ -468,12 +477,6 @@ public class SkillCaster implements Runnable // On each repeat recharge shots before cast. caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false); - // Consume skill reduced item on success. - if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) - { - caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true); - } - return true; } @@ -905,17 +908,24 @@ public class SkillCaster implements Runnable } } - // Check if a summon spell consumes an item. - if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) + // Check if a spell consumes an item. + if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) { // Get the L2ItemInstance consumed by the spell final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId()); if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount())) { - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); - sm.addItemName(skill.getItemConsumeId()); - sm.addInt(skill.getItemConsumeCount()); - caster.sendPacket(sm); + if (skill.hasEffectType(L2EffectType.SUMMON)) + { + final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); + sm.addItemName(skill.getItemConsumeId()); + sm.addInt(skill.getItemConsumeCount()); + caster.sendPacket(sm); + } + else + { + caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL)); + } return false; } } diff --git a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index 680e67b8b0..466dacc40c 100644 --- a/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_3.0_Helios/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -447,7 +447,16 @@ public class SkillCaster implements Runnable return false; } - // Noptify skill is casted. + // Consume skill reduced item on success. + if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) + { + if (!caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true)) + { + return false; + } + } + + // Notify skill is casted. EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster); // Call the skill's effects and AI interraction and stuff. @@ -468,12 +477,6 @@ public class SkillCaster implements Runnable // On each repeat recharge shots before cast. caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false); - // Consume skill reduced item on success. - if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) - { - caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true); - } - return true; } @@ -905,17 +908,24 @@ public class SkillCaster implements Runnable } } - // Check if a summon spell consumes an item. - if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) + // Check if a spell consumes an item. + if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) { // Get the L2ItemInstance consumed by the spell final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId()); if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount())) { - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); - sm.addItemName(skill.getItemConsumeId()); - sm.addInt(skill.getItemConsumeCount()); - caster.sendPacket(sm); + if (skill.hasEffectType(L2EffectType.SUMMON)) + { + final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); + sm.addItemName(skill.getItemConsumeId()); + sm.addInt(skill.getItemConsumeCount()); + caster.sendPacket(sm); + } + else + { + caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL)); + } return false; } } diff --git a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java index 680e67b8b0..466dacc40c 100644 --- a/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java +++ b/L2J_Mobius_Classic_2.0_Saviors/java/com/l2jmobius/gameserver/model/skills/SkillCaster.java @@ -447,7 +447,16 @@ public class SkillCaster implements Runnable return false; } - // Noptify skill is casted. + // Consume skill reduced item on success. + if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) + { + if (!caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true)) + { + return false; + } + } + + // Notify skill is casted. EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster); // Call the skill's effects and AI interraction and stuff. @@ -468,12 +477,6 @@ public class SkillCaster implements Runnable // On each repeat recharge shots before cast. caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false); - // Consume skill reduced item on success. - if ((_item != null) && (_item.getItem().getDefaultAction() == ActionType.SKILL_REDUCE_ON_SKILL_SUCCESS)) - { - caster.destroyItem(_skill.toString(), _item.getObjectId(), _skill.getItemConsumeCount(), target, true); - } - return true; } @@ -905,17 +908,24 @@ public class SkillCaster implements Runnable } } - // Check if a summon spell consumes an item. - if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) + // Check if a spell consumes an item. + if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null)) { // Get the L2ItemInstance consumed by the spell final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId()); if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount())) { - final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); - sm.addItemName(skill.getItemConsumeId()); - sm.addInt(skill.getItemConsumeCount()); - caster.sendPacket(sm); + if (skill.hasEffectType(L2EffectType.SUMMON)) + { + final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1); + sm.addItemName(skill.getItemConsumeId()); + sm.addInt(skill.getItemConsumeCount()); + caster.sendPacket(sm); + } + else + { + caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL)); + } return false; } }