Difference between revisions of "DockingAI"
From Elite Wiki
Eric Walch (talk | contribs) (script example from Oolite -> scripting page) |
|||
Line 4: | Line 4: | ||
{ |
{ |
||
− | "AWAIT_COORDS" = { |
||
+ | GLOBAL = |
||
− | "APPROACH_START" = ("setStateTo: GO_TO_START"); |
||
+ | { |
||
− | "APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS"); |
||
+ | ENTER = |
||
− | "HOLD_POSITION" = (performIdle, "pauseAI: 10.0", "setStateTo: GLOBAL"); |
||
+ | ( |
||
− | "DOCKING_ABORTED" = ("setStateTo: ABORT"); |
||
+ | "dropMessages: DOCKING_ABORTED,FACING_DESTINATION", |
||
− | "TRY_AGAIN_LATER" = ("pauseAI: 30.0", "setStateTo: ABORT"); |
||
+ | "setSpeedTo: 0.0", |
||
− | "COLLISION" = ("setStateTo: ABORT"); |
||
+ | requestDockingCoordinates, |
||
− | + | "setStateTo: AWAIT_COORDS" |
|
− | + | ); |
|
− | + | }; |
|
− | EXIT = (); |
||
− | UPDATE = ();}; |
||
− | : |
||
− | ABORT = { |
||
+ | "AWAIT_COORDS" = |
||
− | ENTER = (abortDocking, "setSpeedFactorTo: 0.0", setDestinationToDockingAbort, "setDesiredRangeTo: 500.0", performFaceDestination); |
||
+ | { |
||
− | "FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination); |
||
+ | "APPROACH" = ("setStateTo: APPROACH"); |
||
− | EXIT = (); |
||
+ | "APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS"); |
||
− | + | "BACK_OFF" = ("setStateTo: RETREAT"); |
|
− | + | "HOLD_POSITION" = ("setStateTo: STATIONKEEPING"); |
|
− | + | "DOCKING_ABORTED" = ("setStateTo: ABORT"); |
|
− | + | "TRY_AGAIN_LATER" = ("pauseAI: 30.0", "setStateTo: ABORT"); |
|
+ | "COLLISION" = ("setStateTo: ABORT"); |
||
+ | "RESTART_DOCKING" = ("setStateTo: GLOBAL"); |
||
+ | "TOO_BIG_TO_DOCK" = ("exitAIWithMessage: DOCKING_REFUSED"); |
||
+ | DOCKED = ("setStateTo: EXIT_SYSTEM"); |
||
+ | "NO_STATION_FOUND" = ("setStateTo: EXIT_SYSTEM"); |
||
+ | UPDATE = ("pauseAI: 2"); |
||
+ | }; |
||
− | GLOBAL = { |
||
+ | STATIONKEEPING = |
||
− | ENTER = ("setSpeedTo: 0.0", "setDesiredRangeTo: 5.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
||
+ | { |
||
− | EXIT = (); |
||
+ | ENTER = (performIdle, "setSpeedTo: 0.0", "pauseAI: 10.0"); |
||
− | UPDATE = (); }; |
||
+ | ATTACKED = ("setStateTo: ATTACK_SHIP"); |
||
+ | "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); |
||
+ | "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); |
||
+ | UPDATE = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
||
+ | }; |
||
− | "GO_TO_WAYPOINT" = { |
||
+ | APPROACH = |
||
− | ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination); |
||
+ | { |
||
− | + | ENTER = (recallDockingInstructions, "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination); |
|
− | + | "DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
|
− | + | "DOCKING_ABORTED" = ("setStateTo: ABORT"); |
|
− | + | "COLLISION" = ("setStateTo: ABORT"); |
|
− | + | ATTACKED = ("setStateTo: ATTACK_SHIP"); |
|
+ | "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); |
||
+ | "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); |
||
+ | "RESTART_DOCKING" = ("setStateTo: GLOBAL"); |
||
+ | }; |
||
− | "GO_TO_START" = { |
||
+ | RETREAT = |
||
− | ENTER = ("setSpeedFactorTo: 0.05", setDestinationFromCoordinates, |
||
+ | { |
||
− | checkCourseToDestination); |
||
+ | ENTER = (recallDockingInstructions, "setSpeedTo: 0.0", setDestinationToDockingAbort, performFaceDestination); |
||
− | "WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT"); |
||
+ | "FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination); |
||
− | "COURSE_OK" = ("setSpeedFactorTo: 0.25", performFaceDestination); |
||
+ | "DESIRED_RANGE_ACHIEVED" = ("setSpeedTo: 0.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
||
− | "FACING_DESTINATION" = ("setDesiredRangeTo: 50.0", "setSpeedFactorTo: 0.85", |
||
+ | ATTACKED = ("setStateTo: ATTACK_SHIP"); |
||
− | performFlyToRangeFromDestination); |
||
+ | "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); |
||
− | "DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
||
+ | "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); |
||
− | + | "DOCKING_ABORTED" = ("setStateTo: ABORT"); |
|
− | + | "COLLISION" = ("setStateTo: ABORT"); |
|
− | + | "RESTART_DOCKING" = ("setStateTo: GLOBAL"); |
|
− | + | }; |
|
− | UPDATE = (); }; |
||
− | + | "GO_TO_COORDS" = |
|
− | + | { |
|
− | + | ENTER = (performFaceDestination, dockEscorts); |
|
− | + | "FRUSTRATED" = (performFaceDestination); |
|
− | + | "FACING_DESTINATION" = (recallDockingInstructions, performFlyToRangeFromDestination); |
|
− | + | ATTACKED = ("setStateTo: ATTACK_SHIP"); |
|
− | + | "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); |
|
− | + | "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); |
|
− | + | "DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); |
|
− | + | "DOCKING_ABORTED" = ("setStateTo: ABORT"); |
|
+ | "COLLISION" = ("setStateTo: ABORT"); |
||
+ | "RESTART_DOCKING" = ("setStateTo: GLOBAL"); |
||
+ | DOCKED = ("setStateTo: EXIT_SYSTEM"); |
||
+ | }; |
||
− | "EXIT_SYSTEM" = {ENTER = (performDocking, exitAI); EXIT = (); UPDATE = (); }; |
||
+ | ABORT = |
||
+ | { |
||
+ | ENTER = (abortDocking, "setSpeedTo: 0.0", setDestinationToDockingAbort, "setDesiredRangeTo: 500.0", performFaceDestination); |
||
+ | "FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination); |
||
+ | "RESTART_DOCKING" = ("setStateTo: GLOBAL"); |
||
+ | "REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL"); |
||
+ | "DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: GLOBAL"); |
||
+ | ATTACKED = ("setStateTo: ATTACK_SHIP"); |
||
+ | "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); |
||
+ | "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); |
||
+ | }; |
||
+ | "ATTACK_SHIP" = |
||
+ | { |
||
+ | ENTER = (abortDocking, setTargetToFoundTarget, "setAITo: interceptAI.plist"); |
||
+ | RESTARTED = (performIdle, "setStateTo: GLOBAL"); |
||
+ | }; |
||
+ | |||
+ | "EXIT_SYSTEM" = |
||
+ | { |
||
+ | ENTER = (exitAI); |
||
+ | }; |
||
+ | } |
||
'''[[AI|BACK]]''' |
'''[[AI|BACK]]''' |
||
− | [[Category:Oolite]] |
+ | [[Category:Oolite scripting]] |
Latest revision as of 13:04, 2 January 2011
An extremely complex JobAI.
States: ABORT, AWAIT_COORDS, EXIT_SYSTEM, GLOBAL, GO_TO_WAYPOINT, GO_TO_START, GO_TO_COORDS.
{ GLOBAL = { ENTER = ( "dropMessages: DOCKING_ABORTED,FACING_DESTINATION", "setSpeedTo: 0.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS" ); };
"AWAIT_COORDS" = { "APPROACH" = ("setStateTo: APPROACH"); "APPROACH_COORDINATES" = ("setStateTo: GO_TO_COORDS"); "BACK_OFF" = ("setStateTo: RETREAT"); "HOLD_POSITION" = ("setStateTo: STATIONKEEPING"); "DOCKING_ABORTED" = ("setStateTo: ABORT"); "TRY_AGAIN_LATER" = ("pauseAI: 30.0", "setStateTo: ABORT"); "COLLISION" = ("setStateTo: ABORT"); "RESTART_DOCKING" = ("setStateTo: GLOBAL"); "TOO_BIG_TO_DOCK" = ("exitAIWithMessage: DOCKING_REFUSED"); DOCKED = ("setStateTo: EXIT_SYSTEM"); "NO_STATION_FOUND" = ("setStateTo: EXIT_SYSTEM"); UPDATE = ("pauseAI: 2"); };
STATIONKEEPING = { ENTER = (performIdle, "setSpeedTo: 0.0", "pauseAI: 10.0"); ATTACKED = ("setStateTo: ATTACK_SHIP"); "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); UPDATE = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); };
APPROACH = { ENTER = (recallDockingInstructions, "setSpeedFactorTo: 1.0", performFlyToRangeFromDestination); "DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); "DOCKING_ABORTED" = ("setStateTo: ABORT"); "COLLISION" = ("setStateTo: ABORT"); ATTACKED = ("setStateTo: ATTACK_SHIP"); "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); "RESTART_DOCKING" = ("setStateTo: GLOBAL"); };
RETREAT = { ENTER = (recallDockingInstructions, "setSpeedTo: 0.0", setDestinationToDockingAbort, performFaceDestination); "FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination); "DESIRED_RANGE_ACHIEVED" = ("setSpeedTo: 0.0", requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); ATTACKED = ("setStateTo: ATTACK_SHIP"); "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); "DOCKING_ABORTED" = ("setStateTo: ABORT"); "COLLISION" = ("setStateTo: ABORT"); "RESTART_DOCKING" = ("setStateTo: GLOBAL"); };
"GO_TO_COORDS" = { ENTER = (performFaceDestination, dockEscorts); "FRUSTRATED" = (performFaceDestination); "FACING_DESTINATION" = (recallDockingInstructions, performFlyToRangeFromDestination); ATTACKED = ("setStateTo: ATTACK_SHIP"); "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); "DESIRED_RANGE_ACHIEVED" = (requestDockingCoordinates, "setStateTo: AWAIT_COORDS"); "DOCKING_ABORTED" = ("setStateTo: ABORT"); "COLLISION" = ("setStateTo: ABORT"); "RESTART_DOCKING" = ("setStateTo: GLOBAL"); DOCKED = ("setStateTo: EXIT_SYSTEM"); };
ABORT = { ENTER = (abortDocking, "setSpeedTo: 0.0", setDestinationToDockingAbort, "setDesiredRangeTo: 500.0", performFaceDestination); "FACING_DESTINATION" = ("setSpeedFactorTo: 1.0", "setDesiredRangeTo: 500.0", performFlyToRangeFromDestination); "RESTART_DOCKING" = ("setStateTo: GLOBAL"); "REACHED_SAFETY" = (performIdle, "setStateTo: GLOBAL"); "DESIRED_RANGE_ACHIEVED" = (performIdle, "setStateTo: GLOBAL"); ATTACKED = ("setStateTo: ATTACK_SHIP"); "OFFENCE_COMMITTED" = (setTargetToFoundTarget, "markTargetForOffence: 7", "setStateTo: ATTACK_SHIP"); "GROUP_ATTACK_TARGET" = ("setStateTo: ATTACK_SHIP"); };
"ATTACK_SHIP" = { ENTER = (abortDocking, setTargetToFoundTarget, "setAITo: interceptAI.plist"); RESTARTED = (performIdle, "setStateTo: GLOBAL"); };
"EXIT_SYSTEM" = { ENTER = (exitAI); }; }