Fixed issue with ConsumeBody effect.
This commit is contained in:
@@ -16,11 +16,15 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
import org.l2jmobius.gameserver.model.conditions.Condition;
|
import org.l2jmobius.gameserver.model.conditions.Condition;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
||||||
|
import org.l2jmobius.gameserver.model.skill.EffectScope;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Formulas;
|
||||||
|
import org.l2jmobius.gameserver.taskmanager.DecayTaskManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Consume Body effect implementation.
|
* Consume Body effect implementation.
|
||||||
@@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
((Npc) info.getEffected()).endDecayTask();
|
if (info.getSkill().hasEffects(EffectScope.START))
|
||||||
|
{
|
||||||
|
DecayTaskManager.getInstance().cancel(info.getEffected());
|
||||||
|
ThreadPool.schedule(() -> info.getEffected().onDecay(), Formulas.calcAtkSpd(info.getEffector(), info.getSkill(), info.getSkill().getHitTime() + info.getSkill().getCoolTime()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((Npc) info.getEffected()).endDecayTask();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -65,7 +65,7 @@ public class Summon extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(BuffInfo info)
|
public void onStart(BuffInfo info)
|
||||||
{
|
{
|
||||||
if (!info.getEffected().isPlayer() || info.getEffected().hasSummon())
|
if (!info.getEffector().isPlayer() || info.getEffector().hasSummon())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -430,6 +430,9 @@
|
|||||||
<cond>
|
<cond>
|
||||||
<player canSummon="true" />
|
<player canSummon="true" />
|
||||||
</cond>
|
</cond>
|
||||||
|
<startEffects>
|
||||||
|
<effect name="ConsumeBody" />
|
||||||
|
</startEffects>
|
||||||
<for>
|
<for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
<param npcId="#npcIds" />
|
<param npcId="#npcIds" />
|
||||||
@@ -437,7 +440,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.85" />
|
<param expMultiplier="0.85" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</for>
|
</for>
|
||||||
<enchant1for>
|
<enchant1for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
@@ -446,7 +448,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="#summonExpMultiplierEnch" />
|
<param expMultiplier="#summonExpMultiplierEnch" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</enchant1for>
|
</enchant1for>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="1139" levels="2" name="Servitor Magic Shield" enchantGroup1="1" enchantGroup2="1">
|
<skill id="1139" levels="2" name="Servitor Magic Shield" enchantGroup1="1" enchantGroup2="1">
|
||||||
@@ -799,13 +800,15 @@
|
|||||||
<cond>
|
<cond>
|
||||||
<player canSummon="true" />
|
<player canSummon="true" />
|
||||||
</cond>
|
</cond>
|
||||||
|
<startEffects>
|
||||||
|
<effect name="ConsumeBody" />
|
||||||
|
</startEffects>
|
||||||
<for>
|
<for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
<param npcId="#npcIds" />
|
<param npcId="#npcIds" />
|
||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.1" />
|
<param expMultiplier="0.1" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</for>
|
</for>
|
||||||
<enchant1for>
|
<enchant1for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
@@ -813,7 +816,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.1" />
|
<param expMultiplier="0.1" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</enchant1for>
|
</enchant1for>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="1155" levels="15" name="Corpse Burst" enchantGroup1="2" enchantGroup2="2">
|
<skill id="1155" levels="15" name="Corpse Burst" enchantGroup1="2" enchantGroup2="2">
|
||||||
|
@@ -16,11 +16,15 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
import org.l2jmobius.gameserver.model.conditions.Condition;
|
import org.l2jmobius.gameserver.model.conditions.Condition;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
||||||
|
import org.l2jmobius.gameserver.model.skill.EffectScope;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Formulas;
|
||||||
|
import org.l2jmobius.gameserver.taskmanager.DecayTaskManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Consume Body effect implementation.
|
* Consume Body effect implementation.
|
||||||
@@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
((Npc) info.getEffected()).endDecayTask();
|
if (info.getSkill().hasEffects(EffectScope.START))
|
||||||
|
{
|
||||||
|
DecayTaskManager.getInstance().cancel(info.getEffected());
|
||||||
|
ThreadPool.schedule(() -> info.getEffected().onDecay(), Formulas.calcAtkSpd(info.getEffector(), info.getSkill(), info.getSkill().getHitTime() + info.getSkill().getCoolTime()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((Npc) info.getEffected()).endDecayTask();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -65,7 +65,7 @@ public class Summon extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(BuffInfo info)
|
public void onStart(BuffInfo info)
|
||||||
{
|
{
|
||||||
if (!info.getEffected().isPlayer() || info.getEffected().hasSummon())
|
if (!info.getEffector().isPlayer() || info.getEffector().hasSummon())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -430,6 +430,9 @@
|
|||||||
<cond>
|
<cond>
|
||||||
<player canSummon="true" />
|
<player canSummon="true" />
|
||||||
</cond>
|
</cond>
|
||||||
|
<startEffects>
|
||||||
|
<effect name="ConsumeBody" />
|
||||||
|
</startEffects>
|
||||||
<for>
|
<for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
<param npcId="#npcIds" />
|
<param npcId="#npcIds" />
|
||||||
@@ -437,7 +440,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.85" />
|
<param expMultiplier="0.85" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</for>
|
</for>
|
||||||
<enchant1for>
|
<enchant1for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
@@ -446,7 +448,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="#summonExpMultiplierEnch" />
|
<param expMultiplier="#summonExpMultiplierEnch" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</enchant1for>
|
</enchant1for>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="1139" levels="2" name="Servitor Magic Shield" enchantGroup1="1" enchantGroup2="1">
|
<skill id="1139" levels="2" name="Servitor Magic Shield" enchantGroup1="1" enchantGroup2="1">
|
||||||
@@ -802,13 +803,15 @@
|
|||||||
<cond>
|
<cond>
|
||||||
<player canSummon="true" />
|
<player canSummon="true" />
|
||||||
</cond>
|
</cond>
|
||||||
|
<startEffects>
|
||||||
|
<effect name="ConsumeBody" />
|
||||||
|
</startEffects>
|
||||||
<for>
|
<for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
<param npcId="#npcIds" />
|
<param npcId="#npcIds" />
|
||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.1" />
|
<param expMultiplier="0.1" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</for>
|
</for>
|
||||||
<enchant1for>
|
<enchant1for>
|
||||||
<effect name="Summon">
|
<effect name="Summon">
|
||||||
@@ -816,7 +819,6 @@
|
|||||||
<param lifeTime="3600" />
|
<param lifeTime="3600" />
|
||||||
<param expMultiplier="0.1" />
|
<param expMultiplier="0.1" />
|
||||||
</effect>
|
</effect>
|
||||||
<effect name="ConsumeBody" />
|
|
||||||
</enchant1for>
|
</enchant1for>
|
||||||
</skill>
|
</skill>
|
||||||
<skill id="1155" levels="15" name="Corpse Burst" enchantGroup1="2" enchantGroup2="2">
|
<skill id="1155" levels="15" name="Corpse Burst" enchantGroup1="2" enchantGroup2="2">
|
||||||
|
@@ -16,11 +16,15 @@
|
|||||||
*/
|
*/
|
||||||
package handlers.effecthandlers;
|
package handlers.effecthandlers;
|
||||||
|
|
||||||
|
import org.l2jmobius.commons.threads.ThreadPool;
|
||||||
import org.l2jmobius.gameserver.model.StatSet;
|
import org.l2jmobius.gameserver.model.StatSet;
|
||||||
import org.l2jmobius.gameserver.model.actor.Npc;
|
import org.l2jmobius.gameserver.model.actor.Npc;
|
||||||
import org.l2jmobius.gameserver.model.conditions.Condition;
|
import org.l2jmobius.gameserver.model.conditions.Condition;
|
||||||
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
import org.l2jmobius.gameserver.model.effects.AbstractEffect;
|
||||||
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
import org.l2jmobius.gameserver.model.skill.BuffInfo;
|
||||||
|
import org.l2jmobius.gameserver.model.skill.EffectScope;
|
||||||
|
import org.l2jmobius.gameserver.model.stats.Formulas;
|
||||||
|
import org.l2jmobius.gameserver.taskmanager.DecayTaskManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Consume Body effect implementation.
|
* Consume Body effect implementation.
|
||||||
@@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
((Npc) info.getEffected()).endDecayTask();
|
if (info.getSkill().hasEffects(EffectScope.START))
|
||||||
|
{
|
||||||
|
DecayTaskManager.getInstance().cancel(info.getEffected());
|
||||||
|
ThreadPool.schedule(() -> info.getEffected().onDecay(), Formulas.calcAtkSpd(info.getEffector(), info.getSkill(), info.getSkill().getHitTime() + info.getSkill().getCoolTime()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
((Npc) info.getEffected()).endDecayTask();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -65,7 +65,7 @@ public class Summon extends AbstractEffect
|
|||||||
@Override
|
@Override
|
||||||
public void onStart(BuffInfo info)
|
public void onStart(BuffInfo info)
|
||||||
{
|
{
|
||||||
if (!info.getEffected().isPlayer() || info.getEffected().hasSummon())
|
if (!info.getEffector().isPlayer() || info.getEffector().hasSummon())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user