diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java index 27aba6b8c0..d669ca837b 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java @@ -16,11 +16,15 @@ */ package handlers.effecthandlers; +import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; 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. @@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect 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(); + } } } diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/Summon.java b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/Summon.java index 15d6fcc30f..db90cfd41c 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/Summon.java +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/scripts/handlers/effecthandlers/Summon.java @@ -65,7 +65,7 @@ public class Summon extends AbstractEffect @Override public void onStart(BuffInfo info) { - if (!info.getEffected().isPlayer() || info.getEffected().hasSummon()) + if (!info.getEffector().isPlayer() || info.getEffector().hasSummon()) { return; } diff --git a/L2J_Mobius_CT_0_Interlude/dist/game/data/stats/skills/01100-01199.xml b/L2J_Mobius_CT_0_Interlude/dist/game/data/stats/skills/01100-01199.xml index d13aa788c4..08e7fb062f 100644 --- a/L2J_Mobius_CT_0_Interlude/dist/game/data/stats/skills/01100-01199.xml +++ b/L2J_Mobius_CT_0_Interlude/dist/game/data/stats/skills/01100-01199.xml @@ -430,6 +430,9 @@ + + + @@ -437,7 +440,6 @@ - @@ -446,7 +448,6 @@ - @@ -799,13 +800,15 @@ + + + - @@ -813,7 +816,6 @@ - diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java index 27aba6b8c0..d669ca837b 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java @@ -16,11 +16,15 @@ */ package handlers.effecthandlers; +import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; 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. @@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect 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(); + } } } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/Summon.java b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/Summon.java index 15d6fcc30f..db90cfd41c 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/Summon.java +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/scripts/handlers/effecthandlers/Summon.java @@ -65,7 +65,7 @@ public class Summon extends AbstractEffect @Override public void onStart(BuffInfo info) { - if (!info.getEffected().isPlayer() || info.getEffected().hasSummon()) + if (!info.getEffector().isPlayer() || info.getEffector().hasSummon()) { return; } diff --git a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/stats/skills/01100-01199.xml b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/stats/skills/01100-01199.xml index c95467bb6c..7e3adb25fc 100644 --- a/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/stats/skills/01100-01199.xml +++ b/L2J_Mobius_CT_2.4_Epilogue/dist/game/data/stats/skills/01100-01199.xml @@ -430,6 +430,9 @@ + + + @@ -437,7 +440,6 @@ - @@ -446,7 +448,6 @@ - @@ -802,13 +803,15 @@ + + + - @@ -816,7 +819,6 @@ - diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java index 27aba6b8c0..d669ca837b 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/ConsumeBody.java @@ -16,11 +16,15 @@ */ package handlers.effecthandlers; +import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.conditions.Condition; import org.l2jmobius.gameserver.model.effects.AbstractEffect; 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. @@ -47,6 +51,14 @@ public class ConsumeBody extends AbstractEffect 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(); + } } } diff --git a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/Summon.java b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/Summon.java index 42a43d96c6..a59087cf7f 100644 --- a/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/Summon.java +++ b/L2J_Mobius_CT_2.6_HighFive/dist/game/data/scripts/handlers/effecthandlers/Summon.java @@ -65,7 +65,7 @@ public class Summon extends AbstractEffect @Override public void onStart(BuffInfo info) { - if (!info.getEffected().isPlayer() || info.getEffected().hasSummon()) + if (!info.getEffector().isPlayer() || info.getEffector().hasSummon()) { return; }