Browse Source

mob AI aggro

lakebane-reset
FatBoy-DOTC 6 days ago
parent
commit
e5f47a7d73
  1. 56
      src/engine/mobileAI/MobAI.java

56
src/engine/mobileAI/MobAI.java

@ -735,6 +735,62 @@ public class MobAI { @@ -735,6 +735,62 @@ public class MobAI {
try {
HashSet<AbstractWorldObject> players = WorldGrid.getObjectsInRangePartial(aiAgent.loc,MobAIThread.AI_BASE_AGGRO_RANGE, MBServerStatics.MASK_PLAYER);
HashSet<AbstractWorldObject> pets = WorldGrid.getObjectsInRangePartial(aiAgent.loc,MobAIThread.AI_BASE_AGGRO_RANGE, MBServerStatics.MASK_PET);
AbstractWorldObject closestTarget = null;
for(AbstractWorldObject pet : pets){
if(closestTarget == null) {
closestTarget = pet;
continue;
}
if(aiAgent.loc.distanceSquared(pet.loc) < aiAgent.loc.distanceSquared(closestTarget.loc)){
closestTarget = pet;
}
}
for(AbstractWorldObject player : players){
PlayerCharacter loadedPlayer = (PlayerCharacter) player;
if (loadedPlayer == null) {
continue;
}
//Player is Dead, Mob no longer needs to attempt to aggro. Remove them from aggro map.
if (!loadedPlayer.isAlive()) {
continue;
}
//Can't see target, skip aggro.
if (!aiAgent.canSee(loadedPlayer))
continue;
// No aggro for this race type
if (aiAgent.notEnemy.size() > 0 && aiAgent.notEnemy.contains(loadedPlayer.getRace().getRaceType().getMonsterType()) == true)
continue;
//mob has enemies and this player race is not it
if (aiAgent.enemy.size() > 0 && aiAgent.enemy.contains(loadedPlayer.getRace().getRaceType().getMonsterType()) == false)
continue;
if(closestTarget == null) {
closestTarget = loadedPlayer;
continue;
}
if(aiAgent.loc.distanceSquared(loadedPlayer.loc) < aiAgent.loc.distanceSquared(closestTarget.loc)){
closestTarget = loadedPlayer;
}
}
if(closestTarget != null){
aiAgent.setCombatTarget(closestTarget);
return;
}
if(true)
return;
//looks for and sets mobs combatTarget
if (!aiAgent.isAlive())

Loading…
Cancel
Save