Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Return Buffs

Iniciado por Swarlog, Jul 26, 2025, 11:45 PM

Tema anterior - Siguiente tema

Swarlog

CitarNo tienes permiso para ver los enlaces. Para poder verlos 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

CitarNo tienes permiso para ver los enlaces. Para poder verlos 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);
+			}
+		}
    }