1
/* jaguar_company_minerAI.plist
3
* Copyright © 2012 Richard Thomas Harrison (Tricky)
5
* This work is licensed under the Creative Commons
6
* Attribution-Noncommercial-Share Alike 3.0 Unported License.
8
* To view a copy of this license, visit
9
* http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter
10
* to Creative Commons, 171 Second Street, Suite 300, San Francisco,
11
* California, 94105, USA.
13
* AI for the Jaguar Company miner.
19
ENTER = ("setSpeedFactorTo: 0.1", "setStateTo: LOOK_FOR_SPLINTERS");
20
/* Exited witchspace from interstellar space. Go to the nearest base or station. */
21
"EXITED WITCHSPACE" = ("setStateTo: GO_TO_STATION");
26
ENTER = (performIdle);
27
/* This will be caught by $scanForCascadeWeapon which should work for Oolite v1.74+
28
* Emulates the Oolite v1.77 and newer method of supplying a message for cascade weapons being deployed.
30
"CASCADE_WEAPON_FOUND" = ("sendScriptMessage: $saveAIState", "setStateTo: CASCADE_WEAPON_FOUND");
31
/* Let everyone know that someone is shooting at us.
32
* See $shipIsBeingAttacked in jaguar_company_attackers.js
33
* JAGUAR_COMPANY_ATTACK_TARGET is returned to the caller and other Jaguar Company ships not fighting.
35
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
36
/* Deal with incoming missile. */
39
"sendScriptMessage: $saveAIState",
40
"setStateTo: MISSILE_DETECTED",
41
"randomPauseAI: 0.25 0.75"
43
/* Respond to an attack call by fleeing. */
44
"JAGUAR_COMPANY_ATTACK_TARGET" = ("setStateTo: FLEE");
45
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: BREAK_ROCKS");
46
"NOTHING_FOUND" = ("setStateTo: GO_TO_STATION");
47
UPDATE = ("pauseAI: 8.0", scanForRocks, "sendScriptMessage: $scanForCascadeWeapon");
52
ENTER = (performMining);
53
/* Combat messages. See LOOK_FOR_ROCKS. */
54
"CASCADE_WEAPON_FOUND" =
56
"sendScriptMessage: $saveAIState LOOK_FOR_SPLINTERS",
57
"setStateTo: CASCADE_WEAPON_FOUND"
59
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
62
"sendScriptMessage: $saveAIState",
63
"setStateTo: MISSILE_DETECTED",
64
"randomPauseAI: 0.25 0.75"
66
/* Respond to an attack call by fleeing. */
67
"JAGUAR_COMPANY_ATTACK_TARGET" = ("setStateTo: FLEE");
68
"TARGET_DESTROYED" = ("setStateTo: LOOK_FOR_SPLINTERS");
69
"TARGET_LOST" = ("setStateTo: LOOK_FOR_SPLINTERS");
70
UPDATE = ("pauseAI: 8.0", "sendScriptMessage: $scanForCascadeWeapon");
73
"LOOK_FOR_SPLINTERS" =
75
ENTER = (performIdle, checkForFullHold);
76
/* Combat messages. See LOOK_FOR_ROCKS. */
77
"CASCADE_WEAPON_FOUND" =
79
"sendScriptMessage: $saveAIState LOOK_FOR_SPLINTERS",
80
"setStateTo: CASCADE_WEAPON_FOUND"
82
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
85
"sendScriptMessage: $saveAIState",
86
"setStateTo: MISSILE_DETECTED",
87
"randomPauseAI: 0.25 0.75"
89
/* Respond to an attack call by fleeing. */
90
"JAGUAR_COMPANY_ATTACK_TARGET" = ("setStateTo: FLEE");
91
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: COLLECT_STUFF");
92
"NOTHING_FOUND" = ("setStateTo: LOOK_FOR_ROCKS");
93
"HOLD_FULL" = ("setStateTo: GO_TO_STATION");
94
"NO_CARGO_BAY" = ("setStateTo: GO_TO_STATION");
95
UPDATE = ("pauseAI: 8.0", scanForLoot, "sendScriptMessage: $scanForCascadeWeapon");
100
ENTER = (performCollect);
101
/* Combat messages. See LOOK_FOR_ROCKS. */
102
"CASCADE_WEAPON_FOUND" =
104
"sendScriptMessage: $saveAIState LOOK_FOR_SPLINTERS",
105
"setStateTo: CASCADE_WEAPON_FOUND"
107
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
110
"sendScriptMessage: $saveAIState",
111
"setStateTo: MISSILE_DETECTED",
112
"randomPauseAI: 0.25 0.75"
114
/* Respond to an attack call by fleeing. */
115
"JAGUAR_COMPANY_ATTACK_TARGET" = ("setStateTo: FLEE");
116
FRUSTRATED = ("setStateTo: LOOK_FOR_SPLINTERS");
117
"CARGO_SCOOPED" = ("setStateTo: LOOK_FOR_SPLINTERS");
118
"HOLD_FULL" = ("setStateTo: GO_TO_STATION");
119
"TARGET_LOST" = ("setStateTo: LOOK_FOR_SPLINTERS");
120
"COLLISION" = ("setStateTo: LOOK_FOR_SPLINTERS");
121
UPDATE = ("pauseAI: 8.0", "sendScriptMessage: $scanForCascadeWeapon");
126
/* Search for the base and get it's co-ordinates. */
127
ENTER = ("sendScriptMessage: $setCoordsToJaguarCompanyBase");
128
/* Combat messages. See LOOK_FOR_ROCKS. */
129
"CASCADE_WEAPON_FOUND" = ("sendScriptMessage: $saveAIState", "setStateTo: CASCADE_WEAPON_FOUND");
130
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
133
"sendScriptMessage: $saveAIState",
134
"setStateTo: MISSILE_DETECTED",
135
"randomPauseAI: 0.25 0.75"
137
/* Respond to an attack call by fleeing. */
138
"JAGUAR_COMPANY_ATTACK_TARGET" = ("setStateTo: FLEE");
139
/* Co-ordinates set to the base so let's set a course to it. */
140
"JAGUAR_COMPANY_BASE_FOUND" =
142
setDestinationFromCoordinates,
143
"setDesiredRangeTo: 5000.0",
144
checkCourseToDestination
147
* Probably blown up by a pirate or thargoid. Hyperspace out to another system.
149
"JAGUAR_COMPANY_BASE_NOT_FOUND" = ("addFuel: 7", performHyperSpaceExitWithoutReplacing);
151
"COURSE_OK" = (setSpeedToCruiseSpeed, performFlyToRangeFromDestination);
152
/* Something in the way. */
153
"WAYPOINT_SET" = ("setAITo: jaguar_company_waypointAI.plist");
154
/* Start docking procedures. */
155
"DESIRED_RANGE_ACHIEVED" = (setTargetToNearestStation, "setAITo: jaguar_company_dockingAI.plist");
156
/* Wandered into a wormhole whilst in waypoint AI. */
157
WORMHOLE = ("setStateTo: GLOBAL");
158
/* Search for the base and get it's co-ordinates. Also check for cascade weapons. */
162
"sendScriptMessage: $setCoordsToJaguarCompanyBase",
163
"sendScriptMessage: $scanForCascadeWeapon"
169
ENTER = ("setDesiredRangeTo: 25600", performFlee);
170
/* Combat messages. See LOOK_FOR_ROCKS. */
171
"CASCADE_WEAPON_FOUND" =
173
"sendScriptMessage: $saveAIState LOOK_FOR_SPLINTERS",
174
"setStateTo: CASCADE_WEAPON_FOUND"
176
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
179
"sendScriptMessage: $saveAIState LOOK_FOR_SPLINTERS",
180
"setStateTo: MISSILE_DETECTED",
181
"randomPauseAI: 0.25 0.75"
183
/* Reached safety. */
184
"REACHED_SAFETY" = ("setSpeedTo: 0.0", performIdle);
185
"ENERGY_FULL" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
186
"TARGET_LOST" = (performIdle, "setStateTo: LOOK_FOR_SPLINTERS");
189
/* Either fight or flee from the missile. */
192
/* Check for cascade weapons whilst fleeing to a range of 10km from the missile. */
193
ENTER = ("sendScriptMessage: $scanForCascadeWeapon", "setDesiredRangeTo: 10000.0", performFlee);
194
/* Combat messages. See LOOK_FOR_ROCKS. */
195
"CASCADE_WEAPON_FOUND" = ("setStateTo: CASCADE_WEAPON_FOUND");
196
"HOSTILE_FIRE" = (setTargetToPrimaryAggressor, "sendScriptMessage: $performJaguarCompanyAttackTarget");
197
/* Break off flee to deal with incoming missile. */
198
"INCOMING_MISSILE" = ("setStateTo: MISSILE_DETECTED", "randomPauseAI: 0.25 0.75");
199
/* Current target was either destroyed or disappeared off the scanner. Recall the last state. */
200
"TARGET_DESTROYED" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
201
"TARGET_LOST" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
202
/* We have put some distance between us and the missile. Recall the last state. */
203
"REACHED_SAFETY" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
204
/* Fire the ECM every 10 seconds and check for cascade weapons. */
205
UPDATE = ("pauseAI: 8.0", fightOrFleeMissile, "sendScriptMessage: $scanForCascadeWeapon");
208
/* Deal with incoming missile. */
211
/* Fire the ECM (if available) and flee from the missile. */
214
setTargetToPrimaryAggressor,
216
"sendScriptMessage: $performJaguarCompanyAttackTarget",
217
"setStateTo: FLEE_FOR_MISSILE"
221
/* Run away (anywhere). Target has already been set */
222
"CASCADE_WEAPON_FOUND" =
224
ENTER = (setDestinationToTarget, "setDesiredRangeTo: 25600.0", performFlee, "pauseAI: 2.0");
225
"CASCADE_WEAPON_FOUND" = ("setStateTo: CASCADE_WEAPON_FOUND");
226
"TARGET_LOST" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
227
"REACHED_SAFETY" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
228
"DESIRED_RANGE_ACHIEVED" = ("sendScriptMessage: $recallAIState", "pauseAI: 2.0");
229
UPDATE = ("pauseAI: 2.0", "sendScriptMessage: $scanForCascadeWeapon");
b'\\ No newline at end of file'