Browse Source

player guard logic cleanup

lakebane-recovery
FatBoy-DOTC 5 days ago
parent
commit
d60ef86a87
  1. 66
      src/engine/mobileAI/MobHandlers/PlayerGuardHandler.java

66
src/engine/mobileAI/MobHandlers/PlayerGuardHandler.java

@ -16,14 +16,14 @@ import java.util.concurrent.ThreadLocalRandom;
public class PlayerGuardHandler { public class PlayerGuardHandler {
public static void run(Mob guard) { public static void run(Mob guard) {
try { try {
if (guard.combatTarget != null) { if (guard.combatTarget != null)
checkToDropGuardAggro(guard); checkToDropGuardAggro(guard);
}
if (guard.combatTarget == null) if (guard.combatTarget == null)
CheckForPlayerGuardAggro(guard); CheckForPlayerGuardAggro(guard);
CheckGuardMovement(guard); if(MovementUtilities.canMove(guard))
CheckGuardMovement(guard);
if (guard.combatTarget != null && CombatUtilities.inRangeToAttack(guard, guard.combatTarget)) if (guard.combatTarget != null && CombatUtilities.inRangeToAttack(guard, guard.combatTarget))
CheckToAttack(guard); CheckToAttack(guard);
@ -47,14 +47,14 @@ public class PlayerGuardHandler {
continue; continue;
if(tar == null || guard.loc.distanceSquared(tar.loc) < guard.loc.distanceSquared(target.loc)) if(tar == null || guard.loc.distanceSquared(tar.loc) < guard.loc.distanceSquared(target.loc))
if(MobCanAggro(guard,target)) if(GuardCanAggro(guard,target))
tar = target; tar = target;
} }
if(tar != null) if(tar != null)
guard.setCombatTarget(tar); guard.setCombatTarget(tar);
} }
public static Boolean MobCanAggro(Mob mob, PlayerCharacter loadedPlayer){ public static Boolean GuardCanAggro(Mob guard, PlayerCharacter loadedPlayer){
if (loadedPlayer == null) if (loadedPlayer == null)
return false; return false;
@ -63,16 +63,16 @@ public class PlayerGuardHandler {
return false; return false;
//Can't see target, skip aggro. //Can't see target, skip aggro.
if (!mob.canSee(loadedPlayer)) if (!guard.canSee(loadedPlayer))
return false; return false;
if(mob.guardedCity != null && mob.guardedCity.cityOutlaws.contains(loadedPlayer.getObjectUUID())) if(guard.guardedCity != null && guard.guardedCity.cityOutlaws.contains(loadedPlayer.getObjectUUID()))
return true; return true;
if(loadedPlayer.guild.getNation().equals(mob.guardedCity.getGuild().getNation())) if(loadedPlayer.guild.getNation().equals(guard.guardedCity.getGuild().getNation()))
return false; return false;
return !mob.guardedCity.isOpen(); return !guard.guardedCity.isOpen();
} }
public static boolean GuardCast(Mob mob) { public static boolean GuardCast(Mob mob) {
@ -192,60 +192,60 @@ public class PlayerGuardHandler {
return false; return false;
} }
public static void CheckToAttack(Mob mob){ public static void CheckToAttack(Mob guard){
try { try {
if(mob.getLastAttackTime() > System.currentTimeMillis()) if(guard.getLastAttackTime() > System.currentTimeMillis())
return; return;
PlayerCharacter target = (PlayerCharacter) mob.combatTarget; PlayerCharacter target = (PlayerCharacter) guard.combatTarget;
if (!mob.canSee(target)) { if (!guard.canSee(target)) {
mob.setCombatTarget(null); guard.setCombatTarget(null);
return; return;
} }
if (mob.isMoving() && mob.getRange() > 20) if (guard.isMoving() && guard.getRange() > 20)
return; return;
if(target.combatStats == null) if(target.combatStats == null)
target.combatStats = new PlayerCombatStats(target); target.combatStats = new PlayerCombatStats(target);
ItemBase mainHand = mob.getWeaponItemBase(true); ItemBase mainHand = guard.getWeaponItemBase(true);
ItemBase offHand = mob.getWeaponItemBase(false); ItemBase offHand = guard.getWeaponItemBase(false);
if (mainHand == null && offHand == null) { if (mainHand == null && offHand == null) {
CombatUtilities.combatCycle(mob, target, true, null); CombatUtilities.combatCycle(guard, target, true, null);
int delay = 3000; int delay = 3000;
mob.setLastAttackTime(System.currentTimeMillis() + delay); guard.setLastAttackTime(System.currentTimeMillis() + delay);
} else if (mob.getWeaponItemBase(true) != null) { } else if (guard.getWeaponItemBase(true) != null) {
int delay = 3000; int delay = 3000;
CombatUtilities.combatCycle(mob, target, true, mob.getWeaponItemBase(true)); CombatUtilities.combatCycle(guard, target, true, guard.getWeaponItemBase(true));
mob.setLastAttackTime(System.currentTimeMillis() + delay); guard.setLastAttackTime(System.currentTimeMillis() + delay);
} else if (mob.getWeaponItemBase(false) != null) { } else if (guard.getWeaponItemBase(false) != null) {
int attackDelay = 3000; int attackDelay = 3000;
CombatUtilities.combatCycle(mob, target, false, mob.getWeaponItemBase(false)); CombatUtilities.combatCycle(guard, target, false, guard.getWeaponItemBase(false));
mob.setLastAttackTime(System.currentTimeMillis() + attackDelay); guard.setLastAttackTime(System.currentTimeMillis() + attackDelay);
} }
if (target.getPet() != null) if (target.getPet() != null)
if (target.getPet().getCombatTarget() == null && target.getPet().assist) if (target.getPet().getCombatTarget() == null && target.getPet().assist)
target.getPet().setCombatTarget(mob); target.getPet().setCombatTarget(guard);
} catch (Exception e) { } catch (Exception e) {
////(mob.getObjectUUID() + " " + mob.getName() + " Failed At: AttackPlayer" + " " + e.getMessage()); ////(guard.getObjectUUID() + " " + guard.getName() + " Failed At: AttackPlayer" + " " + e.getMessage());
} }
} }
public static void CheckGuardMovement(Mob mob){ public static void CheckGuardMovement(Mob guard){
if (mob.getCombatTarget() == null) { if (guard.getCombatTarget() == null) {
if (!mob.isMoving()) if (!guard.isMoving())
Patrol(mob); Patrol(guard);
else { else {
mob.stopPatrolTime = System.currentTimeMillis(); guard.stopPatrolTime = System.currentTimeMillis();
} }
} else { } else {
MovementUtilities.moveToLocation(mob, mob.combatTarget.loc, mob.getRange()); MovementUtilities.moveToLocation(guard, guard.combatTarget.loc, guard.getRange());
} }
} }

Loading…
Cancel
Save