Support for applying effect on dead enemy when skill remains after death.

This commit is contained in:
MobiusDevelopment
2020-11-21 10:11:07 +00:00
parent f2267fb5d0
commit 9ceed6b399
68 changed files with 85 additions and 323 deletions

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_STOPPED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_THIS_AREA);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE); creature.sendPacket(SystemMessageId.A_MALICIOUS_SKILL_CANNOT_BE_USED_IN_A_PEACE_ZONE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }

View File

@@ -58,18 +58,16 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class Enemy implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -58,18 +58,16 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
// You cannot attack dead targets. // You cannot attack dead targets.
if (target.isDead()) if (target.isDead() && !skill.isStayAfterDeath())
{ {
if (sendMessage) if (sendMessage)
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -80,7 +78,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.INVALID_TARGET); creature.sendPacket(SystemMessageId.INVALID_TARGET);
} }
return null; return null;
} }
@@ -94,7 +91,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED); creature.sendPacket(SystemMessageId.THE_DISTANCE_IS_TOO_FAR_AND_SO_THE_CASTING_HAS_BEEN_CANCELLED);
} }
return null; return null;
} }
@@ -105,7 +101,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET); creature.sendPacket(SystemMessageId.CANNOT_SEE_TARGET);
} }
return null; return null;
} }
@@ -116,7 +111,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE); creature.sendPacket(SystemMessageId.YOU_CANNOT_USE_SKILLS_THAT_MAY_HARM_OTHER_PLAYERS_IN_HERE);
} }
return null; return null;
} }
@@ -127,7 +121,6 @@ public class EnemyOnly implements ITargetTypeHandler
{ {
creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE); creature.sendPacket(SystemMessageId.FORCE_ATTACK_IS_IMPOSSIBLE_AGAINST_A_TEMPORARY_ALLIED_MEMBER_DURING_A_SIEGE);
} }
return null; return null;
} }

View File

@@ -874,7 +874,7 @@ public class EffectList
} }
// Prevent adding and initializing buffs/effects on dead creatures. // Prevent adding and initializing buffs/effects on dead creatures.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }
@@ -904,7 +904,7 @@ public class EffectList
final Skill skill = info.getSkill(); final Skill skill = info.getSkill();
// Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down. // Cannot add active buff to dead creature. Even in retail if you are dead with Lv. 3 Shillien's Breath, it will disappear instead of going 1 level down.
if (info.getEffected().isDead()) if (info.getEffected().isDead() && !info.getSkill().isStayAfterDeath())
{ {
return; return;
} }

View File

@@ -322,7 +322,7 @@ public class BuffInfo
for (AbstractEffect effect : _effects) for (AbstractEffect effect : _effects)
{ {
if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive())) if (effect.isInstant() || (_effected.isDead() && !_skill.isPassive() && !_skill.isStayAfterDeath()))
{ {
continue; continue;
} }