Fixed Spheric Barrier effect.
This commit is contained in:
@@ -28,7 +28,7 @@ import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
public class AbstractStatAddEffect extends AbstractEffect
|
||||
{
|
||||
private final Stats _stat;
|
||||
private final double _amount;
|
||||
protected final double _amount;
|
||||
|
||||
public AbstractStatAddEffect(StatsSet params, Stats stat)
|
||||
{
|
||||
|
@@ -92,12 +92,6 @@ public final class EnergyAttack extends AbstractEffect
|
||||
return;
|
||||
}
|
||||
|
||||
final double distance = attacker.calculateDistance(effected, true, false);
|
||||
if (distance > effected.getStat().getValue(Stats.SPHERIC_BARRIER_RANGE, Integer.MAX_VALUE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (_overHit && effected.isAttackable())
|
||||
{
|
||||
((L2Attackable) effected).overhitEnabled(true);
|
||||
|
@@ -17,6 +17,12 @@
|
||||
package handlers.effecthandlers;
|
||||
|
||||
import com.l2jmobius.gameserver.model.StatsSet;
|
||||
import com.l2jmobius.gameserver.model.actor.L2Character;
|
||||
import com.l2jmobius.gameserver.model.events.EventType;
|
||||
import com.l2jmobius.gameserver.model.events.impl.character.OnCreatureDamageReceived;
|
||||
import com.l2jmobius.gameserver.model.events.listeners.FunctionEventListener;
|
||||
import com.l2jmobius.gameserver.model.events.returns.DamageReturn;
|
||||
import com.l2jmobius.gameserver.model.skills.Skill;
|
||||
import com.l2jmobius.gameserver.model.stats.Stats;
|
||||
|
||||
/**
|
||||
@@ -28,4 +34,25 @@ public class SphericBarrier extends AbstractStatAddEffect
|
||||
{
|
||||
super(params, Stats.SPHERIC_BARRIER_RANGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
effected.addListener(new FunctionEventListener(effected, EventType.ON_CREATURE_DAMAGE_RECEIVED, (OnCreatureDamageReceived event) -> onDamageReceivedEvent(event), this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExit(L2Character effector, L2Character effected, Skill skill)
|
||||
{
|
||||
effected.removeListenerIf(EventType.ON_CREATURE_DAMAGE_RECEIVED, listener -> listener.getOwner() == this);
|
||||
}
|
||||
|
||||
private DamageReturn onDamageReceivedEvent(OnCreatureDamageReceived event)
|
||||
{
|
||||
if (event.getAttacker().calculateDistance(event.getTarget(), true, false) > _amount)
|
||||
{
|
||||
return new DamageReturn(false, true, false, 0);
|
||||
}
|
||||
return new DamageReturn(false, false, false, event.getDamage());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user