ConsumeBody effect related changes.

This commit is contained in:
MobiusDev
2018-11-27 18:03:49 +00:00
parent 47b70675c4
commit 3e0b281e89
30 changed files with 150 additions and 50 deletions

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">

View File

@@ -19,13 +19,14 @@ package handlers.effecthandlers;
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.L2Npc; import com.l2jmobius.gameserver.model.actor.L2Npc;
import com.l2jmobius.gameserver.model.actor.L2Summon;
import com.l2jmobius.gameserver.model.effects.AbstractEffect; import com.l2jmobius.gameserver.model.effects.AbstractEffect;
import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance; import com.l2jmobius.gameserver.model.items.instance.L2ItemInstance;
import com.l2jmobius.gameserver.model.skills.Skill; import com.l2jmobius.gameserver.model.skills.Skill;
/** /**
* Consume Body effect implementation. * Consume Body effect implementation.
* @author Zoey76 * @author Mobius
*/ */
public final class ConsumeBody extends AbstractEffect public final class ConsumeBody extends AbstractEffect
{ {
@@ -42,11 +43,18 @@ public final class ConsumeBody extends AbstractEffect
@Override @Override
public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item) public void instant(L2Character effector, L2Character effected, Skill skill, L2ItemInstance item)
{ {
if (!effected.isNpc() || !effected.isDead()) if (!effected.isDead() || (!effected.isNpc() && !effected.isSummon()))
{ {
return; return;
} }
if (effected.isNpc())
{
((L2Npc) effected).endDecayTask(); ((L2Npc) effected).endDecayTask();
} }
else
{
((L2Summon) effected).deleteMe();
}
}
} }

View File

@@ -46,6 +46,7 @@ public class Range implements IAffectScopeHandler
final int affectLimit = skill.getAffectLimit(); final int affectLimit = skill.getAffectLimit();
// Target checks. // Target checks.
final TargetType targetType = skill.getTargetType();
final AtomicInteger affected = new AtomicInteger(0); final AtomicInteger affected = new AtomicInteger(0);
final Predicate<L2Character> filter = c -> final Predicate<L2Character> filter = c ->
{ {
@@ -53,7 +54,7 @@ public class Range implements IAffectScopeHandler
{ {
return false; return false;
} }
if (c.isDead()) if (c.isDead() && (targetType != TargetType.NPC_BODY) && (targetType != TargetType.PC_BODY))
{ {
return false; return false;
} }
@@ -75,7 +76,7 @@ public class Range implements IAffectScopeHandler
}; };
// Check and add targets. // Check and add targets.
if (skill.getTargetType() == TargetType.GROUND) if (targetType == TargetType.GROUND)
{ {
if (activeChar.isPlayable()) if (activeChar.isPlayable())
{ {

View File

@@ -314,6 +314,7 @@
<value level="6">364</value> <value level="6">364</value>
</power> </power>
</effect> </effect>
<effect name="ConsumeBody" />
</pveEffects> </pveEffects>
<pvpEffects> <pvpEffects>
<effect name="MagicalAttack"> <effect name="MagicalAttack">