21 #define OPERATOR_LENGTH 30 // if this ever exceeds TOKEN_LENGTH, let JasonH know!
23 #define MAX_SEXP_VARIABLES 250
25 #define MAX_OPERATORS 1024 // Yes, this is used, but not by the Sexp code.
28 #define OPF_NONE 1 // argument cannot exist at this position if it's this
29 #define OPF_NULL 2 // no value. Can still be used for type matching, however
34 #define OPF_SUBSYSTEM 7
35 #define OPF_POINT 8 // either a 3d point in space, or a waypoint name
37 #define OPF_AI_GOAL 10 // special to match ai goals
38 #define OPF_DOCKER_POINT 11 // docking point on docker ship
39 #define OPF_DOCKEE_POINT 12 // docking point on dockee ship
40 #define OPF_MESSAGE 13 // the name (id) of a message in Messages[] array
41 #define OPF_WHO_FROM 14 // who sent the message -- doesn't necessarily have to be a ship!!!
42 #define OPF_PRIORITY 15 // priority for messages
43 #define OPF_WAYPOINT_PATH 16 // name of a waypoint
44 #define OPF_POSITIVE 17 // positive number or zero
45 #define OPF_MISSION_NAME 18 // name of a mission for various mission related things
46 #define OPF_SHIP_POINT 19 // a waypoint or a ship
47 #define OPF_GOAL_NAME 20 // name of goal (or maybe event?) from a mission
48 #define OPF_SHIP_WING 21 // either a ship or wing name (they don't conflict)
49 #define OPF_SHIP_WING_WHOLETEAM 22 // Karajorma - Ship, wing or an entire team's worth of ships
50 #define OPF_SHIP_WING_SHIPONTEAM_POINT 23 // name of a ship, wing, any ship on a team, or a point
51 #define OPF_SHIP_WING_POINT 24
52 #define OPF_SHIP_WING_POINT_OR_NONE 25 // WMC - Ship, wing, point or none
53 #define OPF_SHIP_TYPE 26 // type of ship (fighter/bomber/etc)
54 #define OPF_KEYPRESS 27 // a default key
55 #define OPF_EVENT_NAME 28 // name of an event
56 #define OPF_AI_ORDER 29 // a squadmsg order player can give to a ship
57 #define OPF_SKILL_LEVEL 30 // current skill level of the game
58 #define OPF_MEDAL_NAME 31 // name of medals
59 #define OPF_WEAPON_NAME 32 // name of a weapon
60 #define OPF_SHIP_CLASS_NAME 33 // name of a ship class
61 #define OPF_HUD_GAUGE_NAME 34 // name of HUD gauge
62 #define OPF_HUGE_WEAPON 35 // name of a secondary bomb type weapon
63 #define OPF_SHIP_NOT_PLAYER 36 // a ship, but not a player ship
64 #define OPF_JUMP_NODE_NAME 37 // name of a jump node
65 #define OPF_VARIABLE_NAME 38 // variable name
66 #define OPF_AMBIGUOUS 39 // type used with variable
67 #define OPF_AWACS_SUBSYSTEM 40 // an awacs subsystem
68 #define OPF_CARGO 41 // Goober5000 - a cargo string (currently used for set-cargo and is-cargo)
69 #define OPF_AI_CLASS 42 // Goober5000 - an AI class
70 #define OPF_SUPPORT_SHIP_CLASS 43 // Goober5000 - a support ship class
71 #define OPF_ARRIVAL_LOCATION 44 // Goober5000 - a ship arrival location
72 #define OPF_ARRIVAL_ANCHOR_ALL 45 // Goober5000 - all of a ship's possible arrival anchors
73 #define OPF_DEPARTURE_LOCATION 46 // Goober5000 - a ship departure location
74 #define OPF_SHIP_WITH_BAY 47 // Goober5000 - a ship with a fighter bay
75 #define OPF_SOUNDTRACK_NAME 48 // Goober5000 - the name of a music soundtrack
76 #define OPF_INTEL_NAME 49 // Goober5000 - the name of an intel entry in species.tbl
77 #define OPF_STRING 50 // Goober5000 - any old string
78 #define OPF_ROTATING_SUBSYSTEM 51 // Goober5000 - a rotating subsystem
79 #define OPF_NAV_POINT 52 // Kazan - a Nav Point name
80 #define OPF_SSM_CLASS 53 // Goober5000 - an SSM class
81 #define OPF_FLEXIBLE_ARGUMENT 54 // Goober5000 - special to match for when-argument
82 #define OPF_ANYTHING 55 // Goober5000 - anything goes
83 #define OPF_SKYBOX_MODEL_NAME 56 // taylor - changing skybox model
84 #define OPF_SHIP_OR_NONE 57 // Goober5000 - an "optional" ship argument
85 #define OPF_BACKGROUND_BITMAP 58 // phreak - name of a background bitmap
86 #define OPF_SUN_BITMAP 59 // phreak - name of a background bitmap
87 #define OPF_NEBULA_STORM_TYPE 60 // phreak - name a nebula storm
88 #define OPF_NEBULA_POOF 61 // phreak - name of a nebula poof
89 #define OPF_TURRET_TARGET_ORDER 62 // WMC - name of a turret target type (see aiturret.cpp)
90 #define OPF_SUBSYSTEM_OR_NONE 63 // Goober5000 - an "optional" subsystem argument
91 #define OPF_PERSONA 64 // Karajorma - name of a persona
92 #define OPF_SUBSYS_OR_GENERIC 65 // Karajorma - a subsystem or a generic name (like engine) which covers all subsystems of that type
93 #define OPF_ORDER_RECIPIENT 66 // Karajorma - since orders can go to All Fighters as well as a ship or wing
94 #define OPF_SUBSYSTEM_TYPE 67 // Goober5000 - a generic subsystem type (navigation, engines, etc.) rather than a specific subsystem
95 #define OPF_POST_EFFECT 68 // Hery - type of post-processing effect
96 #define OPF_TARGET_PRIORITIES 69 // FUBAR - Target priority groups
97 #define OPF_ARMOR_TYPE 70 // FUBAR - Armor type or <none>
98 #define OPF_FONT 71 // Goober5000 - a FreeSpace font
99 #define OPF_HUD_ELEMENT 72 // A magic name of a specific HUD element
100 #define OPF_SOUND_ENVIRONMENT 73 // Goober5000 - one of EFX_presets, per Taylor
101 #define OPF_SOUND_ENVIRONMENT_OPTION 74 // Goober5000 - one of Taylor's options
102 #define OPF_EXPLOSION_OPTION 75 // Goober5000
103 #define OPF_AUDIO_VOLUME_OPTION 76 // The E
104 #define OPF_WEAPON_BANK_NUMBER 77 // Karajorma - The number of a primary/secondary/tertiary weapon bank or all of them
105 #define OPF_MESSAGE_OR_STRING 78 // Goober5000 - provides a list of messages like OPF_MESSAGE, but also allows entering arbitrary strings
106 #define OPF_HUD_GAUGE 79 // The E
107 #define OPF_DAMAGE_TYPE 80 // FUBAR - Damage type or <none>
108 #define OPF_SHIP_EFFECT 81 // The E - per-ship effects, as defined in post-processing.tbl
109 #define OPF_ANIMATION_TYPE 82 // Goober5000 - as defined in modelanim.h
110 #define OPF_MISSION_MOOD 83 // Karajorma - Moods determine which builtin messages will be sent
111 #define OPF_SHIP_FLAG 84 // Karajorma - The name of a ship flag
112 #define OPF_TEAM_COLOR 85 // The E - Color settings as defined in Colors.tbl
113 #define OPF_NEBULA_PATTERN 86 // Axem - Full Nebula Background Patterns, as defined in nebula.tbl
114 #define OPF_SKYBOX_FLAGS 87 // niffiwan - valid skybox flags
115 #define OPF_GAME_SND 88 // m!m - A game sound
118 #define OPR_NUMBER 1 // returns number
119 #define OPR_BOOL 2 // returns true/false value
120 #define OPR_NULL 3 // doesn't return a value
121 #define OPR_AI_GOAL 4 // is an ai operator (doesn't really return a value, but used for type matching)
122 #define OPR_POSITIVE 5 // returns a non-negative number
123 #define OPR_STRING 6 // not really a return type, but used for type matching.
124 #define OPR_AMBIGUOUS 7 // not really a return type, but used for type matching.
125 #define OPR_FLEXIBLE_ARGUMENT 8 // Goober5000 - is an argument operator (doesn't really return a value, but used for type matching)
127 #define OP_INSERT_FLAG 0x8000
128 #define OP_REPLACE_FLAG 0x4000
129 #define OP_NONCAMPAIGN_FLAG 0x2000
130 #define OP_CAMPAIGN_ONLY_FLAG 0x1000
137 #define FIRST_OP 0x0400
144 #define OP_CATEGORY_OBJECTIVE 0x0400
145 #define OP_CATEGORY_TIME 0x0500
146 #define OP_CATEGORY_LOGICAL 0x0600
147 #define OP_CATEGORY_ARITHMETIC 0x0700
148 #define OP_CATEGORY_STATUS 0x0800
149 #define OP_CATEGORY_CHANGE 0x0900
150 #define OP_CATEGORY_CHANGE2 0x0a00
151 #define OP_CATEGORY_CONDITIONAL 0x0b00
152 #define OP_CATEGORY_AI 0x0c00 // used for AI goals
153 #define OP_CATEGORY_TRAINING 0x0d00
154 #define OP_CATEGORY_UNLISTED 0x0e00
155 #define OP_CATEGORY_GOAL_EVENT 0x0f00 // final category can't be higher than 0x0f00,
158 #define OP_CATEGORY_MASK 0x0f00 // 0000111100000000b
180 #define SUBCATEGORY_MASK 0x00ff
182 #define CHANGE_SUBCATEGORY_MESSAGING (0x0000 | OP_CATEGORY_CHANGE)
183 #define CHANGE_SUBCATEGORY_AI_CONTROL (0x0001 | OP_CATEGORY_CHANGE)
184 #define CHANGE_SUBCATEGORY_SHIP_STATUS (0x0002 | OP_CATEGORY_CHANGE)
185 #define CHANGE_SUBCATEGORY_SHIELDS_ENGINES_AND_WEAPONS (0x0003 | OP_CATEGORY_CHANGE)
186 #define CHANGE_SUBCATEGORY_SUBSYSTEMS (0x0004 | OP_CATEGORY_CHANGE)
187 #define CHANGE_SUBCATEGORY_CARGO (0x0005 | OP_CATEGORY_CHANGE)
188 #define CHANGE_SUBCATEGORY_ARMOR_AND_DAMAGE_TYPES (0x0006 | OP_CATEGORY_CHANGE)
189 #define CHANGE_SUBCATEGORY_BEAMS_AND_TURRETS (0x0007 | OP_CATEGORY_CHANGE)
190 #define CHANGE_SUBCATEGORY_MODELS_AND_TEXTURES (0x0008 | OP_CATEGORY_CHANGE)
191 #define CHANGE_SUBCATEGORY_COORDINATE_MANIPULATION (0x0009 | OP_CATEGORY_CHANGE)
192 #define CHANGE_SUBCATEGORY_MISSION_AND_CAMPAIGN (0x000A | OP_CATEGORY_CHANGE)
193 #define CHANGE_SUBCATEGORY_MUSIC_AND_SOUND (0x000B | OP_CATEGORY_CHANGE)
194 #define CHANGE_SUBCATEGORY_HUD (0x000C | OP_CATEGORY_CHANGE)
195 #define CHANGE_SUBCATEGORY_NAV (0x000D | OP_CATEGORY_CHANGE)
196 #define CHANGE_SUBCATEGORY_CUTSCENES (0x000E | OP_CATEGORY_CHANGE)
197 #define CHANGE_SUBCATEGORY_BACKGROUND_AND_NEBULA (0x000F | OP_CATEGORY_CHANGE)
198 #define CHANGE_SUBCATEGORY_JUMP_NODES (0x0010 | OP_CATEGORY_CHANGE)
199 #define CHANGE_SUBCATEGORY_SPECIAL_EFFECTS (0x0011 | OP_CATEGORY_CHANGE)
200 #define CHANGE_SUBCATEGORY_VARIABLES (0x0012 | OP_CATEGORY_CHANGE)
201 #define CHANGE_SUBCATEGORY_OTHER (0x0013 | OP_CATEGORY_CHANGE)
204 #define STATUS_SUBCATEGORY_MISSION (0x0000 | OP_CATEGORY_STATUS)
205 #define STATUS_SUBCATEGORY_PLAYER (0x0001 | OP_CATEGORY_STATUS)
206 #define STATUS_SUBCATEGORY_MULTIPLAYER (0x0002 | OP_CATEGORY_STATUS)
207 #define STATUS_SUBCATEGORY_SHIP_STATUS (0x0003 | OP_CATEGORY_STATUS)
208 #define STATUS_SUBCATEGORY_SHIELDS_ENGINES_AND_WEAPONS (0x0004 | OP_CATEGORY_STATUS)
209 #define STATUS_SUBCATEGORY_CARGO (0x0005 | OP_CATEGORY_STATUS)
210 #define STATUS_SUBCATEGORY_DAMAGE (0x0006 | OP_CATEGORY_STATUS)
211 #define STATUS_SUBCATEGORY_DISTANCE_AND_COORDINATES (0x0007 | OP_CATEGORY_STATUS)
212 #define STATUS_SUBCATEGORY_VARIABLES (0x0008 | OP_CATEGORY_STATUS)
213 #define STATUS_SUBCATEGORY_OTHER (0x0009 | OP_CATEGORY_STATUS)
216 #define OP_PLUS (0x0000 | OP_CATEGORY_ARITHMETIC)
217 #define OP_MINUS (0x0001 | OP_CATEGORY_ARITHMETIC)
218 #define OP_MOD (0x0002 | OP_CATEGORY_ARITHMETIC)
219 #define OP_MUL (0x0003 | OP_CATEGORY_ARITHMETIC)
220 #define OP_DIV (0x0004 | OP_CATEGORY_ARITHMETIC)
221 #define OP_RAND (0x0005 | OP_CATEGORY_ARITHMETIC)
222 #define OP_ABS (0x0006 | OP_CATEGORY_ARITHMETIC) // Goober5000
223 #define OP_MIN (0x0007 | OP_CATEGORY_ARITHMETIC) // Goober5000
224 #define OP_MAX (0x0008 | OP_CATEGORY_ARITHMETIC) // Goober5000
225 #define OP_AVG (0x0009 | OP_CATEGORY_ARITHMETIC) // Goober5000
226 #define OP_RAND_MULTIPLE (0x000a | OP_CATEGORY_ARITHMETIC) // Goober5000
227 #define OP_POW (0x000b | OP_CATEGORY_ARITHMETIC) // Goober5000
228 #define OP_BITWISE_AND (0x000c | OP_CATEGORY_ARITHMETIC) // Goober5000
229 #define OP_BITWISE_OR (0x000d | OP_CATEGORY_ARITHMETIC) // Goober5000
230 #define OP_BITWISE_NOT (0x000e | OP_CATEGORY_ARITHMETIC) // Goober5000
231 #define OP_BITWISE_XOR (0x000f | OP_CATEGORY_ARITHMETIC) // Goober5000
233 #define OP_SET_BIT (0x0010 | OP_CATEGORY_ARITHMETIC) // Goober5000
234 #define OP_UNSET_BIT (0x0011 | OP_CATEGORY_ARITHMETIC) // Goober5000
235 #define OP_IS_BIT_SET (0x0012 | OP_CATEGORY_ARITHMETIC) // Goober5000
236 #define OP_SIGNUM (0x0013 | OP_CATEGORY_ARITHMETIC) // Goober5000
239 #define OP_TRUE (0x0000 | OP_CATEGORY_LOGICAL)
240 #define OP_FALSE (0x0001 | OP_CATEGORY_LOGICAL)
241 #define OP_AND (0x0002 | OP_CATEGORY_LOGICAL)
242 #define OP_AND_IN_SEQUENCE (0x0003 | OP_CATEGORY_LOGICAL)
243 #define OP_OR (0x0004 | OP_CATEGORY_LOGICAL)
244 #define OP_EQUALS (0x0005 | OP_CATEGORY_LOGICAL)
245 #define OP_GREATER_THAN (0x0006 | OP_CATEGORY_LOGICAL)
246 #define OP_LESS_THAN (0x0007 | OP_CATEGORY_LOGICAL)
247 #define OP_HAS_TIME_ELAPSED (0x0008 | OP_CATEGORY_LOGICAL | OP_NONCAMPAIGN_FLAG)
248 #define OP_NOT (0x0009 | OP_CATEGORY_LOGICAL)
249 #define OP_STRING_EQUALS (0x000a | OP_CATEGORY_LOGICAL)
250 #define OP_STRING_GREATER_THAN (0x000b | OP_CATEGORY_LOGICAL)
251 #define OP_STRING_LESS_THAN (0x000c | OP_CATEGORY_LOGICAL)
252 #define OP_NOT_EQUAL (0x000d | OP_CATEGORY_LOGICAL) // Goober5000
253 #define OP_GREATER_OR_EQUAL (0x000e | OP_CATEGORY_LOGICAL) // Goober5000
254 #define OP_LESS_OR_EQUAL (0x000f | OP_CATEGORY_LOGICAL) // Goober5000
256 #define OP_XOR (0x0010 | OP_CATEGORY_LOGICAL) // Goober5000
257 #define OP_PERFORM_ACTIONS (0x0011 | OP_CATEGORY_LOGICAL) // Goober5000
260 #define OP_GOAL_INCOMPLETE (0x0000 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
261 #define OP_GOAL_TRUE_DELAY (0x0001 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
262 #define OP_GOAL_FALSE_DELAY (0x0002 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
263 #define OP_EVENT_INCOMPLETE (0x0003 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
264 #define OP_EVENT_TRUE_DELAY (0x0004 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
265 #define OP_EVENT_FALSE_DELAY (0x0005 | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
266 #define OP_PREVIOUS_EVENT_TRUE (0x0006 | OP_CATEGORY_GOAL_EVENT)
267 #define OP_PREVIOUS_EVENT_FALSE (0x0007 | OP_CATEGORY_GOAL_EVENT)
268 #define OP_PREVIOUS_GOAL_TRUE (0x0009 | OP_CATEGORY_GOAL_EVENT)
269 #define OP_PREVIOUS_GOAL_FALSE (0x000a | OP_CATEGORY_GOAL_EVENT)
270 #define OP_EVENT_TRUE_MSECS_DELAY (0x000b | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
271 #define OP_EVENT_FALSE_MSECS_DELAY (0x000c | OP_CATEGORY_GOAL_EVENT | OP_NONCAMPAIGN_FLAG)
273 #define OP_IS_DESTROYED_DELAY (0x0000 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
274 #define OP_IS_SUBSYSTEM_DESTROYED_DELAY (0x0001 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
275 #define OP_IS_DISABLED_DELAY (0x0002 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
276 #define OP_IS_DISARMED_DELAY (0x0003 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
277 #define OP_HAS_DOCKED_DELAY (0x0004 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
278 #define OP_HAS_UNDOCKED_DELAY (0x0005 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
279 #define OP_HAS_ARRIVED_DELAY (0x0006 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
280 #define OP_HAS_DEPARTED_DELAY (0x0007 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
281 #define OP_WAYPOINTS_DONE_DELAY (0x0008 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
282 #define OP_SHIP_TYPE_DESTROYED (0x0009 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
283 #define OP_PERCENT_SHIPS_DEPARTED (0x000a | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
284 #define OP_PERCENT_SHIPS_DESTROYED (0x000b | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
285 #define OP_DEPART_NODE_DELAY (0x000c | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
286 #define OP_DESTROYED_DEPARTED_DELAY (0x000d | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG)
287 #define OP_PERCENT_SHIPS_DISARMED (0x000e | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG) // Goober5000
288 #define OP_PERCENT_SHIPS_DISABLED (0x000f | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG) // Goober5000
289 #define OP_PERCENT_SHIPS_ARRIVED (0x0010 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG) // FUBAR-BDHR
290 #define OP_NAV_IS_VISITED (0x0011 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG) // Kazan
291 #define OP_WAS_DESTROYED_BY_DELAY (0x0012 | OP_CATEGORY_OBJECTIVE | OP_NONCAMPAIGN_FLAG) // WCS
293 #define OP_TIME_SHIP_DESTROYED (0x0000 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
294 #define OP_TIME_SHIP_ARRIVED (0x0001 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
295 #define OP_TIME_SHIP_DEPARTED (0x0002 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
296 #define OP_TIME_WING_DESTROYED (0x0003 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
297 #define OP_TIME_WING_ARRIVED (0x0004 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
298 #define OP_TIME_WING_DEPARTED (0x0005 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
299 #define OP_MISSION_TIME (0x0006 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
300 #define OP_MISSION_TIME_MSECS (0x0007 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG) // Goober5000
301 #define OP_TIME_DOCKED (0x0008 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
302 #define OP_TIME_UNDOCKED (0x0009 | OP_CATEGORY_TIME | OP_NONCAMPAIGN_FLAG)
304 #define OP_SHIELDS_LEFT (0x0000 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
305 #define OP_HITS_LEFT (0x0001 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
306 #define OP_HITS_LEFT_SUBSYSTEM (0x0002 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // deprecated
307 #define OP_SIM_HITS_LEFT (0x0003 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
308 #define OP_DISTANCE (0x0004 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
309 #define OP_DISTANCE_SUBSYSTEM (0x0005 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
310 #define OP_LAST_ORDER_TIME (0x0006 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
311 #define OP_NUM_PLAYERS (0x0007 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
312 #define OP_SKILL_LEVEL_AT_LEAST (0x0008 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
313 #define OP_WAS_PROMOTION_GRANTED (0x0009 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
314 #define OP_WAS_MEDAL_GRANTED (0x000a | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
315 #define OP_CARGO_KNOWN_DELAY (0x000b | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
316 #define OP_CAP_SUBSYS_CARGO_KNOWN_DELAY (0x000c | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
317 #define OP_HAS_BEEN_TAGGED_DELAY (0x000d | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
318 #define OP_IS_TAGGED (0x000e | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
319 #define OP_NUM_KILLS (0x000f | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
321 #define OP_NUM_TYPE_KILLS (0x0010 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
322 #define OP_NUM_CLASS_KILLS (0x0011 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
323 #define OP_SHIELD_RECHARGE_PCT (0x0012 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
324 #define OP_ENGINE_RECHARGE_PCT (0x0013 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
325 #define OP_WEAPON_RECHARGE_PCT (0x0014 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
326 #define OP_SHIELD_QUAD_LOW (0x0015 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
327 #define OP_SECONDARY_AMMO_PCT (0x0016 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
328 #define OP_IS_SECONDARY_SELECTED (0x0017 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
329 #define OP_IS_PRIMARY_SELECTED (0x0018 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
330 #define OP_SPECIAL_WARP_DISTANCE (0x0019 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
331 #define OP_IS_SHIP_VISIBLE (0x001a | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
332 #define OP_TEAM_SCORE (0x001b | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
333 #define OP_PRIMARY_AMMO_PCT (0x001c | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
334 #define OP_IS_SHIP_STEALTHY (0x001d | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
335 #define OP_IS_CARGO (0x001e | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
336 #define OP_IS_FRIENDLY_STEALTH_VISIBLE (0x001f | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
338 #define OP_GET_OBJECT_X (0x0020 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
339 #define OP_GET_OBJECT_Y (0x0021 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
340 #define OP_GET_OBJECT_Z (0x0022 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
341 #define OP_IS_AI_CLASS (0x0023 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
342 #define OP_IS_SHIP_TYPE (0x0024 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
343 #define OP_IS_SHIP_CLASS (0x0025 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
344 #define OP_NUM_SHIPS_IN_BATTLE (0x0026 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // phreak
345 #define OP_CURRENT_SPEED (0x0027 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // WMCoolmon
346 #define OP_IS_IFF (0x0028 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
347 #define OP_NUM_WITHIN_BOX (0x0029 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // WMCoolmon
348 #define OP_SCRIPT_EVAL_NUM (0x002a | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // WMCoolmon
349 #define OP_SCRIPT_EVAL_STRING (0x002b | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // WMCoolmon
350 #define OP_NUM_SHIPS_IN_WING (0x002c | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
351 #define OP_GET_PRIMARY_AMMO (0x002d | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
352 #define OP_GET_SECONDARY_AMMO (0x002e | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
353 #define OP_NUM_ASSISTS (0x002f | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
355 #define OP_SHIP_SCORE (0x0030 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
356 #define OP_SHIP_DEATHS (0x0031 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
357 #define OP_RESPAWNS_LEFT (0x0032 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
358 #define OP_IS_PLAYER (0x0033 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
359 #define OP_GET_DAMAGE_CAUSED (0x0034 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
360 #define OP_AFTERBURNER_LEFT (0x0035 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
361 #define OP_WEAPON_ENERGY_LEFT (0x0036 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
362 #define OP_PRIMARY_FIRED_SINCE (0x0037 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
363 #define OP_SECONDARY_FIRED_SINCE (0x0038 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
364 #define OP_CUTSCENES_GET_FOV (0x0039 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Echelon9
365 #define OP_GET_THROTTLE_SPEED (0x003a | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
366 #define OP_HITS_LEFT_SUBSYSTEM_GENERIC (0x003b | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
367 #define OP_HITS_LEFT_SUBSYSTEM_SPECIFIC (0x003c | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
368 #define OP_GET_OBJECT_PITCH (0x003d | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
369 #define OP_GET_OBJECT_BANK (0x003e | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
370 #define OP_GET_OBJECT_HEADING (0x003f | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
372 #define OP_HAS_PRIMARY_WEAPON (0x0040 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
373 #define OP_HAS_SECONDARY_WEAPON (0x0041 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
374 #define OP_STRING_TO_INT (0x0042 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
375 #define OP_STRING_GET_LENGTH (0x0043 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
376 #define OP_GET_OBJECT_SPEED_X (0x0044 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
377 #define OP_GET_OBJECT_SPEED_Y (0x0045 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
378 #define OP_GET_OBJECT_SPEED_Z (0x0046 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG)
379 #define OP_NAV_DISTANCE (0x0047 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Kazan
380 #define OP_NAV_ISLINKED (0x0048 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Kazan
381 #define OP_IS_FACING (0x0049 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // The E
382 #define OP_DIRECTIVE_VALUE (0x004a | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
383 #define OP_GET_NUM_COUNTERMEASURES (0x004b | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
384 #define OP_IS_IN_BOX (0x004c | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Sushi
385 #define OP_IS_IN_MISSION (0x004d | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Goober5000
386 #define OP_ARE_SHIP_FLAGS_SET (0x004e | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // Karajorma
387 #define OP_TURRET_GET_PRIMARY_AMMO (0x004f | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // DahBlount, part of the turret ammo code
389 #define OP_TURRET_GET_SECONDARY_AMMO (0x0050 | OP_CATEGORY_STATUS | OP_NONCAMPAIGN_FLAG) // DahBlount, part of the turret ammo code
392 #define OP_WHEN (0x0000 | OP_CATEGORY_CONDITIONAL)
393 #define OP_WHEN_ARGUMENT (0x0001 | OP_CATEGORY_CONDITIONAL) // Goober5000
394 #define OP_EVERY_TIME (0x0002 | OP_CATEGORY_CONDITIONAL) // Goober5000
395 #define OP_EVERY_TIME_ARGUMENT (0x0003 | OP_CATEGORY_CONDITIONAL) // Goober5000
396 #define OP_ANY_OF (0x0004 | OP_CATEGORY_CONDITIONAL) // Goober5000
397 #define OP_EVERY_OF (0x0005 | OP_CATEGORY_CONDITIONAL) // Goober5000
398 #define OP_RANDOM_OF (0x0006 | OP_CATEGORY_CONDITIONAL) // Goober5000
399 #define OP_NUMBER_OF (0x0007 | OP_CATEGORY_CONDITIONAL) // Goober5000
400 #define OP_INVALIDATE_ARGUMENT (0x0008 | OP_CATEGORY_CONDITIONAL) // Goober5000
401 #define OP_RANDOM_MULTIPLE_OF (0x0009 | OP_CATEGORY_CONDITIONAL) // Karajorma
402 #define OP_IN_SEQUENCE (0x000a | OP_CATEGORY_CONDITIONAL) // Karajorma
403 #define OP_VALIDATE_ARGUMENT (0x000b | OP_CATEGORY_CONDITIONAL) // Karajorma
404 #define OP_DO_FOR_VALID_ARGUMENTS (0x000c | OP_CATEGORY_CONDITIONAL) // Karajorma
405 #define OP_INVALIDATE_ALL_ARGUMENTS (0x000d | OP_CATEGORY_CONDITIONAL) // Karajorma
406 #define OP_VALIDATE_ALL_ARGUMENTS (0x000e | OP_CATEGORY_CONDITIONAL) // Karajorma
407 #define OP_FOR_COUNTER (0x000f | OP_CATEGORY_CONDITIONAL) // Goober5000
408 #define OP_IF_THEN_ELSE (0x0010 | OP_CATEGORY_CONDITIONAL) // Goober5000
409 #define OP_NUM_VALID_ARGUMENTS (0x0011 | OP_CATEGORY_CONDITIONAL) // Karajorma
413 #define OP_CHANGE_IFF (0x0000 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
414 #define OP_REPAIR_SUBSYSTEM (0x0001 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
415 #define OP_SABOTAGE_SUBSYSTEM (0x0002 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
416 #define OP_SET_SUBSYSTEM_STRNGTH (0x0003 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
417 #define OP_PROTECT_SHIP (0x0004 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
418 #define OP_SEND_MESSAGE (0x0005 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
419 #define OP_SELF_DESTRUCT (0x0006 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
420 #define OP_CLEAR_GOALS (0x0007 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
421 #define OP_ADD_GOAL (0x0008 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
422 #define OP_REMOVE_GOAL (0x0009 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
423 #define OP_INVALIDATE_GOAL (0x000a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
424 #define OP_VALIDATE_GOAL (0x000b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
425 #define OP_SEND_RANDOM_MESSAGE (0x000c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
426 #define OP_TRANSFER_CARGO (0x000d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
427 #define OP_EXCHANGE_CARGO (0x000e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
428 #define OP_UNPROTECT_SHIP (0x000f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
430 #define OP_GOOD_REARM_TIME (0x0010 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
431 #define OP_BAD_REARM_TIME (0x0011 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
432 #define OP_GRANT_PROMOTION (0x0012 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
433 #define OP_GRANT_MEDAL (0x0013 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
434 #define OP_ALLOW_SHIP (0x0014 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
435 #define OP_ALLOW_WEAPON (0x0015 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
436 #define OP_GOOD_SECONDARY_TIME (0x0016 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
437 #define OP_WARP_BROKEN (0x0017 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
438 #define OP_WARP_NOT_BROKEN (0x0018 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
439 #define OP_WARP_NEVER (0x0019 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
440 #define OP_WARP_ALLOWED (0x001a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
441 #define OP_SHIP_INVISIBLE (0x001b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
442 #define OP_SHIP_VISIBLE (0x001c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
443 #define OP_SHIP_INVULNERABLE (0x001d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
444 #define OP_SHIP_VULNERABLE (0x001e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
445 #define OP_RED_ALERT (0x001f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
447 #define OP_TECH_ADD_SHIP (0x0020 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
448 #define OP_TECH_ADD_WEAPON (0x0021 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
449 #define OP_END_CAMPAIGN (0x0022 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
450 #define OP_JETTISON_CARGO (0x0023 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
451 #define OP_MODIFY_VARIABLE (0X0024 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
452 #define OP_NOP (0x0025 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
453 #define OP_BEAM_FIRE (0x0026 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
454 #define OP_BEAM_FREE (0x0027 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
455 #define OP_BEAM_FREE_ALL (0x0028 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
456 #define OP_BEAM_LOCK (0x0029 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
457 #define OP_BEAM_LOCK_ALL (0x002a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
458 #define OP_BEAM_PROTECT_SHIP (0x002b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
459 #define OP_BEAM_UNPROTECT_SHIP (0x002c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
460 #define OP_TURRET_FREE (0x002d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
461 #define OP_TURRET_FREE_ALL (0x002e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
462 #define OP_TURRET_LOCK (0x002f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
464 #define OP_TURRET_LOCK_ALL (0x0030 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
465 #define OP_ADD_REMOVE_ESCORT (0x0031 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
466 #define OP_AWACS_SET_RADIUS (0x0032 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
467 #define OP_SEND_MESSAGE_LIST (0x0033 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
468 #define OP_CAP_WAYPOINT_SPEED (0x0034 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
469 #define OP_SHIP_GUARDIAN (0x0035 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
470 #define OP_SHIP_NO_GUARDIAN (0x0036 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
471 #define OP_TURRET_TAGGED_ONLY_ALL (0x0037 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
472 #define OP_TURRET_TAGGED_CLEAR_ALL (0x0038 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
473 #define OP_SUBSYS_SET_RANDOM (0x0039 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
474 #define OP_SUPERNOVA_START (0x003a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
475 #define OP_CARGO_NO_DEPLETE (0x003b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
476 #define OP_SET_SPECIAL_WARPOUT_NAME (0X003c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
477 #define OP_SHIP_VANISH (0X003d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
478 #define OP_SHIELDS_ON (0x003e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Sesquipedalian
479 #define OP_SHIELDS_OFF (0x003f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Sesquipedalian
481 #define OP_CHANGE_AI_LEVEL (0x0040 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Sesquipedalian
482 #define OP_END_MISSION (0x0041 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Sesquipedalian. replaces end-mission-delay, which did nothing
483 #define OP_SET_SCANNED (0x0042 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
484 #define OP_SET_UNSCANNED (0x0043 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
485 #define OP_SHIP_STEALTHY (0x0044 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
486 #define OP_SHIP_UNSTEALTHY (0x0045 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
487 #define OP_SET_CARGO (0x0046 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
488 #define OP_CHANGE_AI_CLASS (0x0047 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
489 #define OP_FRIENDLY_STEALTH_INVISIBLE (0x0048 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
490 #define OP_FRIENDLY_STEALTH_VISIBLE (0x0049 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
491 #define OP_DAMAGED_ESCORT_LIST (0x004a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //phreak
492 #define OP_DAMAGED_ESCORT_LIST_ALL (0x004b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
493 #define OP_SHIP_VAPORIZE (0x004c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
494 #define OP_SHIP_NO_VAPORIZE (0x004d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
495 #define OP_COLLIDE_INVISIBLE (0x004e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
496 #define OP_DONT_COLLIDE_INVISIBLE (0x004f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
498 #define OP_PRIMITIVE_SENSORS_SET_RANGE (0x0050 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
499 #define OP_CHANGE_SHIP_CLASS (0x0051 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
500 #define OP_SCRIPT_EVAL (0x0052 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
501 #define OP_SET_SUPPORT_SHIP (0x0053 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
502 #define OP_DEACTIVATE_GLOW_POINTS (0x0054 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
503 #define OP_ACTIVATE_GLOW_POINTS (0x0055 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
504 #define OP_DEACTIVATE_GLOW_MAPS (0x0056 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
505 #define OP_ACTIVATE_GLOW_MAPS (0x0057 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
506 #define OP_DEACTIVATE_GLOW_POINT_BANK (0x0058 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
507 #define OP_ACTIVATE_GLOW_POINT_BANK (0x0059 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Bobboau
508 #define OP_CHANGE_SOUNDTRACK (0x005a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
509 #define OP_TECH_ADD_INTEL (0x005b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
510 #define OP_TECH_RESET_TO_DEFAULT (0x005c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
511 #define OP_EXPLOSION_EFFECT (0x005d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
512 #define OP_WARP_EFFECT (0x005e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
513 #define OP_SET_OBJECT_FACING (0x005f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
515 #define OP_SET_OBJECT_FACING_OBJECT (0x0060 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
516 #define OP_SET_OBJECT_POSITION (0x0061 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
517 #define OP_PLAY_SOUND_FROM_TABLE (0x0062 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
518 #define OP_PLAY_SOUND_FROM_FILE (0x0063 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
519 #define OP_CLOSE_SOUND_FROM_FILE (0x0064 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
520 #define OP_HUD_DISABLE (0x0065 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
521 #define OP_KAMIKAZE (0x0066 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //-Sesquipedalian
522 #define OP_MISSION_SET_SUBSPACE (0x0067 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
523 #define OP_TURRET_TAGGED_SPECIFIC (0x0068 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //phreak
524 #define OP_TURRET_TAGGED_CLEAR_SPECIFIC (0x0069 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //phreak
525 #define OP_LOCK_ROTATING_SUBSYSTEM (0x006a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
526 #define OP_FREE_ROTATING_SUBSYSTEM (0x006b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
527 #define OP_REVERSE_ROTATING_SUBSYSTEM (0x006c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
528 #define OP_ROTATING_SUBSYS_SET_TURN_TIME (0x006d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
529 #define OP_PLAYER_USE_AI (0x006e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
530 #define OP_PLAYER_NOT_USE_AI (0x006f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
532 #define OP_HUD_DISABLE_EXCEPT_MESSAGES (0x0070 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
533 #define OP_FORCE_JUMP (0x0071 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
534 #define OP_HUD_SET_TEXT (0x0072 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
535 #define OP_HUD_SET_TEXT_NUM (0x0073 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
536 #define OP_HUD_SET_COORDS (0x0074 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
537 #define OP_HUD_SET_FRAME (0x0075 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
538 #define OP_HUD_SET_COLOR (0x0076 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
539 #define OP_HUD_SET_MAX_TARGETING_RANGE (0x0077 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
540 #define OP_SHIP_TAG (0x0078 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
541 #define OP_SHIP_UNTAG (0x0079 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
542 #define OP_SHIP_CHANGE_ALT_NAME (0x007a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
543 #define OP_SCRAMBLE_MESSAGES (0x007b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // phreak
544 #define OP_UNSCRAMBLE_MESSAGES (0x007c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // phreak
545 #define OP_CUTSCENES_SET_CUTSCENE_BARS (0x007d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
546 #define OP_CUTSCENES_UNSET_CUTSCENE_BARS (0x007e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
547 #define OP_CUTSCENES_FADE_IN (0x007f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
549 #define OP_CUTSCENES_FADE_OUT (0x0080 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
550 #define OP_CUTSCENES_SET_CAMERA_POSITION (0x0081 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
551 #define OP_CUTSCENES_SET_CAMERA_FACING (0x0082 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
552 #define OP_CUTSCENES_SET_CAMERA_FACING_OBJECT (0x0083 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
553 #define OP_CUTSCENES_SET_CAMERA_ROTATION (0x0084 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
554 #define OP_CUTSCENES_SET_FOV (0x0085 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
555 #define OP_CUTSCENES_RESET_FOV (0x0086 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
556 #define OP_CUTSCENES_RESET_CAMERA (0x0087 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
557 #define OP_CUTSCENES_SHOW_SUBTITLE (0x0088 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC / deprecated
558 #define OP_CUTSCENES_SET_TIME_COMPRESSION (0x0089 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
559 #define OP_CUTSCENES_RESET_TIME_COMPRESSION (0x008a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
560 #define OP_CUTSCENES_FORCE_PERSPECTIVE (0x008b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
561 #define OP_JUMP_NODE_SET_JUMPNODE_NAME (0x008c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // CommanderDJ
562 #define OP_JUMP_NODE_SET_JUMPNODE_COLOR (0x008d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
563 #define OP_JUMP_NODE_SET_JUMPNODE_MODEL (0x008e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
564 #define OP_JUMP_NODE_SHOW_JUMPNODE (0x008f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
566 #define OP_JUMP_NODE_HIDE_JUMPNODE (0x0090 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
567 #define OP_SHIP_GUARDIAN_THRESHOLD (0x0091 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
568 #define OP_SHIP_SUBSYS_GUARDIAN_THRESHOLD (0x0092 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
569 #define OP_SET_SKYBOX_MODEL (0x0093 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // taylor
570 #define OP_SHIP_CREATE (0X0094 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
571 #define OP_WEAPON_CREATE (0x0095 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
572 #define OP_SET_OBJECT_SPEED_X (0X0096 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
573 #define OP_SET_OBJECT_SPEED_Y (0X0097 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
574 #define OP_SET_OBJECT_SPEED_Z (0X0098 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
575 #define OP_MISSION_SET_NEBULA (0x0099 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
576 #define OP_ADD_BACKGROUND_BITMAP (0x009a | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
577 #define OP_REMOVE_BACKGROUND_BITMAP (0x009b | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
578 #define OP_ADD_SUN_BITMAP (0x009c | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
579 #define OP_REMOVE_SUN_BITMAP (0x009d | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
580 #define OP_NEBULA_CHANGE_STORM (0x009e | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
581 #define OP_NEBULA_TOGGLE_POOF (0x009f | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
583 #define OP_TURRET_CHANGE_WEAPON (0x00a0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
584 #define OP_TURRET_SET_TARGET_ORDER (0x00a1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
585 #define OP_SHIP_TURRET_TARGET_ORDER (0x00a2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
586 #define OP_SET_PRIMARY_AMMO (0x00a3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
587 #define OP_SET_SECONDARY_AMMO (0x00a4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
588 #define OP_SHIP_BOMB_TARGETABLE (0x00a5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
589 #define OP_SHIP_BOMB_UNTARGETABLE (0x00a6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) //WMC
590 #define OP_SHIP_SUBSYS_TARGETABLE (0x00a7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
591 #define OP_SHIP_SUBSYS_UNTARGETABLE (0x00a8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
592 #define OP_SET_DEATH_MESSAGE (0x00a9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
593 #define OP_SET_PRIMARY_WEAPON (0x00aa | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
594 #define OP_SET_SECONDARY_WEAPON (0x00ab | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
595 #define OP_DISABLE_BUILTIN_MESSAGES (0x00ac | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
596 #define OP_ENABLE_BUILTIN_MESSAGES (0x00ad | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
597 #define OP_LOCK_PRIMARY_WEAPON (0x00ae | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
598 #define OP_UNLOCK_PRIMARY_WEAPON (0x00af | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
600 #define OP_LOCK_SECONDARY_WEAPON (0x00b0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
601 #define OP_UNLOCK_SECONDARY_WEAPON (0x00b1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
602 #define OP_SET_CAMERA_SHUDDER (0x00b2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
603 #define OP_ALLOW_TREASON (0x00b3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
604 #define OP_SHIP_COPY_DAMAGE (0x00b4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
605 #define OP_CHANGE_SUBSYSTEM_NAME (0x00b5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
606 #define OP_SET_PERSONA (0x00b6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
607 #define OP_CHANGE_PLAYER_SCORE (0x00b7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
608 #define OP_CHANGE_TEAM_SCORE (0x00b8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
609 #define OP_CUTSCENES_SET_CAMERA_FOV (0x00b9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
610 #define OP_CUTSCENES_SET_CAMERA (0x00ba | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
611 #define OP_CUTSCENES_SET_CAMERA_HOST (0x00bb | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
612 #define OP_CUTSCENES_SET_CAMERA_TARGET (0x00bc | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // WMC
613 #define OP_LOCK_AFTERBURNER (0x00bd | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // KeldorKatarn
614 #define OP_UNLOCK_AFTERBURNER (0x00be | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // KeldorKatarn
615 #define OP_SHIP_CHANGE_CALLSIGN (0x00bf | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
617 #define OP_SET_RESPAWNS (0x00c0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
618 #define OP_SET_AFTERBURNER_ENERGY (0x00c1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
619 #define OP_SET_WEAPON_ENERGY (0x00c2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
620 #define OP_SET_SHIELD_ENERGY (0x00c3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
621 #define OP_SET_AMBIENT_LIGHT (0x00c4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Karajorma
622 #define OP_CHANGE_IFF_COLOR (0x00c5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
623 #define OP_TURRET_SUBSYS_TARGET_DISABLE (0x00c6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
624 #define OP_TURRET_SUBSYS_TARGET_ENABLE (0x00c7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
625 #define OP_REMOVE_WEAPONS (0x00c8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
626 #define OP_SHIP_MANEUVER (0x00c9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
627 #define OP_SHIP_ROT_MANEUVER (0x00ca | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
628 #define OP_SHIP_LAT_MANEUVER (0x00cb | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Wanderer
629 #define OP_GET_VARIABLE_BY_INDEX (0x00cc | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
630 #define OP_SET_VARIABLE_BY_INDEX (0x00cd | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
631 #define OP_SET_POST_EFFECT (0x00ce | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Hery
632 #define OP_TURRET_SET_OPTIMUM_RANGE (0x00cf | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
634 #define OP_TURRET_SET_DIRECTION_PREFERENCE (0x00d0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
635 #define OP_TURRET_SET_TARGET_PRIORITIES (0x00d1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
636 #define OP_SET_ARMOR_TYPE (0x00d2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
637 #define OP_CUTSCENES_SHOW_SUBTITLE_TEXT (0x00d3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
638 #define OP_CUTSCENES_SHOW_SUBTITLE_IMAGE (0x00d4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
639 #define OP_HUD_DISPLAY_GAUGE (0x00d5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG)
640 #define OP_SET_SOUND_ENVIRONMENT (0x00d6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Taylor
641 #define OP_UPDATE_SOUND_ENVIRONMENT (0x00d7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Taylor
642 #define OP_SET_EXPLOSION_OPTION (0x00d8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
643 #define OP_ADJUST_AUDIO_VOLUME (0x00d9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
644 #define OP_FORCE_GLIDE (0x00da | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
645 #define OP_TURRET_SET_RATE_OF_FIRE (0x00db | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
646 #define OP_HUD_SET_MESSAGE (0x00dc | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
647 #define OP_SHIP_SUBSYS_NO_REPLACE (0x00dd | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
648 #define OP_SET_IMMOBILE (0x00de | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
649 #define OP_SET_MOBILE (0x00df | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
651 #define OP_SHIP_SUBSYS_NO_LIVE_DEBRIS (0x00e0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
652 #define OP_SHIP_SUBSYS_VANISHED (0x00e1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
653 #define OP_SHIP_SUBSYS_IGNORE_IF_DEAD (0x00e2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
654 #define OP_HUD_SET_DIRECTIVE (0x00e3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
655 #define OP_HUD_GAUGE_SET_ACTIVE (0x00e4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E - slightly deprecated
656 #define OP_HUD_ACTIVATE_GAUGE_TYPE (0x00e5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E - slightly deprecated
657 #define OP_SET_OBJECT_ORIENTATION (0x00e6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
658 #define OP_STRING_CONCATENATE (0x00e7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
659 #define OP_INT_TO_STRING (0x00e8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
660 #define OP_WEAPON_SET_DAMAGE_TYPE (0x00e9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
661 #define OP_SHIP_SET_DAMAGE_TYPE (0x00ea | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
662 #define OP_SHIP_SHOCKWAVE_SET_DAMAGE_TYPE (0x00eb | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
663 #define OP_FIELD_SET_DAMAGE_TYPE (0x00ec | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // FUBAR
664 #define OP_TURRET_PROTECT_SHIP (0x00ed | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
665 #define OP_TURRET_UNPROTECT_SHIP (0x00ee | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Goober5000
666 #define OP_DISABLE_ETS (0x00ef | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
668 #define OP_ENABLE_ETS (0x00f0 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // The E
669 #define OP_NAV_ADD_WAYPOINT (0x00f1 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
670 #define OP_NAV_ADD_SHIP (0x00f2 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
671 #define OP_NAV_DEL (0x00f3 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
672 #define OP_NAV_HIDE (0x00f4 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
673 #define OP_NAV_RESTRICT (0x00f5 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
674 #define OP_NAV_UNHIDE (0x00f6 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
675 #define OP_NAV_UNRESTRICT (0x00f7 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
676 #define OP_NAV_SET_VISITED (0x00f8 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
677 #define OP_NAV_SET_CARRY (0x00f9 | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
678 #define OP_NAV_UNSET_CARRY (0x00fa | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
679 #define OP_NAV_UNSET_VISITED (0x00fb | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
680 #define OP_NAV_SET_NEEDSLINK (0x00fc | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
681 #define OP_NAV_UNSET_NEEDSLINK (0x00fd | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
682 #define OP_NAV_USECINEMATICS (0x00fe | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
683 #define OP_NAV_USEAP (0x00ff | OP_CATEGORY_CHANGE | OP_NONCAMPAIGN_FLAG) // Kazan
687 #define OP_STRING_GET_SUBSTRING (0x0000 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
688 #define OP_STRING_SET_SUBSTRING (0x0001 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
689 #define OP_SET_NUM_COUNTERMEASURES (0x0002 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
690 #define OP_ADD_TO_COLGROUP (0x0003 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
691 #define OP_REMOVE_FROM_COLGROUP (0x0004 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
692 #define OP_GET_COLGROUP_ID (0x0005 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
693 #define OP_SHIP_EFFECT (0x0006 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Valathil
694 #define OP_CLEAR_SUBTITLES (0x0007 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
695 #define OP_BEAM_FIRE_COORDS (0x0008 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
696 #define OP_SET_DOCKED (0x0009 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Sushi
697 #define OP_SET_THRUSTERS (0x000a | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
698 #define OP_TRIGGER_SUBMODEL_ANIMATION (0x000b | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
699 #define OP_HUD_CLEAR_MESSAGES (0x000c | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Swifty
700 #define OP_SET_PLAYER_ORDERS (0x000d | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
701 #define OP_SUPERNOVA_STOP (0x000e | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) //CommanderDJ
702 #define OP_SET_PLAYER_THROTTLE_SPEED (0x000f | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) //CommanderDJ
704 #define OP_SET_DEBRIEFING_TOGGLED (0x0010 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
705 #define OP_SET_SUBSPACE_DRIVE (0x0011 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
706 #define OP_SET_ARRIVAL_INFO (0x0012 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
707 #define OP_SET_DEPARTURE_INFO (0x0013 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
708 #define OP_SET_SKYBOX_ORIENT (0x0014 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
709 #define OP_DESTROY_INSTANTLY (0x0015 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Admiral MS
710 #define OP_DESTROY_SUBSYS_INSTANTLY (0x0016 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Admiral MS
711 #define OP_DEBUG (0x0017 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
712 #define OP_SET_MISSION_MOOD (0x0018 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
713 #define OP_NAV_SELECT (0x0019 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
714 #define OP_NAV_UNSELECT (0x001a | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Talon1024
715 #define OP_ALTER_SHIP_FLAG (0x001b | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
716 #define OP_CHANGE_TEAM_COLOR (0x001c | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
717 #define OP_NEBULA_CHANGE_PATTERN (0x001d | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Axem
718 #define OP_PLAYER_IS_CHEATING_BASTARD (0x001e | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
719 #define OP_TECH_ADD_INTEL_XSTR (0x001f | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
721 #define OP_COPY_VARIABLE_FROM_INDEX (0x0020 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
722 #define OP_COPY_VARIABLE_BETWEEN_INDEXES (0x0021 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
723 #define OP_GET_ETS_VALUE (0x0022 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // niffiwan
724 #define OP_SET_ETS_VALUES (0x0023 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // niffiwan
725 #define OP_CALL_SSM_STRIKE (0x0024 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // X3N0-Life-Form
726 #define OP_SET_MOTION_DEBRIS (0x0025 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E
727 #define OP_HUD_SET_CUSTOM_GAUGE_ACTIVE (0x0026 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E, just revamped a bit by Axem
728 #define OP_HUD_SET_RETAIL_GAUGE_ACTIVE (0x0027 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // The E, just revamped a bit by Axem
729 #define OP_SCRIPT_EVAL_MULTI (0x0028 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Karajorma
730 #define OP_PAUSE_SOUND_FROM_FILE (0x0029 | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // Goober5000
731 #define OP_SCRIPT_EVAL_BLOCK (0x002a | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // niffiwan
732 #define OP_BEAM_FLOATING_FIRE (0x002b | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // MageKing17
733 #define OP_TURRET_SET_PRIMARY_AMMO (0x002c | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // DahBlount, part of the turret ammo changes
734 #define OP_TURRET_SET_SECONDARY_AMMO (0x002d | OP_CATEGORY_CHANGE2 | OP_NONCAMPAIGN_FLAG) // DahBlount, part of the turret ammo changes
737 #define OP_AI_CHASE (0x0000 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
738 #define OP_AI_DOCK (0x0001 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
739 #define OP_AI_UNDOCK (0x0002 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
740 #define OP_AI_WARP_OUT (0x0003 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
741 #define OP_AI_WAYPOINTS (0x0004 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
742 #define OP_AI_WAYPOINTS_ONCE (0x0005 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
743 #define OP_AI_DESTROY_SUBSYS (0x0006 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
744 #define OP_AI_DISABLE_SHIP (0x0007 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
745 #define OP_AI_DISARM_SHIP (0x0008 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
746 #define OP_AI_GUARD (0x0009 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
747 #define OP_AI_CHASE_ANY (0x000a | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
748 #define OP_AI_EVADE_SHIP (0x000b | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
749 #define OP_AI_STAY_NEAR_SHIP (0x000c | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
750 #define OP_AI_KEEP_SAFE_DISTANCE (0x000d | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
751 #define OP_AI_IGNORE (0x000e | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
752 #define OP_AI_STAY_STILL (0x000f | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
753 #define OP_AI_PLAY_DEAD (0x0010 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG)
754 #define OP_AI_IGNORE_NEW (0x0011 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG) // Goober5000
755 #define OP_AI_FORM_ON_WING (0x0012 | OP_CATEGORY_AI | OP_NONCAMPAIGN_FLAG) // The E
757 #define OP_GOALS_ID (0x0000 | OP_CATEGORY_UNLISTED)
758 #define OP_NEXT_MISSION (0x0001 | OP_CATEGORY_UNLISTED) // used in campaign files for branching
759 #define OP_IS_DESTROYED (0x0002 | OP_CATEGORY_UNLISTED)
760 #define OP_IS_SUBSYSTEM_DESTROYED (0x0003 | OP_CATEGORY_UNLISTED)
761 #define OP_IS_DISABLED (0x0004 | OP_CATEGORY_UNLISTED)
762 #define OP_IS_DISARMED (0x0005 | OP_CATEGORY_UNLISTED)
763 #define OP_HAS_DOCKED (0x0006 | OP_CATEGORY_UNLISTED)
764 #define OP_HAS_UNDOCKED (0x0007 | OP_CATEGORY_UNLISTED)
765 #define OP_HAS_ARRIVED (0x0008 | OP_CATEGORY_UNLISTED)
766 #define OP_HAS_DEPARTED (0x0009 | OP_CATEGORY_UNLISTED)
767 #define OP_WAYPOINTS_DONE (0x000a | OP_CATEGORY_UNLISTED)
768 #define OP_ADD_SHIP_GOAL (0x000b | OP_CATEGORY_UNLISTED)
769 #define OP_CLEAR_SHIP_GOALS (0x000c | OP_CATEGORY_UNLISTED)
770 #define OP_ADD_WING_GOAL (0x000d | OP_CATEGORY_UNLISTED)
771 #define OP_CLEAR_WING_GOALS (0x000e | OP_CATEGORY_UNLISTED)
772 #define OP_AI_CHASE_WING (0x000f | OP_CATEGORY_UNLISTED)
773 #define OP_AI_GUARD_WING (0x0010 | OP_CATEGORY_UNLISTED)
774 #define OP_EVENT_TRUE (0x0011 | OP_CATEGORY_UNLISTED)
775 #define OP_EVENT_FALSE (0x0012 | OP_CATEGORY_UNLISTED)
776 #define OP_PREVIOUS_GOAL_INCOMPLETE (0x0013 | OP_CATEGORY_UNLISTED)
777 #define OP_PREVIOUS_EVENT_INCOMPLETE (0x0014 | OP_CATEGORY_UNLISTED)
778 #define OP_AI_WARP (0x0015 | OP_CATEGORY_UNLISTED)
779 #define OP_IS_CARGO_KNOWN (0x0016 | OP_CATEGORY_UNLISTED)
780 #define OP_COND (0x0017 | OP_CATEGORY_UNLISTED)
781 #define OP_END_OF_CAMPAIGN (0x0018 | OP_CATEGORY_UNLISTED)
784 #define OP_KEY_PRESSED (0x0000 | OP_CATEGORY_TRAINING)
785 #define OP_KEY_RESET (0x0001 | OP_CATEGORY_TRAINING)
786 #define OP_TARGETED (0x0002 | OP_CATEGORY_TRAINING)
787 #define OP_SPEED (0x0003 | OP_CATEGORY_TRAINING)
788 #define OP_FACING (0x0004 | OP_CATEGORY_TRAINING)
789 #define OP_ORDER (0x0005 | OP_CATEGORY_TRAINING)
790 #define OP_WAYPOINT_MISSED (0x0006 | OP_CATEGORY_TRAINING)
791 #define OP_PATH_FLOWN (0x0007 | OP_CATEGORY_TRAINING)
792 #define OP_WAYPOINT_TWICE (0x0008 | OP_CATEGORY_TRAINING)
793 #define OP_TRAINING_MSG (0x0009 | OP_CATEGORY_TRAINING)
794 #define OP_FLASH_HUD_GAUGE (0x000a | OP_CATEGORY_TRAINING)
795 #define OP_SPECIAL_CHECK (0x000b | OP_CATEGORY_TRAINING)
796 #define OP_SECONDARIES_DEPLETED (0x000c | OP_CATEGORY_TRAINING)
797 #define OP_FACING2 (0x000d | OP_CATEGORY_TRAINING)
798 #define OP_PRIMARIES_DEPLETED (0x000e | OP_CATEGORY_TRAINING) // Goober5000
799 #define OP_MISSILE_LOCKED (0x000f | OP_CATEGORY_TRAINING) // Sesquipedalian
800 #define OP_SET_TRAINING_CONTEXT_FLY_PATH (0x0010 | OP_CATEGORY_TRAINING)
801 #define OP_SET_TRAINING_CONTEXT_SPEED (0x0011 | OP_CATEGORY_TRAINING)
802 #define OP_KEY_RESET_MULTIPLE (0x0012 | OP_CATEGORY_TRAINING) // Goober5000
803 #define OP_RESET_ORDERS (0x0013 | OP_CATEGORY_TRAINING) // Karajorma
804 #define OP_QUERY_ORDERS (0x0014 | OP_CATEGORY_TRAINING) // Karajorma
805 #define OP_NODE_TARGETED (0x0015 | OP_CATEGORY_TRAINING) // FUBAR
806 #define OP_IGNORE_KEY (0x0016 | OP_CATEGORY_TRAINING) // Karajorma
809 #define SEXP_HULL_STRING "Hull"
810 #define SEXP_SIM_HULL_STRING "Simulated Hull"
811 #define SEXP_SHIELD_STRING "Shields"
812 #define SEXP_ALL_ENGINES_STRING "<all engines>"
813 #define SEXP_ALL_TURRETS_STRING "<all turrets>"
814 #define SEXP_ARGUMENT_STRING "<argument>"
815 #define SEXP_NONE_STRING "<none>"
816 #define SEXP_ANY_STRING "<any string>"
817 #define SEXP_ALL_BANKS_STRING "<all weapon banks>"
820 #define CAR(n) ((n < 0) ? -1 : Sexp_nodes[n].first)
821 #define CDR(n) ((n < 0) ? -1 : Sexp_nodes[n].rest)
822 #define CADR(n) CAR(CDR(n))
827 #define CDDR(n) CDR(CDR(n))
828 #define CDDDR(n) CDR(CDDR(n))
829 #define CDDDDR(n) CDR(CDDDR(n))
830 #define CDDDDDR(n) CDR(CDDDDR(n))
831 #define CADDR(n) CAR(CDDR(n))
832 #define CADDDR(n) CAR(CDDDR(n))
833 #define CADDDDR(n) CAR(CDDDDR(n))
834 #define CADDDDDR(n) CAR(CDDDDDR(n))
836 #define REF_TYPE_SHIP 1
837 #define REF_TYPE_WING 2
838 #define REF_TYPE_PLAYER 3
839 #define REF_TYPE_WAYPOINT 4
840 #define REF_TYPE_PATH 5 // waypoint path
842 #define SRC_SHIP_ARRIVAL 0x10000
843 #define SRC_SHIP_DEPARTURE 0x20000
844 #define SRC_WING_ARRIVAL 0x30000
845 #define SRC_WING_DEPARTURE 0x40000
846 #define SRC_EVENT 0x50000
847 #define SRC_MISSION_GOAL 0x60000
848 #define SRC_SHIP_ORDER 0x70000
849 #define SRC_WING_ORDER 0x80000
850 #define SRC_DEBRIEFING 0x90000
851 #define SRC_BRIEFING 0xa0000
852 #define SRC_UNKNOWN 0xffff0000
853 #define SRC_MASK 0xffff0000
854 #define SRC_DATA_MASK 0xffff
856 #define SEXP_MODE_GENERAL 0
857 #define SEXP_MODE_CAMPAIGN 1
862 #define SEXP_NOT_USED 0
867 #define SEXP_FLAG_PERSISTENT (1<<31) // should this sexp node be persistant across missions
868 #define SEXP_FLAG_VARIABLE (1<<30)
871 #define SEXP_VARIABLE_CHAR ('@')
873 #define SEXP_VARIABLE_NUMBER (1<<4) // (0x0010)
874 #define SEXP_VARIABLE_STRING (1<<5) // (0x0020)
875 #define SEXP_VARIABLE_UNKNOWN (1<<6) // (0x0040)
876 #define SEXP_VARIABLE_NOT_USED (1<<7) // (0x0080)
878 #define SEXP_VARIABLE_BLOCK (1<<0) // (0x0001)
883 #define SEXP_VARIABLE_PLAYER_PERSISTENT (1<<3) // (0x0008)
886 #define SEXP_VARIABLE_CAMPAIGN_PERSISTENT (1<<29) // (0x0100)
888 #define SEXP_VARIABLE_NETWORK (1<<28)
890 #define BLOCK_EXP_SIZE 6
896 #define SHOCK_SPEED 5
898 #define BLOCK_HIT_SIZE 2
899 #define SHIELD_STRENGTH 0
900 #define HULL_STRENGTH 1
903 #define SEXP_VARIABLE_SET (0x0100)
904 #define SEXP_VARIABLE_MODIFIED (0x0200)
906 #define SEXP_TYPE_MASK(t) (t & 0x00ff)
907 #define SEXP_NODE_TYPE(n) (Sexp_nodes[n].type & 0x00ff)
910 #define SEXP_ATOM_LIST 0
911 #define SEXP_ATOM_OPERATOR 1
912 #define SEXP_ATOM_NUMBER 2
913 #define SEXP_ATOM_STRING 3
921 #define SEXP_KNOWN_FALSE -32767 //-1
922 #define SEXP_KNOWN_TRUE -32766 //-2
923 #define SEXP_UNKNOWN -32765 //-3
924 #define SEXP_NAN -32764 //-4 // not a number -- used when ships/wing part of boolean and haven't arrived yet
925 #define SEXP_NAN_FOREVER -32763 //-5 // not a number and will never change -- used to falsify boolean sexpressions
926 #define SEXP_CANT_EVAL -32762 //-6 // can't evaluate yet for whatever reason (acts like false)
927 #define SEXP_NUM_EVAL -32761 //-7 // already completed an arithmetic operation and result is stored
930 #define SEXP_CHECK_NONOP_ARGS -1 // non-operator has arguments
931 #define SEXP_CHECK_OP_EXPECTED -2 // operator expected, but found data instead
932 #define SEXP_CHECK_UNKNOWN_OP -3 // unrecognized operator
933 #define SEXP_CHECK_TYPE_MISMATCH -4 // return type or data type mismatch
934 #define SEXP_CHECK_BAD_ARG_COUNT -5 // argument count in incorrect
935 #define SEXP_CHECK_UNKNOWN_TYPE -6 // unrecognized return type of data type
937 #define SEXP_CHECK_INVALID_NUM -101 // number is not valid
938 #define SEXP_CHECK_INVALID_SHIP -102 // invalid ship name
939 #define SEXP_CHECK_INVALID_WING -103 // invalid wing name
940 #define SEXP_CHECK_INVALID_SUBSYS -104 // invalid subsystem
941 #define SEXP_CHECK_INVALID_IFF -105 // invalid iff string
942 #define SEXP_CHECK_INVALID_POINT -106 // invalid point
943 #define SEXP_CHECK_NEGATIVE_NUM -107 // negative number wasn't allowed
944 #define SEXP_CHECK_INVALID_SHIP_WING -108 // invalid ship/wing
945 #define SEXP_CHECK_INVALID_SHIP_TYPE -109 // invalid ship type
946 #define SEXP_CHECK_UNKNOWN_MESSAGE -110 // invalid message
947 #define SEXP_CHECK_INVALID_PRIORITY -111 // invalid priority for a message
948 #define SEXP_CHECK_INVALID_MISSION_NAME -112 // invalid mission name
949 #define SEXP_CHECK_INVALID_GOAL_NAME -113 // invalid goal name
950 #define SEXP_CHECK_INVALID_LEVEL -114 // mission level too high in campaign
951 #define SEXP_CHECK_INVALID_MSG_SOURCE -115 // invalid 'who-from' for a message being sent
952 #define SEXP_CHECK_INVALID_DOCKER_POINT -116
953 #define SEXP_CHECK_INVALID_DOCKEE_POINT -117
954 #define SEXP_CHECK_ORDER_NOT_ALLOWED -118 // ship goal (order) isn't allowed for given ship
955 #define SEXP_CHECK_DOCKING_NOT_ALLOWED -119
956 #define SEXP_CHECK_NUM_RANGE_INVALID -120
957 #define SEXP_CHECK_INVALID_EVENT_NAME -121
958 #define SEXP_CHECK_INVALID_SKILL_LEVEL -122
959 #define SEXP_CHECK_INVALID_MEDAL_NAME -123
960 #define SEXP_CHECK_INVALID_WEAPON_NAME -124
961 #define SEXP_CHECK_INVALID_SHIP_CLASS_NAME -125
962 #define SEXP_CHECK_INVALID_GAUGE_NAME -126
963 #define SEXP_CHECK_INVALID_JUMP_NODE -127
964 #define SEXP_CHECK_INVALID_VARIABLE -128
965 #define SEXP_CHECK_INVALID_AI_CLASS -129
966 #define SEXP_CHECK_UNKNOWN_ERROR -130
967 #define SEXP_CHECK_INVALID_SUPPORT_SHIP_CLASS -131
968 #define SEXP_CHECK_INVALID_SHIP_WITH_BAY -132
969 #define SEXP_CHECK_INVALID_ARRIVAL_LOCATION -133
970 #define SEXP_CHECK_INVALID_DEPARTURE_LOCATION -134
971 #define SEXP_CHECK_INVALID_ARRIVAL_ANCHOR_ALL -135
972 #define SEXP_CHECK_INVALID_SOUNDTRACK_NAME -136
973 #define SEXP_CHECK_INVALID_INTEL_NAME -137
974 #define SEXP_CHECK_INVALID_SKYBOX_NAME -138
975 #define SEXP_CHECK_INVALID_PERSONA_NAME -139
976 #define SEXP_CHECK_INVALID_VARIABLE_TYPE -140
977 #define SEXP_CHECK_INVALID_SUBSYS_TYPE -141
978 #define SEXP_CHECK_INVALID_FONT -142
979 #define SEXP_CHECK_INVALID_HUD_ELEMENT -143
980 #define SEXP_CHECK_INVALID_SOUND_ENVIRONMENT -144
981 #define SEXP_CHECK_INVALID_SOUND_ENVIRONMENT_OPTION -145
982 #define SEXP_CHECK_INVALID_EXPLOSION_OPTION -146
983 #define SEXP_CHECK_INVALID_SHIP_EFFECT -147
984 #define SEXP_CHECK_INVALID_TURRET_TARGET_ORDER -148
985 #define SEXP_CHECK_INVALID_ARMOR_TYPE -149
986 #define SEXP_CHECK_INVALID_DAMAGE_TYPE -150
987 #define SEXP_CHECK_INVALID_TARGET_PRIORITIES -151
988 #define SEXP_CHECK_INVALID_AUDIO_VOLUME_OPTION -152
989 #define SEXP_CHECK_INVALID_HUD_GAUGE -153
990 #define SEXP_CHECK_INVALID_ANIMATION_TYPE -154
991 #define SEXP_CHECK_INVALID_MISSION_MOOD -155
992 #define SEXP_CHECK_INVALID_SHIP_FLAG -156
993 #define SEXP_CHECK_INVALID_TEAM_COLOR -157
994 #define SEXP_CHECK_INVALID_SKYBOX_FLAG -158
995 #define SEXP_CHECK_INVALID_GAME_SND -159
996 #define SEXP_CHECK_INVALID_SSM_CLASS -160
998 #define TRAINING_CONTEXT_SPEED (1<<0)
999 #define TRAINING_CONTEXT_FLY_PATH (1<<1)
1002 #define SPECIAL_CHECK_TRAINING_FAILURE 2000
1009 #define SEXP_CONDITIONAL_OPERATOR (1<<0)
1010 #define SEXP_ARGUMENT_OPERATOR (1<<1)
1011 #define SEXP_ACTION_OPERATOR (1<<2)
1012 #define SEXP_ARITHMETIC_OPERATOR (1<<3)
1013 #define SEXP_BOOLEAN_OPERATOR (1<<4)
1014 #define SEXP_INTEGER_OPERATOR (1<<5)
1015 #define SEXP_GOAL_OPERATOR (1<<6)
1017 #define SEXP_TRIGGER_OPERATOR ( SEXP_ARITHMETIC_OPERATOR | SEXP_BOOLEAN_OPERATOR | SEXP_INTEGER_OPERATOR )
1038 #define SNF_ARGUMENT_VALID (1<<0)
1039 #define SNF_ARGUMENT_SELECT (1<<1)
1040 #define SNF_DEFAULT_VALUE SNF_ARGUMENT_VALID
1049 #define ARG_ITEM_F_DUP (1<<0)
1060 arg_item() : text(NULL), next(NULL), flags(0), nesting_level(0) {}
1073 #define DIRECTIVE_WING_ZERO -999
1131 extern int run_sexp(
const char* sexpression);
1133 extern int eval_sexp(
int cur_node,
int referenced_node = -1);
1134 extern int is_sexp_true(
int cur_node,
int referenced_node = -1);
1183 void set_primary_ammo (
int ship_index,
int requested_bank,
int requested_ammo,
int rearm_limit=-1,
bool update=
true);
1184 void set_secondary_ammo (
int ship_index,
int requested_bank,
int requested_ammo,
int rearm_limit=-1,
bool update=
true);
bool has_special_explosion_block_index(ship *shipp, int *index)
GLenum GLsizei GLenum format
int is_sexp_top_level(int node)
int query_node_in_sexp(int node, int sexp)
int build_sexp_string(SCP_string &accumulator, int cur_node, int level, int mode)
void flush_sexp_tree(int node)
bool sexp_replace_variable_names_with_values(char *text, int max_len)
int verify_vector(char *text)
int get_nth_variable_index(int nth, int variable_type)
void sexp_modify_variable(char *text, int index, bool sexp_callback=true)
void set_secondary_ammo(int ship_index, int requested_bank, int requested_ammo, int rearm_limit=-1, bool update=true)
int sexp_campaign_persistent_variable_count()
int get_operator_const(const char *token)
char * Sound_environment_option[]
SCP_vector< SCP_string > * Current_event_log_variable_buffer
int Training_context_speed_set
int verify_sexp_tree(int node)
int special_argument_appears_in_sexp_tree(int node)
int Training_context_speed_timestamp
int dup_sexp_chain(int node)
void update_sexp_references(const char *old_name, const char *new_name)
bool generate_special_explosion_block_variables()
int Players_mlocked_timestamp
int sexp_variable_count()
int Players_target_timestamp
int get_subcategory(int sexp_id)
std::basic_string< char, std::char_traits< char >, std::allocator< char > > SCP_string
int category_of_subcategory(int subcategory_id)
int Sexp_hud_display_warpout
void set_primary_ammo(int ship_index, int requested_bank, int requested_ammo, int rearm_limit=-1, bool update=true)
int check_sexp_syntax(int node, int return_type=OPR_BOOL, int recursive=0, int *bad_node=0, int mode=0)
int query_referenced_in_sexp(int mode, char *name, int *node)
int special_argument_appears_in_sexp_list(int node)
op_menu_struct op_submenu[]
int Num_explosion_options
int Knossos_warp_ani_used
int get_operator_index(const char *token)
struct sexp_ai_goal_link sexp_ai_goal_link
void sexp_variable_sort()
char * sexp_error_message(int num)
int find_parent_operator(int num)
struct sexp_help_struct sexp_help_struct
SCP_vector< SCP_string > * Current_event_log_argument_buffer
int sexp_variable_typed_count(int sexp_variables_index, int variable_type)
int get_index_sexp_variable_from_node(int node)
int find_sexp_list(int num)
int get_index_sexp_variable_name(const char *text)
void skip_white(char **str)
int validate_float(char **str)
waypoint_list * Training_context_path
int get_sexp_id(char *sexp_name)
int Training_context_goal_waypoint
float Training_context_distance
int query_operator_return_type(int op)
void do_action_for_each_special_argument(int cur_node)
SCP_vector< int > Current_sexp_operator
int Training_context_speed_min
int sexp_add_variable(const char *text, const char *var_name, int type, int index=-1)
GLuint const GLchar * name
int cmp_sexp_chains(int node1, int node2)
void set_turret_primary_ammo(ship_subsys *turret, int requested_bank, int requested_ammo, bool update=true)
int query_sexp_ai_goal_valid(int sexp_ai_goal, int ship)
void sexp_fred_modify_variable(const char *text, const char *var_name, int index, int type)
ship_subsys * Players_targeted_subsys
sexp_variable Block_variables[MAX_SEXP_VARIABLES]
void sexp_unmark_persistent(int n)
int stuff_sexp_variable_list()
void clear_nesting_level()
int Training_context_at_waypoint
struct sexp_oper sexp_oper
int sexp_query_type_match(int opf, int opr)
int query_operator_argument_type(int op, int argnum)
void add_data_set_dup(char *str)
int get_category(int sexp_id)
struct op_menu_struct op_menu_struct
char * Explosion_option[]
int Training_context_speed_max
char * Adjust_audio_options[]
struct sexp_node sexp_node
int free_one_sexp(int num)
void set_turret_secondary_ammo(ship_subsys *turret, int requested_bank, int requested_ammo, bool update=true)
sexp_help_struct Sexp_help[]
char variable_name[TOKEN_LENGTH]
void sexp_variable_delete(int index)
SCP_vector< SCP_string > * Current_event_log_buffer
sexp_variable Sexp_variables[MAX_SEXP_VARIABLES]
int get_effect_from_name(char *name)
int Num_sound_environment_options
int num_block_variables()
int is_sexp_true(int cur_node, int referenced_node=-1)
int count_free_sexp_nodes()
int alloc_sexp(char *text, int type, int subtype, int first, int rest)
int get_index_sexp_variable_name_special(const char *text)
void add_data_dup(char *str)
void maybe_write_to_event_log(int result)
void sexp_mark_persistent(int n)
int run_sexp(const char *sexpression)
struct sexp_variable sexp_variable
bool output_sexps(char *filepath)
#define MAX_SEXP_VARIABLES
int Num_adjust_audio_options
int eval_sexp(int cur_node, int referenced_node=-1)