Diagonal movement GeoEngine.

This commit is contained in:
MobiusDev
2017-08-26 20:50:32 +00:00
parent 1e943ff506
commit 05f0a141c3
549 changed files with 25017 additions and 20141 deletions

View File

@@ -32,7 +32,7 @@ import com.l2jmobius.gameserver.data.sql.impl.TerritoryTable;
import com.l2jmobius.gameserver.datatables.SkillData;
import com.l2jmobius.gameserver.enums.AISkillScope;
import com.l2jmobius.gameserver.enums.AIType;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.instancemanager.DimensionalRiftManager;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.Location;
@@ -233,12 +233,12 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
// Check if the L2PcInstance target has karma (=PK)
if ((player != null) && (player.getKarma() > 0))
{
return GeoData.getInstance().canSeeTarget(me, player); // Los Check
return GeoEngine.getInstance().canSeeTarget(me, player); // Los Check
}
// Check if the L2MonsterInstance target is aggressive
if ((target instanceof L2MonsterInstance) && Config.GUARD_ATTACK_AGGRO_MOB)
{
return (((L2MonsterInstance) target).isAggressive() && GeoData.getInstance().canSeeTarget(me, target));
return (((L2MonsterInstance) target).isAggressive() && GeoEngine.getInstance().canSeeTarget(me, target));
}
return false;
@@ -254,7 +254,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
// Check if the L2PcInstance target has karma (=PK)
if ((target instanceof L2PcInstance) && (((L2PcInstance) target).getKarma() > 0))
{
return GeoData.getInstance().canSeeTarget(me, target); // Los Check
return GeoEngine.getInstance().canSeeTarget(me, target); // Los Check
}
return false;
}
@@ -269,7 +269,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
if (me.isChaos() && me.isInsideRadius(target, me.getAggroRange(), false, false))
{
return !((L2Attackable) target).isInMyClan(me) && GeoData.getInstance().canSeeTarget(me, target);
return !((L2Attackable) target).isInMyClan(me) && GeoEngine.getInstance().canSeeTarget(me, target);
}
}
@@ -291,7 +291,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
// Check if the actor is Aggressive
return (me.isAggressive() && GeoData.getInstance().canSeeTarget(me, target));
return (me.isAggressive() && GeoEngine.getInstance().canSeeTarget(me, target));
}
}
@@ -674,7 +674,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
}
// Move the actor to Location (x,y,z) server side AND client side by sending Server->Client packet CharMoveToLocation (broadcast)
final Location moveLoc = GeoData.getInstance().moveCheck(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceId());
final Location moveLoc = GeoEngine.getInstance().canMoveToTargetLoc(npc.getX(), npc.getY(), npc.getZ(), x1, y1, z1, npc.getInstanceId());
moveTo(moveLoc.getX(), moveLoc.getY(), moveLoc.getZ());
}
@@ -831,7 +831,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
if (!npc.isInsideRadius(newX, newY, 0, collision, false, false))
{
final int newZ = npc.getZ() + 30;
if (GeoData.getInstance().canMove(npc.getX(), npc.getY(), npc.getZ(), newX, newY, newZ, npc.getInstanceId()))
if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), newX, newY, newZ, npc.getInstanceId()))
{
moveTo(newX, newY, newZ);
}
@@ -848,7 +848,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
final int posZ = npc.getZ() + 30;
posX = originalAttackTarget.getX() < posX ? posX + 300 : posX - 300;
posY = originalAttackTarget.getY() < posY ? posY + 300 : posY - 300;
if (GeoData.getInstance().canMove(npc.getX(), npc.getY(), npc.getZ(), posX, posY, posZ, npc.getInstanceId()))
if (GeoEngine.getInstance().canMoveToTarget(npc.getX(), npc.getY(), npc.getZ(), posX, posY, posZ, npc.getInstanceId()))
{
setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new Location(posX, posY, posZ, 0));
}
@@ -924,7 +924,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
moveToPawn(leader, healSkill.getCastRange() + collision + leader.getTemplate().getCollisionRadius());
return;
}
if (GeoData.getInstance().canSeeTarget(npc, leader))
if (GeoEngine.getInstance().canSeeTarget(npc, leader))
{
clientStopMoving(null);
final L2Object target = npc.getTarget();
@@ -979,7 +979,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
percentage = (targets.getCurrentHp() / targets.getMaxHp()) * 100;
if ((Rnd.get(100) < ((100 - percentage) / 10)) && GeoData.getInstance().canSeeTarget(npc, targets))
if ((Rnd.get(100) < ((100 - percentage) / 10)) && GeoEngine.getInstance().canSeeTarget(npc, targets))
{
clientStopMoving(null);
final L2Object target = npc.getTarget();
@@ -1021,7 +1021,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
moveToPawn(leader, sk.getCastRange() + collision + leader.getTemplate().getCollisionRadius());
return;
}
if (GeoData.getInstance().canSeeTarget(npc, leader))
if (GeoEngine.getInstance().canSeeTarget(npc, leader))
{
clientStopMoving(null);
final L2Object target = npc.getTarget();
@@ -1054,7 +1054,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
continue;
}
if ((Rnd.get(100) < 10) && GeoData.getInstance().canSeeTarget(npc, targets))
if ((Rnd.get(100) < 10) && GeoEngine.getInstance().canSeeTarget(npc, targets))
{
clientStopMoving(null);
final L2Object target = npc.getTarget();
@@ -1130,7 +1130,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
// --------------------------------------------------------------------------------
// Starts melee attack
if ((dist2 > range) || !GeoData.getInstance().canSeeTarget(npc, mostHate))
if ((dist2 > range) || !GeoEngine.getInstance().canSeeTarget(npc, mostHate))
{
if (npc.isMovementDisabled())
{
@@ -1227,7 +1227,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
return true;
}
}
else if (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
else if (GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
{
if (!attackTarget.isAffectedBySkill(sk.getId()))
{
@@ -1239,7 +1239,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
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)))
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1258,7 +1258,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
if (sk.getTargetType() == L2TargetType.ONE)
{
if ((attackTarget.getEffectList().getFirstEffect(L2EffectType.BUFF) != null) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))
if ((attackTarget.getEffectList().getFirstEffect(L2EffectType.BUFF) != null) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1275,8 +1275,8 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
}
else if (canAOE(sk) //
&& ((((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget)) //
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))))
&& ((((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget)) //
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1296,7 +1296,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
moveToPawn(leader, sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius());
}
if (GeoData.getInstance().canSeeTarget(caster, leader))
if (GeoEngine.getInstance().canSeeTarget(caster, leader))
{
clientStopMoving(null);
caster.setTarget(leader);
@@ -1332,7 +1332,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
percentage = (targets.getCurrentHp() / targets.getMaxHp()) * 100;
if ((Rnd.get(100) < ((100 - percentage) / 10)) && GeoData.getInstance().canSeeTarget(caster, targets))
if ((Rnd.get(100) < ((100 - percentage) / 10)) && GeoEngine.getInstance().canSeeTarget(caster, targets))
{
clientStopMoving(null);
caster.setTarget(obj);
@@ -1365,7 +1365,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
if (sk.hasEffectType(L2EffectType.PHYSICAL_ATTACK, L2EffectType.PHYSICAL_ATTACK_HP_LINK, L2EffectType.MAGICAL_ATTACK, L2EffectType.DEATH_LINK, L2EffectType.HP_DRAIN))
{
if (canAura(sk) || (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
if (canAura(sk) || (GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1396,7 +1396,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
else if (canAOE(sk) && //
((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA)//
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))))
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange))))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1406,7 +1406,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
if (sk.hasEffectType(L2EffectType.STUN, L2EffectType.ROOT, L2EffectType.PARALYZE, L2EffectType.MUTE, L2EffectType.FEAR))
{
if (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && (dist2 <= srange))
if (GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && (dist2 <= srange))
{
if (!attackTarget.isAffectedBySkill(sk.getId()))
{
@@ -1418,7 +1418,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
else if (canAOE(sk))
{
if ((sk.getTargetType() == L2TargetType.AURA) || (sk.getTargetType() == L2TargetType.BEHIND_AURA) || (sk.getTargetType() == L2TargetType.FRONT_AURA)//
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1435,7 +1435,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
if (sk.hasEffectType(L2EffectType.DMG_OVER_TIME, L2EffectType.DMG_OVER_TIME_PERCENT))
{
if (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
if (GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !canAOE(sk) && !attackTarget.isDead() && (dist2 <= srange))
{
if (!attackTarget.isAffectedBySkill(sk.getId()))
{
@@ -1447,7 +1447,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
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)))
|| (((sk.getTargetType() == L2TargetType.AREA) || (sk.getTargetType() == L2TargetType.BEHIND_AREA) || (sk.getTargetType() == L2TargetType.FRONT_AREA)) && GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1477,7 +1477,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
moveToPawn(leader, sk.getCastRange() + caster.getTemplate().getCollisionRadius() + leader.getTemplate().getCollisionRadius());
}
if (GeoData.getInstance().canSeeTarget(caster, leader))
if (GeoEngine.getInstance().canSeeTarget(caster, leader))
{
clientStopMoving(null);
caster.setTarget(leader);
@@ -1501,7 +1501,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
continue;
}
if ((Rnd.get(100) < 10) && GeoData.getInstance().canSeeTarget(caster, targets))
if ((Rnd.get(100) < 10) && GeoEngine.getInstance().canSeeTarget(caster, targets))
{
clientStopMoving(null);
caster.setTarget(obj);
@@ -1530,7 +1530,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
}
}
}
if (canAura(sk) || (GeoData.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
if (canAura(sk) || (GeoEngine.getInstance().canSeeTarget(caster, attackTarget) && !attackTarget.isDead() && (dist2 <= srange)))
{
clientStopMoving(null);
caster.doCast(sk);
@@ -1591,7 +1591,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.IMMOBILIZE))
{
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
continue;
}
@@ -1609,7 +1609,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.COT))
{
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
continue;
}
@@ -1626,7 +1626,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.DEBUFF))
{
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
continue;
}
@@ -1644,7 +1644,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.NEGATIVE))
{
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
continue;
}
@@ -1662,7 +1662,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (Skill sk : npc.getTemplate().getAISkills(AISkillScope.ATTACK))
{
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if (!checkSkillCastConditions(npc, sk) || (((sk.getCastRange() + npc.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius()) <= dist2) && !canAura(sk)) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
continue;
}
@@ -1685,7 +1685,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
continue;
}
if(!GeoData.getInstance().canSeeTarget(_actor,getAttackTarget()))
if(!GeoEngine.getInstance().canSeeTarget(_actor,getAttackTarget()))
continue;
clientStopMoving(null);
L2Object target = getAttackTarget();
@@ -1712,7 +1712,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
// return;
// }
if ((dist > range) || !GeoData.getInstance().canSeeTarget(npc, getAttackTarget()))
if ((dist > range) || !GeoEngine.getInstance().canSeeTarget(npc, getAttackTarget()))
{
if (getAttackTarget().isMoving())
{
@@ -1784,7 +1784,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
for (L2Character obj : actor.getAttackByList())
{
if ((obj == null) || obj.isDead() || !GeoData.getInstance().canSeeTarget(actor, obj) || (obj == getAttackTarget()))
if ((obj == null) || obj.isDead() || !GeoEngine.getInstance().canSeeTarget(actor, obj) || (obj == getAttackTarget()))
{
continue;
}
@@ -1813,7 +1813,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
// If there is nearby Target with aggro, start going on random target that is attackable
for (L2Character obj : actor.getKnownList().getKnownCharactersInRadius(range))
{
if (obj.isDead() || !GeoData.getInstance().canSeeTarget(actor, obj))
if (obj.isDead() || !GeoEngine.getInstance().canSeeTarget(actor, obj))
{
continue;
}
@@ -1846,7 +1846,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
int range = 0;
for (L2Character obj : actor.getKnownList().getKnownCharactersInRadius(range))
{
if (!(obj instanceof L2Attackable) || obj.isDead() || !GeoData.getInstance().canSeeTarget(actor, obj))
if (!(obj instanceof L2Attackable) || obj.isDead() || !GeoEngine.getInstance().canSeeTarget(actor, obj))
{
continue;
}
@@ -1886,7 +1886,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
int range = sk.getCastRange() + actor.getTemplate().getCollisionRadius() + getAttackTarget().getTemplate().getCollisionRadius();
for (L2Character obj : actor.getKnownList().getKnownCharactersInRadius(range))
{
if ((obj == null) || obj.isDead() || !GeoData.getInstance().canSeeTarget(actor, obj))
if ((obj == null) || obj.isDead() || !GeoEngine.getInstance().canSeeTarget(actor, obj))
{
continue;
}
@@ -1925,7 +1925,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (L2Character obj : actor.getHateList())
{
if ((obj == null) || !GeoData.getInstance().canSeeTarget(actor, obj) || obj.isDead())
if ((obj == null) || !GeoEngine.getInstance().canSeeTarget(actor, obj) || obj.isDead())
{
continue;
}
@@ -1967,7 +1967,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
continue;
}
final L2Character obj = target instanceof L2Character ? (L2Character) target : null;
if ((obj == null) || !GeoData.getInstance().canSeeTarget(actor, obj) || (dist2 > range))
if ((obj == null) || !GeoEngine.getInstance().canSeeTarget(actor, obj) || (dist2 > range))
{
continue;
}
@@ -2003,7 +2003,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
{
for (L2Character obj : actor.getHateList())
{
if ((obj == null) || !GeoData.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor))
if ((obj == null) || !GeoEngine.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor))
{
continue;
}
@@ -2036,7 +2036,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
for (L2Object target : actor.getKnownList().getKnownObjects().values())
{
final L2Character obj = target instanceof L2Character ? (L2Character) target : null;
if ((obj == null) || !GeoData.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor) || (obj == getAttackTarget()))
if ((obj == null) || !GeoEngine.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor) || (obj == getAttackTarget()))
{
continue;
}
@@ -2085,7 +2085,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
continue;
}
if ((obj == null) || !GeoData.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj == getAttackTarget()) || (obj == actor))
if ((obj == null) || !GeoEngine.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj == getAttackTarget()) || (obj == actor))
{
continue;
}
@@ -2115,7 +2115,7 @@ public class L2AttackableAI extends L2CharacterAI implements Runnable
continue;
}
obj = (L2Character) target;
if (!GeoData.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor))
if (!GeoEngine.getInstance().canSeeTarget(actor, obj) || obj.isDead() || (obj != MostHate) || (obj == actor))
{
continue;
}

View File

@@ -33,7 +33,7 @@ import com.l2jmobius.Config;
import com.l2jmobius.gameserver.GameTimeController;
import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.enums.ItemLocation;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.instancemanager.WalkingManager;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.Location;
@@ -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 ? GeoEngine.getInstance().canMoveToTarget(_actor.getX(), _actor.getY(), _actor.getZ(), posX, posY, posZ, _actor.getInstanceId()) : new Location(posX, posY, posZ));
}
protected boolean maybeMoveToPosition(ILocational worldPosition, int offset)
@@ -1155,7 +1155,7 @@ public class L2CharacterAI extends AbstractAI
((L2PcInstance) target).stopFakeDeath(true);
return false;
}
if ((target != null) && ((_actor == null) || (_skill == null) || !_skill.isBad() || (_skill.getAffectRange() <= 0) || GeoData.getInstance().canSeeTarget(_actor, target)))
if ((target != null) && ((_actor == null) || (_skill == null) || !_skill.isBad() || (_skill.getAffectRange() <= 0) || GeoEngine.getInstance().canSeeTarget(_actor, target)))
{
return false;
}
@@ -1449,7 +1449,7 @@ public class L2CharacterAI extends AbstractAI
boolean cancast = true;
for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
{
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
if (!GeoEngine.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
{
continue;
}
@@ -1468,7 +1468,7 @@ public class L2CharacterAI extends AbstractAI
boolean cancast = true;
for (L2Character target : getAttackTarget().getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
{
if (!GeoData.getInstance().canSeeTarget(_actor, target) || (target == null) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
if (!GeoEngine.getInstance().canSeeTarget(_actor, target) || (target == null) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
{
continue;
}
@@ -1488,7 +1488,7 @@ public class L2CharacterAI extends AbstractAI
boolean cancast = false;
for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
{
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
if (!GeoEngine.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
{
continue;
}
@@ -1507,7 +1507,7 @@ public class L2CharacterAI extends AbstractAI
boolean cancast = true;
for (L2Character target : getAttackTarget().getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
{
if (!GeoData.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
if (!GeoEngine.getInstance().canSeeTarget(_actor, target) || ((target instanceof L2Attackable) && !((L2Npc) _actor).isChaos()))
{
continue;
}
@@ -1532,7 +1532,7 @@ public class L2CharacterAI extends AbstractAI
int ccount = 0;
for (L2Character target : _actor.getKnownList().getKnownCharactersInRadius(sk.getAffectRange()))
{
if (!(target instanceof L2Attackable) || !GeoData.getInstance().canSeeTarget(_actor, target))
if (!(target instanceof L2Attackable) || !GeoEngine.getInstance().canSeeTarget(_actor, target))
{
continue;
}

View File

@@ -26,7 +26,7 @@ import java.util.concurrent.Future;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.GameTimeController;
import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -154,7 +154,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
target = owner;
}
}
return (!(target instanceof L2Playable) || !((L2Playable) target).isSilentMovingAffected() || _actor.isInsideRadius(target, 250, false, false)) && _actor.isAutoAttackable(target) && GeoData.getInstance().canSeeTarget(_actor, target);
return (!(target instanceof L2Playable) || !((L2Playable) target).isSilentMovingAffected() || _actor.isInsideRadius(target, 250, false, false)) && _actor.isAutoAttackable(target) && GeoEngine.getInstance().canSeeTarget(_actor, target);
}
/**
@@ -379,7 +379,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
{
continue;
}
if (!GeoData.getInstance().canSeeTarget(_actor, cha))
if (!GeoEngine.getInstance().canSeeTarget(_actor, cha))
{
break;
}
@@ -403,7 +403,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
if (npc.getAI() != null) // TODO: possibly check not needed
{
if (!npc.isDead() && (Math.abs(target.getZ() - npc.getZ()) < 600) && ((npc.getAI()._intention == CtrlIntention.AI_INTENTION_IDLE) || (npc.getAI()._intention == CtrlIntention.AI_INTENTION_ACTIVE)) && target.isInsideRadius(npc, 1500, true, false) && GeoData.getInstance().canSeeTarget(npc, target))
if (!npc.isDead() && (Math.abs(target.getZ() - npc.getZ()) < 600) && ((npc.getAI()._intention == CtrlIntention.AI_INTENTION_IDLE) || (npc.getAI()._intention == CtrlIntention.AI_INTENTION_ACTIVE)) && target.isInsideRadius(npc, 1500, true, false) && GeoEngine.getInstance().canSeeTarget(npc, target))
{
// Notify the L2Object AI with EVT_AGGRESSION
npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, getAttackTarget(), 1);
@@ -423,7 +423,7 @@ public class L2FortSiegeGuardAI extends L2CharacterAI implements Runnable
{
continue;
}
if (!GeoData.getInstance().canSeeTarget(_actor, npc))
if (!GeoEngine.getInstance().canSeeTarget(_actor, npc))
{
break;
}

View File

@@ -26,7 +26,7 @@ import java.util.concurrent.Future;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.GameTimeController;
import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.actor.L2Attackable;
import com.l2jmobius.gameserver.model.actor.L2Character;
@@ -152,7 +152,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
}
// Los Check Here
return (_actor.isAutoAttackable(target) && GeoData.getInstance().canSeeTarget(_actor, target));
return (_actor.isAutoAttackable(target) && GeoEngine.getInstance().canSeeTarget(_actor, target));
}
/**
@@ -377,7 +377,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
{
continue;
}
if (!GeoData.getInstance().canSeeTarget(_actor, cha))
if (!GeoEngine.getInstance().canSeeTarget(_actor, cha))
{
break;
}
@@ -401,7 +401,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
if (npc.getAI() != null) // TODO: possibly check not needed
{
if (!npc.isDead() && (Math.abs(target.getZ() - npc.getZ()) < 600) && ((npc.getAI()._intention == CtrlIntention.AI_INTENTION_IDLE) || (npc.getAI()._intention == CtrlIntention.AI_INTENTION_ACTIVE)) && target.isInsideRadius(npc, 1500, true, false) && GeoData.getInstance().canSeeTarget(npc, target))
if (!npc.isDead() && (Math.abs(target.getZ() - npc.getZ()) < 600) && ((npc.getAI()._intention == CtrlIntention.AI_INTENTION_IDLE) || (npc.getAI()._intention == CtrlIntention.AI_INTENTION_ACTIVE)) && target.isInsideRadius(npc, 1500, true, false) && GeoEngine.getInstance().canSeeTarget(npc, target))
{
// Notify the L2Object AI with EVT_AGGRESSION
npc.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, getAttackTarget(), 1);
@@ -421,7 +421,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
{
continue;
}
if (!GeoData.getInstance().canSeeTarget(_actor, npc))
if (!GeoEngine.getInstance().canSeeTarget(_actor, npc))
{
break;
}
@@ -474,7 +474,7 @@ public class L2SiegeGuardAI extends L2CharacterAI implements Runnable
return;
}
if (!GeoData.getInstance().canSeeTarget(_actor, attackTarget))
if (!GeoEngine.getInstance().canSeeTarget(_actor, attackTarget))
{
// Siege guards differ from normal mobs currently:
// If target cannot seen, don't attack any more

View File

@@ -24,8 +24,7 @@ import java.util.concurrent.Future;
import com.l2jmobius.Config;
import com.l2jmobius.gameserver.ThreadPoolManager;
import com.l2jmobius.gameserver.geodata.GeoData;
import com.l2jmobius.gameserver.geodata.pathfinding.PathFinding;
import com.l2jmobius.gameserver.geoengine.GeoEngine;
import com.l2jmobius.gameserver.model.L2Object;
import com.l2jmobius.gameserver.model.actor.L2Character;
import com.l2jmobius.gameserver.model.actor.L2Summon;
@@ -51,7 +50,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable
@Override
protected void onIntentionAttack(L2Character target)
{
if ((Config.PATHFINDING > 0) && (PathFinding.getInstance().findPath(_actor.getX(), _actor.getY(), _actor.getZ(), target.getX(), target.getY(), target.getZ(), _actor.getInstanceId(), true) == null))
if (Config.PATHFINDING && (GeoEngine.getInstance().findPath(_actor.getX(), _actor.getY(), _actor.getZ(), target.getX(), target.getY(), target.getZ(), _actor.getInstanceId(), true) == null))
{
return;
}
@@ -250,7 +249,7 @@ public class L2SummonAI extends L2PlayableAI implements Runnable
final double angle = Math.toRadians(Rnd.get(-90, 90)) + Math.atan2(ownerY - _actor.getY(), ownerX - _actor.getX());
final int targetX = ownerX + (int) (AVOID_RADIUS * Math.cos(angle));
final int targetY = ownerY + (int) (AVOID_RADIUS * Math.sin(angle));
if (GeoData.getInstance().canMove(_actor.getX(), _actor.getY(), _actor.getZ(), targetX, targetY, _actor.getZ(), _actor.getInstanceId()))
if (GeoEngine.getInstance().canMoveToTarget(_actor.getX(), _actor.getY(), _actor.getZ(), targetX, targetY, _actor.getZ(), _actor.getInstanceId()))
{
moveTo(targetX, targetY, _actor.getZ());
}