diff --git a/src/engine/ai/MobileFSM.java b/src/engine/ai/MobileFSM.java index 77ecc455..23bce07b 100644 --- a/src/engine/ai/MobileFSM.java +++ b/src/engine/ai/MobileFSM.java @@ -113,10 +113,10 @@ public class MobileFSM { } City playercity = ZoneManager.getCityAtLocation(mob.getLoc()); if(playercity != null) { - for (Building barracks : playercity.cityBarracks) { - for(AbstractCharacter guardCaptain : barracks.getHirelings().keySet()){ - if(guardCaptain.getCombatTarget() == null){ - guardCaptain.setCombatTarget(mob); + for (Mob guard : playercity.getParent().zoneMobSet) { + if (guard.BehaviourType != null && guard.BehaviourType.ordinal() == Enum.MobBehaviourType.GuardCaptain.ordinal()) { + if (guard.getCombatTarget() == null && guard.getGuild().equals(mob.getGuild()) == false) { + guard.setCombatTarget(mob); } } } @@ -584,7 +584,7 @@ public class MobileFSM { if(mob.getCombatTarget() != null && mob.getCombatTarget().isAlive() == false){ mob.setCombatTarget(null); } - if(MovementUtilities.canMove(mob)){ + if(MovementUtilities.canMove(mob) && mob.BehaviourType.canRoam){ CheckMobMovement(mob); } if(mob.getCombatTarget() != null) { diff --git a/src/engine/ai/utilities/CombatUtilities.java b/src/engine/ai/utilities/CombatUtilities.java index 9e6ea1f9..716f0707 100644 --- a/src/engine/ai/utilities/CombatUtilities.java +++ b/src/engine/ai/utilities/CombatUtilities.java @@ -115,6 +115,9 @@ public class CombatUtilities { DispatchMessage.sendToAllInRange(agent,msg); } public static void swingIsDamage(Mob agent, AbstractWorldObject target, float damage, int animation){ + if(agent.isSiege() == true){ + damage = ThreadLocalRandom.current().nextInt(1000) + 1500; + } float trueDamage = damage; //target = agent.getCombatTarget(); if (!target.isAlive()) diff --git a/src/engine/objects/Mob.java b/src/engine/objects/Mob.java index 3d2642ce..bd4d57d0 100644 --- a/src/engine/objects/Mob.java +++ b/src/engine/objects/Mob.java @@ -950,6 +950,9 @@ public class Mob extends AbstractIntelligenceAgent { this.setLoc(buildingWorldLoc); this.endLoc = buildingWorldLoc; this.stopMovement(endLoc); + if(this.building.getBlueprint().isWallPiece()) { + MovementManager.translocate(this, new Vector3fImmutable(this.building.getLoc().x, this.npcOwner.getLoc().y, this.building.getLoc().z), this.region); + } return; } diff --git a/src/engine/objects/NPC.java b/src/engine/objects/NPC.java index c983bb4e..f667178b 100644 --- a/src/engine/objects/NPC.java +++ b/src/engine/objects/NPC.java @@ -1458,7 +1458,7 @@ public class NPC extends AbstractCharacter { mob.setObjectTypeMask(MBServerStatics.MASK_MOB | mob.getTypeMasks()); - // mob.setMob(); + //mob.setMob(); mob.setSiege(true); mob.setParentZone(parent); @@ -1478,7 +1478,8 @@ public class NPC extends AbstractCharacter { mob.setSpawnTime(10); mob.setNpcOwner(this); - mob.region = AbstractWorldObject.GetRegionByWorldObject(mob); + mob.BehaviourType = MobBehaviourType.Pet1; + mob.BehaviourType.canRoam = false; return mob; }