|
|
|
@ -234,7 +234,7 @@ public class MobAI {
@@ -234,7 +234,7 @@ public class MobAI {
|
|
|
|
|
attackDelay = 11000; |
|
|
|
|
CombatUtilities.combatCycle(mob, target, false, mob.getWeaponItemBase(false)); |
|
|
|
|
mob.setLastAttackTime(System.currentTimeMillis() + attackDelay); |
|
|
|
|
if (target.combatTarget == null) { |
|
|
|
|
if (target.getCombatTarget() == null) { |
|
|
|
|
target.setCombatTarget(mob); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -638,14 +638,15 @@ public class MobAI {
@@ -638,14 +638,15 @@ public class MobAI {
|
|
|
|
|
|
|
|
|
|
//no players loaded, no need to proceed
|
|
|
|
|
|
|
|
|
|
if (mob.playerAgroMap.isEmpty() && mob.isPlayerGuard == false && mob.BehaviourType.ordinal() != Enum.MobBehaviourType.Pet1.ordinal()) { |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
if (mob.playerAgroMap.isEmpty()) { |
|
|
|
|
if(mob.getCombatTarget() != null) |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (mob.BehaviourType.ordinal() != Enum.MobBehaviourType.Pet1.ordinal()) |
|
|
|
|
CheckToSendMobHome(mob); |
|
|
|
|
|
|
|
|
|
if (mob.combatTarget != null) { |
|
|
|
|
if (mob.getCombatTarget() != null) { |
|
|
|
|
if (mob.getCombatTarget().isAlive() == false) { |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
return; |
|
|
|
@ -653,7 +654,7 @@ public class MobAI {
@@ -653,7 +654,7 @@ public class MobAI {
|
|
|
|
|
|
|
|
|
|
if (mob.getCombatTarget().getObjectTypeMask() == MBServerStatics.MASK_PLAYER) { |
|
|
|
|
|
|
|
|
|
PlayerCharacter target = (PlayerCharacter) mob.combatTarget; |
|
|
|
|
PlayerCharacter target = (PlayerCharacter) mob.getCombatTarget(); |
|
|
|
|
|
|
|
|
|
if (mob.playerAgroMap.containsKey(target.getObjectUUID()) == false) { |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
@ -745,7 +746,7 @@ public class MobAI {
@@ -745,7 +746,7 @@ public class MobAI {
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (aiAgent.combatTarget == null) { |
|
|
|
|
if (aiAgent.getCombatTarget() == null) { |
|
|
|
|
|
|
|
|
|
//look for pets to aggro if no players found to aggro
|
|
|
|
|
|
|
|
|
@ -1046,9 +1047,12 @@ public class MobAI {
@@ -1046,9 +1047,12 @@ public class MobAI {
|
|
|
|
|
} |
|
|
|
|
}else { |
|
|
|
|
if (mob.npcOwner.getCombatTarget() != null) |
|
|
|
|
if(mob.getCombatTarget() != null && mob.getCombatTarget().equals(mob.npcOwner.getCombatTarget()) == false) |
|
|
|
|
mob.setCombatTarget(mob.npcOwner.getCombatTarget()); |
|
|
|
|
else |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
if(mob.getCombatTarget() != null) { |
|
|
|
|
mob.setCombatTarget(null); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
CheckMobMovement(mob); |
|
|
|
|
CheckForAttack(mob); |
|
|
|
@ -1110,7 +1114,7 @@ public class MobAI {
@@ -1110,7 +1114,7 @@ public class MobAI {
|
|
|
|
|
|
|
|
|
|
if (mob.getCombatTarget() == null) |
|
|
|
|
SafeGuardAggro(mob); |
|
|
|
|
else if (mob.combatTarget.isAlive() == false) |
|
|
|
|
else if (mob.getCombatTarget().isAlive() == false) |
|
|
|
|
SafeGuardAggro(mob); |
|
|
|
|
|
|
|
|
|
CheckForAttack(mob); |
|
|
|
@ -1151,7 +1155,7 @@ public class MobAI {
@@ -1151,7 +1155,7 @@ public class MobAI {
|
|
|
|
|
|
|
|
|
|
//check if mob can attack if it isn't wimpy
|
|
|
|
|
|
|
|
|
|
if (!mob.BehaviourType.isWimpy && mob.combatTarget != null) |
|
|
|
|
if (!mob.BehaviourType.isWimpy && mob.getCombatTarget() != null) |
|
|
|
|
CheckForAttack(mob); |
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
@ -1199,7 +1203,7 @@ public class MobAI {
@@ -1199,7 +1203,7 @@ public class MobAI {
|
|
|
|
|
if (GuardCanAggro(mob, loadedPlayer) == false) |
|
|
|
|
continue; |
|
|
|
|
|
|
|
|
|
if (MovementUtilities.inRangeToAggro(mob, loadedPlayer)) { |
|
|
|
|
if (MovementUtilities.inRangeToAggro(mob, loadedPlayer) && mob.getCombatTarget() == null) { |
|
|
|
|
mob.setCombatTarget(loadedPlayer); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|