Fixed infinite attack speed exploit.
Contributed by Iris.
This commit is contained in:
parent
f45ae159f3
commit
b8316f9080
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
@ -48,13 +48,6 @@ public class PetAttack implements IPlayerActionHandler
|
||||
}
|
||||
else if (pet.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (pet.isAttackingNow())
|
||||
{
|
||||
pet.abortAttack();
|
||||
pet.abortCast();
|
||||
}
|
||||
|
||||
pet.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -37,13 +37,6 @@ public class ServitorAttack implements IPlayerActionHandler
|
||||
{
|
||||
if (summon.canAttack(player.getTarget(), ctrlPressed))
|
||||
{
|
||||
// Prevent spamming next target and attack to increase attack speed.
|
||||
if (summon.isAttackingNow())
|
||||
{
|
||||
summon.abortAttack();
|
||||
summon.abortCast();
|
||||
}
|
||||
|
||||
summon.doAttack(player.getTarget());
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,20 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
private volatile boolean _isDefending;
|
||||
private Future<?> _avoidTask = null;
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
private IntentionCommand _nextIntention = null;
|
||||
|
||||
private void saveNextIntention(CtrlIntention intention, Object arg0, Object arg1)
|
||||
{
|
||||
_nextIntention = new IntentionCommand(intention, arg0, arg1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IntentionCommand getNextIntention()
|
||||
{
|
||||
return _nextIntention;
|
||||
}
|
||||
|
||||
public SummonAI(Summon summon)
|
||||
{
|
||||
super(summon);
|
||||
@ -111,6 +125,14 @@ public class SummonAI extends PlayableAI implements Runnable
|
||||
}
|
||||
|
||||
clientStopMoving(null);
|
||||
|
||||
// Fix: Infinite Atk. Spd. exploit
|
||||
if (_actor.isAttackingNow())
|
||||
{
|
||||
saveNextIntention(AI_INTENTION_ATTACK, attackTarget, null);
|
||||
return;
|
||||
}
|
||||
|
||||
_actor.doAutoAttack(attackTarget);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user