Difference between revisions of "RockHermitAI"

From Elite Wiki
m
(script example from Oolite -> scripting page)
 
Line 59: Line 59:
  
  
[[Category:Oolite]]
+
[[Category:Oolite scripting]]

Latest revision as of 12:15, 2 January 2011

This state machine defines the behaviour (by alert levels) of hermitages. Launches miners, scavengers or defence ships, depending on situation.

Defined states:

  • GLOBAL: →IDLE
  • IDLE: →CHECK_FOR_DEBRIS, →DEFENSE_MODE
  • CHECK_FOR_DEBRIS: →CHECK_FOR_ROCKS, →DEFENSE_MODE
  • CHECK_FOR_ROCKS: →IDLE, →DEFENSE_MODE
  • DEFENSE_MODE: →IDLE, →CHECK_FOR_DEBRIS

Refered to AI's: none.


{
   "DEFENSE_MODE" = {
       ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel); 
       ENTER = (); 
       EXIT = (); 
       "RED_ALERT" = (launchDefenseShip); 
       "YELLOW_ALERT" = ("setStateTo: IDLE"); 
       "CONDITION_YELLOW" = ("setStateTo: IDLE"); 
       "CONDITION_GREEN" = ("setStateTo: CHECK_FOR_DEBRIS"); 
       "INCOMING_MISSILE" = (increaseAlertLevel); 
       "ENERGY_FULL" = ("pauseAI: 20.0", "setStateTo: IDLE"); 
       "TARGET_DESTROYED" = ("pauseAI: 20.0", "setStateTo: IDLE"); 
       "TARGET_LOST" = ("pauseAI: 20.0", "setStateTo: IDLE"); 
       "NO_TARGET" = ("pauseAI: 20.0", "setStateTo: IDLE"); 
       UPDATE = ();     }; 
   "CHECK_FOR_DEBRIS" = {
       ENTER = (); 
       UPDATE = (scanForLoot, "pauseAI: 20.0"); 
       "TARGET_FOUND" = (launchScavenger, "setStateTo: IDLE"); 
       "NOTHING_FOUND" = ("setStateTo: CHECK_FOR_ROCKS", "pauseAI: 20.0"); 
       EXIT = (); 
       ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE"); 
       "INCOMING_MISSILE" = (fireECM, increaseAlertLevel);     }; 
   "CHECK_FOR_ROCKS" = {
       ENTER = (); 
       UPDATE = (scanForRocks, "pauseAI: 20.0"); 
       "TARGET_FOUND" = (launchMiner, "setStateTo: IDLE"); 
       "NOTHING_FOUND" = ("setStateTo: IDLE", "pauseAI: 20.0"); 
       EXIT = (); 
       ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE"); 
       "INCOMING_MISSILE" = (fireECM, increaseAlertLevel);     }; 
   GLOBAL = {ENTER = ("setStateTo: IDLE"); EXIT = (); UPDATE = (); }; 
   IDLE = {
       ATTACKED = (setTargetToPrimaryAggressor, increaseAlertLevel, "setStateTo: DEFENSE_MODE"); 
       ENTER = (); 
       EXIT = (); 
       "INCOMING_MISSILE" = (increaseAlertLevel); 
       UPDATE = (decreaseAlertLevel, "setStateTo: CHECK_FOR_DEBRIS"); 
   }; 
}

BACK