Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Return Buffs

Iniciado por Swarlog, Ago 19, 2022, 01:41 AM

Tema anterior - Siguiente tema

Swarlog

CitarDebes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

@@ -- 407

 private final List<IEventListener> _eventListeners = new FastList<IEventListener>().shared();

+ // Return Buffs
+ public void returnBuffs(List<BuffInfo> buffs, int time)
+ {
+ ThreadPoolManager.getInstance().scheduleGeneral(new ReturnCanceledBuffs(this, buffs), time * 1000);
+ }
+
+ private class ReturnCanceledBuffs implements Runnable
+ {
+ private L2PcInstance _player = null;
+ private List<BuffInfo> _buffs = null;
+
+ public ReturnCanceledBuffs(L2PcInstance _player, List<BuffInfo> _buffs)
+ {
+ this._player = _player;
+ this._buffs = _buffs;
+ }
+
+ @Override
+ public void run()
+ {
+ if ((_player == null) || (_player.isDead() && _player.isPlayer()))
+ {
+ return;
+ }
+
+ for (BuffInfo buff : _buffs)
+ {
+ try
+ {
+ SkillData.getInstance().getSkill(buff.getSkill().getId(), buff.getSkill().getLevel()).applyEffects(_player, _player);
+ }
+ catch (RuntimeException e)
+ {
+ _log.log(Level.WARNING, "Cannot give back: " + buff.getSkill().getName() + " to player: " + _player.getName(), e);
+ }
+ }
+ }
+ }

   public class AIAccessor extends L2Character.AIAccessor

CitarDebes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

@@ -- 77

    info.getEffected().getEffectList().stopSkillEffects(true, can.getSkill());
        }
       
+ // So we put them back after x seconds
+ if (canceled.size() > 0)
+ {
+ L2PcInstance target = (L2PcInstance) info.getEffected();
+
+ // Give player stolen buffs back after x seconds if he is not in olympiad
+ if (!target.isInOlympiadMode())
+ {
+ target.returnBuffs(canceled, 10);
+ }
+ }
    }