forked from MagicBane/Server
mob aggro range and call for help range
This commit is contained in:
@@ -2,6 +2,7 @@ package engine.mobileAI.MobHandlers;
|
|||||||
|
|
||||||
import engine.Enum;
|
import engine.Enum;
|
||||||
import engine.InterestManagement.InterestManager;
|
import engine.InterestManagement.InterestManager;
|
||||||
|
import engine.InterestManagement.WorldGrid;
|
||||||
import engine.gameManager.ChatManager;
|
import engine.gameManager.ChatManager;
|
||||||
import engine.gameManager.PowersManager;
|
import engine.gameManager.PowersManager;
|
||||||
import engine.gameManager.ZoneManager;
|
import engine.gameManager.ZoneManager;
|
||||||
@@ -15,6 +16,7 @@ import engine.objects.*;
|
|||||||
import engine.powers.PowersBase;
|
import engine.powers.PowersBase;
|
||||||
import engine.server.MBServerStatics;
|
import engine.server.MBServerStatics;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
@@ -109,6 +111,10 @@ public class MobHandler {
|
|||||||
PlayerCharacter tar = null;
|
PlayerCharacter tar = null;
|
||||||
for(int id : mob.playerAgroMap.keySet()){
|
for(int id : mob.playerAgroMap.keySet()){
|
||||||
PlayerCharacter target = PlayerCharacter.getFromCache(id);
|
PlayerCharacter target = PlayerCharacter.getFromCache(id);
|
||||||
|
|
||||||
|
if(target.loc.distanceSquared(mob.loc) > mob.getAggroRange() * mob.getAggroRange())
|
||||||
|
continue;
|
||||||
|
|
||||||
if(tar == null || mob.loc.distanceSquared(tar.loc) < mob.loc.distanceSquared(target.loc))
|
if(tar == null || mob.loc.distanceSquared(tar.loc) < mob.loc.distanceSquared(target.loc))
|
||||||
if(MobCanAggro(mob,target))
|
if(MobCanAggro(mob,target))
|
||||||
tar = target;
|
tar = target;
|
||||||
@@ -210,16 +216,19 @@ public class MobHandler {
|
|||||||
public static void MobCallForHelp(Mob mob) {
|
public static void MobCallForHelp(Mob mob) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Zone mobCamp = mob.getParentZone();
|
HashSet<AbstractWorldObject> helpers = WorldGrid.getObjectsInRangePartial(mob.loc,mob.getAggroRange() * 2, MBServerStatics.MASK_MOB);
|
||||||
|
for (AbstractWorldObject awo : helpers) {
|
||||||
|
if(awo.equals(mob))
|
||||||
|
continue;
|
||||||
|
Mob helper = (Mob) awo;
|
||||||
|
|
||||||
for (Mob helper : mobCamp.zoneMobSet) {
|
|
||||||
if(helper.equals(mob))
|
if(helper.equals(mob))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if(helper.combatTarget != null)
|
if(helper.combatTarget != null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
helper.setCombatTarget(mob.getCombatTarget());
|
helper.setCombatTarget(mob.getCombatTarget());
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user