Hey Mobius friend, good night!
I adapted this mode for the epilogue, but when the buffs return, the buff time returns to the max.
https://bitbucket.org/MobiusDev/l2j_mobius/commits/56ecddb5b31878d04b3782241e728aad7173b732This will correct the problem.
+++ b/dist/game/data/scripts/handlers/effecthandlers/DispelByCategory.java
@@ -66,6 +66,7 @@ public class DispelByCategory extends AbstractEffect
public void onStart(BuffInfo info)
{
final List<Skill> cancelledBuffs = new ArrayList<>();
+ final List<Integer> cancelledBuffsTimes = new ArrayList<>();
if (info.getEffected().isDead())
{
@@ -81,6 +82,7 @@ public class DispelByCategory extends AbstractEffect
if (!cancelledBuffs.contains(can.getSkill()))
{
cancelledBuffs.add(can.getSkill());
+ cancelledBuffsTimes.add(can.getAbnormalTime());
}
}
info.getEffected().getEffectList().stopSkillEffects(true, can.getSkill());
@@ -88,7 +90,7 @@ public class DispelByCategory extends AbstractEffect
if ((Config.CUSTOM_CANCEL_SECONDS > 0) && (cancelledBuffs.size() > 0))
{
- ThreadPool.schedule(new CancelSkillRestoreTask((PlayerInstance) info.getEffected(), cancelledBuffs), Config.CUSTOM_CANCEL_SECONDS);
+ ThreadPool.schedule(new CancelSkillRestoreTask((PlayerInstance) info.getEffected(), cancelledBuffs, cancelledBuffsTimes), Config.CUSTOM_CANCEL_SECONDS * 1000);
}
}
}
\ No newline at end of file
diff --git a/java/org/l2jmobius/gameserver/model/actor/tasks/player/CancelSkillRestoreTask.java b/java/org/l2jmobius/gameserver/model/actor/tasks/player/CancelSkillRestoreTask.java
index 7b3d24f9..9d8826f2 100644
--- a/java/org/l2jmobius/gameserver/model/actor/tasks/player/CancelSkillRestoreTask.java
+++ b/java/org/l2jmobius/gameserver/model/actor/tasks/player/CancelSkillRestoreTask.java
@@ -25,28 +25,32 @@ public class CancelSkillRestoreTask implements Runnable
{
private PlayerInstance _player = null;
private List<Skill> _buffs = null;
+ private final List<Integer> _buffsTimes;
- public CancelSkillRestoreTask(PlayerInstance player, List<Skill> buffs)
+ public CancelSkillRestoreTask(PlayerInstance player, List<Skill> buffs, List<Integer> buffsTimes)
{
_player = player;
_buffs = buffs;
+ _buffsTimes = buffsTimes;
}
@Override
public void run()
{
- if ((_player == null) || ((!_player.isOnline()) && (_player.isDead()) && (_player.isInOlympiadMode()) && (_player.inObserverMode())))
+ if ((_player == null) || ((!_player.isOnline()) && (_buffs == null) && (_player.isDead()) && (_player.isInOlympiadMode()) && (_player.inObserverMode())))
{
return;
}
+ int i = 0;
for (Skill skill : _buffs)
{
if (skill == null)
{
continue;
}
- skill.applyEffects(_player, _player);
+ skill.applyEffects(_player, _player, false, (_buffsTimes.get(i)));
+ i++;
}
}
}
\ No newline at end of file