6 changed files with 1547 additions and 1 deletions
			
			
		| @ -0,0 +1,33 @@ | |||||||
|  | package engine.mobileAI.MobBehaviours; | ||||||
|  | 
 | ||||||
|  | import engine.gameManager.ZoneManager; | ||||||
|  | import engine.mobileAI.utilities.MovementUtilities; | ||||||
|  | import engine.objects.Mob; | ||||||
|  | import org.pmw.tinylog.Logger; | ||||||
|  | 
 | ||||||
|  | public class Pet { | ||||||
|  | 
 | ||||||
|  |     public static void run(Mob pet){ | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  | 
 | ||||||
|  |             if(StaticBehaviours.EarlyExit(pet)) | ||||||
|  |                 return; | ||||||
|  | 
 | ||||||
|  |             if (pet.getOwner() == null && pet.isNecroPet() == false && pet.isSiege() == false) | ||||||
|  |                 if (ZoneManager.getSeaFloor().zoneMobSet.contains(pet)) | ||||||
|  |                     pet.killCharacter("no owner"); | ||||||
|  | 
 | ||||||
|  |             if(!pet.isSiege()) | ||||||
|  |                 pet.BehaviourType.canRoam = true; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |             if (MovementUtilities.canMove(pet) && pet.BehaviourType.canRoam) | ||||||
|  |                 StaticBehaviours.CheckMobMovement(pet); | ||||||
|  | 
 | ||||||
|  |             StaticBehaviours.CheckForAttack(pet); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(pet.getObjectUUID() + " " + pet.getName() + " Failed At: PetLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,146 @@ | |||||||
|  | package engine.mobileAI.MobBehaviours; | ||||||
|  | 
 | ||||||
|  | import engine.Enum; | ||||||
|  | import engine.objects.AbstractWorldObject; | ||||||
|  | import engine.objects.Mob; | ||||||
|  | import engine.objects.PlayerCharacter; | ||||||
|  | import org.pmw.tinylog.Logger; | ||||||
|  | 
 | ||||||
|  | public class PlayerGuard { | ||||||
|  | 
 | ||||||
|  |     public static void run(Mob guard) { | ||||||
|  | 
 | ||||||
|  |         if(StaticBehaviours.EarlyExit(guard)) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         if (guard.mobPowers.isEmpty()) { | ||||||
|  |             //mele
 | ||||||
|  |             if (guard.BehaviourType.equals(Enum.MobBehaviourType.GuardWallArcher)) { | ||||||
|  |                 GuardWallArcherLogic(guard); | ||||||
|  |             } else { | ||||||
|  |                 if (guard.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | ||||||
|  |                     GuardCaptainLogic(guard); | ||||||
|  |                 } else if (guard.BehaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | ||||||
|  |                     GuardMinionLogic(guard); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } else { | ||||||
|  |             //caster
 | ||||||
|  |             if (guard.BehaviourType.equals(Enum.MobBehaviourType.GuardCaptain)) { | ||||||
|  |                 MagisterCaptainLogic(guard); | ||||||
|  |             } else if (guard.BehaviourType.equals(Enum.MobBehaviourType.GuardMinion)) { | ||||||
|  |                 MagisterMinionLogic(guard); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void GuardCaptainLogic(Mob mob) { | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             StaticBehaviours.checkToDropGuardAggro(mob); | ||||||
|  |             if (mob.getCombatTarget() == null) | ||||||
|  |                 StaticBehaviours.CheckForPlayerGuardAggro(mob); | ||||||
|  | 
 | ||||||
|  |             AbstractWorldObject newTarget = StaticBehaviours.ChangeTargetFromHateValue(mob); | ||||||
|  | 
 | ||||||
|  |             if (newTarget != null) { | ||||||
|  | 
 | ||||||
|  |                 if (newTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) { | ||||||
|  |                     if (StaticBehaviours.GuardCanAggro(mob, (PlayerCharacter) newTarget)) | ||||||
|  |                         mob.setCombatTarget(newTarget); | ||||||
|  |                 } else | ||||||
|  |                     mob.setCombatTarget(newTarget); | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |             StaticBehaviours.CheckMobMovement(mob); | ||||||
|  |             StaticBehaviours.CheckForAttack(mob); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: GuardCaptainLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void GuardMinionLogic(Mob mob) { | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             StaticBehaviours.checkToDropGuardAggro(mob); | ||||||
|  | 
 | ||||||
|  |             boolean isComanded = mob.npcOwner.isAlive(); | ||||||
|  |             if (!isComanded) { | ||||||
|  |                 GuardCaptainLogic(mob); | ||||||
|  |             }else { | ||||||
|  |                 if (mob.npcOwner.getCombatTarget() != null) | ||||||
|  |                     mob.setCombatTarget(mob.npcOwner.getCombatTarget()); | ||||||
|  |                 else | ||||||
|  |                 if (mob.getCombatTarget() != null) | ||||||
|  |                     mob.setCombatTarget(null); | ||||||
|  |             } | ||||||
|  |             StaticBehaviours.CheckMobMovement(mob); | ||||||
|  |             StaticBehaviours.CheckForAttack(mob); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: GuardMinionLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void GuardWallArcherLogic(Mob mob) { | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  |             StaticBehaviours.checkToDropGuardAggro(mob); | ||||||
|  | 
 | ||||||
|  |             if (mob.getCombatTarget() == null) | ||||||
|  |                 StaticBehaviours.CheckForPlayerGuardAggro(mob); | ||||||
|  |             else | ||||||
|  |                 StaticBehaviours.CheckForAttack(mob); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: GuardWallArcherLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void MagisterCaptainLogic(Mob mob){ | ||||||
|  |         try { | ||||||
|  |             StaticBehaviours.checkToDropGuardAggro(mob); | ||||||
|  |             if (mob.getCombatTarget() == null) | ||||||
|  |                 StaticBehaviours.CheckForPlayerGuardAggro(mob); | ||||||
|  | 
 | ||||||
|  |             AbstractWorldObject newTarget = StaticBehaviours.ChangeTargetFromHateValue(mob); | ||||||
|  | 
 | ||||||
|  |             if (newTarget != null) { | ||||||
|  | 
 | ||||||
|  |                 if (newTarget.getObjectType().equals(Enum.GameObjectType.PlayerCharacter)) { | ||||||
|  |                     if (StaticBehaviours.GuardCanAggro(mob, (PlayerCharacter) newTarget)) | ||||||
|  |                         mob.setCombatTarget(newTarget); | ||||||
|  |                 } else | ||||||
|  |                     mob.setCombatTarget(newTarget); | ||||||
|  | 
 | ||||||
|  |             } | ||||||
|  |             StaticBehaviours.CheckMobMovement(mob); | ||||||
|  |             CheckForCast(mob); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: GuardCaptainLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void MagisterMinionLogic(Mob mob){ | ||||||
|  |         try { | ||||||
|  |             StaticBehaviours.checkToDropGuardAggro(mob); | ||||||
|  | 
 | ||||||
|  |             boolean isComanded = mob.npcOwner.isAlive(); | ||||||
|  |             if (!isComanded) { | ||||||
|  |                 MagisterCaptainLogic(mob); | ||||||
|  |             }else { | ||||||
|  |                 if (mob.npcOwner.getCombatTarget() != null) | ||||||
|  |                     mob.setCombatTarget(mob.npcOwner.getCombatTarget()); | ||||||
|  |                 else | ||||||
|  |                 if (mob.getCombatTarget() != null) | ||||||
|  |                     mob.setCombatTarget(null); | ||||||
|  |             } | ||||||
|  |             StaticBehaviours.CheckMobMovement(mob); | ||||||
|  |             CheckForCast(mob); | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: GuardMinionLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     public static void CheckForCast(Mob mob){ | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,27 @@ | |||||||
|  | package engine.mobileAI.MobBehaviours; | ||||||
|  | 
 | ||||||
|  | import engine.Enum; | ||||||
|  | import engine.objects.Mob; | ||||||
|  | 
 | ||||||
|  | public class SiegeEngine { | ||||||
|  | 
 | ||||||
|  |     public static void run(Mob engine){ | ||||||
|  | 
 | ||||||
|  |         if(StaticBehaviours.EarlyExit(engine)) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         if(engine.getOwner() == null) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         if(engine.combatTarget == null) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         if(engine.combatTarget.loc.distanceSquared(engine.loc) > engine.getRange() * engine.getRange()) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         if(!engine.combatTarget.getObjectType().equals(Enum.GameObjectType.Building)) | ||||||
|  |             return; | ||||||
|  | 
 | ||||||
|  |         StaticBehaviours.CheckForAttack(engine); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -0,0 +1,53 @@ | |||||||
|  | package engine.mobileAI.MobBehaviours; | ||||||
|  | 
 | ||||||
|  | import engine.Enum; | ||||||
|  | import engine.objects.AbstractWorldObject; | ||||||
|  | import engine.objects.Mob; | ||||||
|  | import org.pmw.tinylog.Logger; | ||||||
|  | 
 | ||||||
|  | public class Standard { | ||||||
|  | 
 | ||||||
|  |     public static void run(Mob mob){ | ||||||
|  | 
 | ||||||
|  |         try { | ||||||
|  | 
 | ||||||
|  |             if(StaticBehaviours.EarlyExit(mob)) | ||||||
|  |                 return; | ||||||
|  | 
 | ||||||
|  |             //check for players that can be aggroed if mob is agressive and has no target
 | ||||||
|  | 
 | ||||||
|  |             if (mob.getCombatTarget() != null && !mob.playerAgroMap.containsKey(mob.getCombatTarget().getObjectUUID())) | ||||||
|  |                 mob.setCombatTarget(null); | ||||||
|  | 
 | ||||||
|  |             if (mob.BehaviourType.isAgressive) { | ||||||
|  | 
 | ||||||
|  |                 AbstractWorldObject newTarget = StaticBehaviours.ChangeTargetFromHateValue(mob); | ||||||
|  | 
 | ||||||
|  |                 if (newTarget != null) | ||||||
|  |                     mob.setCombatTarget(newTarget); | ||||||
|  |                 else { | ||||||
|  |                     if (mob.getCombatTarget() == null) { | ||||||
|  |                         if (mob.BehaviourType == Enum.MobBehaviourType.HamletGuard) | ||||||
|  |                             StaticBehaviours.SafeGuardAggro(mob);  //safehold guard
 | ||||||
|  |                         else | ||||||
|  |                             StaticBehaviours.CheckForAggro(mob);   //normal aggro
 | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|  |             //check if mob can move for patrol or moving to target
 | ||||||
|  | 
 | ||||||
|  |             if (mob.BehaviourType.canRoam) | ||||||
|  |                 StaticBehaviours.CheckMobMovement(mob); | ||||||
|  | 
 | ||||||
|  |             //check if mob can attack if it isn't wimpy
 | ||||||
|  | 
 | ||||||
|  |             if (!mob.BehaviourType.isWimpy && mob.getCombatTarget() != null) | ||||||
|  |                 StaticBehaviours.CheckForAttack(mob); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         } catch (Exception e) { | ||||||
|  |             Logger.info(mob.getObjectUUID() + " " + mob.getName() + " Failed At: DefaultLogic" + " " + e.getMessage()); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
									
										
											File diff suppressed because it is too large
											Load Diff
										
									
								
							
						
					Loading…
					
					
				
		Reference in new issue