Code style changes.
This commit is contained in:
@ -186,13 +186,13 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
}
|
||||
|
||||
// Check if the target isn't dead, is in the Aggro range and is at the same height
|
||||
if (target.isAlikeDead() || ((target.isPlayable()) && !me.isInsideRadius(target, me.getAggroRange(), true, false)))
|
||||
if (target.isAlikeDead() || (target.isPlayable() && !me.isInsideRadius(target, me.getAggroRange(), true, false)))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
// Check if the target is a L2Playable
|
||||
if (target.isPlayable() && !(me.isRaid()) && !(me.canSeeThroughSilentMove()) && ((L2Playable) target).isSilentMovingAffected())
|
||||
if (target.isPlayable() && !me.isRaid() && !me.canSeeThroughSilentMove() && ((L2Playable) target).isSilentMovingAffected())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -859,7 +859,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!Util.checkIfInRange((healSkill.getCastRange() + collision + leader.getTemplate().getCollisionRadius()), npc, leader, false) && !isParty(healSkill) && !npc.isMovementDisabled())
|
||||
if (!Util.checkIfInRange(healSkill.getCastRange() + collision + leader.getTemplate().getCollisionRadius(), npc, leader, false) && !isParty(healSkill) && !npc.isMovementDisabled())
|
||||
{
|
||||
moveToPawn(leader, healSkill.getCastRange() + collision + leader.getTemplate().getCollisionRadius());
|
||||
return;
|
||||
@ -956,7 +956,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!Util.checkIfInRange((sk.getCastRange() + collision + leader.getTemplate().getCollisionRadius()), npc, leader, false) && !isParty(sk) && !npc.isMovementDisabled())
|
||||
if (!Util.checkIfInRange(sk.getCastRange() + collision + leader.getTemplate().getCollisionRadius(), npc, leader, false) && !isParty(sk) && !npc.isMovementDisabled())
|
||||
{
|
||||
moveToPawn(leader, sk.getCastRange() + collision + leader.getTemplate().getCollisionRadius());
|
||||
return;
|
||||
@ -989,7 +989,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2Attackable targets = ((L2Attackable) obj);
|
||||
final L2Attackable targets = (L2Attackable) obj;
|
||||
if (!npc.isInMyClan(targets))
|
||||
{
|
||||
continue;
|
||||
@ -1167,34 +1167,31 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
|
||||
{
|
||||
if (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
|
||||
{
|
||||
if (!attackTarget.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.doCast(sk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (canAOE(sk))
|
||||
{
|
||||
if ((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA) || (sk.getTargetType() == L2TargetType.AURA_CORPSE_MOB) //
|
||||
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.doCast(sk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ((sk.getTargetType() == L2TargetType.ONE) && (effectTargetReconsider(sk, false) != null))
|
||||
if (!attackTarget.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.doCast(sk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if (canAOE(sk))
|
||||
{
|
||||
if ((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA) || (sk.getTargetType() == L2TargetType.AURA_CORPSE_MOB) //
|
||||
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.doCast(sk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ((sk.getTargetType() == L2TargetType.ONE) && (effectTargetReconsider(sk, false) != null))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.doCast(sk);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if (sk.hasEffectType(L2EffectType.DISPEL, L2EffectType.DISPEL_BY_SLOT))
|
||||
@ -1235,7 +1232,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
final L2Character leader = caster.getLeader();
|
||||
if ((leader != null) && !leader.isDead() && (Rnd.get(100) > ((leader.getCurrentHp() / leader.getMaxHp()) * 100)))
|
||||
{
|
||||
if (!Util.checkIfInRange((sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius()), caster, leader, false) && !isParty(sk) && !caster.isMovementDisabled())
|
||||
if (!Util.checkIfInRange(sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius(), caster, leader, false) && !isParty(sk) && !caster.isMovementDisabled())
|
||||
{
|
||||
moveToPawn(leader, sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius());
|
||||
}
|
||||
@ -1268,7 +1265,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2Attackable targets = ((L2Attackable) obj);
|
||||
final L2Attackable targets = (L2Attackable) obj;
|
||||
if (!caster.isInMyClan(targets))
|
||||
{
|
||||
continue;
|
||||
@ -1416,7 +1413,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
final L2Character leader = caster.getLeader();
|
||||
if (leader != null)
|
||||
{
|
||||
if (leader.isDead() && !Util.checkIfInRange((sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius()), caster, leader, false) && !isParty(sk) && !caster.isMovementDisabled())
|
||||
if (leader.isDead() && !Util.checkIfInRange(sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius(), caster, leader, false) && !isParty(sk) && !caster.isMovementDisabled())
|
||||
{
|
||||
moveToPawn(leader, sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius());
|
||||
}
|
||||
@ -1438,7 +1435,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2Attackable targets = ((L2Attackable) obj);
|
||||
final L2Attackable targets = (L2Attackable) obj;
|
||||
if (!caster.isInMyClan(targets))
|
||||
{
|
||||
continue;
|
||||
@ -1462,7 +1459,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (caster.isInMyClan(((L2Npc) obj)) && (obj.getCurrentHp() < obj.getMaxHp()) && (Rnd.get(100) <= 20))
|
||||
if (caster.isInMyClan((L2Npc) obj) && (obj.getCurrentHp() < obj.getMaxHp()) && (Rnd.get(100) <= 20))
|
||||
{
|
||||
clientStopMoving(null);
|
||||
caster.setTarget(caster);
|
||||
@ -1601,7 +1598,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
}
|
||||
// -------------------------------------------------------------
|
||||
// Start ATK SKILL when nothing can be done
|
||||
if ((npc.isMovementDisabled() || (npc.getAiType() == AIType.MAGE) || (npc.getAiType() == AIType.HEALER)))
|
||||
if (npc.isMovementDisabled() || (npc.getAiType() == AIType.MAGE) || (npc.getAiType() == AIType.HEALER))
|
||||
{
|
||||
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.ATTACK))
|
||||
{
|
||||
@ -1794,7 +1791,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
|
||||
continue;
|
||||
}
|
||||
|
||||
final L2Attackable targets = ((L2Attackable) obj);
|
||||
final L2Attackable targets = (L2Attackable) obj;
|
||||
if (targets.isInMyClan(actor))
|
||||
{
|
||||
continue;
|
||||
|
@ -911,7 +911,7 @@ public class L2CharacterAI extends AbstractAI
|
||||
}
|
||||
|
||||
// If pathfinding enabled the creature will go to the destination or it will go to the nearest obstacle.
|
||||
setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, (Config.PATHFINDING > 0 ? GeoData.getInstance().moveCheck(_actor.getX(), _actor.getY(), _actor.getZ(), posX, posY, posZ, _actor.getInstanceId()) : new Location(posX, posY, posZ)));
|
||||
setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, Config.PATHFINDING > 0 ? GeoData.getInstance().moveCheck(_actor.getX(), _actor.getY(), _actor.getZ(), posX, posY, posZ, _actor.getInstanceId()) : new Location(posX, posY, posZ));
|
||||
}
|
||||
|
||||
protected boolean maybeMoveToPosition(ILocational worldPosition, int offset)
|
||||
@ -1483,46 +1483,43 @@ public class L2CharacterAI extends AbstractAI
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
else if ((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA) || (sk.getTargetType() == L2TargetType.AURA_CORPSE_MOB))
|
||||
{
|
||||
if ((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA) || (sk.getTargetType() == L2TargetType.AURA_CORPSE_MOB))
|
||||
boolean cancast = false;
|
||||
for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
|
||||
{
|
||||
boolean cancast = false;
|
||||
for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
|
||||
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
|
||||
{
|
||||
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (!target.getEffectList().isEmpty())
|
||||
{
|
||||
cancast = true;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (cancast)
|
||||
if (!target.getEffectList().isEmpty())
|
||||
{
|
||||
return true;
|
||||
cancast = true;
|
||||
}
|
||||
}
|
||||
else if ((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA))
|
||||
if (cancast)
|
||||
{
|
||||
boolean cancast = true;
|
||||
for (L2Character target : getAttackTarget().getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else if ((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA))
|
||||
{
|
||||
boolean cancast = true;
|
||||
for (L2Character target : getAttackTarget().getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
|
||||
{
|
||||
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
|
||||
{
|
||||
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (target.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
cancast = false;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (cancast)
|
||||
if (target.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
return true;
|
||||
cancast = false;
|
||||
}
|
||||
}
|
||||
if (cancast)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1539,7 +1536,7 @@ public class L2CharacterAI extends AbstractAI
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (((L2Npc) target).isInMyClan(((L2Npc) _actor)))
|
||||
if (((L2Npc) target).isInMyClan((L2Npc) _actor))
|
||||
{
|
||||
count++;
|
||||
if (target.isAffectedBySkill(sk.getId()))
|
||||
@ -1558,6 +1555,6 @@ public class L2CharacterAI extends AbstractAI
|
||||
|
||||
public boolean isParty(Skill sk)
|
||||
{
|
||||
return (sk.getTargetType() == L2TargetType.PARTY);
|
||||
return sk.getTargetType() == L2TargetType.PARTY;
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
L2PcInstance player = null;
|
||||
if (target instanceof L2PcInstance)
|
||||
{
|
||||
player = ((L2PcInstance) target);
|
||||
player = (L2PcInstance) target;
|
||||
}
|
||||
else if (target instanceof L2Summon)
|
||||
{
|
||||
@ -486,16 +486,16 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
if ((dist_2 <= (castRange * castRange)) && (castRange > 70) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive())
|
||||
{
|
||||
final L2Object OldTarget = _actor.getTarget();
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || (sk.hasEffectType(L2EffectType.HEAL)))
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || sk.hasEffectType(L2EffectType.HEAL))
|
||||
{
|
||||
boolean useSkillSelf = true;
|
||||
if ((sk.hasEffectType(L2EffectType.HEAL)) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
if (sk.hasEffectType(L2EffectType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) && _actor.isAffectedBySkill(sk.getId()))
|
||||
if (sk.isContinuous() && !sk.isDebuff() && _actor.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
}
|
||||
@ -514,7 +514,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
}
|
||||
|
||||
// Check if the L2SiegeGuardInstance is attacking, knows the target and can't run
|
||||
if (!(_actor.isAttackingNow()) && (_actor.getRunSpeed() == 0) && (_actor.getKnownList().knowsObject(attackTarget)))
|
||||
if (!_actor.isAttackingNow() && (_actor.getRunSpeed() == 0) && _actor.getKnownList().knowsObject(attackTarget))
|
||||
{
|
||||
// Cancel the target
|
||||
_actor.getKnownList().removeKnownObject(attackTarget);
|
||||
@ -530,30 +530,26 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
final double homeY = attackTarget.getY() - sGuard.getSpawn().getY();
|
||||
|
||||
// Check if the L2SiegeGuardInstance isn't too far from it's home location
|
||||
if ((((dx * dx) + (dy * dy)) > 10000) && (((homeX * homeX) + (homeY * homeY)) > 3240000) && (_actor.getKnownList().knowsObject(attackTarget)))
|
||||
if ((((dx * dx) + (dy * dy)) > 10000) && (((homeX * homeX) + (homeY * homeY)) > 3240000) && _actor.getKnownList().knowsObject(attackTarget))
|
||||
{
|
||||
// Cancel the target
|
||||
_actor.getKnownList().removeKnownObject(attackTarget);
|
||||
_actor.setTarget(null);
|
||||
setIntention(AI_INTENTION_IDLE, null, null);
|
||||
}
|
||||
else
|
||||
// Move the actor to Pawn server side AND client side by sending Server->Client packet MoveToPawn (broadcast)
|
||||
// Temporary hack for preventing guards jumping off towers,
|
||||
// before replacing this with effective geodata checks and AI modification
|
||||
else if ((dz * dz) < (170 * 170))
|
||||
{
|
||||
// Temporary hack for preventing guards jumping off towers,
|
||||
// before replacing this with effective geodata checks and AI modification
|
||||
if ((dz * dz) < (170 * 170))
|
||||
if (_selfAnalysis.isMage)
|
||||
{
|
||||
if (_selfAnalysis.isMage)
|
||||
{
|
||||
range = _selfAnalysis.maxCastRange - 50;
|
||||
}
|
||||
if (_actor.getWalkSpeed() <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
moveToPawn(attackTarget, attackTarget.isMoving() ? range - 70 : range);
|
||||
range = _selfAnalysis.maxCastRange - 50;
|
||||
}
|
||||
if (_actor.getWalkSpeed() <= 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
moveToPawn(attackTarget, attackTarget.isMoving() ? range - 70 : range);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -603,16 +599,16 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
if (((castRange * castRange) >= dist_2) && !sk.isPassive() && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !_actor.isSkillDisabled(sk))
|
||||
{
|
||||
final L2Object OldTarget = _actor.getTarget();
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || (sk.hasEffectType(L2EffectType.HEAL)))
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || sk.hasEffectType(L2EffectType.HEAL))
|
||||
{
|
||||
boolean useSkillSelf = true;
|
||||
if ((sk.hasEffectType(L2EffectType.HEAL)) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
if (sk.hasEffectType(L2EffectType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) && _actor.isAffectedBySkill(sk.getId()))
|
||||
if (sk.isContinuous() && !sk.isDebuff() && _actor.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ public abstract class L2PlayableAI extends L2CharacterAI
|
||||
{
|
||||
if (target instanceof L2Playable)
|
||||
{
|
||||
if (target.getActingPlayer().isProtectionBlessingAffected() && ((_actor.getActingPlayer().getLevel() - target.getActingPlayer().getLevel()) >= 10) && (_actor.getActingPlayer().getReputation() < 0) && !(target.isInsideZone(ZoneId.PVP)))
|
||||
if (target.getActingPlayer().isProtectionBlessingAffected() && ((_actor.getActingPlayer().getLevel() - target.getActingPlayer().getLevel()) >= 10) && (_actor.getActingPlayer().getReputation() < 0) && !target.isInsideZone(ZoneId.PVP))
|
||||
{
|
||||
// If attacker have karma and have level >= 10 than his target and target have
|
||||
// Newbie Protection Buff,
|
||||
@ -54,7 +54,7 @@ public abstract class L2PlayableAI extends L2CharacterAI
|
||||
return;
|
||||
}
|
||||
|
||||
if (_actor.getActingPlayer().isProtectionBlessingAffected() && ((target.getActingPlayer().getLevel() - _actor.getActingPlayer().getLevel()) >= 10) && (target.getActingPlayer().getReputation() < 0) && !(target.isInsideZone(ZoneId.PVP)))
|
||||
if (_actor.getActingPlayer().isProtectionBlessingAffected() && ((target.getActingPlayer().getLevel() - _actor.getActingPlayer().getLevel()) >= 10) && (target.getActingPlayer().getReputation() < 0) && !target.isInsideZone(ZoneId.PVP))
|
||||
{
|
||||
// If target have karma and have level >= 10 than his target and actor have
|
||||
// Newbie Protection Buff,
|
||||
|
@ -495,16 +495,16 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
if ((dist_2 <= (castRange * castRange)) && (castRange > 70) && !_actor.isSkillDisabled(sk) && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !sk.isPassive())
|
||||
{
|
||||
final L2Object OldTarget = _actor.getTarget();
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || (sk.hasEffectType(L2EffectType.HEAL)))
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || sk.hasEffectType(L2EffectType.HEAL))
|
||||
{
|
||||
boolean useSkillSelf = true;
|
||||
if ((sk.hasEffectType(L2EffectType.HEAL)) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
if (sk.hasEffectType(L2EffectType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) && _actor.isAffectedBySkill(sk.getId()))
|
||||
if (sk.isContinuous() && !sk.isDebuff() && _actor.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
}
|
||||
@ -523,7 +523,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
}
|
||||
|
||||
// Check if the L2SiegeGuardInstance is attacking, knows the target and can't run
|
||||
if (!(_actor.isAttackingNow()) && (_actor.getRunSpeed() == 0) && (_actor.getKnownList().knowsObject(attackTarget)))
|
||||
if (!_actor.isAttackingNow() && (_actor.getRunSpeed() == 0) && _actor.getKnownList().knowsObject(attackTarget))
|
||||
{
|
||||
// Cancel the target
|
||||
_actor.getKnownList().removeKnownObject(attackTarget);
|
||||
@ -539,31 +539,26 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
final double homeY = attackTarget.getY() - sGuard.getSpawn().getY();
|
||||
|
||||
// Check if the L2SiegeGuardInstance isn't too far from it's home location
|
||||
if ((((dx * dx) + (dy * dy)) > 10000) && (((homeX * homeX) + (homeY * homeY)) > 3240000) // 1800 * 1800
|
||||
&& (_actor.getKnownList().knowsObject(attackTarget)))
|
||||
if ((((dx * dx) + (dy * dy)) > 10000) && (((homeX * homeX) + (homeY * homeY)) > 3240000) && _actor.getKnownList().knowsObject(attackTarget))
|
||||
{
|
||||
// Cancel the target
|
||||
_actor.getKnownList().removeKnownObject(attackTarget);
|
||||
_actor.setTarget(null);
|
||||
setIntention(AI_INTENTION_IDLE, null, null);
|
||||
}
|
||||
else
|
||||
// Move the actor to Pawn server side AND client side by sending Server->Client packet MoveToPawn (broadcast)
|
||||
// Temporary hack for preventing guards jumping off towers,
|
||||
// before replacing this with effective geodata checks and AI modification
|
||||
else if ((dz * dz) < (170 * 170)) // normally 130 if guard z coordinates correct
|
||||
{
|
||||
// Temporary hack for preventing guards jumping off towers,
|
||||
// before replacing this with effective geodata checks and AI modification
|
||||
if ((dz * dz) < (170 * 170)) // normally 130 if guard z coordinates correct
|
||||
if (_selfAnalysis.isHealer)
|
||||
{
|
||||
if (_selfAnalysis.isHealer)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_selfAnalysis.isMage)
|
||||
{
|
||||
range = _selfAnalysis.maxCastRange - 50;
|
||||
}
|
||||
moveToPawn(attackTarget, attackTarget.isMoving() ? range - 70 : range);
|
||||
return;
|
||||
}
|
||||
if (_selfAnalysis.isMage)
|
||||
{
|
||||
range = _selfAnalysis.maxCastRange - 50;
|
||||
}
|
||||
moveToPawn(attackTarget, attackTarget.isMoving() ? range - 70 : range);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -609,16 +604,16 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
|
||||
if (((castRange * castRange) >= dist_2) && !sk.isPassive() && (_actor.getCurrentMp() >= _actor.getStat().getMpConsume(sk)) && !_actor.isSkillDisabled(sk))
|
||||
{
|
||||
final L2Object OldTarget = _actor.getTarget();
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || (sk.hasEffectType(L2EffectType.HEAL)))
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) || sk.hasEffectType(L2EffectType.HEAL))
|
||||
{
|
||||
boolean useSkillSelf = true;
|
||||
if ((sk.hasEffectType(L2EffectType.HEAL)) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
if (sk.hasEffectType(L2EffectType.HEAL) && (_actor.getCurrentHp() > (int) (_actor.getMaxHp() / 1.5)))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if ((sk.isContinuous() && !sk.isDebuff()) && _actor.isAffectedBySkill(sk.getId()))
|
||||
if (sk.isContinuous() && !sk.isDebuff() && _actor.isAffectedBySkill(sk.getId()))
|
||||
{
|
||||
useSkillSelf = false;
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ public class NextAction
|
||||
{
|
||||
public interface NextActionCallback
|
||||
{
|
||||
public void doWork();
|
||||
void doWork();
|
||||
}
|
||||
|
||||
private List<CtrlEvent> _events;
|
||||
|
@ -111,7 +111,7 @@ public final class FighterAI implements Runnable
|
||||
// Out of combat follow logic.
|
||||
if (!_guard.isInCombat())
|
||||
{
|
||||
_guard.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, (new Location((_player.getLocation().getX() + Rnd.get((_followRange * -1), _followRange)), (_player.getLocation().getY() + Rnd.get((_followRange * -1), _followRange)), _player.getLocation().getZ())));
|
||||
_guard.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location((_player.getLocation().getX() + Rnd.get(_followRange * -1, _followRange)), (_player.getLocation().getY() + Rnd.get(_followRange * -1, _followRange)), _player.getLocation().getZ()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -119,7 +119,7 @@ public final class HealerAI implements Runnable
|
||||
// Out of combat follow logic.
|
||||
if (!_guard.isInCombat())
|
||||
{
|
||||
_guard.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, (new Location((_player.getLocation().getX() + Rnd.get((_followRange * -1), _followRange)), (_player.getLocation().getY() + Rnd.get((_followRange * -1), _followRange)), _player.getLocation().getZ())));
|
||||
_guard.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location((_player.getLocation().getX() + Rnd.get(_followRange * -1, _followRange)), (_player.getLocation().getY() + Rnd.get(_followRange * -1, _followRange)), _player.getLocation().getZ()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user