1
/* jaguar_company_interceptAI.plist for the Jaguar Company.
3
** Copyright (C) 2012 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
** Intercept AI for the Jaguar Company.
14
** Based on interceptAI.plist without the wormhole states.
18
/* Switch the running lights on and enter attack mode. */
21
ENTER = (switchLightsOn, "setStateTo: ATTACK_SHIP");
24
/* Attack the ship. */
27
ENTER = ("setSpeedFactorTo: 1.0", performAttack);
28
"CASCADE_WEAPON_DETECTED" = ("setStateTo: QBOMB_DETECTED");
29
ATTACKED = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
30
"INCOMING_MISSILE" = ("setStateTo: MISSILE_DETECTED", "randomPauseAI: 0.25 0.75");
31
"ENERGY_LOW" = ("setStateTo: FLEE");
32
"TARGET_DESTROYED" = (performIdle, switchLightsOff, exitAI);
33
"TARGET_LOST" = (performIdle, switchLightsOff, exitAI);
34
FRUSTRATED = (performIdle, switchLightsOff, exitAI);
35
UPDATE = (performAttack, "sendScriptMessage: $detectQBomb", "pauseAI: 2.0");
38
/* General purpose fight or flee state. */
41
ENTER = ("setDesiredRangeTo: 10000", "setSpeedFactorTo: 7.0", performFlee);
42
"CASCADE_WEAPON_DETECTED" = ("setStateTo: QBOMB_DETECTED");
43
ATTACKED = (fightOrFleeHostiles);
44
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
45
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
46
"ENERGY_FULL" = ("setStateTo: ATTACK_SHIP");
47
"TARGET_DESTROYED" = ("setSpeedFactorTo: 1.0", scanForHostiles);
48
"TARGET_LOST" = ("setSpeedFactorTo: 1.0", scanForHostiles);
49
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
50
"NOTHING_FOUND" = (performIdle, switchLightsOff, exitAI);
51
"REACHED_SAFETY" = ("setStateTo: ATTACK_SHIP");
52
"INCOMING_MISSILE" = ("setStateTo: MISSILE_DETECTED", "randomPauseAI: 0.25 0.75");
53
UPDATE = ("addFuel: 1.0", performFlee, "sendScriptMessage: $detectQBomb", "pauseAI: 5.0");
56
/* Either fight or flee from the missile. */
57
"FLEE_FOR_MISSILE" = {
58
ENTER = ("setDesiredRangeTo: 10000", "setSpeedFactorTo: 7.0", fightOrFleeMissile, "pauseAI: 5.0");
59
"CASCADE_WEAPON_DETECTED" = ("setStateTo: QBOMB_DETECTED");
60
ATTACKED = (fightOrFleeHostiles);
61
FIGHTING = (setTargetToPrimaryAggressor, "setStateTo: ATTACK_SHIP");
62
FLEEING = (setTargetToPrimaryAggressor, "setStateTo: FLEE");
63
"TARGET_DESTROYED" = ("setSpeedFactorTo: 1.0", scanForHostiles);
64
"TARGET_LOST" = ("setSpeedFactorTo: 1.0", scanForHostiles);
65
"TARGET_FOUND" = (setTargetToFoundTarget, "setStateTo: ATTACK_SHIP");
66
"NOTHING_FOUND" = (performIdle, switchLightsOff, exitAI);
67
"REACHED_SAFETY" = ("setStateTo: ATTACK_SHIP");
68
"INCOMING_MISSILE" = ("setStateTo: MISSILE_DETECTED", "randomPauseAI: 0.25 0.75");
69
UPDATE = ("addFuel: 1.0", fightOrFleeMissile, "sendScriptMessage: $detectQBomb", "pauseAI: 5.0");
72
/* Deal with incoming missiles. */
73
"MISSILE_DETECTED" = {
74
"CASCADE_WEAPON_DETECTED" = ("setStateTo: QBOMB_DETECTED");
75
ATTACKED = ("setStateTo: ATTACK_SHIP", fightOrFleeMissile, setTargetToPrimaryAggressor);
76
UPDATE = (setTargetToPrimaryAggressor, fightOrFleeMissile, "setStateTo: FLEE_FOR_MISSILE", "sendScriptMessage: $detectQBomb");
79
/* Run away (anywhere) as fast as possible. */
82
ENTER = ("setDesiredRangeTo: 51200.0", "setSpeedFactorTo: 7.0", performFlee);
83
"CASCADE_WEAPON_DETECTED" = ("setStateTo: QBOMB_DETECTED");
84
"REACHED_SAFETY" = (performIdle, "pauseAI: 10.0", switchLightsOff, exitAI);
85
"DESIRED_RANGE_ACHIEVED" = (performIdle, "pauseAI: 10.0", switchLightsOff, exitAI);
86
UPDATE = ("addFuel: 1.0", performFlee, "sendScriptMessage: $detectQBomb", "pauseAI: 5.0");