From af7fa05cebdf150ab9dbaa2397ce7d13d2509a4c Mon Sep 17 00:00:00 2001
From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com>
Date: Mon, 9 May 2022 22:11:21 +0000
Subject: [PATCH] Fixed issue with ConsumeBody effect.
---
.../handlers/effecthandlers/ConsumeBody.java | 14 +++++++++++++-
.../scripts/handlers/effecthandlers/Summon.java | 2 +-
.../dist/game/data/stats/skills/01100-01199.xml | 10 ++++++----
.../handlers/effecthandlers/ConsumeBody.java | 14 +++++++++++++-
.../scripts/handlers/effecthandlers/Summon.java | 2 +-
.../dist/game/data/stats/skills/01100-01199.xml | 10 ++++++----
.../handlers/effecthandlers/ConsumeBody.java | 14 +++++++++++++-
.../scripts/handlers/effecthandlers/Summon.java | 2 +-
8 files changed, 54 insertions(+), 14 deletions(-)
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;
}