L2JMobius

C6 Time fo buff correction -> CancelSkillRestoreTask

pecanha · 1 · 5096

Offline pecanha

  • Elder
  • ****
    • Posts: 108
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/56ecddb5b31878d04b3782241e728aad7173b732

This will correct the problem.

Code: [Select]
+++ 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

Code: [Select]
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