1 //-------------------------------------------------------------------------
2 /*
3 Copyright (C) 2016 EDuke32 developers and contributors
4 
5 This file is part of EDuke32.
6 
7 EDuke32 is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License version 2
9 as published by the Free Software Foundation.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
14 
15 See the GNU General Public License for more details.
16 
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20 */
21 //-------------------------------------------------------------------------
22 
23 #ifndef gamedef_h_
24 #define gamedef_h_
25 
26 // #define CON_DISCRETE_VAR_ACCESS
27 
28 #include "actors.h"
29 #include "build.h"  // hashtable_t
30 #include "cheats.h"
31 #include "common.h"  // tokenlist
32 #include "player.h"  // projectile_t
33 
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37 
38 enum
39 {
40     LABEL_ACTION = 0x01,
41     LABEL_ACTOR  = 0x02,
42     LABEL_AI     = 0x04,
43     LABEL_DEFINE = 0x08,
44     LABEL_EVENT  = 0x10,
45     LABEL_MOVE   = 0x20,
46     LABEL_STATE  = 0x40,
47 
48     LABEL_ANY    = -1,
49 };
50 
51 #define MAXLABELS 16384
52 
53 #define LABEL_CHAR sizeof(uint8_t)
54 #define LABEL_SHORT sizeof(uint16_t)
55 #define LABEL_INT sizeof(uint32_t)
56 #define LABEL_UNSIGNED 8
57 #define LABEL_HASPARM2 16
58 #define LABEL_ISSTRING 32
59 #define LABEL_READFUNC 64
60 #define LABEL_WRITEFUNC 128
61 
62 // "magic" number for { and }, overrides line number in compiled code for later detection
63 #define VM_IFELSE_MAGIC 31337
64 #define VM_INSTMASK 0xfff
65 #define VM_DECODE_INST(xxx) ((int)((xxx) & VM_INSTMASK))
66 #define VM_DECODE_LINE_NUMBER(xxx) ((int)((xxx) >> 12))
67 #define C_CUSTOMERROR(Text, ...)                                                               \
68     do                                                                                         \
69     {                                                                                          \
70         C_ReportError(-1);                                                                     \
71         initprintf("%s:%d: error: " Text "\n", g_scriptFileName, g_lineNumber, ##__VA_ARGS__); \
72         g_errorCnt++;                                                                          \
73     } while (0)
74 
75 #define C_CUSTOMWARNING(Text, ...)                                                               \
76     do                                                                                           \
77     {                                                                                            \
78         C_ReportError(-1);                                                                       \
79         initprintf("%s:%d: warning: " Text "\n", g_scriptFileName, g_lineNumber, ##__VA_ARGS__); \
80         g_warningCnt++;                                                                          \
81     } while (0)
82 
83 extern intptr_t const * insptr;
84 void VM_ScriptInfo(intptr_t const * const ptr, int const range);
85 
86 extern hashtable_t h_gamefuncs;
87 
88 extern hashtable_t h_gamevars;
89 extern hashtable_t h_arrays;
90 extern hashtable_t h_labels;
91 
92 extern int32_t g_aimAngleVarID;   // var ID of "AUTOAIMANGLE"
93 extern int32_t g_angRangeVarID;   // var ID of "ANGRANGE"
94 extern int32_t g_hitagVarID;      // var ID of "HITAG"
95 extern int32_t g_lotagVarID;      // var ID of "LOTAG"
96 extern int32_t g_returnVarID;     // var ID of "RETURN"
97 extern int32_t g_textureVarID;    // var ID of "TEXTURE"
98 extern int32_t g_thisActorVarID;  // var ID of "THISACTOR"
99 extern int32_t g_weaponVarID;     // var ID of "WEAPON"
100 extern int32_t g_worksLikeVarID;  // var ID of "WORKSLIKE"
101 extern int32_t g_zRangeVarID;     // var ID of "ZRANGE"
102 
103 // KEEPINSYNC gamevars.cpp: "special vars for struct access"
104 enum QuickStructureAccess_t
105 {
106     STRUCT_SPRITE,
107     STRUCT_SPRITE_INTERNAL__,
108     STRUCT_ACTOR_INTERNAL__,
109     STRUCT_SPRITEEXT_INTERNAL__,
110     STRUCT_SECTOR,
111     STRUCT_SECTOR_INTERNAL__,
112     STRUCT_WALL,
113     STRUCT_WALL_INTERNAL__,
114     STRUCT_PLAYER,
115     STRUCT_PLAYER_INTERNAL__,
116     STRUCT_ACTORVAR,
117     STRUCT_PLAYERVAR,
118     STRUCT_TSPR,
119     STRUCT_PROJECTILE,
120     STRUCT_THISPROJECTILE,
121     STRUCT_USERDEF,
122     STRUCT_INPUT,
123     STRUCT_TILEDATA,
124     STRUCT_PALDATA,
125     NUMQUICKSTRUCTS,
126 };
127 
128 extern int32_t g_structVarIDs;
129 
130 #include "events_defs.h"
131 extern intptr_t apScriptEvents[MAXEVENTS];
132 
133 extern char g_scriptFileName[BMAX_PATH];
134 
135 extern const uint32_t CheatFunctionFlags[];
136 extern const uint8_t  CheatFunctionIDs[];
137 
138 extern int32_t g_errorCnt;
139 extern int32_t g_lineNumber;
140 extern int32_t g_numXStrings;
141 extern int32_t g_scriptVersion;
142 extern int32_t g_totalLines;
143 extern int32_t g_warningCnt;
144 extern uint32_t g_scriptcrc;
145 extern int32_t otherp;
146 extern uint8_t *bitptr;
147 
148 extern const char *EventNames[MAXEVENTS];
149 
150 extern intptr_t *g_scriptPtr;
151 
152 typedef projectile_t defaultprojectile_t;
153 
154 extern defaultprojectile_t DefaultProjectile;
155 int32_t C_AllocQuote(int32_t qnum);
156 void C_AllocProjectile(int32_t j);
157 void C_FreeProjectile(int32_t j);
158 void C_InitQuotes(void);
159 void C_InitProjectiles(void);
160 
161 typedef struct {
162     int spriteNum;
163     int playerNum;
164     int playerDist;
165     int flags;
166 
167     union {
168         spritetype * pSprite;
169         uspritetype *pUSprite;
170     };
171 
172     int32_t *     pData;
173     DukePlayer_t *pPlayer;
174     actor_t *     pActor;
175 } vmstate_t;
176 
177 extern vmstate_t vm;
178 
179 void G_DoGameStartup(const int32_t *params);
180 void C_DefineMusic(int volumeNum, int levelNum, const char *fileName);
181 
182 void C_DefineVolumeFlags(int32_t vol, int32_t flags);
183 void C_UndefineVolume(int32_t vol);
184 void C_UndefineSkill(int32_t skill);
185 void C_UndefineLevel(int32_t vol, int32_t lev);
186 void C_ReportError(int error);
187 void C_Compile(const char *filenam);
188 
189 extern int32_t g_tw;
190 
191 typedef struct {
192     const char* token;
193     int32_t val;
194 } tokenmap_t;
195 
196 extern const tokenmap_t iter_tokens[];
197 
198 extern char const * VM_GetKeywordForID(int32_t id);
199 
200 enum SystemString_t {
201     STR_MAPNAME,
202     STR_MAPFILENAME,
203     STR_PLAYERNAME,
204     STR_VERSION,
205     STR_GAMETYPE,
206     STR_VOLUMENAME,
207     STR_YOURTIME,
208     STR_PARTIME,
209     STR_DESIGNERTIME,
210     STR_BESTTIME,
211     STR_USERMAPFILENAME,
212     STR_REVISION,
213 };
214 
215 enum ScriptError_t
216 {
217     ERROR_ARRAYREADONLY,
218     ERROR_EVENTONLY,
219     ERROR_EXCEEDSMAXTILES,
220     ERROR_EXPECTEDKEYWORD,
221     ERROR_FOUNDWITHIN,
222     ERROR_GAMEARRAYBNC,
223     ERROR_GAMEARRAYBNO,
224     ERROR_INVALIDARRAYWRITE,
225     ERROR_ISAKEYWORD,
226     ERROR_NOENDSWITCH,
227     ERROR_NOTAGAMEARRAY,
228     ERROR_NOTAGAMEDEF,
229     ERROR_NOTAGAMEVAR,
230     ERROR_NOTAMEMBER,
231     ERROR_NOTTOPLEVEL,
232     ERROR_PARAMUNDEFINED,
233     ERROR_SYNTAXERROR,
234     ERROR_TOOMANYLABELS,
235     ERROR_VARREADONLY,
236     ERROR_VARTYPEMISMATCH,
237     WARNING_ARRAYMASKSKEYWORD,
238     WARNING_BADGAMEVAR,
239     WARNING_DUPLICATECASE,
240     WARNING_DUPLICATEDEFINITION,
241     WARNING_EVENTSYNC,
242     WARNING_LABELSONLY,
243     WARNING_NAMEMATCHESVAR,
244     WARNING_VARMASKSKEYWORD,
245 };
246 
247 enum PlayerLabel_t
248 {
249     PLAYER_ZOOM,
250     PLAYER_LOOGIEX,
251     PLAYER_LOOGIEY,
252     PLAYER_NUMLOOGS,
253     PLAYER_LOOGCNT,
254     PLAYER_POSX,
255     PLAYER_POSY,
256     PLAYER_POSZ,
257     PLAYER_HORIZ,
258     PLAYER_HORIZOFF,
259     PLAYER_OHORIZ,
260     PLAYER_OHORIZOFF,
261     PLAYER_Q16HORIZ,
262     PLAYER_Q16HORIZOFF,
263     PLAYER_OQ16HORIZ,
264     PLAYER_OQ16HORIZOFF,
265     PLAYER_INVDISPTIME,
266     PLAYER_BOBPOSX,
267     PLAYER_BOBPOSY,
268     PLAYER_OPOSX,
269     PLAYER_OPOSY,
270     PLAYER_OPOSZ,
271     PLAYER_PYOFF,
272     PLAYER_OPYOFF,
273     PLAYER_POSXV,
274     PLAYER_POSYV,
275     PLAYER_POSZV,
276     PLAYER_LAST_PISSED_TIME,
277     PLAYER_TRUEFZ,
278     PLAYER_TRUECZ,
279     PLAYER_PLAYER_PAR,
280     PLAYER_VISIBILITY,
281     PLAYER_BOBCOUNTER,
282     PLAYER_WEAPON_SWAY,
283     PLAYER_PALS_TIME,
284     PLAYER_CRACK_TIME,
285     PLAYER_AIM_MODE,
286     PLAYER_ANG,
287     PLAYER_OANG,
288     PLAYER_Q16ANG,
289     PLAYER_OQ16ANG,
290     PLAYER_ANGVEL,
291     PLAYER_Q16ANGVEL,
292     PLAYER_CURSECTNUM,
293     PLAYER_LOOK_ANG,
294     PLAYER_LAST_EXTRA,
295     PLAYER_SUBWEAPON,
296     PLAYER_AMMO_AMOUNT,
297     PLAYER_WACKEDBYACTOR,
298     PLAYER_FRAG,
299     PLAYER_FRAGGEDSELF,
300     PLAYER_CURR_WEAPON,
301     PLAYER_LAST_WEAPON,
302     PLAYER_TIPINCS,
303     PLAYER_WANTWEAPONFIRE,
304     PLAYER_HOLODUKE_AMOUNT,
305     PLAYER_NEWOWNER,
306     PLAYER_HURT_DELAY,
307     PLAYER_HBOMB_HOLD_DELAY,
308     PLAYER_JUMPING_COUNTER,
309     PLAYER_AIRLEFT,
310     PLAYER_KNEE_INCS,
311     PLAYER_ACCESS_INCS,
312     PLAYER_FTA,
313     PLAYER_FTQ,
314     PLAYER_ACCESS_WALLNUM,
315     PLAYER_ACCESS_SPRITENUM,
316     PLAYER_KICKBACK_PIC,
317     PLAYER_GOT_ACCESS,
318     PLAYER_WEAPON_ANG,
319     PLAYER_FIRSTAID_AMOUNT,
320     PLAYER_SOMETHINGONPLAYER,
321     PLAYER_ON_CRANE,
322     PLAYER_I,
323     PLAYER_PARALLAX_SECTNUM,
324     PLAYER_OVER_SHOULDER_ON,
325     PLAYER_RANDOM_CLUB_FRAME,
326     PLAYER_FIST_INCS,
327     PLAYER_ONE_EIGHTY_COUNT,
328     PLAYER_CHEAT_PHASE,
329     PLAYER_DUMMYPLAYERSPRITE,
330     PLAYER_EXTRA_EXTRA8,
331     PLAYER_QUICK_KICK,
332     PLAYER_HEAT_AMOUNT,
333     PLAYER_ACTORSQU,
334     PLAYER_TIMEBEFOREEXIT,
335     PLAYER_CUSTOMEXITSOUND,
336     PLAYER_WEAPRECS,
337     PLAYER_WEAPRECCNT,
338     PLAYER_INTERFACE_TOGGLE,
339     PLAYER_ROTSCRNANG,
340     PLAYER_DEAD_FLAG,
341     PLAYER_SHOW_EMPTY_WEAPON,
342     PLAYER_SCUBA_AMOUNT,
343     PLAYER_JETPACK_AMOUNT,
344     PLAYER_STEROIDS_AMOUNT,
345     PLAYER_SHIELD_AMOUNT,
346     PLAYER_HOLODUKE_ON,
347     PLAYER_PYCOUNT,
348     PLAYER_WEAPON_POS,
349     PLAYER_FRAG_PS,
350     PLAYER_TRANSPORTER_HOLD,
351     PLAYER_CLIPDIST,
352     PLAYER_LAST_FULL_WEAPON,
353     PLAYER_FOOTPRINTSHADE,
354     PLAYER_BOOT_AMOUNT,
355     PLAYER_SCREAM_VOICE,
356     PLAYER_GM,
357     PLAYER_ON_WARPING_SECTOR,
358     PLAYER_FOOTPRINTCOUNT,
359     PLAYER_HBOMB_ON,
360     PLAYER_JUMPING_TOGGLE,
361     PLAYER_RAPID_FIRE_HOLD,
362     PLAYER_ON_GROUND,
363     PLAYER_NAME,
364     PLAYER_INVEN_ICON,
365     PLAYER_BUTTONPALETTE,
366     PLAYER_JETPACK_ON,
367     PLAYER_SPRITEBRIDGE,
368     PLAYER_SCUBA_ON,
369     PLAYER_FOOTPRINTPAL,
370     PLAYER_HEAT_ON,
371     PLAYER_HOLSTER_WEAPON,
372     PLAYER_FALLING_COUNTER,
373     PLAYER_GOTWEAPON,
374     PLAYER_PALETTE,
375     PLAYER_TOGGLE_KEY_FLAG,
376     PLAYER_KNUCKLE_INCS,
377     PLAYER_WALKING_SND_TOGGLE,
378     PLAYER_PALOOKUP,
379     PLAYER_HARD_LANDING,
380     PLAYER_MAX_SECRET_ROOMS,
381     PLAYER_SECRET_ROOMS,
382     PLAYER_PALS,
383     PLAYER_MAX_ACTORS_KILLED,
384     PLAYER_ACTORS_KILLED,
385     PLAYER_RETURN_TO_CENTER,
386     PLAYER_RUNSPEED,
387     PLAYER_SBS,
388     PLAYER_RELOADING,
389     PLAYER_AUTO_AIM,
390     PLAYER_MOVEMENT_LOCK,
391     PLAYER_SOUND_PITCH,
392     PLAYER_WEAPONSWITCH,
393     PLAYER_TEAM,
394     PLAYER_MAX_PLAYER_HEALTH,
395     PLAYER_MAX_SHIELD_AMOUNT,
396     PLAYER_MAX_AMMO_AMOUNT,
397     PLAYER_LAST_QUICK_KICK,
398     PLAYER_AUTOSTEP,
399     PLAYER_AUTOSTEP_SBW,
400     PLAYER_HUDPAL,
401     PLAYER_INDEX,
402     PLAYER_CONNECTED,
403     PLAYER_FRAGS,
404     PLAYER_DEATHS,
405     PLAYER_LAST_USED_WEAPON,
406     PLAYER_BSUBWEAPON,
407     PLAYER_CROUCH_TOGGLE,
408     PLAYER_END
409 };
410 
411 enum UserdefsLabel_t
412 {
413     USERDEFS_GOD,
414     USERDEFS_WARP_ON,
415     USERDEFS_CASHMAN,
416     USERDEFS_EOG,
417     USERDEFS_SHOWALLMAP,
418     USERDEFS_SHOW_HELP,
419     USERDEFS_SCROLLMODE,
420     USERDEFS_CLIPPING,
421     USERDEFS_USER_NAME,
422     USERDEFS_RIDECULE,
423     USERDEFS_SAVEGAME,
424     USERDEFS_PWLOCKOUT,
425     USERDEFS_RTSNAME,
426     USERDEFS_OVERHEAD_ON,
427     USERDEFS_LAST_OVERHEAD,
428     USERDEFS_SHOWWEAPONS,
429     USERDEFS_PAUSE_ON,
430     USERDEFS_FROM_BONUS,
431     USERDEFS_CAMERASPRITE,
432     USERDEFS_LAST_CAMSPRITE,
433     USERDEFS_LAST_LEVEL,
434     USERDEFS_SECRETLEVEL,
435     USERDEFS_CONST_VISIBILITY,
436     USERDEFS_UW_FRAMERATE,
437     USERDEFS_CAMERA_TIME,
438     USERDEFS_FOLFVEL,
439     USERDEFS_FOLAVEL,
440     USERDEFS_FOLX,
441     USERDEFS_FOLY,
442     USERDEFS_FOLA,
443     USERDEFS_RECCNT,
444     USERDEFS_ENTERED_NAME,
445     USERDEFS_SCREEN_TILTING,
446     USERDEFS_SHADOWS,
447     USERDEFS_FTA_ON,
448     USERDEFS_EXECUTIONS,
449     USERDEFS_AUTO_RUN,
450     USERDEFS_COORDS,
451     USERDEFS_TICKRATE,
452     USERDEFS_M_COOP,
453     USERDEFS_COOP,
454     USERDEFS_SCREEN_SIZE,
455     USERDEFS_LOCKOUT,
456     USERDEFS_CROSSHAIR,
457     USERDEFS_PLAYERAI,
458     USERDEFS_RESPAWN_MONSTERS,
459     USERDEFS_RESPAWN_ITEMS,
460     USERDEFS_RESPAWN_INVENTORY,
461     USERDEFS_RECSTAT,
462     USERDEFS_MONSTERS_OFF,
463     USERDEFS_BRIGHTNESS,
464     USERDEFS_M_RESPAWN_ITEMS,
465     USERDEFS_M_RESPAWN_MONSTERS,
466     USERDEFS_M_RESPAWN_INVENTORY,
467     USERDEFS_M_RECSTAT,
468     USERDEFS_M_MONSTERS_OFF,
469     USERDEFS_DETAIL,
470     USERDEFS_M_FFIRE,
471     USERDEFS_FFIRE,
472     USERDEFS_M_PLAYER_SKILL,
473     USERDEFS_M_LEVEL_NUMBER,
474     USERDEFS_M_VOLUME_NUMBER,
475     USERDEFS_MULTIMODE,
476     USERDEFS_PLAYER_SKILL,
477     USERDEFS_LEVEL_NUMBER,
478     USERDEFS_VOLUME_NUMBER,
479     USERDEFS_M_MARKER,
480     USERDEFS_MARKER,
481     USERDEFS_MOUSEFLIP,
482     USERDEFS_STATUSBARSCALE,
483     USERDEFS_DRAWWEAPON,
484     USERDEFS_MOUSEAIMING,
485     USERDEFS_WEAPONSWITCH,
486     USERDEFS_DEMOCAMS,
487     USERDEFS_COLOR,
488     USERDEFS_MSGDISPTIME,
489     USERDEFS_STATUSBARMODE,
490     USERDEFS_M_NOEXITS,
491     USERDEFS_NOEXITS,
492     USERDEFS_AUTOVOTE,
493     USERDEFS_AUTOMSG,
494     USERDEFS_IDPLAYERS,
495     USERDEFS_TEAM,
496     USERDEFS_VIEWBOB,
497     USERDEFS_WEAPONSWAY,
498     USERDEFS_ANGLEINTERPOLATION,
499     USERDEFS_OBITUARIES,
500     USERDEFS_LEVELSTATS,
501     USERDEFS_CROSSHAIRSCALE,
502     USERDEFS_ALTHUD,
503     USERDEFS_DISPLAY_BONUS_SCREEN,
504     USERDEFS_SHOW_LEVEL_TEXT,
505     USERDEFS_WEAPONSCALE,
506     USERDEFS_TEXTSCALE,
507     USERDEFS_RUNKEY_MODE,
508     USERDEFS_M_ORIGIN_X,
509     USERDEFS_M_ORIGIN_Y,
510     USERDEFS_PLAYERBEST,
511     USERDEFS_MUSICTOGGLE,
512     USERDEFS_USEVOXELS,
513     USERDEFS_USEHIGHTILE,
514     USERDEFS_USEMODELS,
515     USERDEFS_GAMETYPEFLAGS,
516     USERDEFS_M_GAMETYPEFLAGS,
517     USERDEFS_GLOBALFLAGS,
518     USERDEFS_GLOBALGAMEFLAGS,
519     USERDEFS_VM_PLAYER,
520     USERDEFS_VM_SPRITE,
521     USERDEFS_VM_DISTANCE,
522     USERDEFS_SOUNDTOGGLE,
523     USERDEFS_GAMETEXT_TRACKING,
524     USERDEFS_MGAMETEXT_TRACKING,
525     USERDEFS_MENUTEXT_TRACKING,
526     USERDEFS_MAXSPRITESONSCREEN,
527     USERDEFS_SCREENAREA_X1,
528     USERDEFS_SCREENAREA_Y1,
529     USERDEFS_SCREENAREA_X2,
530     USERDEFS_SCREENAREA_Y2,
531     USERDEFS_SCREENFADE,
532     USERDEFS_MENUBACKGROUND,
533     USERDEFS_STATUSBARFLAGS,
534     USERDEFS_STATUSBARRANGE,
535     USERDEFS_STATUSBARCUSTOM,
536     USERDEFS_HUDONTOP,
537     USERDEFS_MENU_SLIDEBARZ,
538     USERDEFS_MENU_SLIDEBARMARGIN,
539     USERDEFS_MENU_SLIDECURSORZ,
540     USERDEFS_GLOBAL_R,
541     USERDEFS_GLOBAL_G,
542     USERDEFS_GLOBAL_B,
543     USERDEFS_DEFAULT_VOLUME,
544     USERDEFS_DEFAULT_SKILL,
545     USERDEFS_MENU_SHADEDESELECTED,
546     USERDEFS_MENU_SHADEDISABLED,
547     USERDEFS_MENUTEXT_ZOOM,
548     USERDEFS_MENUTEXT_XSPACE,
549     USERDEFS_MENUTEXT_PAL,
550     USERDEFS_MENUTEXT_PALSELECTED,
551     USERDEFS_MENUTEXT_PALDESELECTED,
552     USERDEFS_MENUTEXT_PALDISABLED,
553     USERDEFS_MENUTEXT_PALSELECTED_RIGHT,
554     USERDEFS_MENUTEXT_PALDESELECTED_RIGHT,
555     USERDEFS_MENUTEXT_PALDISABLED_RIGHT,
556     USERDEFS_GAMETEXT_ZOOM,
557     USERDEFS_GAMETEXT_XSPACE,
558     USERDEFS_GAMETEXT_PAL,
559     USERDEFS_GAMETEXT_PALSELECTED,
560     USERDEFS_GAMETEXT_PALDESELECTED,
561     USERDEFS_GAMETEXT_PALDISABLED,
562     USERDEFS_GAMETEXT_PALSELECTED_RIGHT,
563     USERDEFS_GAMETEXT_PALDESELECTED_RIGHT,
564     USERDEFS_GAMETEXT_PALDISABLED_RIGHT,
565     USERDEFS_MINITEXT_ZOOM,
566     USERDEFS_MINITEXT_XSPACE,
567     USERDEFS_MINITEXT_TRACKING,
568     USERDEFS_MINITEXT_PAL,
569     USERDEFS_MINITEXT_PALSELECTED,
570     USERDEFS_MINITEXT_PALDESELECTED,
571     USERDEFS_MINITEXT_PALDISABLED,
572     USERDEFS_MINITEXT_PALSELECTED_RIGHT,
573     USERDEFS_MINITEXT_PALDESELECTED_RIGHT,
574     USERDEFS_MINITEXT_PALDISABLED_RIGHT,
575     USERDEFS_MENUTITLE_PAL,
576     USERDEFS_SLIDEBAR_PALSELECTED,
577     USERDEFS_SLIDEBAR_PALDISABLED,
578     USERDEFS_USER_MAP,
579     USERDEFS_M_USER_MAP,
580     USERDEFS_MUSIC_EPISODE,
581     USERDEFS_MUSIC_LEVEL,
582     USERDEFS_SHADOW_PAL,
583     USERDEFS_MENU_SCROLLBARTILENUM,
584     USERDEFS_MENU_SCROLLBARZ,
585     USERDEFS_MENU_SCROLLCURSORZ,
586     USERDEFS_RETURN,
587     USERDEFS_USERBYTEVERSION,
588     USERDEFS_AUTOSAVE,
589     USERDEFS_DRAW_Y,
590     USERDEFS_DRAW_YXASPECT,
591     USERDEFS_FOV,
592     USERDEFS_NEWGAMECUSTOMOPEN,
593     USERDEFS_NEWGAMECUSTOMSUBOPEN,
594     USERDEFS_GAMEPADACTIVE,
595     USERDEFS_M_NEWGAMECUSTOM,
596     USERDEFS_M_NEWGAMECUSTOMSUB,
597     USERDEFS_END
598 };
599 
600 enum SectorLabel_t
601 {
602     SECTOR_WALLPTR,
603     SECTOR_WALLNUM,
604     SECTOR_CEILINGZ,
605     SECTOR_CEILINGZGOAL,
606     SECTOR_CEILINGZVEL,
607     SECTOR_FLOORZ,
608     SECTOR_FLOORZGOAL,
609     SECTOR_FLOORZVEL,
610     SECTOR_CEILINGSTAT,
611     SECTOR_FLOORSTAT,
612     SECTOR_CEILINGPICNUM,
613     SECTOR_CEILINGSLOPE,
614     SECTOR_CEILINGSHADE,
615     SECTOR_CEILINGPAL,
616     SECTOR_CEILINGXPANNING,
617     SECTOR_CEILINGYPANNING,
618     SECTOR_FLOORPICNUM,
619     SECTOR_FLOORSLOPE,
620     SECTOR_FLOORSHADE,
621     SECTOR_FLOORPAL,
622     SECTOR_FLOORXPANNING,
623     SECTOR_FLOORYPANNING,
624     SECTOR_VISIBILITY,
625     SECTOR_FOGPAL,
626     SECTOR_LOTAG,
627     SECTOR_HITAG,
628     SECTOR_EXTRA,
629     SECTOR_CEILINGBUNCH,
630     SECTOR_FLOORBUNCH,
631     SECTOR_ULOTAG,
632     SECTOR_UHITAG,
633     SECTOR_END
634 };
635 
636 enum WallLabel_t
637 {
638     WALL_X,
639     WALL_Y,
640     WALL_POINT2,
641     WALL_NEXTWALL,
642     WALL_NEXTSECTOR,
643     WALL_CSTAT,
644     WALL_PICNUM,
645     WALL_OVERPICNUM,
646     WALL_SHADE,
647     WALL_PAL,
648     WALL_XREPEAT,
649     WALL_YREPEAT,
650     WALL_XPANNING,
651     WALL_YPANNING,
652     WALL_LOTAG,
653     WALL_HITAG,
654     WALL_EXTRA,
655     WALL_ULOTAG,
656     WALL_UHITAG,
657     WALL_BLEND,
658     WALL_END
659 };
660 
661 enum ActorLabel_t
662 {
663     ACTOR_X,
664     ACTOR_Y,
665     ACTOR_Z,
666     ACTOR_CSTAT,
667     ACTOR_PICNUM,
668     ACTOR_SHADE,
669     ACTOR_PAL,
670     ACTOR_CLIPDIST,
671     ACTOR_DETAIL,
672     ACTOR_XREPEAT,
673     ACTOR_YREPEAT,
674     ACTOR_XOFFSET,
675     ACTOR_YOFFSET,
676     ACTOR_SECTNUM,
677     ACTOR_STATNUM,
678     ACTOR_ANG,
679     ACTOR_OWNER,
680     ACTOR_XVEL,
681     ACTOR_YVEL,
682     ACTOR_ZVEL,
683     ACTOR_LOTAG,
684     ACTOR_HITAG,
685     ACTOR_EXTRA,
686     ACTOR_ULOTAG,
687     ACTOR_UHITAG,
688     ACTOR_STRUCT_BEGIN,
689     ACTOR_HTCGG = ACTOR_STRUCT_BEGIN,
690     ACTOR_HTPICNUM,
691     ACTOR_HTANG,
692     ACTOR_HTEXTRA,
693     ACTOR_HTOWNER,
694     ACTOR_HTMOVFLAG,
695     ACTOR_HTUMOVFLAG,
696     ACTOR_HTTEMPANG,
697     ACTOR_HTSTAYPUT,
698     ACTOR_HTDISPICNUM,
699     ACTOR_HTTIMETOSLEEP,
700     ACTOR_HTFLOORZ,
701     ACTOR_HTCEILINGZ,
702     ACTOR_HTLASTVX,
703     ACTOR_HTLASTVY,
704     ACTOR_HTBPOSX,
705     ACTOR_HTBPOSY,
706     ACTOR_HTBPOSZ,
707     ACTOR_HTG_T,
708     ACTOR_HTFLAGS,
709     ACTOR_SPRITEEXT_BEGIN,
710     ACTOR_ANGOFF = ACTOR_SPRITEEXT_BEGIN,
711     ACTOR_PITCH,
712     ACTOR_ROLL,
713     ACTOR_MDPIVOTXOFF,
714     ACTOR_MDPIVOTYOFF,
715     ACTOR_MDPIVOTZOFF,
716     ACTOR_MDPOSITIONXOFF,
717     ACTOR_MDPOSITIONYOFF,
718     ACTOR_MDPOSITIONZOFF,
719     ACTOR_MDFLAGS,
720     ACTOR_XPANNING,
721     ACTOR_YPANNING,
722     ACTOR_ALPHA,
723     ACTOR_ISVALID,
724     ACTOR_END
725 };
726 
727 enum InputLabel_t
728 {
729     INPUT_AVEL,
730     INPUT_Q16AVEL,
731     INPUT_HORZ,
732     INPUT_Q16HORZ,
733     INPUT_FVEL,
734     INPUT_SVEL,
735     INPUT_BITS,
736     INPUT_EXTBITS,
737     INPUT_END
738 };
739 
740 enum TileDataLabel_t
741 {
742     TILEDATA_XSIZE,
743     TILEDATA_YSIZE,
744     TILEDATA_ANIMFRAMES,
745     TILEDATA_XOFFSET,
746     TILEDATA_YOFFSET,
747     TILEDATA_ANIMSPEED,
748     TILEDATA_ANIMTYPE,
749     TILEDATA_GAMEFLAGS,
750     TILEDATA_END
751 };
752 
753 enum PalDataLabel_t
754 {
755     PALDATA_NOFLOORPAL,
756     PALDATA_DUMMY, // so the hash table is size 1. remove when another member is added.
757     PALDATA_END
758 };
759 
760 enum ProjectileLabel_t
761 {
762     PROJ_WORKSLIKE,  // 0
763     PROJ_SPAWNS,
764     PROJ_SXREPEAT,
765     PROJ_SYREPEAT,
766     PROJ_SOUND,
767     PROJ_ISOUND,  // 5
768     PROJ_VEL,
769     PROJ_EXTRA,
770     PROJ_DECAL,
771     PROJ_TRAIL,
772     PROJ_TXREPEAT,  // 10
773     PROJ_TYREPEAT,
774     PROJ_TOFFSET,
775     PROJ_TNUM,
776     PROJ_DROP,
777     PROJ_CSTAT,  // 15
778     PROJ_CLIPDIST,
779     PROJ_SHADE,
780     PROJ_XREPEAT,
781     PROJ_YREPEAT,
782     PROJ_PAL,  // 20
783     PROJ_EXTRA_RAND,
784     PROJ_HITRADIUS,
785     PROJ_MOVECNT,
786     PROJ_OFFSET,
787     PROJ_BOUNCES,  // 25
788     PROJ_BSOUND,
789     PROJ_RANGE,
790     PROJ_FLASH_COLOR,
791     PROJ_USERDATA,
792     PROJ_END
793 };
794 
795 enum IterationTypes_t
796 {
797     ITER_ALLSPRITES,
798     ITER_ALLSECTORS,
799     ITER_ALLWALLS,
800     ITER_ACTIVELIGHTS,
801     ITER_DRAWNSPRITES,
802     // ---
803     ITER_SPRITESOFSECTOR,
804     ITER_SPRITESOFSTATUS,
805     ITER_WALLSOFSECTOR,
806     ITER_LOOPOFWALL,
807     ITER_RANGE,
808     ITER_ALLSPRITESBYSTAT,
809     ITER_ALLSPRITESBYSECT,
810     ITER_END
811 };
812 
813 // most keywords have opcodes but some opcodes don't have keywords
814 #define TRANSFORM_SCRIPT_KEYWORDS_LIST(TRANSFORM, DELIMITER) \
815     TRANSFORM(CON_SETVAR_GLOBAL) DELIMITER \
816     TRANSFORM(CON_SETVAR_PLAYER) DELIMITER \
817     TRANSFORM(CON_SETVAR_ACTOR) DELIMITER \
818 /*  CON_DISCRETE_VAR_ACCESS \
819 
820     TRANSFORM(CON_IFVARA_GLOBAL) DELIMITER \
821     TRANSFORM(CON_IFVARAE_GLOBAL) DELIMITER \
822     TRANSFORM(CON_IFVARAND_GLOBAL) DELIMITER \
823     TRANSFORM(CON_IFVARB_GLOBAL) DELIMITER \
824     TRANSFORM(CON_IFVARBE_GLOBAL) DELIMITER \
825     TRANSFORM(CON_IFVARBOTH_GLOBAL) DELIMITER \
826     TRANSFORM(CON_IFVARE_GLOBAL) DELIMITER \
827     TRANSFORM(CON_IFVAREITHER_GLOBAL) DELIMITER \
828     TRANSFORM(CON_IFVARG_GLOBAL) DELIMITER \
829     TRANSFORM(CON_IFVARGE_GLOBAL) DELIMITER \
830     TRANSFORM(CON_IFVARL_GLOBAL) DELIMITER \
831     TRANSFORM(CON_IFVARLE_GLOBAL) DELIMITER \
832     TRANSFORM(CON_IFVARN_GLOBAL) DELIMITER \
833     TRANSFORM(CON_IFVAROR_GLOBAL) DELIMITER \
834     TRANSFORM(CON_IFVARXOR_GLOBAL) DELIMITER \
835     \
836     TRANSFORM(CON_ADDVAR_GLOBAL) DELIMITER \
837     TRANSFORM(CON_ANDVAR_GLOBAL) DELIMITER \
838     TRANSFORM(CON_DIVVAR_GLOBAL) DELIMITER \
839     TRANSFORM(CON_MODVAR_GLOBAL) DELIMITER \
840     TRANSFORM(CON_MULVAR_GLOBAL) DELIMITER \
841     TRANSFORM(CON_ORVAR_GLOBAL) DELIMITER \
842     TRANSFORM(CON_RANDVAR_GLOBAL) DELIMITER \
843     TRANSFORM(CON_SHIFTVARL_GLOBAL) DELIMITER \
844     TRANSFORM(CON_SHIFTVARR_GLOBAL) DELIMITER \
845     TRANSFORM(CON_SUBVAR_GLOBAL) DELIMITER \
846     TRANSFORM(CON_WHILEVARL_GLOBAL) DELIMITER \
847     TRANSFORM(CON_WHILEVARN_GLOBAL) DELIMITER \
848     TRANSFORM(CON_XORVAR_GLOBAL) DELIMITER \
849     \
850     TRANSFORM(CON_IFVARA_PLAYER) DELIMITER \
851     TRANSFORM(CON_IFVARAE_PLAYER) DELIMITER \
852     TRANSFORM(CON_IFVARAND_PLAYER) DELIMITER \
853     TRANSFORM(CON_IFVARB_PLAYER) DELIMITER \
854     TRANSFORM(CON_IFVARBE_PLAYER) DELIMITER \
855     TRANSFORM(CON_IFVARBOTH_PLAYER) DELIMITER \
856     TRANSFORM(CON_IFVARE_PLAYER) DELIMITER \
857     TRANSFORM(CON_IFVAREITHER_PLAYER) DELIMITER \
858     TRANSFORM(CON_IFVARG_PLAYER) DELIMITER \
859     TRANSFORM(CON_IFVARGE_PLAYER) DELIMITER \
860     TRANSFORM(CON_IFVARL_PLAYER) DELIMITER \
861     TRANSFORM(CON_IFVARLE_PLAYER) DELIMITER \
862     TRANSFORM(CON_IFVARN_PLAYER) DELIMITER \
863     TRANSFORM(CON_IFVAROR_PLAYER) DELIMITER \
864     TRANSFORM(CON_IFVARXOR_PLAYER) DELIMITER \
865     \
866     TRANSFORM(CON_ADDVAR_PLAYER) DELIMITER \
867     TRANSFORM(CON_ANDVAR_PLAYER) DELIMITER \
868     TRANSFORM(CON_DIVVAR_PLAYER) DELIMITER \
869     TRANSFORM(CON_MODVAR_PLAYER) DELIMITER \
870     TRANSFORM(CON_MULVAR_PLAYER) DELIMITER \
871     TRANSFORM(CON_ORVAR_PLAYER) DELIMITER \
872     TRANSFORM(CON_RANDVAR_PLAYER) DELIMITER \
873     TRANSFORM(CON_SHIFTVARL_PLAYER) DELIMITER \
874     TRANSFORM(CON_SHIFTVARR_PLAYER) DELIMITER \
875     TRANSFORM(CON_SUBVAR_PLAYER) DELIMITER \
876     TRANSFORM(CON_WHILEVARL_PLAYER) DELIMITER \
877     TRANSFORM(CON_WHILEVARN_PLAYER) DELIMITER \
878     TRANSFORM(CON_XORVAR_PLAYER) DELIMITER \
879     \
880     TRANSFORM(CON_IFVARA_ACTOR) DELIMITER \
881     TRANSFORM(CON_IFVARAE_ACTOR) DELIMITER \
882     TRANSFORM(CON_IFVARAND_ACTOR) DELIMITER \
883     TRANSFORM(CON_IFVARB_ACTOR) DELIMITER \
884     TRANSFORM(CON_IFVARBE_ACTOR) DELIMITER \
885     TRANSFORM(CON_IFVARBOTH_ACTOR) DELIMITER \
886     TRANSFORM(CON_IFVARE_ACTOR) DELIMITER \
887     TRANSFORM(CON_IFVAREITHER_ACTOR) DELIMITER \
888     TRANSFORM(CON_IFVARG_ACTOR) DELIMITER \
889     TRANSFORM(CON_IFVARGE_ACTOR) DELIMITER \
890     TRANSFORM(CON_IFVARL_ACTOR) DELIMITER \
891     TRANSFORM(CON_IFVARLE_ACTOR) DELIMITER \
892     TRANSFORM(CON_IFVARN_ACTOR) DELIMITER \
893     TRANSFORM(CON_IFVAROR_ACTOR) DELIMITER \
894     TRANSFORM(CON_IFVARXOR_ACTOR) DELIMITER \
895     \
896     TRANSFORM(CON_ADDVAR_ACTOR) DELIMITER \
897     TRANSFORM(CON_ANDVAR_ACTOR) DELIMITER \
898     TRANSFORM(CON_DIVVAR_ACTOR) DELIMITER \
899     TRANSFORM(CON_MODVAR_ACTOR) DELIMITER \
900     TRANSFORM(CON_MULVAR_ACTOR) DELIMITER \
901     TRANSFORM(CON_ORVAR_ACTOR) DELIMITER \
902     TRANSFORM(CON_RANDVAR_ACTOR) DELIMITER \
903     TRANSFORM(CON_SHIFTVARL_ACTOR) DELIMITER \
904     TRANSFORM(CON_SHIFTVARR_ACTOR) DELIMITER \
905     TRANSFORM(CON_SUBVAR_ACTOR) DELIMITER \
906     TRANSFORM(CON_WHILEVARL_ACTOR) DELIMITER \
907     TRANSFORM(CON_WHILEVARN_ACTOR) DELIMITER \
908     TRANSFORM(CON_XORVAR_ACTOR) DELIMITER \
909 */    \
910     TRANSFORM(CON_IFVARVARA) DELIMITER \
911     TRANSFORM(CON_IFVARVARAE) DELIMITER \
912     TRANSFORM(CON_IFVARVARAND) DELIMITER \
913     TRANSFORM(CON_IFVARVARB) DELIMITER \
914     TRANSFORM(CON_IFVARVARBE) DELIMITER \
915     TRANSFORM(CON_IFVARVARBOTH) DELIMITER \
916     TRANSFORM(CON_IFVARVARE) DELIMITER \
917     TRANSFORM(CON_IFVARVAREITHER) DELIMITER \
918     TRANSFORM(CON_IFVARVARG) DELIMITER \
919     TRANSFORM(CON_IFVARVARGE) DELIMITER \
920     TRANSFORM(CON_IFVARVARL) DELIMITER \
921     TRANSFORM(CON_IFVARVARLE) DELIMITER \
922     TRANSFORM(CON_IFVARVARN) DELIMITER \
923     TRANSFORM(CON_IFVARVAROR) DELIMITER \
924     TRANSFORM(CON_IFVARVARXOR) DELIMITER \
925     \
926     TRANSFORM(CON_ADDVARVAR) DELIMITER \
927     TRANSFORM(CON_ANDVARVAR) DELIMITER \
928     TRANSFORM(CON_DIVVARVAR) DELIMITER \
929     TRANSFORM(CON_MODVARVAR) DELIMITER \
930     TRANSFORM(CON_MULVARVAR) DELIMITER \
931     TRANSFORM(CON_ORVARVAR) DELIMITER \
932     TRANSFORM(CON_RANDVARVAR) DELIMITER \
933     TRANSFORM(CON_SETVARVAR) DELIMITER \
934     TRANSFORM(CON_SHIFTVARVARL) DELIMITER \
935     TRANSFORM(CON_SHIFTVARVARR) DELIMITER \
936     TRANSFORM(CON_SUBVARVAR) DELIMITER \
937     TRANSFORM(CON_WHILEVARVARL) DELIMITER \
938     TRANSFORM(CON_WHILEVARVARN) DELIMITER \
939     TRANSFORM(CON_XORVARVAR) DELIMITER \
940     \
941     TRANSFORM(CON_IFVARA) DELIMITER \
942     TRANSFORM(CON_IFVARAE) DELIMITER \
943     TRANSFORM(CON_IFVARAND) DELIMITER \
944     TRANSFORM(CON_IFVARB) DELIMITER \
945     TRANSFORM(CON_IFVARBE) DELIMITER \
946     TRANSFORM(CON_IFVARBOTH) DELIMITER \
947     TRANSFORM(CON_IFVARE) DELIMITER \
948     TRANSFORM(CON_IFVAREITHER) DELIMITER \
949     TRANSFORM(CON_IFVARG) DELIMITER \
950     TRANSFORM(CON_IFVARGE) DELIMITER \
951     TRANSFORM(CON_IFVARL) DELIMITER \
952     TRANSFORM(CON_IFVARLE) DELIMITER \
953     TRANSFORM(CON_IFVARN) DELIMITER \
954     TRANSFORM(CON_IFVAROR) DELIMITER \
955     TRANSFORM(CON_IFVARXOR) DELIMITER \
956     \
957     TRANSFORM(CON_ADDVAR) DELIMITER \
958     TRANSFORM(CON_ANDVAR) DELIMITER \
959     TRANSFORM(CON_DIVVAR) DELIMITER \
960     TRANSFORM(CON_MODVAR) DELIMITER \
961     TRANSFORM(CON_MULVAR) DELIMITER \
962     TRANSFORM(CON_ORVAR) DELIMITER \
963     TRANSFORM(CON_RANDVAR) DELIMITER \
964     TRANSFORM(CON_SETVAR) DELIMITER \
965     TRANSFORM(CON_SHIFTVARL) DELIMITER \
966     TRANSFORM(CON_SHIFTVARR) DELIMITER \
967     TRANSFORM(CON_SUBVAR) DELIMITER \
968     TRANSFORM(CON_WHILEVARL) DELIMITER \
969     TRANSFORM(CON_WHILEVARN) DELIMITER \
970     TRANSFORM(CON_XORVAR) DELIMITER \
971     \
972     TRANSFORM(CON_ELSE) DELIMITER \
973     TRANSFORM(CON_ENDA) DELIMITER \
974     TRANSFORM(CON_ENDEVENT) DELIMITER \
975     TRANSFORM(CON_ENDS) DELIMITER \
976     TRANSFORM(CON_ENDSWITCH) DELIMITER \
977     TRANSFORM(CON_LEFTBRACE) DELIMITER \
978     TRANSFORM(CON_RIGHTBRACE) DELIMITER \
979     TRANSFORM(CON_STATE) DELIMITER \
980     \
981     TRANSFORM(CON_SETACTOR) DELIMITER \
982     TRANSFORM(CON_SETACTORSTRUCT) DELIMITER \
983     TRANSFORM(CON_SETACTORVAR) DELIMITER \
984     TRANSFORM(CON_SETARRAY) DELIMITER \
985     TRANSFORM(CON_SETARRAYSEQUENCE) DELIMITER \
986     TRANSFORM(CON_SETPLAYER) DELIMITER \
987     TRANSFORM(CON_SETPLAYERSTRUCT) DELIMITER \
988     TRANSFORM(CON_SETPLAYERVAR) DELIMITER \
989     TRANSFORM(CON_SETPROJECTILE) DELIMITER \
990     TRANSFORM(CON_SETSECTOR) DELIMITER \
991     TRANSFORM(CON_SETSECTORSTRUCT) DELIMITER \
992     TRANSFORM(CON_SETSPRITEEXT) DELIMITER \
993     TRANSFORM(CON_SETSPRITESTRUCT) DELIMITER \
994     TRANSFORM(CON_SETTHISPROJECTILE) DELIMITER \
995     TRANSFORM(CON_SETTSPR) DELIMITER \
996     TRANSFORM(CON_SETUSERDEF) DELIMITER \
997     TRANSFORM(CON_SETWALL) DELIMITER \
998     TRANSFORM(CON_SETWALLSTRUCT) DELIMITER \
999     \
1000     TRANSFORM(CON_GETACTOR) DELIMITER \
1001     TRANSFORM(CON_GETACTORSTRUCT) DELIMITER \
1002     TRANSFORM(CON_GETACTORVAR) DELIMITER \
1003     TRANSFORM(CON_GETANGLE) DELIMITER \
1004     TRANSFORM(CON_GETPLAYER) DELIMITER \
1005     TRANSFORM(CON_GETPLAYERSTRUCT) DELIMITER \
1006     TRANSFORM(CON_GETPLAYERVAR) DELIMITER \
1007     TRANSFORM(CON_GETPROJECTILE) DELIMITER \
1008     TRANSFORM(CON_GETSECTOR) DELIMITER \
1009     TRANSFORM(CON_GETSECTORSTRUCT) DELIMITER \
1010     TRANSFORM(CON_GETSPRITEEXT) DELIMITER \
1011     TRANSFORM(CON_GETSPRITESTRUCT) DELIMITER \
1012     TRANSFORM(CON_GETTSPR) DELIMITER \
1013     TRANSFORM(CON_GETUSERDEF) DELIMITER \
1014     TRANSFORM(CON_GETWALL) DELIMITER \
1015     TRANSFORM(CON_GETWALLSTRUCT) DELIMITER \
1016     \
1017     TRANSFORM(CON_ACTION) DELIMITER \
1018     TRANSFORM(CON_ACTIVATEBYSECTOR) DELIMITER \
1019     TRANSFORM(CON_ACTIVATECHEAT) DELIMITER \
1020     TRANSFORM(CON_ACTORSOUND) DELIMITER \
1021     TRANSFORM(CON_ADDAMMO) DELIMITER \
1022     TRANSFORM(CON_ADDINVENTORY) DELIMITER \
1023     TRANSFORM(CON_ADDKILLS) DELIMITER \
1024     TRANSFORM(CON_ADDLOGVAR) DELIMITER \
1025     TRANSFORM(CON_ADDPHEALTH) DELIMITER \
1026     TRANSFORM(CON_ADDSTRENGTH) DELIMITER \
1027     TRANSFORM(CON_ADDWEAPON) DELIMITER \
1028     TRANSFORM(CON_AI) DELIMITER \
1029     TRANSFORM(CON_ANGOFF) DELIMITER \
1030     TRANSFORM(CON_BREAK) DELIMITER \
1031     TRANSFORM(CON_CACTOR) DELIMITER \
1032     TRANSFORM(CON_CALCHYPOTENUSE) DELIMITER \
1033     TRANSFORM(CON_CANSEE) DELIMITER \
1034     TRANSFORM(CON_CANSEESPR) DELIMITER \
1035     TRANSFORM(CON_CAPIA) DELIMITER \
1036     TRANSFORM(CON_CAPIS) DELIMITER \
1037     TRANSFORM(CON_CHANGESPRITESECT) DELIMITER \
1038     TRANSFORM(CON_CHANGESPRITESTAT) DELIMITER \
1039     TRANSFORM(CON_CHECKACTIVATORMOTION) DELIMITER \
1040     TRANSFORM(CON_CHECKAVAILINVEN) DELIMITER \
1041     TRANSFORM(CON_CHECKAVAILWEAPON) DELIMITER \
1042     TRANSFORM(CON_CLAMP) DELIMITER \
1043     TRANSFORM(CON_CLEARMAPSTATE) DELIMITER \
1044     TRANSFORM(CON_CLIPDIST) DELIMITER \
1045     TRANSFORM(CON_CLIPMOVE) DELIMITER \
1046     TRANSFORM(CON_CLIPMOVENOSLIDE) DELIMITER \
1047     TRANSFORM(CON_CMENU) DELIMITER \
1048     TRANSFORM(CON_COPY) DELIMITER \
1049     TRANSFORM(CON_COS) DELIMITER \
1050     TRANSFORM(CON_COUNT) DELIMITER \
1051     TRANSFORM(CON_CSTAT) DELIMITER \
1052     TRANSFORM(CON_CSTATOR) DELIMITER \
1053     TRANSFORM(CON_DEBRIS) DELIMITER \
1054     TRANSFORM(CON_DEBUG) DELIMITER \
1055     TRANSFORM(CON_DIGITALNUMBER) DELIMITER \
1056     TRANSFORM(CON_DIGITALNUMBERZ) DELIMITER \
1057     TRANSFORM(CON_DISPLAYRAND) DELIMITER \
1058     TRANSFORM(CON_DIST) DELIMITER \
1059     TRANSFORM(CON_DIVR) DELIMITER \
1060     TRANSFORM(CON_DIVRU) DELIMITER \
1061     TRANSFORM(CON_DIVSCALE) DELIMITER \
1062     TRANSFORM(CON_DISPLAYRANDVAR) DELIMITER \
1063     TRANSFORM(CON_DISPLAYRANDVARVAR) DELIMITER \
1064     TRANSFORM(CON_DRAGPOINT) DELIMITER \
1065     TRANSFORM(CON_DRAWLINE256) DELIMITER \
1066     TRANSFORM(CON_DRAWLINERGB) DELIMITER \
1067     TRANSFORM(CON_ECHO) DELIMITER \
1068     TRANSFORM(CON_ENDOFGAME) DELIMITER \
1069     TRANSFORM(CON_ENDOFLEVEL) DELIMITER \
1070     TRANSFORM(CON_EQSPAWN) DELIMITER \
1071     TRANSFORM(CON_ESHOOT) DELIMITER \
1072     TRANSFORM(CON_ESPAWN) DELIMITER \
1073     TRANSFORM(CON_EZSHOOT) DELIMITER \
1074     TRANSFORM(CON_FALL) DELIMITER \
1075     TRANSFORM(CON_FINDNEARACTOR) DELIMITER \
1076     TRANSFORM(CON_FINDNEARACTOR3D) DELIMITER \
1077     TRANSFORM(CON_FINDNEARACTORZ) DELIMITER \
1078     TRANSFORM(CON_FINDNEARSPRITE) DELIMITER \
1079     TRANSFORM(CON_FINDNEARSPRITE3D) DELIMITER \
1080     TRANSFORM(CON_FINDNEARSPRITEZ) DELIMITER \
1081     TRANSFORM(CON_FINDOTHERPLAYER) DELIMITER \
1082     TRANSFORM(CON_FINDPLAYER) DELIMITER \
1083     TRANSFORM(CON_FLASH) DELIMITER \
1084     TRANSFORM(CON_FOR) DELIMITER \
1085     TRANSFORM(CON_GAMETEXT) DELIMITER \
1086     TRANSFORM(CON_GAMETEXTZ) DELIMITER \
1087     TRANSFORM(CON_GETACTORANGLE) DELIMITER \
1088     TRANSFORM(CON_GETANGLETOTARGET) DELIMITER \
1089     TRANSFORM(CON_GETARRAYSEQUENCE) DELIMITER \
1090     TRANSFORM(CON_GETARRAYSIZE) DELIMITER \
1091     TRANSFORM(CON_GETCEILZOFSLOPE) DELIMITER \
1092     TRANSFORM(CON_GETCLOSESTCOL) DELIMITER \
1093     TRANSFORM(CON_GETCURRADDRESS) DELIMITER \
1094     TRANSFORM(CON_GETFLORZOFSLOPE) DELIMITER \
1095     TRANSFORM(CON_GETGAMEFUNCBIND) DELIMITER \
1096     TRANSFORM(CON_GETINCANGLE) DELIMITER \
1097     TRANSFORM(CON_GETINPUT) DELIMITER \
1098     TRANSFORM(CON_GETKEYNAME) DELIMITER \
1099     TRANSFORM(CON_GETLASTPAL) DELIMITER \
1100     TRANSFORM(CON_GETMUSICPOSITION) DELIMITER \
1101     TRANSFORM(CON_GETPLAYERANGLE) DELIMITER \
1102     TRANSFORM(CON_GETPNAME) DELIMITER \
1103     TRANSFORM(CON_GETTEXTURECEILING) DELIMITER \
1104     TRANSFORM(CON_GETTEXTUREFLOOR) DELIMITER \
1105     TRANSFORM(CON_GETTHISPROJECTILE) DELIMITER \
1106     TRANSFORM(CON_GETTICKS) DELIMITER \
1107     TRANSFORM(CON_GETTILEDATA) DELIMITER \
1108     TRANSFORM(CON_GETTIMEDATE) DELIMITER \
1109     TRANSFORM(CON_GETZRANGE) DELIMITER \
1110     TRANSFORM(CON_GLOBALSOUND) DELIMITER \
1111     TRANSFORM(CON_GMAXAMMO) DELIMITER \
1112     TRANSFORM(CON_GUNIQHUDID) DELIMITER \
1113     TRANSFORM(CON_GUTS) DELIMITER \
1114     TRANSFORM(CON_HEADSPRITESECT) DELIMITER \
1115     TRANSFORM(CON_HEADSPRITESTAT) DELIMITER \
1116     TRANSFORM(CON_HITRADIUS) DELIMITER \
1117     TRANSFORM(CON_HITSCAN) DELIMITER \
1118     TRANSFORM(CON_IFACTION) DELIMITER \
1119     TRANSFORM(CON_IFACTIONCOUNT) DELIMITER \
1120     TRANSFORM(CON_IFACTOR) DELIMITER \
1121     TRANSFORM(CON_IFACTORNOTSTAYPUT) DELIMITER \
1122     TRANSFORM(CON_IFACTORSOUND) DELIMITER \
1123     TRANSFORM(CON_IFAI) DELIMITER \
1124     TRANSFORM(CON_IFANGDIFFL) DELIMITER \
1125     TRANSFORM(CON_IFAWAYFROMWALL) DELIMITER \
1126     TRANSFORM(CON_IFBULLETNEAR) DELIMITER \
1127     TRANSFORM(CON_IFCANSEE) DELIMITER \
1128     TRANSFORM(CON_IFCANSEETARGET) DELIMITER \
1129     TRANSFORM(CON_IFCANSHOOTTARGET) DELIMITER \
1130     TRANSFORM(CON_IFCEILINGDISTL) DELIMITER \
1131     TRANSFORM(CON_IFCLIENT) DELIMITER \
1132     TRANSFORM(CON_IFCOUNT) DELIMITER \
1133     TRANSFORM(CON_IFCUTSCENE) DELIMITER \
1134     TRANSFORM(CON_IFDEAD) DELIMITER \
1135     TRANSFORM(CON_IFFLOORDISTL) DELIMITER \
1136     TRANSFORM(CON_IFGAPZL) DELIMITER \
1137     TRANSFORM(CON_IFGOTWEAPONCE) DELIMITER \
1138     TRANSFORM(CON_IFHITSPACE) DELIMITER \
1139     TRANSFORM(CON_IFHITWEAPON) DELIMITER \
1140     TRANSFORM(CON_IFINOUTERSPACE) DELIMITER \
1141     TRANSFORM(CON_IFINSPACE) DELIMITER \
1142     TRANSFORM(CON_IFINWATER) DELIMITER \
1143     TRANSFORM(CON_IFMOVE) DELIMITER \
1144     TRANSFORM(CON_IFMULTIPLAYER) DELIMITER \
1145     TRANSFORM(CON_IFNOSOUNDS) DELIMITER \
1146     TRANSFORM(CON_IFNOTMOVING) DELIMITER \
1147     TRANSFORM(CON_IFONWATER) DELIMITER \
1148     TRANSFORM(CON_IFOUTSIDE) DELIMITER \
1149     TRANSFORM(CON_IFP) DELIMITER \
1150     TRANSFORM(CON_IFPDISTG) DELIMITER \
1151     TRANSFORM(CON_IFPDISTL) DELIMITER \
1152     TRANSFORM(CON_IFPHEALTHL) DELIMITER \
1153     TRANSFORM(CON_IFPINVENTORY) DELIMITER \
1154     TRANSFORM(CON_IFPLAYBACKON) DELIMITER \
1155     TRANSFORM(CON_IFPLAYERSL) DELIMITER \
1156     TRANSFORM(CON_IFRESPAWN) DELIMITER \
1157     TRANSFORM(CON_IFRND) DELIMITER \
1158     TRANSFORM(CON_IFSERVER) DELIMITER \
1159     TRANSFORM(CON_IFSOUND) DELIMITER \
1160     TRANSFORM(CON_IFSPAWNEDBY) DELIMITER \
1161     TRANSFORM(CON_IFSPRITEPAL) DELIMITER \
1162     TRANSFORM(CON_IFSQUISHED) DELIMITER \
1163     TRANSFORM(CON_IFSTRENGTH) DELIMITER \
1164     TRANSFORM(CON_IFWASWEAPON) DELIMITER \
1165     TRANSFORM(CON_INITTIMER) DELIMITER \
1166     TRANSFORM(CON_INSERTSPRITEQ) DELIMITER \
1167     TRANSFORM(CON_INV) DELIMITER \
1168     TRANSFORM(CON_JUMP) DELIMITER \
1169     TRANSFORM(CON_KILLIT) DELIMITER \
1170     TRANSFORM(CON_KLABS) DELIMITER \
1171     TRANSFORM(CON_LDIST) DELIMITER \
1172     TRANSFORM(CON_LINEINTERSECT) DELIMITER \
1173     TRANSFORM(CON_LOADMAPSTATE) DELIMITER \
1174     TRANSFORM(CON_LOCKPLAYER) DELIMITER \
1175     TRANSFORM(CON_LOTSOFGLASS) DELIMITER \
1176     TRANSFORM(CON_MAIL) DELIMITER \
1177     TRANSFORM(CON_MIKESND) DELIMITER \
1178     TRANSFORM(CON_MINITEXT) DELIMITER \
1179     TRANSFORM(CON_MONEY) DELIMITER \
1180     TRANSFORM(CON_MOVE) DELIMITER \
1181     TRANSFORM(CON_MOVESECTOR) DELIMITER \
1182     TRANSFORM(CON_MOVESPRITE) DELIMITER \
1183     TRANSFORM(CON_MULSCALE) DELIMITER \
1184     TRANSFORM(CON_MYOS) DELIMITER \
1185     TRANSFORM(CON_MYOSPAL) DELIMITER \
1186     TRANSFORM(CON_MYOSPALX) DELIMITER \
1187     TRANSFORM(CON_MYOSX) DELIMITER \
1188     TRANSFORM(CON_NEARTAG) DELIMITER \
1189     TRANSFORM(CON_NEXTSECTORNEIGHBORZ) DELIMITER \
1190     TRANSFORM(CON_NEXTSPRITESECT) DELIMITER \
1191     TRANSFORM(CON_NEXTSPRITESTAT) DELIMITER \
1192     TRANSFORM(CON_NULLOP) DELIMITER \
1193     TRANSFORM(CON_OPERATE) DELIMITER \
1194     TRANSFORM(CON_OPERATEACTIVATORS) DELIMITER \
1195     TRANSFORM(CON_OPERATEMASTERSWITCHES) DELIMITER \
1196     TRANSFORM(CON_OPERATERESPAWNS) DELIMITER \
1197     TRANSFORM(CON_OPERATESECTORS) DELIMITER \
1198     TRANSFORM(CON_PALFROM) DELIMITER \
1199     TRANSFORM(CON_PAPER) DELIMITER \
1200     TRANSFORM(CON_PKICK) DELIMITER \
1201     TRANSFORM(CON_PRELOADTRACKSLOTFORSWAP) DELIMITER \
1202     TRANSFORM(CON_PREVSPRITESECT) DELIMITER \
1203     TRANSFORM(CON_PREVSPRITESTAT) DELIMITER \
1204     TRANSFORM(CON_PSTOMP) DELIMITER \
1205     TRANSFORM(CON_QGETSYSSTR) DELIMITER \
1206     TRANSFORM(CON_QSPAWN) DELIMITER \
1207     TRANSFORM(CON_QSPRINTF) DELIMITER \
1208     TRANSFORM(CON_QSTRCAT) DELIMITER \
1209     TRANSFORM(CON_QSTRCMP) DELIMITER \
1210     TRANSFORM(CON_QSTRCPY) DELIMITER \
1211     TRANSFORM(CON_QSTRDIM) DELIMITER \
1212     TRANSFORM(CON_QSTRLEN) DELIMITER \
1213     TRANSFORM(CON_QSTRNCAT) DELIMITER \
1214     TRANSFORM(CON_QSUBSTR) DELIMITER \
1215     TRANSFORM(CON_QUAKE) DELIMITER \
1216     TRANSFORM(CON_QUOTE) DELIMITER \
1217     TRANSFORM(CON_RAYINTERSECT) DELIMITER \
1218     TRANSFORM(CON_READARRAYFROMFILE) DELIMITER \
1219     TRANSFORM(CON_READGAMEVAR) DELIMITER \
1220     TRANSFORM(CON_REDEFINEQUOTE) DELIMITER \
1221     TRANSFORM(CON_RESETACTIONCOUNT) DELIMITER \
1222     TRANSFORM(CON_RESETCOUNT) DELIMITER \
1223     TRANSFORM(CON_RESETPLAYER) DELIMITER \
1224     TRANSFORM(CON_RESETPLAYERFLAGS) DELIMITER \
1225     TRANSFORM(CON_RESIZEARRAY) DELIMITER \
1226     TRANSFORM(CON_RESPAWNHITAG) DELIMITER \
1227     TRANSFORM(CON_RETURN) DELIMITER \
1228     TRANSFORM(CON_ROTATEPOINT) DELIMITER \
1229     TRANSFORM(CON_ROTATESPRITE) DELIMITER \
1230     TRANSFORM(CON_ROTATESPRITE16) DELIMITER \
1231     TRANSFORM(CON_ROTATESPRITEA) DELIMITER \
1232     TRANSFORM(CON_SAVE) DELIMITER \
1233     TRANSFORM(CON_SAVEGAMEVAR) DELIMITER \
1234     TRANSFORM(CON_SAVEMAPSTATE) DELIMITER \
1235     TRANSFORM(CON_SAVENN) DELIMITER \
1236     TRANSFORM(CON_SCALEVAR) DELIMITER \
1237     TRANSFORM(CON_SCREENPAL) DELIMITER \
1238     TRANSFORM(CON_SCREENSOUND) DELIMITER \
1239     TRANSFORM(CON_SCREENTEXT) DELIMITER \
1240     TRANSFORM(CON_SECTCLEARINTERPOLATION) DELIMITER \
1241     TRANSFORM(CON_SECTGETHITAG) DELIMITER \
1242     TRANSFORM(CON_SECTGETLOTAG) DELIMITER \
1243     TRANSFORM(CON_SECTOROFWALL) DELIMITER \
1244     TRANSFORM(CON_SECTSETINTERPOLATION) DELIMITER \
1245     TRANSFORM(CON_SETACTORANGLE) DELIMITER \
1246     TRANSFORM(CON_SETACTORSOUNDPITCH) DELIMITER \
1247     TRANSFORM(CON_SETASPECT) DELIMITER \
1248     TRANSFORM(CON_SETGAMEPALETTE) DELIMITER \
1249     TRANSFORM(CON_SETINPUT) DELIMITER \
1250     TRANSFORM(CON_SETMUSICPOSITION) DELIMITER \
1251     TRANSFORM(CON_SETPLAYERANGLE) DELIMITER \
1252     TRANSFORM(CON_SETSPRITE) DELIMITER \
1253     TRANSFORM(CON_SETTILEDATA) DELIMITER \
1254     TRANSFORM(CON_SHOOT) DELIMITER \
1255     TRANSFORM(CON_SHOWVIEW) DELIMITER \
1256     TRANSFORM(CON_SHOWVIEWQ16) DELIMITER \
1257     TRANSFORM(CON_SHOWVIEWQ16UNBIASED) DELIMITER \
1258     TRANSFORM(CON_SHOWVIEWUNBIASED) DELIMITER \
1259     TRANSFORM(CON_SIN) DELIMITER \
1260     TRANSFORM(CON_SIZEAT) DELIMITER \
1261     TRANSFORM(CON_SIZETO) DELIMITER \
1262     TRANSFORM(CON_SLEEPTIME) DELIMITER \
1263     TRANSFORM(CON_SMAXAMMO) DELIMITER \
1264     TRANSFORM(CON_SOUND) DELIMITER \
1265     TRANSFORM(CON_SOUNDONCE) DELIMITER \
1266     TRANSFORM(CON_SPAWN) DELIMITER \
1267     TRANSFORM(CON_SPAWNCEILINGGLASS) DELIMITER \
1268     TRANSFORM(CON_SPAWNWALLGLASS) DELIMITER \
1269     TRANSFORM(CON_SPAWNWALLSTAINEDGLASS) DELIMITER \
1270     TRANSFORM(CON_SPGETHITAG) DELIMITER \
1271     TRANSFORM(CON_SPGETLOTAG) DELIMITER \
1272     TRANSFORM(CON_SPRITEFLAGS) DELIMITER \
1273     TRANSFORM(CON_SPRITEPAL) DELIMITER \
1274     TRANSFORM(CON_SQRT) DELIMITER \
1275     TRANSFORM(CON_SSP) DELIMITER \
1276     TRANSFORM(CON_STARTCUTSCENE) DELIMITER \
1277     TRANSFORM(CON_STARTLEVEL) DELIMITER \
1278     TRANSFORM(CON_STARTSCREEN) DELIMITER \
1279     TRANSFORM(CON_STARTTRACK) DELIMITER \
1280     TRANSFORM(CON_STARTTRACKSLOT) DELIMITER \
1281     TRANSFORM(CON_STOPACTORSOUND) DELIMITER \
1282     TRANSFORM(CON_STOPALLMUSIC) DELIMITER \
1283     TRANSFORM(CON_STOPALLSOUNDS) DELIMITER \
1284     TRANSFORM(CON_STOPSOUND) DELIMITER \
1285     TRANSFORM(CON_STRENGTH) DELIMITER \
1286     TRANSFORM(CON_SWAPARRAYS) DELIMITER \
1287     TRANSFORM(CON_SWAPTRACKSLOT) DELIMITER \
1288     TRANSFORM(CON_SWITCH) DELIMITER \
1289     TRANSFORM(CON_TIME) DELIMITER \
1290     TRANSFORM(CON_TIP) DELIMITER \
1291     TRANSFORM(CON_TOSSWEAPON) DELIMITER \
1292     TRANSFORM(CON_UPDATESECTOR) DELIMITER \
1293     TRANSFORM(CON_UPDATESECTORZ) DELIMITER \
1294     TRANSFORM(CON_UPDATESECTORNEIGHBOR) DELIMITER \
1295     TRANSFORM(CON_UPDATESECTORNEIGHBORZ) DELIMITER \
1296     TRANSFORM(CON_USERQUOTE) DELIMITER \
1297     TRANSFORM(CON_WACKPLAYER) DELIMITER \
1298     TRANSFORM(CON_WRITEARRAYTOFILE) DELIMITER \
1299     TRANSFORM(CON_ZSHOOT) DELIMITER \
1300     \
1301     TRANSFORM(CON_OPCODE_END)
1302 
1303     // these are the keywords that don't have instructions written into the bytecode
1304 #define TRANSFORM_SCRIPT_ONLY_KEYWORDS_LIST(TRANSFORM, DELIMITER) \
1305     TRANSFORM(CON_ACTIVATE) DELIMITER \
1306     TRANSFORM(CON_ACTOR) DELIMITER \
1307     TRANSFORM(CON_APPENDEVENT) DELIMITER \
1308     TRANSFORM(CON_BETANAME) DELIMITER \
1309     TRANSFORM(CON_CASE) DELIMITER \
1310     TRANSFORM(CON_CHEATKEYS) DELIMITER \
1311     TRANSFORM(CON_DAMAGEEVENTTILE) DELIMITER \
1312     TRANSFORM(CON_DAMAGEEVENTTILERANGE) DELIMITER \
1313     TRANSFORM(CON_DEFAULT) DELIMITER \
1314     TRANSFORM(CON_DEFINE) DELIMITER \
1315     TRANSFORM(CON_DEFINECHEAT) DELIMITER \
1316     TRANSFORM(CON_DEFINECHEATDESCRIPTION) DELIMITER \
1317     TRANSFORM(CON_DEFINEGAMEFUNCNAME) DELIMITER \
1318     TRANSFORM(CON_DEFINEGAMETYPE) DELIMITER \
1319     TRANSFORM(CON_DEFINELEVELNAME) DELIMITER \
1320     TRANSFORM(CON_DEFINEPROJECTILE) DELIMITER \
1321     TRANSFORM(CON_DEFINEQUOTE) DELIMITER \
1322     TRANSFORM(CON_DEFINESKILLNAME) DELIMITER \
1323     TRANSFORM(CON_DEFINESOUND) DELIMITER \
1324     TRANSFORM(CON_DEFINEVOLUMEFLAGS) DELIMITER \
1325     TRANSFORM(CON_DEFINEVOLUMENAME) DELIMITER \
1326     TRANSFORM(CON_DEFSTATE) DELIMITER \
1327     TRANSFORM(CON_DYNAMICREMAP) DELIMITER \
1328     TRANSFORM(CON_DYNAMICSOUNDREMAP) DELIMITER \
1329     TRANSFORM(CON_ENHANCED) DELIMITER \
1330     TRANSFORM(CON_EVENTLOADACTOR) DELIMITER \
1331     TRANSFORM(CON_GAMEARRAY) DELIMITER \
1332     TRANSFORM(CON_GAMESTARTUP) DELIMITER \
1333     TRANSFORM(CON_GAMEVAR) DELIMITER \
1334     TRANSFORM(CON_INCLUDE) DELIMITER \
1335     TRANSFORM(CON_INCLUDEDEFAULT) DELIMITER \
1336     TRANSFORM(CON_MUSIC) DELIMITER \
1337     TRANSFORM(CON_ONEVENT) DELIMITER \
1338     TRANSFORM(CON_PRECACHE) DELIMITER \
1339     TRANSFORM(CON_SCRIPTSIZE) DELIMITER \
1340     TRANSFORM(CON_SETCFGNAME) DELIMITER \
1341     TRANSFORM(CON_SETDEFNAME) DELIMITER \
1342     TRANSFORM(CON_SETGAMENAME) DELIMITER \
1343     TRANSFORM(CON_SHADETO) DELIMITER \
1344     TRANSFORM(CON_SPRITENOPAL) DELIMITER \
1345     TRANSFORM(CON_SPRITENOSHADE) DELIMITER \
1346     TRANSFORM(CON_SPRITENVG) DELIMITER \
1347     TRANSFORM(CON_SPRITESHADOW) DELIMITER \
1348     TRANSFORM(CON_UNDEFINECHEAT) DELIMITER \
1349     TRANSFORM(CON_UNDEFINEGAMEFUNC) DELIMITER \
1350     TRANSFORM(CON_UNDEFINELEVEL) DELIMITER \
1351     TRANSFORM(CON_UNDEFINESKILL) DELIMITER \
1352     TRANSFORM(CON_UNDEFINEVOLUME) DELIMITER \
1353     TRANSFORM(CON_USERACTOR) DELIMITER \
1354     \
1355     TRANSFORM(CON_END)
1356 
1357 #define ENUM_TRANSFORM(ENUM_CONST) ENUM_CONST
1358 #define COMMA ,
1359 enum ScriptKeywords_t
1360 {
1361     TRANSFORM_SCRIPT_KEYWORDS_LIST(ENUM_TRANSFORM, COMMA),
1362     TRANSFORM_SCRIPT_ONLY_KEYWORDS_LIST(ENUM_TRANSFORM, COMMA)
1363 };
1364 #undef ENUM_TRANSFORM
1365 #undef COMMA
1366 
1367 #ifdef __cplusplus
1368 }
1369 #endif
1370 
1371 #endif // gamedef_h_
1372