forked from scp-fs2open/fs2open.github.com
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathsexp.h
More file actions
1673 lines (1500 loc) · 55.2 KB
/
sexp.h
File metadata and controls
1673 lines (1500 loc) · 55.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
* Copyright (C) Volition, Inc. 1999. All rights reserved.
*
* All source code herein is the property of Volition, Inc. You may not sell
* or otherwise commercially exploit the source or things you created based on the
* source.
*
*/
#ifndef _SEXP_H
#define _SEXP_H
#include "globalincs/globals.h"
#include "globalincs/pstypes.h" // for NULL
#include "object/object_flags.h"
#include "ship/ship_flags.h"
#include "mission/mission_flags.h"
#include "ai/ai_flags.h"
class ship_subsys;
class ship;
struct prop;
class waypoint_list;
class object;
class waypoint;
class p_object;
struct ship_obj;
// bumped to 30 by Goober5000
#define OPERATOR_LENGTH 30 // if this ever exceeds TOKEN_LENGTH, let JasonH know!
#define MAX_SEXP_VARIABLES 250
// Operator argument formats (data types of an argument)
enum sexp_opf_t : int {
OPF_UNUSED, // argument types need to start at 1 instead of 0
OPF_NONE, // argument cannot exist at this position if it's this
OPF_NULL, // no value. Can still be used for type matching, however
OPF_BOOL,
OPF_NUMBER,
OPF_SHIP,
OPF_PROP,
OPF_WING,
OPF_SUBSYSTEM,
OPF_POINT, // either a 3d point in space, or a waypoint name
OPF_IFF,
OPF_AI_GOAL, // special to match ai goals
OPF_DOCKER_POINT, // docking point on docker ship
OPF_DOCKEE_POINT, // docking point on dockee ship
OPF_MESSAGE, // the name (id) of a message in Messages[] array
OPF_WHO_FROM, // who sent the message -- doesn't necessarily have to be a ship!!!
OPF_PRIORITY, // priority for messages
OPF_WAYPOINT_PATH, // name of a waypoint
OPF_POSITIVE, // positive number or zero
OPF_MISSION_NAME, // name of a mission for various mission related things
OPF_SHIP_POINT, // a waypoint or a ship
OPF_GOAL_NAME, // name of goal (or maybe event?) from a mission
OPF_SHIP_WING, // either a ship or wing name (they don't conflict)
OPF_SHIP_PROP, // either a ship or a prop
OPF_SHIP_WING_WHOLETEAM, // Karajorma - Ship, wing or an entire team's worth of ships
OPF_SHIP_WING_SHIPONTEAM_POINT, // name of a ship, wing, any ship on a team, or a point
OPF_SHIP_WING_POINT,
OPF_SHIP_WING_POINT_OR_NONE, // WMC - Ship, wing, point or none
OPF_SHIP_TYPE, // type of ship (fighter/bomber/etc)... NOTE: the type "fighter/bomber" is allowed even though it's not a real ship type; SEXPs must account for this
OPF_KEYPRESS, // a default key
OPF_EVENT_NAME, // name of an event
OPF_AI_ORDER, // a squadmsg order player can give to a ship
OPF_SKILL_LEVEL, // current skill level of the game
OPF_MEDAL_NAME, // name of medals
OPF_WEAPON_NAME, // name of a weapon
OPF_SHIP_CLASS_NAME, // name of a ship class
OPF_PROP_CLASS_NAME, // name of a prop class
OPF_CUSTOM_HUD_GAUGE, // name of custom HUD gauge
OPF_HUGE_WEAPON, // name of a secondary bomb type weapon
OPF_SHIP_NOT_PLAYER, // a ship, but not a player ship
OPF_JUMP_NODE_NAME, // name of a jump node
OPF_VARIABLE_NAME, // variable name
OPF_AMBIGUOUS, // type used with variable
OPF_AWACS_SUBSYSTEM, // an awacs subsystem
OPF_CARGO, // Goober5000 - a cargo string (currently used for set-cargo and is-cargo)
OPF_AI_CLASS, // Goober5000 - an AI class
OPF_SUPPORT_SHIP_CLASS, // Goober5000 - a support ship class
OPF_ARRIVAL_LOCATION, // Goober5000 - a ship arrival location
OPF_ARRIVAL_ANCHOR_ALL, // Goober5000 - all of a ship's possible arrival anchors
OPF_DEPARTURE_LOCATION, // Goober5000 - a ship departure location
OPF_SHIP_WITH_BAY, // Goober5000 - a ship with a fighter bay
OPF_SOUNDTRACK_NAME, // Goober5000 - the name of a music soundtrack
OPF_INTEL_NAME, // Goober5000 - the name of an intel entry in species.tbl
OPF_STRING, // Goober5000 - any old string
OPF_ROTATING_SUBSYSTEM, // Goober5000 - a rotating subsystem
OPF_NAV_POINT, // Kazan - a Nav Point name
OPF_SSM_CLASS, // Goober5000 - an SSM class
OPF_FLEXIBLE_ARGUMENT, // Goober5000 - special to match for when-argument
OPF_ANYTHING, // Goober5000 - anything goes, except containers
OPF_SKYBOX_MODEL_NAME, // taylor - changing skybox model
OPF_SHIP_OR_NONE, // Goober5000 - an "optional" ship argument
OPF_BACKGROUND_BITMAP, // phreak - name of a background bitmap
OPF_SUN_BITMAP, // phreak - name of a background bitmap
OPF_NEBULA_STORM_TYPE, // phreak - name a nebula storm
OPF_NEBULA_POOF, // phreak - name of a nebula poof
OPF_TURRET_TARGET_ORDER, // WMC - name of a turret target type (see aiturret.cpp)
OPF_SUBSYSTEM_OR_NONE, // Goober5000 - an "optional" subsystem argument
OPF_PERSONA, // Karajorma - name of a persona
OPF_SUBSYS_OR_GENERIC, // Karajorma - a subsystem or a generic name (like engine) which covers all subsystems of that type
OPF_ORDER_RECIPIENT, // Karajorma - since orders can go to All Fighters as well as a ship or wing
OPF_SUBSYSTEM_TYPE, // Goober5000 - a generic subsystem type (navigation, engines, etc.) rather than a specific subsystem
OPF_POST_EFFECT, // Hery - type of post-processing effect
OPF_TARGET_PRIORITIES, // FUBAR - Target priority groups
OPF_ARMOR_TYPE, // FUBAR - Armor type or <none>
OPF_FONT, // Goober5000 - a FreeSpace font
OPF_HUD_ELEMENT, // A magic name of a specific HUD element
OPF_SOUND_ENVIRONMENT, // Goober5000 - one of EFX_presets, per Taylor
OPF_SOUND_ENVIRONMENT_OPTION, // Goober5000 - one of Taylor's options
OPF_EXPLOSION_OPTION, // Goober5000
OPF_AUDIO_VOLUME_OPTION, // The E
OPF_WEAPON_BANK_NUMBER, // Karajorma - The number of a primary/secondary/tertiary weapon bank or all of them
OPF_MESSAGE_OR_STRING, // Goober5000 - provides a list of messages like OPF_MESSAGE, but also allows entering arbitrary strings
OPF_BUILTIN_HUD_GAUGE, // The E
OPF_DAMAGE_TYPE, // FUBAR - Damage type or <none>
OPF_SHIP_EFFECT, // The E - per-ship effects, as defined in post-processing.tbl
OPF_ANIMATION_TYPE, // Goober5000 - as defined in modelanim.h
OPF_MISSION_MOOD, // Karajorma - Moods determine which builtin messages will be sent
OPF_SHIP_FLAG, // Karajorma - The name of a ship flag
OPF_TEAM_COLOR, // The E - Color settings as defined in Colors.tbl
OPF_NEBULA_PATTERN, // Axem - Full Nebula Background Patterns, as defined in nebula.tbl
OPF_SKYBOX_FLAGS, // niffiwan - valid skybox flags
OPF_GAME_SND, // m!m - A game sound
OPF_FIREBALL, // Goober5000 - an entry in fireball.tbl
OPF_SPECIES, // Goober5000
OPF_LANGUAGE, // Goober5000
OPF_FUNCTIONAL_WHEN_EVAL_TYPE, // Goober5000
OPF_CONTAINER_NAME, // Karajorma/jg18 - The name of a SEXP container
OPF_LIST_CONTAINER_NAME, // Karajorma/jg18 - The name of a SEXP list container
OPF_MAP_CONTAINER_NAME, // Karajorma/jg18 - The name of a SEXP map container
OPF_ANIMATION_NAME, // Lafiel
OPF_CONTAINER_VALUE, // jg18 - Container data and map container keys
OPF_DATA_OR_STR_CONTAINER, // jg18 - any data, or a container that is accessed via strings
OPF_TRANSLATING_SUBSYSTEM, // Goober5000 - a translating subsystem
OPF_ANY_HUD_GAUGE, // Goober5000 - both custom and builtin
OPF_WING_FLAG, // Goober5000 - The name of a wing flag
OPF_ASTEROID_TYPES, // MjnMixael - Asteroids from asteroids.tbl, asteroid types only
OPF_DEBRIS_TYPES, // MjnMixael - Asteroids from asteroids.tbl, debris types only
OPF_WING_FORMATION, // Goober5000 - as defined in ships.tbl
OPF_MOTION_DEBRIS, // MjnMixael - Motion debris types as defined in stars.tbl
OPF_TURRET_TYPE, // MjnMixael - Turret types as defined in aiturret.cpp
OPF_BOLT_TYPE, // MjnMixael - Lightning bolt types as defined in lightning.tbl
OPF_TRAITOR_OVERRIDE, // MjnMixael - Traitor overrides as defined in traitor.tbl
OPF_LUA_GENERAL_ORDER, // MjnMixael - General orders as defined in sexps.tbl
OPF_CHILD_LUA_ENUM, // MjnMixael - Used to let Lua Enums reference Enums
OPF_MISSION_CUSTOM_STRING, // MjnMixael - The custom strings as defined in FRED
OPF_MESSAGE_TYPE, // naomimyselfandi - A message type (Attack Target et al.)
//Must always be at the end of the list
First_available_opf_id
};
struct dynamic_sexp_enum_list {
SCP_string name;
SCP_vector<SCP_string> list;
};
extern SCP_vector<dynamic_sexp_enum_list> Dynamic_enums;
struct dynamic_sexp_parameter_list {
SCP_string operator_name;
SCP_vector<std::pair<int, int>> parameter_map;
};
extern SCP_vector<dynamic_sexp_parameter_list> Dynamic_parameters;
struct dynamic_sexp_child_enum_suffixes {
SCP_string operator_name;
int param_index;
SCP_string suffix;
};
extern SCP_vector<dynamic_sexp_child_enum_suffixes> Dynamic_enum_suffixes;
int get_dynamic_parameter_index(const SCP_string &op_name, int param);
int get_dynamic_enum_position(const SCP_string &enum_name);
SCP_string get_child_enum_suffix(const SCP_string& op_name, int param_index);
// Operand return types
enum sexp_opr_t : int {
OPR_NONE,
OPR_NUMBER, // returns number
OPR_BOOL, // returns true/false value
OPR_NULL, // doesn't return a value
OPR_AI_GOAL, // is an ai operator (doesn't really return a value, but used for type matching)
OPR_POSITIVE, // returns a non-negative number
OPR_STRING, // not really a return type, but used for type matching.
OPR_AMBIGUOUS, // not really a return type, but used for type matching.
OPR_FLEXIBLE_ARGUMENT, // Goober5000 - is an argument operator (doesn't really return a value, but used for type matching)
};
#define OP_INSERT_FLAG 0x8000
#define OP_REPLACE_FLAG 0x4000
// if we ever have more than 1024 (!)
// total sexps, we're going to have to
// figure out a different way of
// distinguishing between sexp identifier
// and sexp array index
#define FIRST_OP 0x0400
enum : int {
OP_CATEGORY_NONE,
OP_CATEGORY_OBJECTIVE,
OP_CATEGORY_TIME,
OP_CATEGORY_LOGICAL,
OP_CATEGORY_ARITHMETIC,
OP_CATEGORY_STATUS,
OP_CATEGORY_CHANGE,
OP_CATEGORY_CONDITIONAL,
OP_CATEGORY_AI,
OP_CATEGORY_TRAINING,
OP_CATEGORY_UNLISTED,
OP_CATEGORY_GOAL_EVENT,
// this should come after every category
First_available_category_id
};
// New subcategories! :) -- Goober5000
// Adding more subcategories is possible with the new code. All that needs to be done is
// to add a line here, some appropriate case statements in get_subcategory() and
// category_from_subcategory(), and the submenu name in the op_submenu[] array in sexp.cpp.
enum : int {
OP_SUBCATEGORY_NONE,
CHANGE_SUBCATEGORY_MESSAGING,
CHANGE_SUBCATEGORY_AI_CONTROL,
CHANGE_SUBCATEGORY_SHIP_STATUS,
CHANGE_SUBCATEGORY_SHIELDS_ENGINES_AND_WEAPONS,
CHANGE_SUBCATEGORY_SUBSYSTEMS,
CHANGE_SUBCATEGORY_CARGO,
CHANGE_SUBCATEGORY_ARMOR_AND_DAMAGE_TYPES,
CHANGE_SUBCATEGORY_BEAMS_AND_TURRETS,
CHANGE_SUBCATEGORY_MODELS_AND_TEXTURES,
CHANGE_SUBCATEGORY_COORDINATE_MANIPULATION,
CHANGE_SUBCATEGORY_MISSION_AND_CAMPAIGN,
CHANGE_SUBCATEGORY_MUSIC_AND_SOUND,
CHANGE_SUBCATEGORY_HUD,
CHANGE_SUBCATEGORY_NAV,
CHANGE_SUBCATEGORY_CUTSCENES,
CHANGE_SUBCATEGORY_BACKGROUND_AND_NEBULA,
CHANGE_SUBCATEGORY_JUMP_NODES,
CHANGE_SUBCATEGORY_SPECIAL_EFFECTS,
CHANGE_SUBCATEGORY_VARIABLES,
CHANGE_SUBCATEGORY_CONTAINERS,
CHANGE_SUBCATEGORY_OTHER,
STATUS_SUBCATEGORY_MISSION,
STATUS_SUBCATEGORY_CUTSCENES,
STATUS_SUBCATEGORY_PLAYER,
STATUS_SUBCATEGORY_MULTIPLAYER,
STATUS_SUBCATEGORY_SHIP_STATUS,
STATUS_SUBCATEGORY_SHIELDS_ENGINES_AND_WEAPONS,
STATUS_SUBCATEGORY_CARGO,
STATUS_SUBCATEGORY_DAMAGE,
STATUS_SUBCATEGORY_DISTANCE_AND_COORDINATES,
STATUS_SUBCATEGORY_VARIABLES,
STATUS_SUBCATEGORY_CONTAINERS,
STATUS_SUBCATEGORY_OTHER,
// this should come after every subcategory
First_available_subcategory_id
};
enum : int {
//an operator value of 0 represents a non-operator.
//Because of this, OP_NOT_AN_OP must NEVER be changed to a different value and must always be assigned 0
OP_NOT_AN_OP = 0,
// OP_CATEGORY_ARITHMETIC
OP_PLUS = FIRST_OP,
OP_MINUS,
OP_MOD,
OP_MUL,
OP_DIV,
OP_RAND,
OP_ABS, // Goober5000
OP_MIN, // Goober5000
OP_MAX, // Goober5000
OP_AVG, // Goober5000
OP_RAND_MULTIPLE, // Goober5000
OP_POW, // Goober5000
OP_BITWISE_AND, // Goober5000
OP_BITWISE_OR, // Goober5000
OP_BITWISE_NOT, // Goober5000
OP_BITWISE_XOR, // Goober5000
OP_SET_BIT, // Goober5000
OP_UNSET_BIT, // Goober5000
OP_IS_BIT_SET, // Goober5000
OP_SIGNUM, // Goober5000
OP_IS_NAN, // Goober5000
OP_NAN_TO_NUMBER, // Goober5000
OP_ANGLE_VECTORS, // Lafiel
// OP_CATEGORY_LOGICAL
OP_TRUE,
OP_FALSE,
OP_AND,
OP_AND_IN_SEQUENCE,
OP_OR,
OP_EQUALS,
OP_GREATER_THAN,
OP_LESS_THAN,
OP_HAS_TIME_ELAPSED,
OP_NOT,
OP_STRING_EQUALS,
OP_STRING_GREATER_THAN,
OP_STRING_LESS_THAN,
OP_NOT_EQUAL, // Goober5000
OP_GREATER_OR_EQUAL, // Goober5000
OP_LESS_OR_EQUAL, // Goober5000
OP_XOR, // Goober5000
OP_PERFORM_ACTIONS_BOOL_FIRST, // Goober5000
OP_PERFORM_ACTIONS_BOOL_LAST, // Goober5000
OP_HAS_TIME_ELAPSED_MSECS, // Goober5000
OP_IS_TRUE_FOR_DURATION, // Goober5000
// OP_CATEGORY_GOAL_EVENT
OP_GOAL_INCOMPLETE,
OP_GOAL_TRUE_DELAY,
OP_GOAL_FALSE_DELAY,
OP_EVENT_INCOMPLETE,
OP_EVENT_TRUE_DELAY,
OP_EVENT_FALSE_DELAY,
OP_PREVIOUS_EVENT_TRUE,
OP_PREVIOUS_EVENT_FALSE,
OP_PREVIOUS_GOAL_TRUE,
OP_PREVIOUS_GOAL_FALSE,
OP_EVENT_TRUE_MSECS_DELAY,
OP_EVENT_FALSE_MSECS_DELAY,
OP_RESET_EVENT,
OP_RESET_GOAL,
// OP_CATEGORY_OBJECTIVE
OP_IS_DESTROYED_DELAY,
OP_IS_SUBSYSTEM_DESTROYED_DELAY,
OP_IS_DISABLED_DELAY,
OP_IS_DISARMED_DELAY,
OP_HAS_DOCKED_DELAY,
OP_HAS_UNDOCKED_DELAY,
OP_HAS_ARRIVED_DELAY,
OP_HAS_DEPARTED_DELAY,
OP_WAYPOINTS_DONE_DELAY,
OP_SHIP_TYPE_DESTROYED,
OP_PERCENT_SHIPS_DEPARTED,
OP_PERCENT_SHIPS_DESTROYED,
OP_DEPART_NODE_DELAY,
OP_DESTROYED_DEPARTED_DELAY,
OP_PERCENT_SHIPS_DISARMED, // Goober5000
OP_PERCENT_SHIPS_DISABLED, // Goober5000
OP_PERCENT_SHIPS_ARRIVED, // FUBAR-BDHR
OP_NAV_IS_VISITED, // Kazan
OP_WAS_DESTROYED_BY_DELAY, // WCS
OP_PERCENT_SHIPS_SCANNED, // Goober5000
// OP_CATEGORY_TIME
OP_TIME_SHIP_DESTROYED,
OP_TIME_SHIP_ARRIVED,
OP_TIME_SHIP_DEPARTED,
OP_TIME_WING_DESTROYED,
OP_TIME_WING_ARRIVED,
OP_TIME_WING_DEPARTED,
OP_MISSION_TIME,
OP_MISSION_TIME_MSECS, // Goober5000
OP_TIME_DOCKED,
OP_TIME_UNDOCKED,
OP_TIME_TO_GOAL, // tcrayford
OP_SET_HUD_TIME_PAD, // MjnMixael
// OP_CATEGORY_STATUS
OP_SHIELDS_LEFT,
OP_HITS_LEFT,
OP_HITS_LEFT_SUBSYSTEM, // deprecated
OP_SIM_HITS_LEFT,
OP_DISTANCE,
OP_DISTANCE_CENTER_SUBSYSTEM, // Goober5000
OP_LAST_ORDER_TIME,
OP_NUM_PLAYERS,
OP_SKILL_LEVEL_AT_LEAST,
OP_WAS_PROMOTION_GRANTED,
OP_WAS_MEDAL_GRANTED,
OP_CARGO_KNOWN_DELAY,
OP_CAP_SUBSYS_CARGO_KNOWN_DELAY,
OP_HAS_BEEN_TAGGED_DELAY,
OP_IS_TAGGED,
OP_NUM_KILLS,
OP_NUM_TYPE_KILLS,
OP_NUM_CLASS_KILLS,
OP_SHIELD_RECHARGE_PCT,
OP_ENGINE_RECHARGE_PCT,
OP_WEAPON_RECHARGE_PCT,
OP_SHIELD_QUAD_LOW,
OP_SECONDARY_AMMO_PCT,
OP_IS_SECONDARY_SELECTED,
OP_IS_PRIMARY_SELECTED,
OP_SPECIAL_WARP_DISTANCE,
OP_IS_SHIP_VISIBLE,
OP_TEAM_SCORE,
OP_PRIMARY_AMMO_PCT, // Goober5000
OP_IS_SHIP_STEALTHY, // Goober5000
OP_IS_CARGO, // Goober5000
OP_IS_FRIENDLY_STEALTH_VISIBLE, // Goober5000
OP_GET_OBJECT_X, // Goober5000
OP_GET_OBJECT_Y, // Goober5000
OP_GET_OBJECT_Z, // Goober5000
OP_IS_AI_CLASS, // Goober5000
OP_IS_SHIP_TYPE, // Goober5000
OP_IS_SHIP_CLASS, // Goober5000
OP_NUM_SHIPS_IN_BATTLE, // phreak
OP_CURRENT_SPEED, // WMCoolmon
OP_IS_IFF, // Goober5000
OP_IS_SPECIES, // Goober5000
OP_NUM_WITHIN_BOX, // WMCoolmon
OP_SCRIPT_EVAL_NUM, // WMCoolmon
OP_SCRIPT_EVAL_STRING, // WMCoolmon
OP_NUM_SHIPS_IN_WING, // Karajorma
OP_GET_PRIMARY_AMMO, // Karajorma
OP_GET_SECONDARY_AMMO, // Karajorma
OP_NUM_ASSISTS, // Karajorma
OP_SHIP_SCORE, // Karajorma
OP_SHIP_DEATHS, // Karajorma
OP_RESPAWNS_LEFT, // Karajorma
OP_IS_PLAYER, // Karajorma
OP_GET_DAMAGE_CAUSED, // Karajorma
OP_AFTERBURNER_LEFT, // Karajorma
OP_WEAPON_ENERGY_LEFT, // Karajorma
OP_PRIMARY_FIRED_SINCE, // Karajorma
OP_SECONDARY_FIRED_SINCE, // Karajorma
OP_CUTSCENES_GET_FOV, // Echelon9
OP_HITS_LEFT_SUBSYSTEM_GENERIC, // Goober5000
OP_HITS_LEFT_SUBSYSTEM_SPECIFIC, // Goober5000
OP_GET_OBJECT_PITCH, // Goober5000
OP_GET_OBJECT_BANK, // Goober5000
OP_GET_OBJECT_HEADING, // Goober5000
OP_HAS_PRIMARY_WEAPON, // Karajorma
OP_HAS_SECONDARY_WEAPON, // Karajorma
OP_STRING_TO_INT, // Karajorma
OP_STRING_GET_LENGTH, // Goober5000
OP_GET_OBJECT_SPEED_X,
OP_GET_OBJECT_SPEED_Y,
OP_GET_OBJECT_SPEED_Z,
OP_NAV_DISTANCE, // Kazan
OP_NAV_ISLINKED, // Kazan
OP_IS_FACING, // The E
OP_DIRECTIVE_VALUE, // Karajorma
OP_GET_NUM_COUNTERMEASURES, // Karajorma
OP_IS_IN_BOX, // Sushi
OP_IS_IN_MISSION, // Goober5000
OP_ARE_SHIP_FLAGS_SET, // Karajorma
OP_ARE_WING_FLAGS_SET, // Goober5000
OP_GET_THROTTLE_SPEED, // Karajorma
OP_HAS_ARMOR_TYPE, // MjnMixael
OP_TURRET_GET_PRIMARY_AMMO, // DahBlount, part of the turret ammo code
OP_TURRET_GET_SECONDARY_AMMO, // DahBlount, part of the turret ammo code
OP_TURRET_HAS_PRIMARY_WEAPON, // MjnMixael
OP_TURRET_HAS_SECONDARY_WEAPON, // MjnMixael
OP_IS_DOCKED, // Goober5000
OP_IS_IN_TURRET_FOV, // Goober5000
OP_GET_HOTKEY, // wookieejedi
OP_DISTANCE_CENTER, // Goober5000
OP_DISTANCE_BBOX, // Goober5000
OP_DISTANCE_BBOX_SUBSYSTEM, // Goober5000
OP_IS_LANGUAGE, // Goober5000
OP_SCRIPT_EVAL_BOOL, // Goober5000
OP_IS_CONTAINER_EMPTY, // Karajorma/jg18
OP_GET_CONTAINER_SIZE, // Karajorma/jg18
OP_LIST_HAS_DATA, // Karajorma/jg18
OP_LIST_DATA_INDEX, // Karajorma/jg18
OP_MAP_HAS_KEY, // Karajorma/jg18
OP_MAP_HAS_DATA_ITEM, // Karajorma/jg18
OP_ANGLE_FVEC_TARGET, // Lafiel
OP_IS_SHIP_EMP_ACTIVE, // MjnMixael
OP_PLAYER_IS_CHEATING_BASTARD, // The E
OP_TURRET_FIRED_SINCE, // Asteroth
OP_GET_SUPERNOVA_STAGE, // Goober5000
// OP_CATEGORY_CONDITIONAL
// conditional sexpressions
OP_WHEN,
OP_WHEN_ARGUMENT, // Goober5000
OP_EVERY_TIME, // Goober5000
OP_EVERY_TIME_ARGUMENT, // Goober5000
OP_ANY_OF, // Goober5000
OP_EVERY_OF, // Goober5000
OP_RANDOM_OF, // Goober5000
OP_NUMBER_OF, // Goober5000
OP_INVALIDATE_ARGUMENT, // Goober5000
OP_RANDOM_MULTIPLE_OF, // Karajorma
OP_IN_SEQUENCE, // Karajorma
OP_VALIDATE_ARGUMENT, // Karajorma
OP_DO_FOR_VALID_ARGUMENTS, // Karajorma
OP_INVALIDATE_ALL_ARGUMENTS, // Karajorma
OP_VALIDATE_ALL_ARGUMENTS, // Karajorma
OP_FOR_COUNTER, // Goober5000
OP_IF_THEN_ELSE, // Goober5000
OP_NUM_VALID_ARGUMENTS, // Karajorma
OP_FUNCTIONAL_IF_THEN_ELSE, // Goober5000
OP_FOR_SHIP_CLASS, // Goober5000
OP_FOR_SHIP_TYPE, // Goober5000
OP_FOR_SHIP_TEAM, // Goober5000
OP_FOR_SHIP_SPECIES, // Goober5000
OP_FOR_PLAYERS, // Goober5000
OP_FIRST_OF, // MageKing17
OP_SWITCH, // Goober5000
OP_FUNCTIONAL_SWITCH, // Goober5000
OP_FUNCTIONAL_WHEN, // Goober5000
OP_FOR_CONTAINER_DATA, // jg18
OP_FOR_MAP_CONTAINER_KEYS, // jg18
OP_ON_MISSION_SKIP, // Goober5000
OP_FOR_SUBSYSTEMS, // Goober5000
// OP_CATEGORY_CHANGE
// sexpressions with side-effects
OP_CHANGE_IFF,
OP_REPAIR_SUBSYSTEM,
OP_SABOTAGE_SUBSYSTEM,
OP_SET_SUBSYSTEM_STRNGTH,
OP_PROTECT_SHIP,
OP_SEND_MESSAGE,
OP_SEND_BUILTIN_MESSAGE,
OP_SELF_DESTRUCT,
OP_CLEAR_GOALS,
OP_ADD_GOAL,
OP_REMOVE_GOAL, // Goober5000
OP_INVALIDATE_GOAL,
OP_VALIDATE_GOAL,
OP_SEND_RANDOM_MESSAGE,
OP_TRANSFER_CARGO,
OP_EXCHANGE_CARGO,
OP_UNPROTECT_SHIP,
OP_GOOD_REARM_TIME,
OP_BAD_REARM_TIME,
OP_GRANT_PROMOTION,
OP_GRANT_MEDAL,
OP_ALLOW_SHIP,
OP_ALLOW_WEAPON,
OP_GOOD_SECONDARY_TIME,
OP_WARP_BROKEN,
OP_WARP_NOT_BROKEN,
OP_WARP_NEVER,
OP_WARP_ALLOWED,
OP_SHIP_INVISIBLE,
OP_SHIP_VISIBLE,
OP_SHIP_INVULNERABLE,
OP_SHIP_VULNERABLE,
OP_RED_ALERT,
OP_TECH_ADD_SHIP,
OP_TECH_ADD_WEAPON,
OP_END_CAMPAIGN,
OP_JETTISON_CARGO_DELAY,
OP_MODIFY_VARIABLE,
OP_NOP,
OP_BEAM_FIRE,
OP_BEAM_FREE,
OP_BEAM_FREE_ALL,
OP_BEAM_LOCK,
OP_BEAM_LOCK_ALL,
OP_BEAM_PROTECT_SHIP,
OP_BEAM_UNPROTECT_SHIP,
OP_TURRET_FREE,
OP_TURRET_FREE_ALL,
OP_TURRET_LOCK,
OP_TURRET_LOCK_ALL,
OP_ADD_REMOVE_ESCORT,
OP_AWACS_SET_RADIUS,
OP_SEND_MESSAGE_LIST,
OP_CAP_WAYPOINT_SPEED,
OP_SHIP_GUARDIAN,
OP_SHIP_NO_GUARDIAN,
OP_TURRET_TAGGED_ONLY_ALL,
OP_TURRET_TAGGED_CLEAR_ALL,
OP_SUBSYS_SET_RANDOM,
OP_SUPERNOVA_START,
OP_CARGO_NO_DEPLETE,
OP_SET_SPECIAL_WARPOUT_NAME,
OP_SHIP_VANISH,
OP_PROP_VANISH, // MjnMixael
OP_SHIELDS_ON, //-Sesquipedalian
OP_SHIELDS_OFF, //-Sesquipedalian
OP_CHANGE_AI_LEVEL, //-Sesquipedalian
OP_END_MISSION, //-Sesquipedalian. replaces end-mission-delay, which did nothing
OP_SET_SCANNED, // Goober5000
OP_SET_UNSCANNED, // Goober5000
OP_SHIP_STEALTHY, // Goober5000
OP_SHIP_UNSTEALTHY, // Goober5000
OP_SET_CARGO, // Goober5000
OP_CHANGE_AI_CLASS, // Goober5000
OP_FRIENDLY_STEALTH_INVISIBLE, // Goober5000
OP_FRIENDLY_STEALTH_VISIBLE, // Goober5000
OP_DAMAGED_ESCORT_LIST, //phreak
OP_DAMAGED_ESCORT_LIST_ALL, // Goober5000
OP_SHIP_VAPORIZE, // Goober5000
OP_SHIP_NO_VAPORIZE, // Goober5000
OP_COLLIDE_INVISIBLE, // Goober5000
OP_DONT_COLLIDE_INVISIBLE, // Goober5000
OP_PRIMITIVE_SENSORS_SET_RANGE, // Goober5000
OP_CHANGE_SHIP_CLASS, // Goober5000
OP_SCRIPT_EVAL, //WMC
OP_SET_SUPPORT_SHIP, // Goober5000
OP_DEACTIVATE_GLOW_POINTS, //-Bobboau
OP_ACTIVATE_GLOW_POINTS, //-Bobboau
OP_DEACTIVATE_GLOW_MAPS, //-Bobboau
OP_ACTIVATE_GLOW_MAPS, //-Bobboau
OP_DEACTIVATE_GLOW_POINT_BANK, //-Bobboau
OP_ACTIVATE_GLOW_POINT_BANK, //-Bobboau
OP_CHANGE_SOUNDTRACK, // Goober5000
OP_TECH_ADD_INTEL, // Goober5000
OP_TECH_RESET_TO_DEFAULT, // Goober5000
OP_CREATE_BOLT, //MjnMixael
OP_EXPLOSION_EFFECT, // Goober5000
OP_WARP_EFFECT, // Goober5000
OP_SET_OBJECT_FACING, // Goober5000
OP_SET_OBJECT_FACING_OBJECT, // Goober5000
OP_SET_OBJECT_POSITION, // Goober5000
OP_PLAY_SOUND_FROM_TABLE, // Goober5000
OP_PLAY_SOUND_FROM_FILE, // Goober5000
OP_CLOSE_SOUND_FROM_FILE, // Goober5000
OP_HUD_DISABLE, // Goober5000
OP_KAMIKAZE, //-Sesquipedalian
OP_MISSION_SET_SUBSPACE,
OP_TURRET_TAGGED_SPECIFIC, //phreak
OP_TURRET_TAGGED_CLEAR_SPECIFIC, //phreak
OP_LOCK_ROTATING_SUBSYSTEM, // Goober5000
OP_FREE_ROTATING_SUBSYSTEM, // Goober5000
OP_REVERSE_ROTATING_SUBSYSTEM, // Goober5000
OP_ROTATING_SUBSYS_SET_TURN_TIME, // Goober5000
OP_PLAYER_USE_AI, // Goober5000
OP_PLAYER_NOT_USE_AI, // Goober5000
OP_HUD_DISABLE_EXCEPT_MESSAGES, // Goober5000
OP_FORCE_JUMP, // Goober5000
OP_HUD_SET_TEXT, //WMC
OP_HUD_SET_XSTR,
OP_HUD_SET_TEXT_NUM, //WMC
OP_HUD_SET_COORDS, //WMC
OP_HUD_SET_FRAME, //WMC
OP_HUD_SET_COLOR, //WMC
OP_HUD_RESET_COLOR, // Goober5000
OP_HUD_SET_MAX_TARGETING_RANGE, // Goober5000
OP_SHIP_TAG, // Goober5000
OP_SHIP_UNTAG, // Goober5000
OP_SHIP_CHANGE_ALT_NAME, // Goober5000
OP_SHIP_CHANGE_DISPLAY_NAME,
OP_SCRAMBLE_MESSAGES, // phreak
OP_UNSCRAMBLE_MESSAGES, // phreak
OP_CUTSCENES_SET_CUTSCENE_BARS, // WMC
OP_CUTSCENES_UNSET_CUTSCENE_BARS, // WMC
OP_CUTSCENES_FADE_IN, // WMC
OP_CUTSCENES_FADE_OUT, // WMC
OP_CUTSCENES_SET_CAMERA_POSITION, // WMC
OP_CUTSCENES_SET_CAMERA_FACING, // WMC
OP_CUTSCENES_SET_CAMERA_FACING_OBJECT, // WMC
OP_CUTSCENES_SET_CAMERA_ROTATION, // WMC
OP_CUTSCENES_SET_FOV, // WMC
OP_CUTSCENES_RESET_FOV, // WMC
OP_CUTSCENES_RESET_CAMERA, // WMC
OP_CUTSCENES_SHOW_SUBTITLE, // WMC / deprecated
OP_CUTSCENES_SET_TIME_COMPRESSION, // WMC
OP_CUTSCENES_RESET_TIME_COMPRESSION, // WMC
OP_CUTSCENES_FORCE_PERSPECTIVE, // WMC
OP_JUMP_NODE_SET_JUMPNODE_NAME, // CommanderDJ
OP_JUMP_NODE_SET_JUMPNODE_DISPLAY_NAME,
OP_JUMP_NODE_SET_JUMPNODE_COLOR, // WMC
OP_JUMP_NODE_SET_JUMPNODE_MODEL, // WMC
OP_JUMP_NODE_SHOW_JUMPNODE, // WMC
OP_JUMP_NODE_HIDE_JUMPNODE, // WMC
OP_SHIP_GUARDIAN_THRESHOLD, // Goober5000
OP_SHIP_SUBSYS_GUARDIAN_THRESHOLD, // Goober5000
OP_SET_SKYBOX_MODEL, // taylor
OP_SHIP_CREATE,
OP_PROP_CREATE, // MjnMixael
OP_WEAPON_CREATE, // Goober5000
OP_SET_OBJECT_SPEED_X, // Deprecated by wookieejedi
OP_SET_OBJECT_SPEED_Y, // Deprecated by wookieejedi
OP_SET_OBJECT_SPEED_Z, // Deprecated by wookieejedi
OP_MISSION_SET_NEBULA,
OP_ADD_BACKGROUND_BITMAP,
OP_REMOVE_BACKGROUND_BITMAP,
OP_ADD_SUN_BITMAP,
OP_REMOVE_SUN_BITMAP,
OP_NEBULA_CHANGE_STORM,
OP_NEBULA_TOGGLE_POOF,
OP_NEBULA_SET_POOFS,
OP_NEBULA_FADE_POOF,
OP_NEBULA_FADE_POOFS,
OP_VOLUMETRICS_TOGGLE,
OP_TURRET_CHANGE_WEAPON,
OP_TURRET_SET_TARGET_ORDER,
OP_SHIP_TURRET_TARGET_ORDER,
OP_SET_PRIMARY_AMMO, // Karajorma
OP_SET_SECONDARY_AMMO, // Karajorma
OP_SHIP_BOMB_TARGETABLE, //WMC
OP_SHIP_BOMB_UNTARGETABLE, //WMC
OP_SHIP_SUBSYS_TARGETABLE, // Goober5000
OP_SHIP_SUBSYS_UNTARGETABLE, // Goober5000
OP_SET_DEATH_MESSAGE, // Goober5000
OP_SET_PRIMARY_WEAPON, // Karajorma
OP_SET_SECONDARY_WEAPON, // Karajorma
OP_DISABLE_BUILTIN_MESSAGES, // Karajorma
OP_ENABLE_BUILTIN_MESSAGES, // Karajorma
OP_LOCK_PRIMARY_WEAPON, // Karajorma
OP_UNLOCK_PRIMARY_WEAPON, // Karajorma
OP_LOCK_SECONDARY_WEAPON, // Karajorma
OP_UNLOCK_SECONDARY_WEAPON, // Karajorma
OP_SET_CAMERA_SHUDDER, // Goober5000
OP_SET_FRIENDLY_DAMAGE_CAPS, // Kestrellius
OP_ALLOW_TREASON, // Karajorma
OP_SHIP_COPY_DAMAGE, // Goober5000
OP_CHANGE_SUBSYSTEM_NAME, // Karajorma
OP_SET_PERSONA, // Karajorma
OP_CHANGE_PLAYER_SCORE, // Karajorma
OP_CHANGE_TEAM_SCORE, // Karajorma
OP_CUTSCENES_SET_CAMERA_FOV, // WMC
OP_CUTSCENES_SET_CAMERA, // WMC
OP_CUTSCENES_SET_CAMERA_HOST, // WMC
OP_CUTSCENES_SET_CAMERA_TARGET, // WMC
OP_LOCK_AFTERBURNER, // KeldorKatarn
OP_UNLOCK_AFTERBURNER, // KeldorKatarn
OP_SHIP_CHANGE_CALLSIGN, // FUBAR
OP_SET_RESPAWNS, // Karajorma
OP_SET_AFTERBURNER_ENERGY, // Karajorma
OP_SET_WEAPON_ENERGY, // Karajorma
OP_SET_SHIELD_ENERGY, // Karajorma
OP_SET_AMBIENT_LIGHT, // Karajorma
OP_CHANGE_IFF_COLOR, // Wanderer
OP_TURRET_SUBSYS_TARGET_DISABLE, // Wanderer
OP_TURRET_SUBSYS_TARGET_ENABLE, // Wanderer
OP_CLEAR_WEAPONS, // Wanderer
OP_SHIP_MANEUVER, // Wanderer
OP_SHIP_ROT_MANEUVER, // Wanderer
OP_SHIP_LAT_MANEUVER, // Wanderer
OP_GET_VARIABLE_BY_INDEX, // Goober5000
OP_SET_VARIABLE_BY_INDEX, // Goober5000
OP_SET_POST_EFFECT, // Hery
OP_TURRET_SET_OPTIMUM_RANGE, // FUBAR
OP_TURRET_SET_DIRECTION_PREFERENCE, // FUBAR
OP_TURRET_SET_TARGET_PRIORITIES, // FUBAR
OP_SET_ARMOR_TYPE, // FUBAR
OP_CUTSCENES_SHOW_SUBTITLE_TEXT, // Goober5000
OP_CUTSCENES_SHOW_SUBTITLE_IMAGE, // Goober5000
OP_HUD_DISPLAY_GAUGE,
OP_SET_SOUND_ENVIRONMENT, // Taylor
OP_UPDATE_SOUND_ENVIRONMENT, // Taylor
OP_SET_EXPLOSION_OPTION, // Goober5000
OP_ADJUST_AUDIO_VOLUME, // The E
OP_FORCE_GLIDE, // The E
OP_TURRET_SET_RATE_OF_FIRE, // FUBAR
OP_HUD_SET_MESSAGE, // The E
OP_SHIP_SUBSYS_NO_REPLACE, // FUBAR
OP_SET_IMMOBILE, // Goober5000
OP_SET_MOBILE, // Goober5000
OP_SHIP_SUBSYS_NO_LIVE_DEBRIS, // FUBAR
OP_SHIP_SUBSYS_VANISHED, // FUBAR
OP_SHIP_SUBSYS_IGNORE_IF_DEAD, // FUBAR
OP_HUD_SET_DIRECTIVE, // The E
OP_HUD_GAUGE_SET_ACTIVE, // The E - slightly deprecated
OP_HUD_ACTIVATE_GAUGE_TYPE, // The E - slightly deprecated
OP_SET_OBJECT_ORIENTATION, // Goober5000
OP_STRING_CONCATENATE, // Goober5000
OP_INT_TO_STRING, // Goober5000
OP_WEAPON_SET_DAMAGE_TYPE, // FUBAR
OP_SHIP_SET_DAMAGE_TYPE, // FUBAR
OP_SHIP_SHOCKWAVE_SET_DAMAGE_TYPE, // FUBAR
OP_FIELD_SET_DAMAGE_TYPE, // FUBAR
OP_TURRET_PROTECT_SHIP, // Goober5000
OP_TURRET_UNPROTECT_SHIP, // Goober5000
OP_DISABLE_ETS, // The E
OP_ENABLE_ETS, // The E
OP_NAV_ADD_WAYPOINT, // Kazan
OP_NAV_ADD_SHIP, // Kazan
OP_NAV_DEL, // Kazan
OP_NAV_HIDE, // Kazan
OP_NAV_RESTRICT, // Kazan
OP_NAV_UNHIDE, // Kazan
OP_NAV_UNRESTRICT, // Kazan
OP_NAV_SET_VISITED, // Kazan
OP_NAV_SET_CARRY, // Kazan
OP_NAV_UNSET_CARRY, // Kazan
OP_NAV_UNSET_VISITED, // Kazan
OP_NAV_SET_NEEDSLINK, // Kazan
OP_NAV_UNSET_NEEDSLINK, // Kazan
OP_NAV_USECINEMATICS, // Kazan
OP_NAV_USEAP, // Kazan
// OP_CATEGORY_CHANGE2
OP_STRING_GET_SUBSTRING, // Goober5000
OP_STRING_SET_SUBSTRING, // Goober5000
OP_SET_NUM_COUNTERMEASURES, // Karajorma
OP_ADD_TO_COLGROUP, // The E
OP_REMOVE_FROM_COLGROUP, // The E
OP_GET_COLGROUP_ID, // The E
OP_SHIP_EFFECT, // Valathil
OP_CLEAR_SUBTITLES, // The E
OP_BEAM_FIRE_COORDS, // Goober5000
OP_SET_DOCKED, // Sushi
OP_SET_THRUSTERS, // The E
OP_TRIGGER_SUBMODEL_ANIMATION, // Goober5000
OP_HUD_CLEAR_MESSAGES, // Swifty
OP_SET_PLAYER_ORDERS, // Karajorma
OP_SUPERNOVA_STOP, //CommanderDJ
OP_SET_PLAYER_THROTTLE_SPEED, //CommanderDJ
OP_SET_DEBRIEFING_TOGGLED, // Goober5000
OP_SET_SUBSPACE_DRIVE, // Goober5000
OP_SET_ARRIVAL_INFO, // Goober5000
OP_SET_DEPARTURE_INFO, // Goober5000
OP_SET_SKYBOX_ORIENT, // Goober5000
OP_DESTROY_INSTANTLY, // Admiral MS
OP_DESTROY_SUBSYS_INSTANTLY, // Admiral MS
OP_DEBUG, // Karajorma
OP_SET_MISSION_MOOD, // Karajorma
OP_NAV_SELECT, // Talon1024
OP_NAV_UNSELECT, // Talon1024
OP_ALTER_SHIP_FLAG, // Karajorma
OP_CHANGE_TEAM_COLOR, // The E
OP_NEBULA_CHANGE_PATTERN, // Axem
OP_SET_WING_FORMATION, // Goober5000
OP_TECH_ADD_INTEL_XSTR, // Goober5000
OP_COPY_VARIABLE_FROM_INDEX, // Goober5000
OP_COPY_VARIABLE_BETWEEN_INDEXES, // Goober5000
OP_GET_ETS_VALUE, // niffiwan
OP_SET_ETS_VALUES, // niffiwan
OP_CALL_SSM_STRIKE, // X3N0-Life-Form
OP_OVERRIDE_MOTION_DEBRIS, // The E
OP_HUD_SET_CUSTOM_GAUGE_ACTIVE, // The E, just revamped a bit by Axem
OP_HUD_SET_BUILTIN_GAUGE_ACTIVE, // The E, just revamped a bit by Axem
OP_SCRIPT_EVAL_MULTI, // Karajorma
OP_PAUSE_SOUND_FROM_FILE, // Goober5000
OP_SCRIPT_EVAL_BLOCK, // niffiwan
OP_BEAM_FLOATING_FIRE, // MageKing17
OP_TURRET_SET_PRIMARY_AMMO, // DahBlount, part of the turret ammo changes
OP_TURRET_SET_SECONDARY_AMMO, // DahBlount, part of the turret ammo changes
OP_JETTISON_CARGO_NEW, // Goober5000
OP_STRING_CONCATENATE_BLOCK, // Goober5000
OP_MODIFY_VARIABLE_XSTR, // m!m
OP_RESET_POST_EFFECTS, // Goober5000
OP_ADD_REMOVE_HOTKEY, // wookieejedi
OP_TECH_REMOVE_INTEL_XSTR, // wookieejedi
OP_TECH_REMOVE_INTEL, // wookieejedi
OP_CHANGE_BACKGROUND, // Goober5000
OP_CLEAR_DEBRIS, // Goober5000
OP_SET_DEBRIEFING_PERSONA, // Goober5000
OP_SET_TRAITOR_OVERRIDE, //MjnMixael
OP_ADD_TO_COLGROUP_NEW, // Goober5000
OP_REMOVE_FROM_COLGROUP_NEW, // Goober5000
OP_GET_POWER_OUTPUT, // The E
OP_TURRET_SET_FORCED_TARGET, // Asteroth
OP_TURRET_SET_FORCED_SUBSYS_TARGET, // Asteroth
OP_TURRET_CLEAR_FORCED_TARGET, // Asteroth
OP_SEND_MESSAGE_CHAIN, // Goober5000
OP_TURRET_SET_INACCURACY, // Asteroth
OP_REPLACE_TEXTURE, // Lafiel
OP_REPLACE_TEXTURE_SKYBOX, // Lafiel
OP_NEBULA_CHANGE_FOG_COLOR, // Asteroth
OP_SET_ALPHA_MULT, // Lafiel
OP_DESTROY_INSTANTLY_WITH_DEBRIS, // Asteroth
OP_TRIGGER_ANIMATION_NEW, // Lafiel
OP_UPDATE_MOVEABLE, // Lafiel
OP_NAV_SET_COLOR, // Goober5000
OP_NAV_SET_VISITED_COLOR, // Goober5000
OP_CONTAINER_ADD_TO_LIST, // Karajorma/jg18
OP_CONTAINER_REMOVE_FROM_LIST, // Karajorma/jg18
OP_CONTAINER_ADD_TO_MAP, // Karajorma/jg18
OP_CONTAINER_REMOVE_FROM_MAP, // Karajorma/jg18
OP_CONTAINER_GET_MAP_KEYS, // Karajorma/jg18
OP_CLEAR_CONTAINER, // Karajorma/jg18
OP_ADD_BACKGROUND_BITMAP_NEW, // Goober5000
OP_ADD_SUN_BITMAP_NEW, // Goober5000
OP_CANCEL_FUTURE_WAVES, // naomimyselfandi
OP_COPY_CONTAINER, // jg18
OP_APPLY_CONTAINER_FILTER, // jg18
OP_STOP_LOOPING_ANIMATION, // Lafiel
OP_LOCK_TRANSLATING_SUBSYSTEM, // Goober5000
OP_FREE_TRANSLATING_SUBSYSTEM, // Goober5000
OP_REVERSE_TRANSLATING_SUBSYSTEM, // Goober5000
OP_TRANSLATING_SUBSYS_SET_SPEED, // Goober5000
OP_ALTER_WING_FLAG, // Goober5000
OP_TOGGLE_ASTEROID_FIELD, // MjnMixael
OP_HUD_FORCE_SENSOR_STATIC, // MjnMixael
OP_HUD_FORCE_EMP_EFFECT, // MjnMixael
OP_SET_GRAVITY_ACCEL, // Asteroth
OP_FORCE_REARM, // MjnMixael
OP_ABORT_REARM, // MjnMixael
OP_SET_ORDER_ALLOWED_TARGET, // MjnMixael
OP_ENABLE_GENERAL_ORDERS, // MjnMixael
OP_VALIDATE_GENERAL_ORDERS, // MjnMixael
OP_USED_CHEAT, // Kiloku
OP_SET_ASTEROID_FIELD, // MjnMixael
OP_SET_DEBRIS_FIELD, // MjnMixael
OP_CONFIG_ASTEROID_FIELD, // MjnMixael
OP_CONFIG_DEBRIS_FIELD, // MjnMixael
OP_CONFIG_FIELD_TARGETS, // MjnMixael
OP_SET_MOTION_DEBRIS, // MjnMixael
OP_GOOD_PRIMARY_TIME, // plieblang
OP_SET_SKYBOX_ALPHA, // Goober5000
OP_NEBULA_SET_RANGE, // Goober5000
OP_SET_SQUADRON_WINGS, // Goober5000
// OP_CATEGORY_AI
// defined for AI goals
OP_AI_CHASE,
OP_AI_DOCK,
OP_AI_UNDOCK,
OP_AI_WARP_OUT,
OP_AI_WAYPOINTS,
OP_AI_WAYPOINTS_ONCE,
OP_AI_DESTROY_SUBSYS,
OP_AI_DISABLE_SHIP,
OP_AI_DISARM_SHIP,
OP_AI_GUARD,
OP_AI_CHASE_ANY,
OP_AI_EVADE_SHIP,
OP_AI_STAY_NEAR_SHIP,
OP_AI_KEEP_SAFE_DISTANCE,
OP_AI_IGNORE,
OP_AI_STAY_STILL,
OP_AI_PLAY_DEAD,
OP_AI_IGNORE_NEW, // Goober5000
OP_AI_FORM_ON_WING, // The E
OP_AI_CHASE_SHIP_CLASS, // Goober5000
OP_AI_CHASE_SHIP_TYPE, // LuytenKy
OP_AI_PLAY_DEAD_PERSISTENT, // Goober5000
OP_AI_FLY_TO_SHIP, // Goober5000
OP_AI_REARM_REPAIR, // Goober5000
OP_AI_DISABLE_SHIP_TACTICAL, // Goober5000
OP_AI_DISARM_SHIP_TACTICAL, // Goober5000
// OP_CATEGORY_UNLISTED
OP_GOALS_ID,
OP_NEXT_MISSION, // used in campaign files for branching
OP_IS_DESTROYED,
OP_IS_SUBSYSTEM_DESTROYED,
OP_IS_DISABLED,
OP_IS_DISARMED,
OP_HAS_DOCKED,
OP_HAS_UNDOCKED,
OP_HAS_ARRIVED,
OP_HAS_DEPARTED,
OP_WAYPOINTS_DONE,
OP_ADD_SHIP_GOAL,
OP_CLEAR_SHIP_GOALS,
OP_ADD_WING_GOAL,
OP_CLEAR_WING_GOALS,
OP_AI_CHASE_WING,
OP_AI_GUARD_WING,
OP_EVENT_TRUE,
OP_EVENT_FALSE,
OP_PREVIOUS_GOAL_INCOMPLETE,
OP_PREVIOUS_EVENT_INCOMPLETE,
OP_AI_WARP,
OP_IS_CARGO_KNOWN,
OP_COND,
OP_END_OF_CAMPAIGN,
// OP_CATEGORY_TRAINING
// training sexps
OP_KEY_PRESSED,