Changed ConsumeBody condition to work on summons.
This commit is contained in:
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,7 +19,6 @@ package handlers.skillconditionhandlers;
|
|||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.StatsSet;
|
import com.l2jmobius.gameserver.model.StatsSet;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.instance.L2MonsterInstance;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
import com.l2jmobius.gameserver.model.skills.ISkillCondition;
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -36,10 +35,10 @@ public class ConsumeBodySkillCondition implements ISkillCondition
|
|||||||
@Override
|
@Override
|
||||||
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
public boolean canUse(L2Character caster, Skill skill, L2Object target)
|
||||||
{
|
{
|
||||||
if ((target != null) && target.isMonster())
|
if ((target != null) && (target.isMonster() || target.isSummon()))
|
||||||
{
|
{
|
||||||
final L2MonsterInstance monster = (L2MonsterInstance) target;
|
final L2Character character = (L2Character) target;
|
||||||
if (monster.isDead() && monster.isSpawned())
|
if (character.isDead() && character.isSpawned())
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@@ -20,7 +20,6 @@ import com.l2jmobius.gameserver.geoengine.GeoEngine;
|
|||||||
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
import com.l2jmobius.gameserver.handler.ITargetTypeHandler;
|
||||||
import com.l2jmobius.gameserver.model.L2Object;
|
import com.l2jmobius.gameserver.model.L2Object;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||||
import com.l2jmobius.gameserver.model.actor.L2Npc;
|
|
||||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||||
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
import com.l2jmobius.gameserver.model.skills.targets.TargetType;
|
||||||
import com.l2jmobius.gameserver.network.SystemMessageId;
|
import com.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
@@ -51,46 +50,41 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!selectedTarget.isNpc())
|
if (!selectedTarget.isNpc() && !selectedTarget.isSummon())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
final L2Npc npc = (L2Npc) selectedTarget;
|
final L2Character cha = (L2Character) selectedTarget;
|
||||||
|
if (cha.isDead())
|
||||||
if (npc.isDead())
|
|
||||||
{
|
{
|
||||||
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
// Check for cast range if character cannot move. TODO: char will start follow until within castrange, but if his moving is blocked by geodata, this msg will be sent.
|
||||||
if (dontMove)
|
if (dontMove)
|
||||||
{
|
{
|
||||||
if (activeChar.calculateDistance2D(npc) > skill.getCastRange())
|
if (activeChar.calculateDistance2D(cha) > skill.getCastRange())
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
activeChar.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Geodata check when character is within range.
|
// Geodata check when character is within range.
|
||||||
if (!GeoEngine.getInstance().canSeeTarget(activeChar, npc))
|
if (!GeoEngine.getInstance().canSeeTarget(activeChar, cha))
|
||||||
{
|
{
|
||||||
if (sendMessage)
|
if (sendMessage)
|
||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
activeChar.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
return cha;
|
||||||
return npc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
// If target is not dead or not player/pet it will not even bother to walk within range, unlike Enemy target type.
|
||||||
@@ -98,7 +92,6 @@ public class NpcBody implements ITargetTypeHandler
|
|||||||
{
|
{
|
||||||
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
activeChar.sendPacket(SystemMessageId.INVALID_TARGET);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user