Check for available items needed before skill casting.
This commit is contained in:
parent
b199dfcdb3
commit
caf2b1e6cf
@ -447,7 +447,16 @@ public class SkillCaster implements Runnable
|
|||||||
return false;
|
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);
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster);
|
||||||
|
|
||||||
// Call the skill's effects and AI interraction and stuff.
|
// 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.
|
// On each repeat recharge shots before cast.
|
||||||
caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,17 +908,24 @@ public class SkillCaster implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a summon spell consumes an item.
|
// Check if a spell consumes an item.
|
||||||
if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
||||||
{
|
{
|
||||||
// Get the L2ItemInstance consumed by the spell
|
// Get the L2ItemInstance consumed by the spell
|
||||||
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
||||||
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
||||||
|
{
|
||||||
|
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
||||||
sm.addItemName(skill.getItemConsumeId());
|
sm.addItemName(skill.getItemConsumeId());
|
||||||
sm.addInt(skill.getItemConsumeCount());
|
sm.addInt(skill.getItemConsumeCount());
|
||||||
caster.sendPacket(sm);
|
caster.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,16 @@ public class SkillCaster implements Runnable
|
|||||||
return false;
|
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);
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster);
|
||||||
|
|
||||||
// Call the skill's effects and AI interraction and stuff.
|
// 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.
|
// On each repeat recharge shots before cast.
|
||||||
caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,17 +908,24 @@ public class SkillCaster implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a summon spell consumes an item.
|
// Check if a spell consumes an item.
|
||||||
if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
||||||
{
|
{
|
||||||
// Get the L2ItemInstance consumed by the spell
|
// Get the L2ItemInstance consumed by the spell
|
||||||
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
||||||
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
||||||
|
{
|
||||||
|
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
||||||
sm.addItemName(skill.getItemConsumeId());
|
sm.addItemName(skill.getItemConsumeId());
|
||||||
sm.addInt(skill.getItemConsumeCount());
|
sm.addInt(skill.getItemConsumeCount());
|
||||||
caster.sendPacket(sm);
|
caster.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,16 @@ public class SkillCaster implements Runnable
|
|||||||
return false;
|
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);
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster);
|
||||||
|
|
||||||
// Call the skill's effects and AI interraction and stuff.
|
// 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.
|
// On each repeat recharge shots before cast.
|
||||||
caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,17 +908,24 @@ public class SkillCaster implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a summon spell consumes an item.
|
// Check if a spell consumes an item.
|
||||||
if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
||||||
{
|
{
|
||||||
// Get the L2ItemInstance consumed by the spell
|
// Get the L2ItemInstance consumed by the spell
|
||||||
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
||||||
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
||||||
|
{
|
||||||
|
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
||||||
sm.addItemName(skill.getItemConsumeId());
|
sm.addItemName(skill.getItemConsumeId());
|
||||||
sm.addInt(skill.getItemConsumeCount());
|
sm.addInt(skill.getItemConsumeCount());
|
||||||
caster.sendPacket(sm);
|
caster.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -447,7 +447,16 @@ public class SkillCaster implements Runnable
|
|||||||
return false;
|
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);
|
EventDispatcher.getInstance().notifyEvent(new OnCreatureSkillFinishCast(caster, target, _skill, _skill.isWithoutAction()), caster);
|
||||||
|
|
||||||
// Call the skill's effects and AI interraction and stuff.
|
// 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.
|
// On each repeat recharge shots before cast.
|
||||||
caster.rechargeShots(_skill.useSoulShot(), _skill.useSpiritShot(), false);
|
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;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -905,17 +908,24 @@ public class SkillCaster implements Runnable
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if a summon spell consumes an item.
|
// Check if a spell consumes an item.
|
||||||
if (skill.hasEffectType(L2EffectType.SUMMON) && (skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
if ((skill.getItemConsumeId() > 0) && (skill.getItemConsumeCount() > 0) && (caster.getInventory() != null))
|
||||||
{
|
{
|
||||||
// Get the L2ItemInstance consumed by the spell
|
// Get the L2ItemInstance consumed by the spell
|
||||||
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
final L2ItemInstance requiredItems = caster.getInventory().getItemByItemId(skill.getItemConsumeId());
|
||||||
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
if ((requiredItems == null) || (requiredItems.getCount() < skill.getItemConsumeCount()))
|
||||||
|
{
|
||||||
|
if (skill.hasEffectType(L2EffectType.SUMMON))
|
||||||
{
|
{
|
||||||
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
final SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.SUMMONING_A_SERVITOR_COSTS_S2_S1);
|
||||||
sm.addItemName(skill.getItemConsumeId());
|
sm.addItemName(skill.getItemConsumeId());
|
||||||
sm.addInt(skill.getItemConsumeCount());
|
sm.addInt(skill.getItemConsumeCount());
|
||||||
caster.sendPacket(sm);
|
caster.sendPacket(sm);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
caster.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.THERE_ARE_NOT_ENOUGH_NECESSARY_ITEMS_TO_USE_THE_SKILL));
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user