Difference between revisions of "Route1patrolAI"
From Elite Wiki
(halfway) |
(finishing touches) |
||
| Line 1: | Line 1: | ||
This is another good example how plotting waypoints leads to hellishly complex scripts. | This is another good example how plotting waypoints leads to hellishly complex scripts. | ||
| − | States | + | States defined: |
*'''GLOBAL''': →HEAD_FOR_WITCHPOINT | *'''GLOBAL''': →HEAD_FOR_WITCHPOINT | ||
*'''DOCKING_PLANET''': →HEAD_FOR_PLANET | *'''DOCKING_PLANET''': →HEAD_FOR_PLANET | ||
| Line 10: | Line 10: | ||
*'''GO_TO_WAYPOINT2''': →DOCKING_WITCHPOINT, →HEAD_FOR_WITCHPOINT, →OUTBOUND_LOOT | *'''GO_TO_WAYPOINT2''': →DOCKING_WITCHPOINT, →HEAD_FOR_WITCHPOINT, →OUTBOUND_LOOT | ||
*'''OUTBOUND_LOOT''': →DOCKING_WITCHPOINT, ''→OUTBOUND_LOOT'' | *'''OUTBOUND_LOOT''': →DOCKING_WITCHPOINT, ''→OUTBOUND_LOOT'' | ||
| − | *'''INBOUND_LOOT''': → | + | *'''INBOUND_LOOT''': →DOCKING_PLANET, ''→INBOUND_LOOT'' |
| − | *'''OUTBOUND_CHECK''': → | + | *'''OUTBOUND_CHECK''': →HEAD_FOR_WITCHPOINT, →HYPER_OUT, →OUTBOUND_LOOT |
| − | *'''INBOUND_CHECK''': → | + | *'''INBOUND_CHECK''': →HEAD_FOR_PLANET, →HYPER_OUT, →INBOUND_LOOT |
*'''HYPER_OUT''': → | *'''HYPER_OUT''': → | ||
| + | |||
| + | Referes to AI's: [[interceptAI.plist]], [[collectLootAI.plist]] | ||
{ | { | ||
| Line 147: | Line 149: | ||
UPDATE = (); }; | UPDATE = (); }; | ||
} | } | ||
| + | |||
| + | [[AI|BACK]] | ||
Revision as of 00:15, 2 February 2006
This is another good example how plotting waypoints leads to hellishly complex scripts.
States defined:
- GLOBAL: →HEAD_FOR_WITCHPOINT
- DOCKING_PLANET: →HEAD_FOR_PLANET
- DOCKING_WITCHPOINT: →HEAD_FOR_WITCHPOINT, →ATTACK_TARGET
- HEAD_FOR_PLANET: →DOCKING_PLANET, →GO_TO_WAYPOINT1, →HEAD_FOR_WITCHPOINT, →INBOUND_LOOT
- GO_TO_WAYPOINT1: →DOCKING_PLANET, →HEAD_FOR_PLANET, →INBOUND_LOOT
- HEAD_FOR_WITCHPOINT: →DOCKING_WITCHPOINT, →GO_TO_WAYPOINT2, →HEAD_FOR_PLANET, →OUTBOUND_LOOT
- GO_TO_WAYPOINT2: →DOCKING_WITCHPOINT, →HEAD_FOR_WITCHPOINT, →OUTBOUND_LOOT
- OUTBOUND_LOOT: →DOCKING_WITCHPOINT, →OUTBOUND_LOOT
- INBOUND_LOOT: →DOCKING_PLANET, →INBOUND_LOOT
- OUTBOUND_CHECK: →HEAD_FOR_WITCHPOINT, →HYPER_OUT, →OUTBOUND_LOOT
- INBOUND_CHECK: →HEAD_FOR_PLANET, →HYPER_OUT, →INBOUND_LOOT
- HYPER_OUT: →
Referes to AI's: interceptAI.plist, collectLootAI.plist
{
"DOCKING_PLANET" = {
ENTER = ("setSpeedFactorTo: 0.0", performIdle);
"DOCKING_COMPLETE" = ("setStateTo: HEAD_FOR_PLANET");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget);
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, groupAttackTarget);
"TARGET_FOUND" = (setTargetToFoundTarget, groupAttackTarget);
EXIT = ();
UPDATE = (scanForHostiles, "pauseAI: 10.0"); };
"DOCKING_WITCHPOINT" = {
ENTER = ("setSpeedFactorTo: 0.0", performIdle);
"DOCKING_COMPLETE" = ("setStateTo: HEAD_FOR_WITCHPOINT");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setStateTo: ATTACK_TARGET");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, launchDefenseShip, groupAttackTarget, "setStateTo: ATTACK_TARGET");
"TARGET_FOUND" = (setTargetToFoundTarget, launchDefenseShip, groupAttackTarget);
EXIT = ();
UPDATE = (scanForHostiles, "pauseAI: 10.0"); };
"HEAD_FOR_PLANET" = {
ENTER = (setCourseToPlanet, "setDesiredRangeTo: 50000.0", checkCourseToDestination);
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_PLANET");
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT1");
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_WITCHPOINT");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist");
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
EXIT = ();
UPDATE = (scanForOffenders, "pauseAI: 10.0");
RESTARTED = ("setStateTo: INBOUND_LOOT"); };
"GO_TO_WAYPOINT1" = {
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_PLANET");
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
EXIT = ();
UPDATE = ();
RESTARTED = ("setStateTo: INBOUND_LOOT"); };
"HEAD_FOR_WITCHPOINT" = {
ENTER = (setCourseToWitchpoint, checkCourseToDestination);
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_WITCHPOINT");
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
"WAYPOINT_SET" = ("setStateTo: GO_TO_WAYPOINT2");
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_PLANET");
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
FRUSTRATED = ("setStateTo: HEAD_FOR_WITCHPOINT");
EXIT = ();
UPDATE = (scanForOffenders, "pauseAI: 10.0");
RESTARTED = ("setStateTo: OUTBOUND_LOOT"); };
"GO_TO_WAYPOINT2" = {
ENTER = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_WITCHPOINT");
"COURSE_OK" = ("setSpeedFactorTo: 0.8", performFlyToRangeFromDestination);
"WAYPOINT_SET" = ("setDesiredRangeTo: 50.0", checkCourseToDestination);
"DESIRED_RANGE_ACHIEVED" = ("setStateTo: HEAD_FOR_WITCHPOINT");
"ACCEPT_DISTRESS_CALL" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
EXIT = ();
UPDATE = ();
RESTARTED = ("setStateTo: OUTBOUND_LOOT"); };
"OUTBOUND_LOOT" = {
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_WITCHPOINT");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
ENTER = ("setSpeedTo: 0.0", performIdle);
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: OUTBOUND_LOOT");
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
"NOTHING_FOUND" = ("setStateTo: OUTBOUND_CHECK");
UPDATE = (scanForLoot, "pauseAI: 10.0"); };
"INBOUND_LOOT" = {
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
"DOCKING_REQUESTED" = ("setSpeedFactorTo: 0.0", "setStateTo: DOCKING_PLANET");
ATTACKED = (setTargetToPrimaryAggressor, groupAttackTarget);
ENTER = ("setSpeedTo: 0.0", performIdle);
EXIT = ();
"INCOMING_MISSILE" = (fightOrFleeMissile, setTargetToPrimaryAggressor, deployEscorts, groupAttackTarget, "setAITo: interceptAI.plist", "setStateTo: INBOUND_LOOT");
"TARGET_FOUND" = (setTargetToFoundTarget, "setAITo: collectLootAI.plist");
"NOTHING_FOUND" = ("setStateTo: INBOUND_CHECK");
UPDATE = (scanForLoot, "pauseAI: 10.0"); };
"INBOUND_CHECK" = {
ENTER = (scanForOffenders, checkForNormalSpace);
EXIT = ();
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
RESTARTED = ("setStateTo: INBOUND_LOOT");
"NORMAL_SPACE" = ("setStateTo: HEAD_FOR_PLANET");
"INTERSTELLAR_SPACE" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: HYPER_OUT");
UPDATE = (); };
"OUTBOUND_CHECK" = {
ENTER = (scanForOffenders, checkForNormalSpace);
EXIT = ();
"TARGET_FOUND" = (setTargetToFoundTarget, deployEscorts, groupAttackTarget);
"GROUP_ATTACK_TARGET" = (setTargetToFoundTarget, "setAITo: interceptAI.plist");
RESTARTED = ("setStateTo: OUTBOUND_LOOT");
"NORMAL_SPACE" = ("setStateTo: HEAD_FOR_WITCHPOINT");
"INTERSTELLAR_SPACE" = ("setSpeedFactorTo: 1.0", "pauseAI: 15.0", "setStateTo: HYPER_OUT");
UPDATE = (); };
"HYPER_OUT" = {
ENTER = ();
EXIT = ();
UPDATE = (performHyperSpaceExit); };
GLOBAL = {
ENTER = ("setStateTo: HEAD_FOR_WITCHPOINT");
EXIT = ();
UPDATE = (); };
}