/*

   The following declarations are based on the declarations found in the
   zdefs.acs and zspecial.acs files, both shipped with the acc compiler.

*/

#library

#ifdef __INCLUDED__
   #error you must #import this file
#endif

// ==========================================================================
strict namespace {
// ==========================================================================

// Constants
// --------------------------------------------------------------------------

enum { OFF = 0 };
enum { ON = 1 };
enum { NO = 0 };
enum { YES = 1 };

enum {
   LINE_FRONT,
   LINE_BACK
};

enum {
   SIDE_FRONT,
   SIDE_BACK
};

enum {
   TEXTURE_TOP,
   TEXTURE_MIDDLE,
   TEXTURE_BOTTOM
};

enum {
   TEXFLAG_TOP = 0x1,
   TEXFLAG_MIDDLE = 0x2,
   TEXFLAG_BOTTOM = 0x4,
   TEXFLAG_ADDOFFSET = 0x8
};

enum {
   GAME_SINGLE_PLAYER,
   GAME_NET_COOPERATIVE,
   GAME_NET_DEATHMATCH,
   GAME_TITLE_MAP
};

enum {
   CLASS_FIGHTER,
   CLASS_CLERIC,
   CLASS_MAGE
};

enum {
   SKILL_VERY_EASY,
   SKILL_EASY,
   SKILL_NORMAL,
   SKILL_HARD,
   SKILL_VERY_HARD
};

enum {
   BLOCK_NOTHING,
   BLOCK_CREATURES,
   BLOCK_EVERYTHING,
   BLOCK_RAILING,
   BLOCK_PLAYERS
};

enum {
   SCROLL,
   CARRY,
   SCROLL_AND_CARRY
};

enum {
   MOD_UNKNOWN,
   MOD_ROCKET = 5,
   MOD_R_SPLASH,
   MOD_PLASMARIFLE,
   MOD_BFG_BOOM,
   MOD_BFG_SPLASH,
   MOD_CHAINSAW,
   MOD_SSHOTGUN,
   MOD_WATER,
   MOD_SLIME,
   MOD_LAVA,
   MOD_CRUSH,
   MOD_TELEFRAG,
   MOD_FALLING,
   MOD_SUICIDE,
   MOD_BARREL,
   MOD_EXIT,
   MOD_SPLASH,
   MOD_HIT,
   MOD_RAILGUN,
   MOD_ICE,
   MOD_DISINTEGRATE,
   MOD_POISON,
   MOD_ELECTRIC
};

enum {
   MOVIE_PLAYED,
   MOVIE_PLAYED_NOVIDEO,
   MOVIE_PLAYED_ABORTED,
   MOVIE_FAILED = -1
};

enum {
   PROP_FROZEN,
   PROP_NOTARGET,
   PROP_INSTANTWEAPONSWITCH,
   PROP_FLY,
   PROP_TOTALLYFROZEN,
   PROP_INVULNERABILITY,
   PROP_STRENGTH,
   PROP_INVISIBILITY,
   PROP_RADIATIONSUIT,
   PROP_ALLMAP,
   PROP_INFRARED,
   PROP_WEAPONLEVEL2,
   PROP_FLIGHT,
   PROP_SPEED = 15,
   PROP_BUDDHA,
   PROP_BUDDHA2,
   PROP_FRIGHTENING,
   PROP_NOCLIP,
   PROP_NOCLIP2,
   PROP_GODMODE,
   PROP_GODMODE2
};

enum {
   INPUT_OLDBUTTONS,
   INPUT_BUTTONS,
   INPUT_PITCH,
   INPUT_YAW,
   INPUT_ROLL,
   INPUT_FORWARDMOVE,
   INPUT_SIDEMOVE,
   INPUT_UPMOVE
};

enum {
   MODINPUT_OLDBUTTONS = 8,
   MODINPUT_BUTTONS,
   MODINPUT_PITCH,
   MODINPUT_YAW,
   MODINPUT_ROLL,
   MODINPUT_FORWARDMOVE,
   MODINPUT_SIDEMOVE,
   MODINPUT_UPMOVE
};

enum {
   BT_ATTACK = 0x1,
   BT_USE = 0x2,
   BT_JUMP = 0x4,
   BT_CROUCH = 0x8,
   BT_TURN180 = 0x10,
   BT_ALTATTACK = 0x20,
   BT_RELOAD = 0x40,
   BT_ZOOM = 0x80,
   BT_SPEED = 0x100,
   BT_STRAFE = 0x200,
   BT_MOVERIGHT = 0x400,
   BT_MOVELEFT = 0x800,
   BT_BACK = 0x1000,
   BT_FORWARD = 0x2000,
   BT_RIGHT = 0x4000,
   BT_LEFT = 0x8000,
   BT_LOOKUP = 0x1'0000,
   BT_LOOKDOWN = 0x2'0000,
   BT_MOVEUP = 0x4'0000,
   BT_MOVEDOWN = 0x8'0000,
   BT_SHOWSCORES = 0x10'0000,
   BT_USER1 = 0x20'0000,
   BT_USER2 = 0x40'0000,
   BT_USER3 = 0x80'0000,
   BT_USER4 = 0x100'0000
};

enum {
   CR_UNTRANSLATED = -1,
   CR_BRICK,
   CR_TAN,
   CR_GRAY,
   CR_GREY = CR_GRAY,
   CR_GREEN,
   CR_BROWN,
   CR_GOLD,
   CR_RED,
   CR_BLUE,
   CR_ORANGE,
   CR_WHITE,
   CR_YELLOW,
   CR_BLACK = 12,
   CR_LIGHTBLUE,
   CR_CREAM,
   CR_OLIVE,
   CR_DARKGREEN,
   CR_DARKRED,
   CR_DARKBROWN,
   CR_PURPLE,
   CR_DARKGRAY,
   CR_DARKGREY = CR_DARKGRAY,
   CR_CYAN,
   CR_ICE,
   CR_FIRE,
   CR_SAPPHIRE,
   CR_TEAL
};

enum {
   HUDMSG_PLAIN,
   HUDMSG_FADEOUT,
   HUDMSG_TYPEON,
   HUDMSG_FADEINOUT
};

enum {
   HUDMSG_LOG = 0x8000'0000,
   HUDMSG_COLORSTRING = 0x4000'0000,
   HUDMSG_ADDBLEND = 0x2000'0000,
   HUDMSG_ALPHA = 0x1000'0000,
   HUDMSG_NOWRAP = 0x800'0000
};

enum {
   HUDMSG_LAYER_OVERHUD = 0x0,
   HUDMSG_LAYER_UNDERHUD = 0x1000,
   HUDMSG_LAYER_OVERMAP = 0x2000
};

enum {
   HUDMSG_NOTWITH3DVIEW = 0x1'0000,
   HUDMSG_NOTWITHFULLMAP = 0x2'0000,
   HUDMSG_NOTWITHOVERLAYMAP = 0x4'0000
};

enum {
   MARINEWEAPON_DUMMY,
   MARINEWEAPON_FIST,
   MARINEWEAPON_BERSERKFIST,
   MARINEWEAPON_CHAINSAW,
   MARINEWEAPON_PISTOL,
   MARINEWEAPON_SHOTGUN,
   MARINEWEAPON_SUPERSHOTGUN,
   MARINEWEAPON_CHAINGUN,
   MARINEWEAPON_ROCKETLAUNCHER,
   MARINEWEAPON_PLASMARIFLE,
   MARINEWEAPON_RAILGUN,
   MARINEWEAPON_BFG
};

enum {
   APROP_HEALTH,
   APROP_SPEED,
   APROP_DAMAGE,
   APROP_ALPHA,
   APROP_RENDERSTYLE,
   APROP_SEESOUND,
   APROP_ATTACKSOUND,
   APROP_PAINSOUND,
   APROP_DEATHSOUND,
   APROP_ACTIVESOUND,
   APROP_AMBUSH,
   APROP_INVULNERABLE,
   APROP_JUMPZ,
   APROP_CHASEGOAL,
   APROP_FRIGHTENED,
   APROP_GRAVITY,
   APROP_FRIENDLY,
   APROP_SPAWNHEALTH,
   APROP_DROPPED,
   APROP_NOTARGET,
   APROP_SPECIES,
   APROP_NAMETAG,
   APROP_SCORE,
   APROP_NOTRIGGER,
   APROP_DAMAGEFACTOR,
   APROP_MASTERTID,
   APROP_TARGETTID,
   APROP_TRACERTID,
   APROP_WATERLEVEL,
   APROP_SCALEX,
   APROP_SCALEY,
   APROP_DORMANT,
   APROP_MASS,
   APROP_ACCURACY,
   APROP_STAMINA,
   APROP_HEIGHT,
   APROP_RADIUS,
   APROP_REACTIONTIME,
   APROP_MELEERANGE,
   APROP_VIEWHEIGHT,
   APROP_ATTACKZOFFSET,
   APROP_STENCILCOLOR,
   APROP_FRICTION,
   APROP_DAMAGEMULTIPLIER,
   APROP_MAXSTEPHEIGHT,
   APROP_MAXDROPOFFHEIGHT,
   APROP_DAMAGETYPE,
   APROP_SOUNDCLASS,
   APROP_FRIENDLYSEEBLOCKS,

   // Eternity.
   APROP_COUNTER0 = 100,
   APROP_COUNTER1,
   APROP_COUNTER2,
   APROP_COUNTER3,
   APROP_COUNTER4,
   APROP_COUNTER5,
   APROP_COUNTER6,
   APROP_COUNTER7
};

enum {
   STYLE_NONE,
   STYLE_NORMAL,
   STYLE_FUZZY,
   STYLE_SOULTRANS,
   STYLE_OPTFUZZY,
   STYLE_STENCIL,
   STYLE_ADDSTENCIL,
   STYLE_ADDSHADED,
   STYLE_TRANSLUCENT = 64,
   STYLE_ADD,
   STYLE_SHADED,
   STYLE_TRANSLUCENTSTENCIL,
   STYLE_SHADOW,
   STYLE_SUBTRACT
};

enum {
   LEVELINFO_PAR_TIME,
   LEVELINFO_CLUSTERNUM,
   LEVELINFO_LEVELNUM,
   LEVELINFO_TOTAL_SECRETS,
   LEVELINFO_FOUND_SECRETS,
   LEVELINFO_TOTAL_ITEMS,
   LEVELINFO_FOUND_ITEMS,
   LEVELINFO_TOTAL_MONSTERS,
   LEVELINFO_KILLED_MONSTERS,
   LEVELINFO_SUCK_TIME
};

enum {
   PLAYERINFO_TEAM,
   PLAYERINFO_AIMDIST,
   PLAYERINFO_COLOR,
   PLAYERINFO_GENDER,
   PLAYERINFO_NEVERSWITCH,
   PLAYERINFO_MOVEBOB,
   PLAYERINFO_STILLBOB,
   PLAYERINFO_PLAYERCLASS,
   PLAYERINFO_FOV,
   PLAYERINFO_DESIREDFOV
};

enum {
   NOT_BOTTOM = 0x1,
   NOT_MIDDLE = 0x2,
   NOT_TOP = 0x4,
   NOT_FLOOR = 0x8,
   NOT_CEILING = 0x10
};

enum {
   DAMAGE_PLAYERS = 0x1,
   DAMAGE_NONPLAYERS = 0x2,
   DAMAGE_IN_AIR = 0x4,
   DAMAGE_SUBCLASSES_PROTECT = 0x8,
   DAMAGE_NO_ARMOR = 0x16
};

enum {
   MRF_OLDEFFECTS = 0x0,
   MRF_ADDSTAMINA = 0x1,
   MRF_FULLHEALTH = 0x2,
   MRF_UNDOBYTOMEOFPOWER = 0x4,
   MRF_UNDOBYCHAOSDEVICE = 0x8,
   MRF_FAILNOTELEFRAG = 0x10,
   MRF_FAILNOLAUGH = 0x20,
   MRF_WHENINVULNERABLE = 0x40,
   MRF_LOSEACTUALWEAPON = 0x80,
   MRF_NEWTIDBEHAVIOUR = 0x100,
   MRF_UNDOBYDEATH = 0x200,
   MRF_UNDOBYDEATHFORCED = 0x400,
   MRF_UNDOBYDEATHSAVES = 0x800,
   MRF_UNDOALWAYS = 0x1000,
   MRF_TRANSFERTRANSLATION = 0x2000
};

enum {
   T_ROCK1 = 41,
   T_ROCK2,
   T_ROCK3,
   T_DIRT1,
   T_DIRT2,
   T_DIRT3,
   T_DIRT4,
   T_DIRT5,
   T_DIRT6,
   T_STAINEDGLASS1 = 54,
   T_STAINEDGLASS2,
   T_STAINEDGLASS3,
   T_STAINEDGLASS4,
   T_STAINEDGLASS5,
   T_STAINEDGLASS6,
   T_STAINEDGLASS7,
   T_STAINEDGLASS8,
   T_STAINEDGLASS9,
   T_STAINEDGLASS0
};

enum {
   T_NONE,
   T_SHOTGUY,
   T_CHAINGUY,
   T_BARON,
   T_ZOMBIE,
   T_IMP,
   T_ARACHNOTRON,
   T_SPIDERMASTERMIND,
   T_DEMON,
   T_SPECTRE,
   T_IMPFIREBALL,
   T_CLIP,
   T_SHELLS,
   T_CACODEMON = 19,
   T_REVENANT,
   T_BRIDGE,
   T_ARMORBONUS,
   T_STIMPACK,
   T_MEDKIT,
   T_SOULSPHERE,
   T_SHOTGUN = 27,
   T_CHAINGUN,
   T_ROCKETLAUNCHER,
   T_PLASMAGUN,
   T_BFG,
   T_CHAINSAW,
   T_SUPERSHOTGUN,
   T_PLASMABOLT = 51,
   T_TRACER = 53,
   T_GREENARMOR = 68,
   T_BLUEARMOR,
   T_CELL = 75,
   T_BLUEKEYCARD = 85,
   T_REDKEYCARD,
   T_YELLOWKEYCARD,
   T_YELLOWSKULLKEY,
   T_REDSKULLKEY,
   T_BLUESKULLKEY,
   T_TEMPLARGEFLAME = 98,
   T_STEALTHBARON = 100,
   T_STEALTHKNIGHT,
   T_STEALTHZOMBIE,
   T_STEALTHSHOTGUY,
   T_LOSTSOUL = 110,
   T_VILE,
   T_MANCUBUS,
   T_HELLKNIGHT,
   T_CYBERDEMON,
   T_PAINELEMENTAL,
   T_WOLFSS,
   T_STEALTHARACHNOTRON,
   T_STEALTHVILE,
   T_STEALTHCACODEMON,
   T_STEALTHCHAINGUY,
   T_STEALTHSERGEANT,
   T_STEALTHIMP,
   T_STEALTHMANCUBUS,
   T_STEALTHREVENANT,
   T_BARREL,
   T_CACODEMONSHOT,
   T_ROCKET,
   T_BFGSHOT,
   T_ARACHNOTRONPLASMA,
   T_BLOOD,
   T_PUFF,
   T_MEGASPHERE,
   T_INVULNERABILITY,
   T_BERSERK,
   T_INVISIBILITY,
   T_IRONFEET,
   T_COMPUTERMAP,
   T_LIGHTAMP,
   T_AMMOBOX,
   T_ROCKETAMMO,
   T_ROCKETBOX,
   T_BATTERY,
   T_SHELLBOX,
   T_BACKPACK,
   T_GUTS,
   T_BLOODPOOL,
   T_BLOODPOOL1,
   T_BLOODPOOL2,
   T_FLAMINGBARREL,
   T_BRAINS,
   T_SCRIPTEDMARINE,
   T_HEALTHBONUS,
   T_MANCUBUSSHOT,
   T_BARONBALL
};

enum {
   T_CLINK = 1,
   T_MUMMYLEADER,
   T_BEAST,
   T_MUMMY,
   T_KNIGHT = 6,
   T_IMPLEADER,
   T_MUMMYGHOST,
   T_MUMMYLEADERGHOST,
   T_WIMPYWANDAMMO = 11,
   T_HEFTYWANDAMMO,
   T_ITEMEGG = 14,
   T_ITEMFLIGHT,
   T_ITEMTELEPORT = 18,
   T_WIZARD,
   T_IRONLICH,
   T_ITEMHEALTHPOTION = 23,
   T_ITEMHEALTHFLASH,
   T_ITEMHEALTHFLASK = T_ITEMHEALTHFLASH,
   T_ITEMHEALTHFULL,
   T_CROSSBOW = 27,
   T_BLASTER,
   T_PHOENIXROD,
   T_SKULLROD,
   T_MACE,
   T_GAUNTLETS,
   T_WIMPYCROSSBOWAMMO,
   T_HEFTYCROSSBOWAMMO,
   T_WIMPYMACEAMMO,
   T_HEFTYMACEAMMO,
   T_WIMPYBLASTERAMMO,
   T_HEFTYBLASTERAMMO,
   T_MORPHBLAST = 40,
   T_SHIELD1 = 68,
   T_SHIELD2,
   T_ITEMTIMEBOMB = 72,
   T_ITEMTORCH,
   T_BLUEKEY = 85,
   T_GREENKEY,
   T_YELLOWKEY,
   T_SOUND_WIND = 110,
   T_SOUND_WATERFALL,
   T_BEASTBALL = 120,
   T_FEATHER,
   T_CHICKEN,
   T_VOLCANOBALL,
   T_TINYVOLCANOBALL,
   T_POD,
   T_PODGENERATOR,
   T_KNIGHTAXE,
   T_KNIGHTBLOODAXE,
   T_KNIGHTGHOST,
   T_MUMMYHEAD = 131,
   T_SNAKE,
   T_ITEMINVULNERABILITY,
   T_ITEMTOME,
   T_ITEMINVISIBILITY,
   T_ITEMBAGOFHOLDING,
   T_ITEMALLMAP,
   T_SNAKEPROJECTILE,
   T_SNAKEPROJECTILEBIG,
   T_WIZARDSHOT,
   T_DSPARILTELEPORTDEST,
   T_DSPARILONSERPENT,
   T_DSPARILALONE,
   T_SERPENTFIREBALL,
   T_DSPARILBLUESHOT,
   T_DSPARILWIZARDSPAWNER,
   T_CROSSBOWMAINBLAST,
   T_CROSSBOWMINIBLAST,
   T_CROSSBOWPOWERBLAST,
   T_VOLCANO,
   T_POWERWANDMINIBLAST,
   T_POWERWANDBIGGERBLAST,
   T_DEATHBALL,
   T_NOGRAVITYMACEBALL,
   T_BOUNCYMACEBALL,
   T_HEAVYMACEBALL,
   T_RIPPER,
   T_WIMPYSKULLRODAMMO,
   T_HEFTYSKULLRODAMMO,
   T_SKULLRODBLAST,
   T_WIMPYPHOENIXRODAMMO,
   T_HEFTYPHOENIXRODAMMO,
   T_PHOENIXSHOT,
   T_IRONLICHBLUESHOT,
   T_WHIRLWIND,
   T_REDTELEGLITTER,
   T_BLUETELEGLITTER
};

enum {
   T_CENTAUR = 1,
   T_CENTAURLEADER,
   T_DEMON1,
   T_ETTIN,
   T_FIREGARGOYLE,
   T_WATERLURKER,
   T_WATERLURKERLEADER,
   T_WRAITH,
   T_WRAITHBURIED,
   T_FIREBALL1,
   T_MANA1,
   T_MANA2,
   T_ITEMBOOTS,
   T_ITEMPORK,
   T_ITEMSUMMON = 16,
   T_ITEMTPORTOTHER,
   T_BISHOP = 19,
   T_ICEGOLEM,
   T_DRAGONSKINBRACERS = 22,
   T_ITEMBOOSTMANA = 26,
   T_FIGHTERAXE,
   T_FIGHTERHAMMER,
   T_FIGHTERSWORD1,
   T_FIGHTERSWORD2,
   T_FIGHTERSWORD3,
   T_CLERICSTAFF,
   T_CLERICHOLY1,
   T_CLERICHOLY2,
   T_CLERICHOLY3,
   T_MAGESHARDS,
   T_MAGESTAFF1,
   T_MAGESTAFF2,
   T_MAGESTAFF3,
   T_ARROW = 50,
   T_DART,
   T_POISONDART,
   T_RIPPERBALL,
   T_BLADE = 64,
   T_ICESHARD,
   T_FLAME_SMALL,
   T_FLAME_LARGE,
   T_MESHARMOR,
   T_FALCONSHIELD,
   T_PLATINUMHELM,
   T_AMULETOFWARDING,
   T_ITEMFLECHETTE,
   T_ITEMREPULSION = 74,
   T_MANA3,
   T_PUZZSKULL,
   T_PUZZGEMBIG,
   T_PUZZGEMRED,
   T_PUZZGEMGREEN1,
   T_PUZZGEMGREEN2,
   T_PUZZGEMBLUE1,
   T_PUZZGEMBLUE2,
   T_PUZZBOOK1,
   T_PUZZBOOK2,
   T_METALKEY,
   T_SMALLMETALKEY,
   T_AXEKEY,
   T_FIREKEY,
   T_EMERALDKEY,
   T_MACEKEY,
   T_SILVERKEY,
   T_RUSTYKEY,
   T_HORNKEY,
   T_SERPENTKEY,
   T_WATERDRIP,
   T_TEMPSMALLFLAME,
   T_PERMSMALLFLAME,
   T_PERMLARGEFLAME = 99,
   T_DEMON_MASH,
   T_DEMON2_MASH,
   T_ETTIN_MASH,
   T_CENTAUR_MASH,
   T_THRUSTSPIKEUP,
   T_THRUSTSPIKEDOWN,
   T_FLESH_DRIP1,
   T_FLESH_DRIP2,
   T_SPARK_DRIP
};

enum {
   ACTOR_NONE = 0x0,
   ACTOR_WORLD = 0x1,
   ACTOR_PLAYER = 0x2,
   ACTOR_BOT = 0x4,
   ACTOR_VOODOODOLL = 0x8,
   ACTOR_MONSTER = 0x10,
   ACTOR_ALIVE = 0x20,
   ACTOR_DEAD = 0x40,
   ACTOR_MISSILE = 0x80,
   ACTOR_GENERIC = 0x100
};

enum {
   SECSEQ_FLOOR = 1,
   SECSEQ_CEILING,
   SECSEQ_FULLHEIGHT,
   SECSEQ_INTERIOR
};

enum {
   CHAN_AUTO,
   CHAN_WEAPON,
   CHAN_VOICE,
   CHAN_ITEM,
   CHAN_BODY,
   CHAN_5,
   CHAN_6,
   CHAN_7
};

enum {
   CHAN_LISTENERZ = 0x8,
   CHAN_MAYBE_LOCAL = 0x10,
   CHAN_UI = 0x20,
   CHAN_NOPAUSE = 0x40,
};

enum : fixed {
   ATTN_NONE = 0.0,
   ATTN_NORM = 1.0,
   ATTN_IDLE = 1.001,
   ATTN_STATIC = 3.0
};

enum {
   SOUND_SEE,
   SOUND_ATTACK,
   SOUND_PAIN,
   SOUND_DEATH,
   SOUND_ACTIVE,
   SOUND_USE,
   SOUND_BOUNCE,
   SOUND_WALLBOUNCE,
   SOUND_CRUSHPAIN,
   SOUND_HOWL
};

enum {
   SDF_ABSANGLE = 0x1,
   SDF_PERMANENT = 0x2,
   SDF_FIXED_ZOFF = 0x4,
   SDF_FIXED_DISTANCE  = 0x8
};

enum {
   AAPTR_DEFAULT = 0x0,
   AAPTR_NULL = 0x1,
   AAPTR_TARGET = 0x2,
   AAPTR_MASTER = 0x4,
   AAPTR_TRACER = 0x8,
   AAPTR_PLAYER_GETTARGET = 0x10,
   AAPTR_PLAYER_GETCONVERSATION = 0x20,
   AAPTR_PLAYER1 = 0x40,
   AAPTR_PLAYER2 = 0x80,
   AAPTR_PLAYER3 = 0x100,
   AAPTR_PLAYER4 = 0x200,
   AAPTR_PLAYER5 = 0x400,
   AAPTR_PLAYER6 = 0x800,
   AAPTR_PLAYER7 = 0x1000,
   AAPTR_PLAYER8 = 0x2000,
   AAPTR_FRIENDPLAYER = 0x4000,
   AAPTR_GET_LINETARGET = 0x8000,
   AAPTR_PLAYER_GETCAMERA = 0x8000000
};

enum {
   PTROP_UNSAFETARGET = 0x1,
   PTROP_UNSAFEMASTER = 0x2,
   PTROP_NOSAFEGUARDS = PTROP_UNSAFETARGET | PTROP_UNSAFEMASTER
};

enum {
   SPAC_NONE = 0x0,
   SPAC_CROSS = 0x1,
   SPAC_USE = 0x2,
   SPAC_MCROSS = 0x4,
   SPAC_IMPACT = 0x8,
   SPAC_PUSH = 0x10,
   SPAC_PCROSS = 0x20,
   SPAC_USETHROUGH = 0x40,
   SPAC_ANYCROSS = 0x80,
   SPAC_MUSE = 0x100,
   SPAC_MPUSH = 0x200,
   SPAC_USEBACK = 0x400
};

enum {
   ARMORINFO_CLASSNAME,
   ARMORINFO_SAVEAMOUNT,
   ARMORINFO_SAVEPERCENT,
   ARMORINFO_MAXABSORB,
   ARMORINFO_MAXFULLABSORB,
   ARMORINFO_ACTUALSAVEAMOUNT,
};

enum {
   TEAM_BLUE,
   TEAM_RED,
   NO_TEAM
};

enum {
   TPROP_NAME,
   TPROP_SCORE,
   TPROP_ISVALID,
   TPROP_NUMPLAYERS,
   TPROP_NUMLIVEPLAYERS,
   TPROP_TEXTCOLOR,
   TPROP_PLAYERSTARTNUM,
   TPROP_SPREAD,
   TPROP_CARRIER,
   TPROP_ASSISTER,
   TPROP_FRAGCOUNT,
   TPROP_DEATHCOUNT,
   TPROP_WINCOUNT,
   TPROP_POINTCOUNT,
   TPROP_RETURNTICS,
   TPROP_TEAMITEM,
   TPROP_WINNERTHEME,
   TPROP_LOSERTHEME
};

enum {
   IS_WAITINGFORPLAYERS,
   IS_FIRSTCOUNTDOWN,
   IS_INPROGRESS,
   IS_BOSSFIGHT,
   IS_WAVECOMPLETE,
   IS_COUNTDOWN,
   IS_MISSIONFAILED
};

enum {
   T_GRENADE = 216,
   T_BFG10KSHOT,
   T_DARKIMPFIREBALL,
   T_CACOLANTERNSHOT,
   T_ABADDONSHOT = 221
};

enum {
   T_DARKIMP = 155,
   T_BLOODDEMON,
   T_SSGGUY,
   T_HECTEBUS,
   T_CACOLANTERN,
   T_BELPHEGOR = 215,
   T_ABADDON = 220
};

enum {
   T_PISTOL = 162,
   T_GRENADELAUNCHER,
   T_RAILGUN,
   T_BFG10000,
   T_MINIGUN = 214
};

enum {
   T_MAXHEALTHBONUS = 166,
   T_MAXARMORBONUS,
   T_REDARMOR
};

enum {
   T_TURBOSPHERE = 169,
   T_ANTIGRAVBELT,
   T_TIMEFREEZER,
   T_INFRAGOGGLES,
   T_INFRATRACKER,
   T_TRANSLUCENCY,
   T_DOOMSPHERE,
   T_RANDOMPOWERUP
};

enum {
   T_BLUEFLAG = 177,
   T_REDFLAG,
   T_WHITEFLAG
};

enum {
   T_STRENGTH = 180,
   T_RAGE,
   T_DRAIN,
   T_SPREAD,
   T_RESISTANCE,
   T_REGENERATION,
   T_PROSPERITY,
   T_REFLECTION,
   T_HIGHJUMP,
   T_HASTE
};

enum {
   EV_KEYDOWN = 1,
   EV_KEYREPEAT,
   EV_KEYUP,
   EV_CHAR,
   EV_MOUSEMOVE,
   EV_LBUTTONDOWN,
   EV_LBUTTONUP,
   EV_LBUTTONDBLCLICK,
   EV_MBUTTONDOWN,
   EV_MBUTTONUP,
   EV_MBUTTONDBLCLICK,
   EV_RBUTTONDOWN,
   EV_RBUTTONUP,
   EV_RBUTTONDBLCLICK,
   EV_WHEELDOWN,
   EV_WHEELUP
};

enum {
   GKM_SHIFT = 0x100,
   GKM_CTRL = 0x200,
   GKM_ALT = 0x400,
   GKM_LBUTTON = 0x800,
   GKM_MBUTTON = 0x1000,
   GKM_RBUTTON = 0x2000
};

enum {
   GK_PGDN = 1,
   GK_PGUP,
   GK_HOME,
   GK_END,
   GK_LEFT,
   GK_RIGHT,
   GK_ALERT,
   GK_BACKSPACE,
   GK_TAB,
   GK_LINEFEED,
   GK_DOWN = GK_LINEFEED,
   GK_VTAB,
   GK_UP = GK_VTAB,
   GK_FORMFEED,
   GK_RETURN,
   GK_F1,
   GK_F2,
   GK_F3,
   GK_F4,
   GK_F5,
   GK_F6,
   GK_F7,
   GK_F8,
   GK_F9,
   GK_F10,
   GK_F11,
   GK_F12,
   GK_DEL,
   GK_ESCAPE,
   GK_FREE1,
   GK_FREE2,
   GK_FREE3,
   GK_CESCAPE
};

enum {
   CHANGELEVEL_KEEPFACING = 0x1,
   CHANGELEVEL_RESETINVENTORY = 0x2,
   CHANGELEVEL_NOMONSTERS = 0x4,
   CHANGELEVEL_CHANGESKILL = 0x8,
   CHANGELEVEL_NOINTERMISSION = 0x10,
   CHANGELEVEL_RESETHEALTH = 0x20,
   CHANGELEVEL_PRERAISEWEAPON = 0x40
};

enum : fixed { NO_CHANGE = 32767.0 };

enum {
   SECF_SILENT = 0x1,
   SECF_NOFALLINGDAMAGE = 0x2,
   SECF_FLOORDROP = 0x4,
   SECF_NORESPAWN = 0x8,
   SECF_FRICTION = 0x10,
   SECF_PUSH = 0x20,
   SECF_SILENTMOVE = 0x40,
   SECF_DMGTERRAINFX = 0x80,
   SECF_DMGENDGODMODE = 0x100,
   SECF_DMGENDLEVEL = 0x200,
   SECF_DMGHAZARD = 0x400
};

enum {
   BLOCKF_CREATURES = 0x1,
   BLOCKF_MONSTERS = 0x2,
   BLOCKF_PLAYERS = 0x4,
   BLOCKF_FLOATERS = 0x8,
   BLOCKF_PROJECTILES = 0x10,
   BLOCKF_EVERYTHING = 0x20,
   BLOCKF_RAILING = 0x40,
   BLOCKF_USE = 0x80,
   BLOCKF_SIGHT = 0x100,
   BLOCKF_HITSCAN = 0x200,
   BLOCKF_SOUND = 0x400,
   BLOCKF_LANDMONSTERS = 0x800
};

enum
{
   AMLF_SECRET = 0x1,
   AMLF_DONTDRAW = 0x2,
   AMLF_MAPPED = 0x4,
   AMLF_REVEALED = 0x8
};

enum
{
   AMLS_DEFAULT,
   AMLS_ONESIDED,
   AMLS_TWOSIDED,
   AMLS_FLOORDIFF,
   AMLS_CEILINGDIFF,
   AMLS_EXTRAFLOOR,
   AMLS_SPECIAL,
   AMLS_SECRET,
   AMLS_NOTSEEN,
   AMLS_LOCKED,
   AMLS_INTRATELEPORT,
   AMLS_INTERTELEPORT,
   AMLS_UNEXPLOREDSECRET,
   AMLS_PORTAL
};

enum {
   FOGP_DENSITY,
   FOGP_OUTSIDEDENSITY,
   FOGP_SKYFOG
};

enum {
   PRINTNAME_LEVELNAME = -1,
   PRINTNAME_LEVEL = -2,
   PRINTNAME_SKILL = -3,
   PRINTNAME_NEXTLEVEL = -4,
   PRINTNAME_NEXTSECRET = -5
};

enum {
   CSF_NOFAKEFLOORS = 0x1,
   CSF_NOBLOCKALL = 0x2
};

enum {
   FHF_NORANDOMPUFFZ = 0x1,
   FHF_NOIMPACTDECAL = 0x2
};

enum {
   PICKAF_FORCETID = 0x1,
   PICKAF_RETURNTID = 0x2
};

enum { TRANSLATION_ICE = 0x10'0007 };

enum {
   MF_SPECIAL = 0x1,
   MF_SOLID = 0x2,
   MF_SHOOTABLE = 0x4,
   MF_NOSECTOR = 0x8,
   MF_NOBLOCKMAP = 0x10,
   MF_AMBUSH = 0x20,
   MF_JUSTHIT = 0x40,
   MF_JUSTATTACKED = 0x80,
   MF_SPAWNCEILING = 0x100,
   MF_NOGRAVITY = 0x200,
   MF_DROPOFF = 0x400,
   MF_PICKUP = 0x800,
   MF_NOCLIP = 0x1000,
   MF_INCHASE = 0x2000,
   MF_FLOAT = 0x4000,
   MF_TELEPORT = 0x8000,
   MF_MISSILE = 0x1'0000,
   MF_DROPPED = 0x2'0000,
   MF_SHADOW = 0x4'0000,
   MF_NOBLOOD = 0x8'0000,
   MF_CORPSE = 0x10'0000,
   MF_INFLOAT = 0x20'0000,
   MF_INBOUNCE = 0x20'0000,
   MF_COUNTKILL = 0x40'0000,
   MF_COUNTITEM = 0x80'0000,
   MF_SKULLFLY = 0x100'0000,
   MF_NOTDMATCH = 0x200'0000,
   MF_SPAWNSOUNDSOURCE = 0x400'0000,
   MF_FRIENDLY = 0x800'0000,
   MF_UNMORPHED = 0x1000'0000,
   MF_NOLIFTDROP = 0x2000'0000,
   MF_STEALTH = 0x4000'0000,
   MF_ICECORPSE = 0x8000'0000
};

enum {
   ML_BLOCKING = 0x1,
   ML_BLOCKMONSTERS = 0x2,
   ML_TWOSIDED = 0x4,
   ML_DONTPEGTOP = 0x8,
   ML_DONTPEGBOTTOM = 0x10,
   ML_SECRET = 0x20,
   ML_SOUNDBLOCK = 0x40,
   ML_DONTDRAW = 0x80,
   ML_MAPPED = 0x100,
   ML_REPEAT_SPECIAL = 0x200,
   ML_ADDTRANS = 0x400,
   ML_MONSTERSCANACTIVATE = 0x2000,
   ML_BLOCK_PLAYERS = 0x4000,
   ML_BLOCKEVERYTHING = 0x8000,
   ML_ZONEBOUNDARY = 0x1'0000,
   ML_RAILING = 0x2'0000,
   ML_BLOCK_FLOATERS = 0x4'0000,
   ML_CLIP_MIDTEX = 0x8'0000,
   ML_WRAP_MIDTEX = 0x10'0000,
   ML_3DMIDTEX = 0x20'0000,
   ML_CHECKSWITCHRANGE = 0x40'0000,
   ML_FIRSTSIDEONLY = 0x80'0000,
   ML_BLOCKPROJECTILE = 0x100'0000,
   ML_BLOCKUSE = 0x200'0000,
   ML_BLOCKSIGHT = 0x400'0000,
   ML_BLOCKHITSCAN = 0x800'0000
};

enum {
   QF_RELATIVE = 0x1,
   QF_SCALEDOWN = 0x2,
   QF_SCALEUP = 0x4,
   QF_MAX = 0x8,
   QF_FULLINTENSITY = 0x10,
   QF_WAVE = 0x20
};

enum {
   WARPF_ABSOLUTEOFFSET = 0x1,
   WARPF_ABSOLUTEANGLE = 0x2,
   WARPF_USECALLERANGLE = 0x4,
   WARPF_NOCHECKPOSITION = 0x8,
   WARPF_INTERPOLATE = 0x10,
   WARPF_WARPINTERPOLATION = 0x20,
   WARPF_COPYINTERPOLATION = 0x40,
   WARPF_STOP = 0x80,
   WARPF_TOFLOOR = 0x100,
   WARPF_TESTONLY = 0x200,
   WARPF_ABSOLUTEPOSITION = 0x400,
   WARPF_BOB = 0x800,
   WARPF_MOVEPTR = 0x1000,
   WARPF_USEPTR = 0x2000,
   WARPF_COPYVELOCITY = 0x4000,
   WARPF_COPYPITCH = 0x8000
};

enum {
   CPXF_ANCESTOR = 0x1,
   CPXF_LESSOREQUAL = 0x2,
   CPXF_NOZ = 0x4,
   CPXF_COUNTDEAD = 0x8,
   CPXF_DEADONLY = 0x10,
   CPXF_EXACT = 0x20,
   CPXF_SETTARGET = 0x40,
   CPXF_SETMASTER = 0x80,
   CPXF_SETTRACER = 0x100,
   CPXF_FARTHEST = 0x200,
   CPXF_CLOSEST = 0x400,
   CPXF_SETONPTR = 0x800,
   CPXF_CHECKSIGHT = 0x1000
};

enum {
	SECPART_FLOOR,
	SECPART_CEILING,
	SECPART_3D
};

enum {
   GAMESTATE_UNSPECIFIED = -1,
   GAMESTATE_WAITFORPLAYERS,
   GAMESTATE_COUNTDOWN,
   GAMESTATE_INPROGRESS,
   GAMESTATE_INRESULTSEQUENCE
};

enum {
   GAMEEVENT_PLAYERFRAGS,
   GAMEEVENT_MEDALS,
   GAMEEVENT_CAPTURES,
   GAMEEVENT_TOUCHES,
   GAMEEVENT_RETURNS,
   GAMEEVENT_ROUND_STARTS,
   GAMEEVENT_ROUND_ENDS,
   GAMEEVENT_ROUND_ABORTED,
   GAMEEVENT_CHAT,
   GAMEEVENT_PLAYERCONNECT,
   GAMEEVENT_ACTOR_SPAWNED,
   GAMEEVENT_ACTOR_DAMAGED,
   GAMEEVENT_ACTOR_DAMAGED_PREMOD,
   GAMEEVENT_DOMINATION_CONTROL,
   GAMEEVENT_DOMINATION_POINT,
   GAMEEVENT_PLAYERLEAVESSERVER,
   GAMEEVENT_LEVEL_INIT,
   GAMEEVENT_JOINQUEUECHANGED,
   GAMEEVENT_DOMINATION_PRECONTROL,
   GAMEEVENT_DOMINATION_CONTEST
};

enum : bool {
   DB_ORDER_ASC = false,
   DB_ORDER_DESC = true
};

enum {
   TM_SECOND,
   TM_MINUTE,
   TM_HOUR,
   TM_DAY,
   TM_MONTH,
   TM_YEAR,
   TM_WEEKDAY
};

enum {
   SCORE_FRAGS,
   SCORE_POINTS,
   SCORE_WINS,
   SCORE_DEATHS,
   SCORE_KILLS,
   SCORE_ITEMS,
   SCORE_SECRETS,
   SCORE_SPREAD,
   SCORE_RANK
};

enum {
   MAPROTATION_NAME,
   MAPROTATION_LUMPNAME,
   MAPROTATION_USED,
   MAPROTATION_MINPLAYERS,
   MAPROTATION_MAXPLAYERS
};

enum {
   MAPPOSITION_CURRENT,
   MAPPOSITION_NEXT
};

enum {
   LEAVEREASON_LEFT,
   LEAVEREASON_KICKED,
   LEAVEREASON_ERROR,
   LEAVEREASON_TIMEOUT,
   LEAVEREASON_RECONNECT
};

enum {
   PLAYERSKIN_USERINFO,
   PLAYERSKIN_WEAPON,
   PLAYERSKIN_ACS,
   PLAYERSKIN_VISIBLE
};

enum {
   POINTINFO_NAME,
   POINTINFO_OWNER,
   POINTINFO_DISABLED
};

enum {
   AAPTR_DAMAGE_SOURCE    = 0x10000000,
   AAPTR_DAMAGE_INFLICTOR = 0x40000000,
   AAPTR_DAMAGE_TARGET    = 0x80000000
};

enum {
   LUMP_OPEN_FULLPATH = 1
};

enum {
   LUMP_READ_BYTE,
   LUMP_READ_UBYTE,
   LUMP_READ_SHORT,
   LUMP_READ_USHORT,
   LUMP_READ_INT,
   LUMP_READ_FLOAT
};

enum {
   LUMP_INFO_SIZE,
   LUMP_INFO_NAME
};

enum {
   SPROP_TYPE_UNKNOWN,
   SPROP_TYPE_INT,
   SPROP_TYPE_BOOL,
   SPROP_TYPE_FLOAT,
   SPROP_TYPE_STRING
};

enum {
   GAMELIMIT_FRAGS,
   GAMELIMIT_TIME,
   GAMELIMIT_POINTS,
   GAMELIMIT_DUELS,
   GAMELIMIT_WINS,
   GAMELIMIT_WAVES
};

enum {
   POBJ_FLAG_CRUSH = 0x1,
   POBJ_FLAG_HURT_ON_TOUCH = 0x2,
   POBJ_FLAG_NO_CARRY_THINGS = 0x4,
   POBJ_FLAG_NO_ANGLE_CHANGE = 0x8,
   POBJ_FLAG_SIDE_CRUSH = 0x16
};

enum {
   POBJ_FLAGS_CLEAR,
   POBJ_FLAGS_SET,
   POBJ_FLAGS_REPLACE = -1
};

enum {
   POBJ_MOVE_NORMAL,
   POBJ_MOVE_OVERRIDE = 0x1,
   POBJ_MOVE_NOLINK = 0x2,
   POBJ_MOVE_INDROT = 0x4,
   POBJ_MOVE_POANGLE = 0x8,
   POBJ_MOVE_MIRRORED = 0x16,
   POBJ_MOVE_PERPETUAL = 0x32
};

enum { INT_MIN = -INT_MAX - 1 };
enum { INT_MAX = 2147483647 };

// Functions
// --------------------------------------------------------------------------

special

// Action specials
// Tail format: <script-callable>
1:Polyobj_StartLine(int,int,int,int):int:0,
2:Polyobj_RotateLeft(int,int,int):int,
3:Polyobj_RotateRight(int,int,int):int,
4:Polyobj_Move(int,int,int,int):int,
5:Polyobj_ExplicitLine(int,int,int,int,int):int:0,
6:Polyobj_MoveTimes8(int,int,int,int):int,
7:Polyobj_DoorSwing(int,int,int,int):int,
8:Polyobj_DoorSlide(int,int,int,int,int):int,
9:Line_Horizon():int:0,
10:Door_Close(int,int;int):int,
11:Door_Open(int,int;int):int,
12:Door_Raise(int,int,int;int):int,
13:Door_LockedRaise(int,int,int,int;int):int,
14:Door_Animated(int,int,int;int):int,
15:Autosave():int,
16:Transfer_WallLight(int,int):int:0,
17:Thing_Raise(int;int):int,
18:StartConversation(int;int):int,
19:Thing_Stop(int):int,
20:Floor_LowerByValue(int,int,int;int):int,
21:Floor_LowerToLowest(int,int;int):int,
22:Floor_LowerToNearest(int,int;int):int,
23:Floor_RaiseByValue(int,int,int;int,int):int,
24:Floor_RaiseToHighest(int,int;int,int,int):int,
25:Floor_RaiseToNearest(int,int;int,int):int,
26:Stairs_BuildDown(int,int,int,int,int):int,
27:Stairs_BuildUp(int,int,int,int,int):int,
28:Floor_RaiseAndCrush(int,int,int;int):int,
29:Pillar_Build(int,int,int):int,
30:Pillar_Open(int,int,int,int):int,
31:Stairs_BuildDownSync(int,int,int,int):int,
32:Stairs_BuildUpSync(int,int,int,int):int,
33:ForceField():int,
34:ClearForceField(int):int,
35:Floor_RaiseByValueTimes8(int,int,int;int,int):int,
36:Floor_LowerByValueTimes8(int,int,int;int):int,
37:Floor_MoveToValue(int,int,int;int,int):int,
38:Ceiling_Waggle(int,int,int,int,int):int,
39:Teleport_ZombieChanger(int,int):int,
40:Ceiling_LowerByValue(int,int,int;int,int):int,
41:Ceiling_RaiseByValue(int,int,int;int):int,
42:Ceiling_CrushAndRaise(int,int,int;int):int,
43:Ceiling_LowerAndCrush(int,int,int;int):int,
44:Ceiling_CrushStop(int;int):int,
45:Ceiling_CrushRaiseAndStay(int,int,int;int):int,
46:Floor_CrushStop(int):int,
47:Ceiling_MoveToValue(int,int,int;int,int):int,
48:Sector_Attach3dMidTex(int,int,int):int:0,
49:GlassBreak(;int,int):int,
50:ExtraFloor_LightOnly(int,int):int:0,
51:Sector_SetLink(int,int,int,int):int,
52:Scroll_Wall(int,int,int,int,int):int,
53:Line_SetTextureOffset(int,int,int,int,int):int,
54:Sector_ChangeFlags(int,int,int):int,
55:Line_SetBlocking(int,int,int):int,
56:Line_SetTextureScale(int,int,int,int,int):int,
57:Sector_SetPortal(int,int,int,int,int):int:0,
58:Sector_CopyScroller(int,int):int:0,
59:Polyobj_Or_MoveToSpot(int,int,int):int,
60:Plat_PerpetualRaise(int,int,int):int,
61:Plat_Stop(int;int):int,
62:Plat_DownWaitUpStay(int,int,int):int,
63:Plat_DownByValue(int,int,int,int):int,
64:Plat_UpWaitDownStay(int,int,int):int,
65:Plat_UpByValue(int,int,int,int):int,
66:Floor_LowerInstant(int,int,int;int):int,
67:Floor_RaiseInstant(int,int,int;int,int):int,
68:Floor_MoveToValueTimes8(int,int,int,int;int):int,
69:Ceiling_MoveToValueTimes8(int,int,int,int;int):int,
70:Teleport(int;int,int):int,
71:Teleport_NoFog(int;int,int,int):int,
72:ThrustThing(int,int;int,int):int,
73:DamageThing(int;int):int,
74:Teleport_NewMap(int,int;int):int,
75:Teleport_EndGame():int,
76:TeleportOther(int,int,int):int,
77:TeleportGroup(int,int,int,int,int):int,
78:TeleportInSector(int,int,int,int;int):int,
79:Thing_SetConversation(int,int):int,
80:Acs_Execute(int,int;int,int,int):int,
81:Acs_Suspend(int,int):int,
82:Acs_Terminate(int,int):int,
83:Acs_LockedExecute(int,int,int,int,int):int,
84:Acs_ExecuteWithResult(int;int,int,int,int):int,
85:Acs_LockedExecuteDoor(int,int,int,int,int):int,
86:Polyobj_MoveToSpot(int,int,int):int,
87:Polyobj_Stop(int):int,
88:Polyobj_MoveTo(int,int,int,int):int,
89:Polyobj_Or_MoveTo(int,int,int,int):int,
90:Polyobj_Or_RotateLeft(int,int,int):int,
91:Polyobj_Or_RotateRight(int,int,int):int,
92:Polyobj_Or_Move(int,int,int,int):int,
93:Polyobj_Or_MoveTimes8(int,int,int,int):int,
94:Pillar_BuildAndCrush(int,int,int,int;int):int,
95:FloorAndCeiling_LowerByValue(int,int,int):int,
96:FloorAndCeiling_RaiseByValue(int,int,int):int,
97:Ceiling_LowerAndCrushDist(int,int,int;int,int):int,
98:Sector_SetTranslucent(int,int,int;int):int,
99:Floor_RaiseAndCrushDoom(int,int,int;int):int,
100:Scroll_Texture_Left(int;int):int:0,
101:Scroll_Texture_Right(int;int):int:0,
102:Scroll_Texture_Up(int;int):int:0,
103:Scroll_Texture_Down(int;int):int:0,
104:Ceiling_CrushAndRaiseSilentDist(int,int,int,int;int):int,
105:Door_WaitRaise(int,int,int,int;int):int,
106:Door_WaitClose(int,int,int;int):int,
107:Line_SetPortalTarget(int,int):int,
109:Light_ForceLightning(int):int,
110:Light_RaiseByValue(int,int):int,
111:Light_LowerByValue(int,int):int,
112:Light_ChangeToValue(int,int):int,
113:Light_Fade(int,int,int):int,
114:Light_Glow(int,int,int,int):int,
115:Light_Flicker(int,int,int):int,
116:Light_Strobe(int,int,int,int,int):int,
117:Light_Stop(int):int,
118:Plane_Copy(int,int,int,int,int):int:0,
119:Thing_Damage(int,int;int):int,
120:Radius_Quake(int,int,int,int,int):int,
121:Line_SetIdentification(int,int,int,int,int):int:0,
125:Thing_Move(int,int;int):int,
127:Thing_SetSpecial(int,int,int,int,int):int,
128:ThrustThingZ(int,int,int,int):int,
129:UsePuzzleItem():int:0,
130:Thing_Activate(int):int,
131:Thing_Deactivate(int):int,
132:Thing_Remove(int):int,
133:Thing_Destroy(int;int,int):int,
134:Thing_Projectile(int,int,int,int,int):int,
135:Thing_Spawn(int,int,int;int):int,
136:Thing_ProjectileGravity(int,int,int,int,int):int,
137:Thing_SpawnNoFog(int,int,int;int):int,
138:Floor_Waggle(int,int,int,int,int):int,
139:Thing_SpawnFacing(int,int;int,int):int,
140:Sector_ChangeSound(int,int):int,
145:Player_SetTeam(int):int,
150:Line_SetHealth(int,int),
151:Sector_SetHealth(int,int),
152:Team_Score(int,int):int,
153:Team_GivePoints(int,int,int):int,
154:Teleport_NoStop(int,int;int):int,
157:SetGlobalFogParameter(int,int):int,
158:Fs_Excute(int;int,int,int):int,
159:Sector_SetPlaneReflection(int,int,int):int,
160:Sector_Set3dFloor(int,int,int,int,int):int:0,
161:Sector_SetContents(int,int,int):int:0,
168:Ceiling_CrushAndRaiseDist(int,int,int;int,int):int,
169:Generic_Crusher2(int,int,int,int,int):int,
170:Sector_SetCeilingScale2(int,int,int):int,
171:Sector_SetFloorScale2(int,int,int):int,
172:Plat_UpNearestWaitDownStay(int,int,int):int,
173:NoiseAlert(int,int):int,
174:SendToCommunicator(int,int,int,int):int,
175:Thing_ProjectileIntercept(int,int,int,int,int):int,
176:Thing_ChangeTid(int,int):int,
177:Thing_Hate(int,int;int):int,
178:Thing_ProjectileAimed(int,int,int,int;int):int,
179:ChangeSkill(int):int,
180:Thing_SetTranslation(int,int):int,
181:Plane_Align(int,int,int):int:0,
182:Line_Mirror():int:0,
183:Line_AlignCeiling(int,int):int,
184:Line_AlignFloor(int,int):int,
185:Sector_SetRotation(int,int,int):int,
186:Sector_SetCeilingPanning(int,int,int,int,int):int,
187:Sector_SetFloorPanning(int,int,int,int,int):int,
188:Sector_SetCeilingScale(int,int,int,int,int):int,
189:Sector_SetFloorScale(int,int,int,int,int):int,
190:Static_Init(int,int,int,int):int:0,
191:SetPlayerProperty(int,int,int):int,
192:Ceiling_LowerToHighestFloor(int,int;int,int,int):int,
193:Ceiling_LowerInstant(int,int,int;int,int):int,
194:Ceiling_RaiseInstant(int,int,int;int):int,
195:Ceiling_CrushRaiseAndStayA(int,int,int,int;int):int,
196:Ceiling_CrushAndRaiseA(int,int,int,int;int):int,
197:Ceiling_CrushAndRaiseSilentA(int,int,int,int;int):int,
198:Ceiling_RaiseByValueTimes8(int,int,int;int):int,
199:Ceiling_LowerByValueTimes8(int,int,int;int,int):int,
200:Generic_Floor(int,int,int,int,int):int,
201:Generic_Ceiling(int,int,int,int,int):int,
202:Generic_Door(int,int,int,int,int):int,
203:Generic_Lift(int,int,int,int,int):int,
204:Generic_Stairs(int,int,int,int,int):int,
205:Generic_Crusher(int,int,int,int,int):int,
206:Plat_DownWaitUpStayLip(int,int,int,int;int):int,
207:Plat_PerpetualRaiseLip(int,int,int,int):int,
208:TranslucentLine(int,int;int):int,
209:Transfer_Heights(int,int):int:0,
210:Transfer_FloorLight(int):int:0,
211:Transfer_CeilingLight(int):int:0,
212:Sector_SetColor(int,int,int,int;int):int,
213:Sector_SetFade(int,int,int,int):int,
214:Sector_SetDamage(int,int,int;int,int):int,
215:Teleport_Line(int,int;int):int,
216:Sector_SetGravity(int,int,int):int,
217:Stairs_BuildUpDoom(int,int,int,int,int):int,
218:Sector_SetWind(int,int,int,int):int,
219:Sector_SetFriction(int,int):int,
220:Sector_SetCurrent(int,int,int,int):int,
221:Scroll_Texture_Both(int,int,int,int,int):int,
222:Scroll_Texture_Model(int,int):int:0,
223:Scroll_Floor(int,int,int,int):int,
224:Scroll_Ceiling(int,int,int,int):int,
225:Scroll_Texture_Offsets(int):int:0,
226:Acs_ExecuteAlways(int,int;int,int,int):int,
227:PointPush_SetForce(int,int,int,int):int:0,
228:Plat_RaiseAndStayTx0(int,int;int):int,
229:Thing_SetGoal(int,int,int;int):int,
230:Plat_UpByValueStayTx(int,int,int):int,
231:Plat_ToggleCeiling(int):int,
232:Light_StrobeDoom(int,int,int):int,
233:Light_MinNeighbor(int):int,
234:Light_MaxNeighbor(int):int,
235:Floor_TransferTrigger(int):int,
236:Floor_TransferNumeric(int):int,
237:ChangeCamera(int,int,int):int,
238:Floor_RaiseToLowestCeiling(int,int;int,int,int):int,
239:Floor_RaiseByValueTxTy(int,int,int):int,
240:Floor_RaiseByTexture(int,int;int,int):int,
241:Floor_LowerToLowestTxTy(int,int):int,
242:Floor_LowerToHighest(int,int,int;int):int,
243:Exit_Normal(int):int,
244:Exit_Secret(int):int,
245:Elevator_RaiseToNearest(int,int):int,
246:Elevator_MoveToFloor(int,int):int,
247:Elevator_LowerToNearest(int,int):int,
248:HealThing(int;int):int,
249:Door_CloseWaitOpen(int,int,int;int):int,
250:Floor_Donut(int,int,int):int,
251:FloorAndCeiling_LowerRaise(int,int,int;int):int,
252:Ceiling_RaiseToNearest(int,int;int):int,
253:Ceiling_LowerToLowest(int,int;int,int):int,
254:Ceiling_LowerToFloor(int,int;int,int,int):int,
255:Ceiling_CrushRaiseAndStaySilA(int,int,int,int;int):int,
256:Floor_LowerToHighestEE(int,int;int):int,
257:Floor_RaiseToLowest(int,int;int):int,
258:Floor_LowerToLowestCeiling(int,int;int):int,
259:Floor_RaiseToCeiling(int,int;int,int,int):int,
260:Floor_ToCeilingInstant(int;int,int,int):int,
261:Floor_LowerByTexture(int,int;int):int,
262:Ceiling_RaiseToHighest(int,int;int):int,
263:Ceiling_ToHighestInstant(int;int,int):int,
264:Ceiling_LowerToNearest(int,int;int,int):int,
265:Ceiling_RaiseToLowest(int,int;int):int,
266:Ceiling_RaiseToHighestFloor(int,int;int):int,
267:Ceiling_ToFloorInstant(int;int,int,int):int,
268:Ceiling_RaiseByTexture(int,int;int):int,
269:Ceiling_LowerByTexture(int,int;int,int):int,
270:Stairs_BuildDownDoom(int,int,int,int,int):int,
271:Stairs_BuildUpDoomSync(int,int,int,int):int,
272:Stairs_BuildDownDoomSync(int,int,int,int):int,
273:Stairs_BuildUpDoomCrush(int,int,int,int,int):int,
274:Door_AnimatedClose(int,int):int,
275:Floor_Stop(int):int,
276:Ceiling_Stop(int):int,
277:Sector_SetFloorGlow(int,int,int,int,int):int,
278:Sector_SetCeilingGlow(int,int,int,int,int):int,
279:Floor_MoveToValueAndCrush(int,int,int,int;int):int,
280:Ceiling_MoveToValueAndCrush(int,int,int,int;int):int,
281:Line_SetAutomapFlags(int,int,int):int,
282:Line_SetAutomapStyle(int,int):int,
283:Polyobj_StopSound(int):int,

//Eternity
300:Portal_Define(int,int,int,int,int):int:0,
301:Line_QuickPortal(int):int:0,

// Extension functions
-1:GetLineUdmfInt(int,str):int,
-2:GetLineUdmfFixed(int,str):fixed,
-3:GetThingUdmfInt(int,str):int,
-4:GetThingUdmfFixed(int,str):fixed,
-5:GetSectorUdmfInt(int,str):int,
-6:GetSectorUdmfFixed(int,str):fixed,
-7:GetSideUdmfInt(int,bool,str):int,
-8:GetSideUdmfFixed(int,bool,str):fixed,
-9:GetActorVelX(int):fixed,
-10:GetActorVelY(int):fixed,
-11:GetActorVelZ(int):fixed,
-12:SetActivator(int;int):bool,
-13:SetActivatorToTarget(int):bool,
-14:GetActorViewHeight(int):fixed,
-15:GetChar(str,int):int,
-16:GetAirSupply(int):int,
-17:SetAirSupply(int,int):bool,
-18:SetSkyScrollSpeed(int,fixed):void,
-19:GetArmorType(str,int):int,
-20:SpawnSpotForced(str,int;int,int):int,
-21:SpawnSpotFacingForced(str,int;int):int,
-22:CheckActorProperty(int,int,raw):bool,
-23:SetActorVelocity(int,fixed,fixed,fixed,bool,bool):bool,
-24:SetUserVariable(int,str,raw):void,
-25:GetUserVariable(int,str):int,
-26:Radius_Quake2(int,int,int,int,int,str):void,
-27:CheckActorClass(int,str):bool,
-28:SetUserArray(int,str,int,raw):void,
-29:GetUserArray(int,str,int):int,
-30:SoundSequenceOnActor(int,str):void,
-31:SoundSequenceOnSector(int,str,int):void,
-32:SoundSequenceOnPolyobj(int,str):void,
-33:GetPolyobjX(int):fixed,
-34:GetPolyobjY(int):fixed,
-35:CheckSight(int,int,int):bool,
-36:SpawnForced(str,fixed,fixed,fixed;int,int):int,
-37:AnnouncerSound(str,int):void,
-38:SetPointer(int,int;int,int):bool,
-39:Acs_NamedExecute(str,int;raw,raw,raw):bool,
-40:Acs_NamedSuspend(str,int):bool,
-41:Acs_NamedTerminate(str,int):bool,
-42:Acs_NamedLockedExecute(str,int,raw,raw,raw):bool,
-43:Acs_NamedLockedExecuteDoor(str,int,raw,raw,raw):bool,
-44:Acs_NamedExecuteWithResult(str;raw,raw,raw,raw):int,
-45:Acs_NamedExecuteAlways(str,int;raw,raw,raw):bool,
-46:UniqueTid(;int,int):int,
-47:IsTidUsed(int):bool,
-48:Sqrt(int):int,
-49:FixedSqrt(fixed):fixed,
-50:VectorLength(raw,raw):raw,
-51:SetHudClipRect(int,int,int,int;int,bool):void,
-52:SetHudWrapWidth(int):void,
-53:SetCVar(str,int):bool,
-54:GetUserCVar(int,str):int,
-55:SetUserCVar(int,str,int):bool,
-56:GetCVarString(str):str,
-57:SetCVarString(str,str):bool,
-58:GetUserCVarString(int,str):str,
-59:SetUserCVarString(int,str,str):bool,
-60:LineAttack(int,fixed,fixed,int;str,str,fixed,int,int):void,
-61:PlaySound(int,str;int,fixed,bool,fixed,bool):void,
-62:StopSound(int;int):void,
-63:Strcmp(str,str;int):int,
-64:Stricmp(str,str;int):int,
-64:Strcasecmp(str,str;int):int,
-65:StrLeft(str,int):str,
-66:StrRight(str,int):str,
-67:StrMid(str,int,int):str,
-68:GetActorClass(int):str,
-69:GetWeapon():str,
-70:SoundVolume(int,int,fixed):void,
-71:PlayActorSound(int,int;int,fixed,bool,fixed):void,
-72:SpawnDecal(int,str;int,fixed,fixed,fixed):int,
-73:CheckFont(str):bool,
-74:DropItem(int,str;int,int):int,
-75:CheckFlag(int,str):bool,
-76:SetLineActivation(int,int;int):void,
-77:GetLineActivation(int):int,
-78:GetActorPowerupTics(int,str):int,
-79:ChangeActorAngle(int,fixed;bool):void,
-80:ChangeActorPitch(int,fixed;bool):void,
-81:GetArmorInfo(int):int,
-82:DropInventory(int,str):void,
-83:PickActor(int,fixed,fixed,fixed,int;int,int,bool):bool,
-84:IsPointerEqual(int,int;int,int):bool,
-85:CanRaiseActor(int):bool,
-86:SetActorTeleFog(int,str,str):void,
-87:SwapActorTeleFog(int):int,
-88:SetActorRoll(int,fixed):void,
-89:ChangeActorRoll(int,fixed;bool):void,
-90:GetActorRoll(int):fixed,
-91:QuakeEx(int,int,int,int,int,int,int,str;int,fixed,fixed,fixed,int,
   int,fixed,fixed):bool,
-92:Warp(int,fixed,fixed,fixed,fixed,int;str,bool,fixed,fixed,fixed):bool,
-93:GetMaxInventory(int,str):int,
-94:SetSectorDamage(int,int;str,int,int):void,
-95:SetSectorTerrain(int,int,str):void,
-96:SpawnParticle(int;bool,int,int,fixed,fixed,fixed,fixed,fixed,fixed,fixed,
   fixed,fixed,int,int,int):void,
-97:SetMusicVolume(fixed):void,
-98:CheckProximity(str,str,fixed;int,int,int):bool,
-99:CheckActorState(int,str;bool):bool,

// Zandronum.
-100:ResetMap():bool,
-101:PlayerIsSpectator(int):bool,
-102:ConsolePlayerNumber():int,
-103:GetTeamProperty(int,int):int,
-104:GetPlayerLivesLeft(int):int,
-105:SetPlayerLivesLeft(int,int):bool,
-106:KickFromGame(int,str):bool,
-107:GetGamemodeState():int,
-108:SetDBEntry(str,str,int):void,
-109:GetDBEntry(str,str):int,
-110:SetDBEntryString(str,str,str):void,
-111:GetDBEntryString(str,str):str,
-112:IncrementDBEntry(str,str,int):void,
-113:PlayerIsLoggedIn(int):bool,
-114:GetPlayerAccountName(int):str,
-115:SortDBEntries(str,int,int,bool):int,
-116:CountDBResults(int):int,
-117:FreeDBResults(int):void,
-118:GetDBResultKeyString(int,int):str,
-119:GetDBResultValueString(int,int):str,
-120:GetDBResultValue(int,int):int,
-121:GetDBEntryRank(str,str,bool):int,
-122:RequestScriptPuke(int;int,int,int,int):int,
-123:BeginDBTransaction():void,
-124:EndDBTransaction():void,
-125:GetDBEntries(str):int,
-126:NamedRequestScriptPuke(str;int,int,int,int):int,
-127:SystemTime():int,
-128:GetTimeProperty(int,int;bool):int,
-129:Strftime(int,str;bool):str,
-130:SetDeadSpectator(int,bool):bool,
-131:SetActivatorToPlayer(int):bool,
-132:SetCurrentGamemode(str):int,
-133:GetCurrentGamemode():str,
-134:SetGamemodeLimit(int, int):int,
-135:SetPlayerClass(int, str, bool):int,
-136:SetPlayerChasecam(int, bool):int,
-137:GetPlayerChasecam(int):bool,
-138:SetPlayerScore(int, int, int):int,
-139:GetPlayerScore(int, int):int,
-140:InDemoMode():bool,
-144:ExecuteClientScript(int, int; int, int, int, int):int,
-145:NamedExecuteClientScript(str, int; int, int, int, int):int,
-146:SendNetworkString(int, str):int,
-147:NamedSendNetworkString(str, str):int,
-148:GetChatMessage(int, int):str,
-149:GetMapRotationSize():int,
-150:GetMapRotationInfo(int, int):raw,
-151:GetMapPosition(int):int,
-152:GetEventResult():int,
-153:GetActorSectorLocation(int, bool):str,
-154:ChangeTeamScore(int, int, int; bool):int,
-155:SetGameplaySetting(str, int):bool,
-156:SetCustomPlayerValue(str, int, raw):int,
-157:GetCustomPlayerValue(str, int):raw,
-158:ResetCustomDataToDefault(str, int):int,
-159:LumpOpen(str, int; int):int,
-160:LumpRead(int, int; int):raw,
-161:LumpReadString(int, int; int):str,
// LumpReadArray is a set of 4 functions, whose definition is
// built-in to ACC. So 162-165 are used up function indices.
-166:LumpGetInfo(int, int):raw,
-167:LumpClose(int):void,
-168:AddBot(str, int):int,
-169:RemoveBot(str):int,
-170:OpenMenu(str):int,
-171:CloseMenu():int,
-172:BanFromGame(int, int; str):int,
-173:GetPlayerStatus(int):int,
-174:SetPlayerWeaponZoomFactor(int, fixed; int):int,
-175:SetPlayerSkin(int, str; bool):int,
-176:GetPlayerSkin(int, int):str,
-177:GetPlayerCountry(int, int):str,
-178:SetNextMapPosition(int, bool):int,
-179:GivePlayerMedal(int, str, bool):int,
-180:GetPlayerJoinQueuePosition(int):int,
-181:SkipJoinQueue(int):int,
-182:GetControlPointInfo(raw, raw):raw,
-183:SetControlPointInfo(raw, raw, raw):raw,
-184:GetSkinProperty(raw, raw; raw, raw):raw,
-185:IsPlayerContestingControlPoint(raw, raw):raw,


// ZDoom/GZDoom.
-200:CheckClass(str):bool,
-201:DamageActor(int,int,int,int,int,str):int,
-202:SetActorFlag(int,str,bool):int,
-203:SetTranslation(int,str):void,
-204:GetActorFloorTexture(int):str,
-205:GetActorFloorTerrain(int):str,
-206:StrArg(str):int,
-207:ZDoom_Floor(fixed):fixed,
-208:ZDoom_Round(fixed):fixed,
-209:ZDoom_Ceil(fixed):fixed,
// TODO: This function declaration looks ugly. Make it pretty.
-210:ScriptCall(str,str;
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,raw,
   raw,raw,raw):int,
-211:StartSlideShow(str),
-212:GetSectorHealth(int,int):int,
-213:GetLineHealth(int):int,
-214:SetSubtitleNumber(int,int),

// Eternity.
-300:GetLineX(int,fixed,fixed):fixed,
-301:GetLineY(int,fixed,fixed):fixed,
-302:SetAirFriction(fixed):void,

// GZDoom.
-400:SetSectorGlow(int,int,int,int,int,int):void,
-401:SetFogDensity(int,int):void,

// K8Vavoom.
-800:Polyobj_MoveEx(int, int, int, int, int, int, int):bool,
-801:Polyobj_MoveToEx(int, int, int, int, int, int):bool,
-802:Polyobj_MoveToSpotEx(int, int, int, int):bool,
-803:GetPolyobjZ(int):fixed,
-804:Polyobj_GetFlagsEx(int):int,
-805:Polyobj_SetFlagsEx(int, int, int):int,
-806:Polyobj_IsBusy(int):int,
-807:Polyobj_GetAngle(int):fixed,
-808:Polyobj_MoveRotateEx(int, int, int, int, int, int, fixed, int):bool,
-809:Polyobj_MoveToRotateEx(int, int, int, int, int, fixed, int):bool,
-810:Polyobj_MoveToSpotRotateEx(int, int, int, fixed, int):bool,
-811:Polyobj_RotateEx(int, int, fixed, int):bool,

// ZDaemon.
-19620:GetTeamScore(int):int,
-19621:SetTeamScore(int,int):void,

// End.
-100000:__EndOfList__(10);

}
