diff --git a/Build/Compilers/BCC/bcc.cfg b/Build/Compilers/BCC/bcc.cfg new file mode 100644 index 0000000..b70c6b1 --- /dev/null +++ b/Build/Compilers/BCC/bcc.cfg @@ -0,0 +1,15 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + // The "interface" setting defines what interal interface to use for processing and error feedback + // All others are the required files (the setting names do not matter) + bcc + { + interface = "AccCompiler"; + program = "bcc.exe"; + zcommon = "zcommon.acs"; + std = "std.acs"; + } +} diff --git a/Build/Compilers/BCC/bcc.exe b/Build/Compilers/BCC/bcc.exe new file mode 100644 index 0000000..2a3acac Binary files /dev/null and b/Build/Compilers/BCC/bcc.exe differ diff --git a/Build/Compilers/BCC/std.acs b/Build/Compilers/BCC/std.acs new file mode 100644 index 0000000..17f18b1 --- /dev/null +++ b/Build/Compilers/BCC/std.acs @@ -0,0 +1,1422 @@ +/* + + The following declarations are based on the declarations found in the + zdefs.acs and zspecial.acs files, both shipped with the acc compiler. + +*/ + +region std { + +enum ON = 1; +enum OFF = 0; +enum YES = 1; +enum NO = 0; + +enum LINE_FRONT = 0; +enum LINE_BACK = 1; + +enum SIDE_FRONT = 0; +enum SIDE_BACK = 1; + +enum TEXTURE_TOP = 0; +enum TEXTURE_MIDDLE = 1; +enum TEXTURE_BOTTOM = 2; + +enum TEXFLAG_TOP = 1; +enum TEXFLAG_MIDDLE = 2; +enum TEXFLAG_BOTTOM = 4; +enum TEXFLAG_ADDOFFSET = 8; + +enum { + GAME_SINGLE_PLAYER, + GAME_NET_COOPERATIVE, + GAME_NET_DEATHMATCH, + GAME_TITLE_MAP +}; + +enum CLASS_FIGHTER = 0; +enum CLASS_CLERIC = 1; +enum CLASS_MAGE = 2; + +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 = 0; +enum CARRY = 1; +enum SCROLL_AND_CARRY = 2; + +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 = 0; +enum MOVIE_PLAYED_NOVIDEO = 1; +enum MOVIE_PLAYED_ABORTED = 2; +enum 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 +}; + +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; +enum BT_USE = 0x2; +enum BT_JUMP = 0x4; +enum BT_CROUCH = 0x8; +enum BT_TURN180 = 0x10; +enum BT_ALTATTACK = 0x20; +enum BT_RELOAD = 0x40; +enum BT_ZOOM = 0x80; +enum BT_SPEED = 0x100; +enum BT_STRAFE = 0x200; +enum BT_MOVERIGHT = 0x400; +enum BT_MOVELEFT = 0x800; +enum BT_BACK = 0x1000; +enum BT_FORWARD = 0x2000; +enum BT_RIGHT = 0x4000; +enum BT_LEFT = 0x8000; +enum BT_LOOKUP = 0x10000; +enum BT_LOOKDOWN = 0x20000; +enum BT_MOVEUP = 0x40000; +enum BT_MOVEDOWN = 0x80000; +enum BT_SHOWSCORES = 0x100000; +enum BT_USER1 = 0x200000; +enum BT_USER2 = 0x400000; +enum BT_USER3 = 0x800000; +enum BT_USER4 = 0x1000000; + +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 +}; + +enum HUDMSG_PLAIN = 0; +enum HUDMSG_FADEOUT = 1; +enum HUDMSG_TYPEON = 2; +enum HUDMSG_FADEINOUT = 3; +enum HUDMSG_LOG = 0x80000000; +enum HUDMSG_COLORSTRING = 0x40000000; +enum HUDMSG_ADDBLEND = 0x20000000; +enum HUDMSG_ALPHA = 0x10000000; +enum HUDMSG_NOWRAP = 0x8000000; +enum HUDMSG_LAYER_OVERHUD = 0x0; +enum HUDMSG_LAYER_UNDERHUD = 0x1000; +enum HUDMSG_LAYER_OVERMAP = 0x2000; +enum HUDMSG_NOTWITH3DVIEW = 0x10000; +enum HUDMSG_NOTWITHFULLMAP = 0x20000; +enum HUDMSG_NOTWITHOVERLAYMAP = 0x40000; + +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 +}; + +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 = 1; +enum NOT_MIDDLE = 2; +enum NOT_TOP = 4; +enum NOT_FLOOR = 8; +enum NOT_CEILING = 16; + +enum DAMAGE_PLAYERS = 1; +enum DAMAGE_NONPLAYERS = 2; +enum DAMAGE_IN_AIR = 4; +enum DAMAGE_SUBCLASSES_PROTECT = 8; + +enum MRF_OLDEFFECTS = 0x0; +enum MRF_ADDSTAMINA = 0x1; +enum MRF_FULLHEALTH = 0x2; +enum MRF_UNDOBYTOMEOFPOWER = 0x4; +enum MRF_UNDOBYCHAOSDEVICE = 0x8; +enum MRF_FAILNOTELEFRAG = 0x10; +enum MRF_FAILNOLAUGH = 0x20; +enum MRF_WHENINVULNERABLE = 0x40; +enum MRF_LOSEACTUALWEAPON = 0x80; +enum MRF_NEWTIDBEHAVIOUR = 0x100; +enum MRF_UNDOBYDEATH = 0x200; +enum MRF_UNDOBYDEATHFORCED = 0x400; +enum MRF_UNDOBYDEATHSAVES = 0x800; + +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; +enum ACTOR_WORLD = 0x1; +enum ACTOR_PLAYER = 0x2; +enum ACTOR_BOT = 0x4; +enum ACTOR_VOODOODOLL = 0x8; +enum ACTOR_MONSTER = 0x10; +enum ACTOR_ALIVE = 0x20; +enum ACTOR_DEAD = 0x40; +enum ACTOR_MISSILE = 0x80; +enum ACTOR_GENERIC = 0x100; + +enum { + SECSEQ_FLOOR = 1, + SECSEQ_CEILING, + SECSEQ_FULLHEIGHT, + SECSEQ_INTERIOR +}; + +enum CHAN_AUTO = 0; +enum CHAN_WEAPON = 1; +enum CHAN_VOICE = 2; +enum CHAN_ITEM = 3; +enum CHAN_BODY = 4; +enum CHAN_LISTENERZ = 0x8; +enum CHAN_MAYBE_LOCAL = 0x10; +enum CHAN_UI = 0x20; +enum CHAN_NOPAUSE = 0x40; + +enum ATTN_NONE = 0; +enum ATTN_NORM = 1.0; +enum ATTN_IDLE = 1.001; +enum 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; +enum SDF_PERMANENT = 0x2; + +enum AAPTR_DEFAULT = 0x0; +enum AAPTR_NULL = 0x1; +enum AAPTR_TARGET = 0x2; +enum AAPTR_MASTER = 0x4; +enum AAPTR_TRACER = 0x8; +enum AAPTR_PLAYER_GETTARGET = 0x10; +enum AAPTR_PLAYER_GETCONVERSATION = 0x20; +enum AAPTR_PLAYER1 = 0x40; +enum AAPTR_PLAYER2 = 0x80; +enum AAPTR_PLAYER3 = 0x100; +enum AAPTR_PLAYER4 = 0x200; +enum AAPTR_PLAYER5 = 0x400; +enum AAPTR_PLAYER6 = 0x800; +enum AAPTR_PLAYER7 = 0x1000; +enum AAPTR_PLAYER8 = 0x2000; +enum AAPTR_FRIENDPLAYER = 0x4000; + +enum PTROP_UNSAFETARGET = 0x1; +enum PTROP_UNSAFEMASTER = 0x2; +enum PTROP_NOSAFEGUARDS = PTROP_UNSAFETARGET | PTROP_UNSAFEMASTER; + +enum { + ARMORINFO_CLASSNAME, + ARMORINFO_SAVEAMOUNT, + ARMORINFO_SAVEPERCENT, + ARMORINFO_MAXABSORB, + ARMORINFO_MAXFULLABSORB, + ARMORINFO_ACTUALSAVEAMOUNT, +}; + +enum SPAC_NONE = 0x0; +enum SPAC_CROSS = 0x1; +enum SPAC_USE = 0x2; +enum SPAC_MCROSS = 0x4; +enum SPAC_IMPACT = 0x8; +enum SPAC_PUSH = 0x10; +enum SPAC_PCROSS = 0x20; +enum SPAC_ANYCROSS = 0x40; +enum SPAC_MUSE = 0x80; +enum SPAC_MPUSH = 0x100; +enum SPAC_USEBACK = 0x200; + +enum TEAM_BLUE = 0; +enum TEAM_RED = 1; +enum NO_TEAM = 2; + +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_COUNDOWN +}; + +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; +enum GKM_CTRL = 0x200; +enum GKM_ALT = 0x400; +enum GKM_LBUTTON = 0x800; +enum GKM_MBUTTON = 0x1000; +enum 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; +enum CHANGELEVEL_RESETINVENTORY = 0x2; +enum CHANGELEVEL_NOMONSTERS = 0x4; +enum CHANGELEVEL_CHANGESKILL = 0x8; +enum CHANGELEVEL_NOINTERMISSION = 0x10; +enum CHANGELEVEL_RESETHEALTH = 0x20; +enum CHANGELEVEL_PRERAISEWEAPON = 0x40; + +enum NO_CHANGE = 32767.0; + +enum SECF_SILENT = 0x1; +enum SECF_NOFALLINGDAMAGE = 0x2; +enum SECF_FLOORDROP = 0x4; +enum SECF_NORESPAWN = 0x8; + +enum BLOCKF_CREATURES = 0x1; +enum BLOCKF_MONSTERS = 0x2; +enum BLOCKF_PLAYERS = 0x4; +enum BLOCKF_FLOATERS = 0x8; +enum BLOCKF_PROJECTILES = 0x10; +enum BLOCKF_EVERYTHING = 0x20; +enum BLOCKF_RAILING = 0x40; +enum BLOCKF_USE = 0x80; +enum BLOCKF_SIGHT = 0x100; + +enum FOGP_DENSITY = 0; +enum FOGP_OUTSIDEDENSITY = 1; +enum FOGP_SKYFOG = 2; + +enum PRINTNAME_LEVELNAME = -1; +enum PRINTNAME_LEVEL = -2; +enum PRINTNAME_SKILL = -3; + +enum CSF_NOFAKEFLOORS = 0x1; +enum CSF_NOBLOCKALL = 0x2; + +enum FHF_NORANDOMPUFFZ = 0x1; + +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 +}; + +enum DB_ORDER_DESC = false; +enum DB_ORDER_ASC = true; + +// Action specials +// Tail format: = , +int Polyobj_StartLine( int, int, int, int ) = 1, 0; +int Polyobj_RotateLeft( int, int, int ) = 2, 1; +int Polyobj_RotateRight( int, int, int ) = 3, 1; +int Polyobj_Move( int, int, int, int ) = 4, 1; +int Polyobj_ExplicitLine( int, int, int, int, int ) = 5, 0; +int Polyobj_MoveTimes8( int, int, int, int ) = 6, 1; +int Polyobj_DoorSwing( int, int, int, int ) = 7, 1; +int Polyobj_DoorSlide( int, int, int, int, int ) = 8, 1; +int Line_Horizon() = 9, 0; +int Door_Close( int, int, int = 0 ) = 10, 1; +int Door_Open( int, int, int = 0 ) = 11, 1; +int Door_Raise( int, int, int, int = 0 ) = 12, 1; +int Door_LockedRaise( int, int, int, int, int = 0 ) = 13, 1; +int Door_Animated( int, int, int, int = 0 ) = 14, 1; +int Autosave() = 15, 1; +int Transfer_WallLight( int, int ) = 16, 0; +int Thing_Raise( int ) = 17, 1; +int StartConversation( int, int = 0 ) = 18, 1; +int Thing_Stop( int ) = 19, 1; +int Floor_LowerByValue( int, int, int ) = 20, 1; +int Floor_LowerToLowest( int, int ) = 21, 1; +int Floor_LowerToNearest( int, int ) = 22, 1; +int Floor_RaiseByValue( int, int, int ) = 23, 1; +int Floor_RaiseToHighest( int, int ) = 24, 1; +int Floor_RaiseToNearest( int, int ) = 25, 1; +int Stairs_BuildDown( int, int, int, int, int ) = 26, 1; +int Stairs_BuildUp( int, int, int, int, int ) = 27, 1; +int Floor_RaiseAndCrush( int, int, int, int = 0 ) = 28, 1; +int Pillar_Build( int, int, int ) = 29, 1; +int Pillar_Open( int, int, int, int ) = 30, 1; +int Stairs_BuildDownSync( int, int, int, int ) = 31, 1; +int Stairs_BuildUpSync( int, int, int, int ) = 32, 1; +int ForceField() = 33, 1; +int ClearForceField( int ) = 34, 1; +int Floor_RaiseByValueTimes8( int, int, int ) = 35, 1; +int Floor_LowerByValueTimes8( int, int, int ) = 36, 1; +int Floor_MoveToValue( int, int, int, int = 0 ) = 37, 1; +int Ceiling_Waggle( int, int, int, int, int ) = 38, 1; +int Teleport_ZombieChanger( int, int ) = 39, 1; +int Ceiling_LowerByValue( int, int, int ) = 40, 1; +int Ceiling_RaiseByValue( int, int, int ) = 41, 1; +int Ceiling_CrushAndRaise( int, int, int, int = 0 ) = 42, 1; +int Ceiling_LowerAndCrush( int, int, int, int = 0 ) = 43, 1; +int Ceiling_CrushStop( int ) = 44, 1; +int Ceiling_CrushRaiseAndStay( int, int, int, int = 0 ) = 45, 1; +int Floor_CrushStop( int ) = 46, 1; +int Ceiling_MoveToValue( int, int, int, int = 0 ) = 47, 1; +int Sector_Attach3dMidTex( int, int, int ) = 48, 0; +int GlassBreak( int = 0 ) = 49, 1; +int ExtraFloor_LightOnly( int, int ) = 50, 0; +int Sector_SetLink( int, int, int, int ) = 51, 1; +int Scroll_Wall( int, int, int, int, int ) = 52, 1; +int Line_SetTextureOffset( int, int, int, int, int ) = 53, 1; +int Sector_ChangeFlags( int, int, int ) = 54, 1; +int Line_SetBlocking( int, int, int ) = 55, 1; +int Line_SetTextureScale( int, int, int, int, int ) = 56, 1; +int Sector_SetPortal( int, int, int, int, int ) = 57, 0; +int Sector_CopyScroller( int, int ) = 58, 0; +int Polyobj_Or_MoveToSpot( int, int, int ) = 59, 1; +int Plat_PerpetualRaise( int, int, int ) = 60, 1; +int Plat_Stop( int ) = 61, 1; +int Plat_DownWaitUpStay( int, int, int ) = 62, 1; +int Plat_DownByValue( int, int, int, int ) = 63, 1; +int Plat_UpWaitDownStay( int, int, int ) = 64, 1; +int Plat_UpByValue( int, int, int, int ) = 65, 1; +int Floor_LowerInstant( int, int, int ) = 66, 1; +int Floor_RaiseInstant( int, int, int ) = 67, 1; +int Floor_MoveToValueTimes8( int, int, int, int ) = 68, 1; +int Ceiling_MoveToValueTimes8( int, int, int, int ) = 69, 1; +int Teleport( int, int = 0, int = 0 ) = 70, 1; +int Teleport_NoFog( int, int = 0, int = 0, int = 0 ) = 71, 1; +int ThrustThing( int, int, int = 0, int = 0 ) = 72, 1; +int DamageThing( int, int = 0 ) = 73, 1; +int Teleport_NewMap( int, int, int = 0 ) = 74, 1; +int Teleport_EndGame() = 75, 1; +int TeleportOther( int, int, int ) = 76, 1; +int TeleportGroup( int, int, int, int, int ) = 77, 1; +int TeleportInSector( int, int, int, int, int = 0 ) = 78, 1; +int Thing_SetConversation( int, int ) = 79, 1; +int Acs_Execute( int, int, int = 0, int = 0, int = 0 ) = 80, 1; +int Acs_Suspend( int, int ) = 81, 1; +int Acs_Terminate( int, int ) = 82, 1; +int Acs_LockedExecute( int, int, int, int, int ) = 83, 1; +int Acs_ExecuteWithResult( int, int = 0, int = 0, int = 0 ) = 84, 1; +int Acs_LockedExecuteDoor( int, int, int, int, int ) = 85, 1; +int Polyobj_MoveToSpot( int, int, int ) = 86, 1; +int Polyobj_Stop( int ) = 87, 1; +int Polyobj_MoveTo( int, int, int, int ) = 88, 1; +int Polyobj_Or_MoveTo( int, int, int, int ) = 89, 1; +int Polyobj_Or_RotateLeft( int, int, int ) = 90, 1; +int Polyobj_Or_RotateRight( int, int, int ) = 91, 1; +int Polyobj_Or_Move( int, int, int, int ) = 92, 1; +int Polyobj_Or_MoveTimes8( int, int, int, int ) = 93, 1; +int Pillar_BuildAndCrush( int, int, int, int, int = 0 ) = 94, 1; +int FloorAndCeiling_LowerByValue( int, int, int ) = 95, 1; +int FloorAndCeiling_RaiseByValue( int, int, int ) = 96, 1; +int Ceiling_LowerAndCrushDist( int, int, int, int = 0, int = 0 ) = 97, 1; +int Sector_SetTranslucent( int, int, int, int ) = 98, 1; +int Floor_RaiseAndCrushDoom( int, int, int, int = 0 ) = 99, 1; +int Scroll_Texture_Left( int, int = 0 ) = 100, 0; +int Scroll_Texture_Right( int, int = 0 ) = 101, 0; +int Scroll_Texture_Up( int, int = 0 ) = 102, 0; +int Scroll_Texture_Down( int, int = 0 ) = 103, 0; +int Light_ForceLightning( int ) = 109, 1; +int Light_RaiseByValue( int, int ) = 110, 1; +int Light_LowerByValue( int, int ) = 111, 1; +int Light_ChangeToValue( int, int ) = 112, 1; +int Light_Fade( int, int, int ) = 113, 1; +int Light_Glow( int, int, int, int ) = 114, 1; +int Light_Flicker( int, int, int ) = 115, 1; +int Light_Strobe( int, int, int, int, int ) = 116, 1; +int Light_Stop( int ) = 117, 1; +int Plane_Copy( int, int, int, int, int ) = 118, 0; +int Thing_Damage( int, int, int = 0 ) = 119, 1; +int Radius_Quake( int, int, int, int, int ) = 120, 1; +int Line_SetIdentification( int, int, int, int, int ) = 121, 0; +int Thing_Move( int, int, int = 0 ) = 125, 1; +int Thing_SetSpecial( int, int, int, int, int ) = 127, 1; +int ThrustThingZ( int, int, int, int ) = 128, 1; +int UsePuzzleItem() = 129, 0; +int Thing_Activate( int ) = 130, 1; +int Thing_Deactivate( int ) = 131, 1; +int Thing_Remove( int ) = 132, 1; +int Thing_Destroy( int, int = 0 ) = 133, 1; +int Thing_Projectile( int, int, int, int, int ) = 134, 1; +int Thing_Spawn( int, int, int, int = 0 ) = 135, 1; +int Thing_ProjectileGravity( int, int, int, int, int ) = 136, 1; +int Thing_SpawnNoFog( int, int, int, int = 0 ) = 137, 1; +int Floor_Waggle( int, int, int, int, int ) = 138, 1; +int Thing_SpawnFacing( int, int, int = 0, int = 0 ) = 139, 1; +int Sector_ChangeSound( int, int ) = 140, 1; +int Player_SetTeam( int ) = 145, 1; +int Team_Score( int, int ) = 152, 1; +int Team_GivePoints( int, int, int ) = 153, 1; +int Teleport_NoStop( int, int, int = 0 ) = 154, 1; +int SetGlobalFogParameter( int, int ) = 157, 1; +int Fs_Excute( int, int = 0, int = 0, int = 0 ) = 158, 1; +int Sector_SetPlaneReflection( int, int, int ) = 159, 1; +int Sector_Set3dFloor( int, int, int, int, int ) = 160, 0; +int Sector_SetContents( int, int, int ) = 161, 0; +int Ceiling_CrushAndRaiseDist( int, int, int, int, int = 0 ) = 168, 1; +int Generic_Crusher2( int, int, int, int, int ) = 169, 1; +int Sector_SetCeilingScale2( int, int, int ) = 170, 1; +int Sector_SetFloorScale2( int, int, int ) = 171, 1; +int Plat_UpNearestWaitDownStay( int, int, int ) = 172, 1; +int NoiseAlert( int, int ) = 173, 1; +int SendToCommunicator( int, int, int, int ) = 174, 1; +int Thing_ProjectileIntercept( int, int, int, int, int ) = 175, 1; +int Thing_ChangeTid( int, int ) = 176, 1; +int Thing_Hate( int, int, int = 0 ) = 177, 1; +int Thing_ProjectileAimed( int, int, int, int, int = 0 ) = 178, 1; +int ChangeSkill( int ) = 179, 1; +int Thing_SetTranslation( int, int ) = 180, 1; +int Plane_Align( int, int, int ) = 181, 0; +int Line_Mirror() = 182, 0; +int Line_AlignCeiling( int, int ) = 183, 1; +int Line_AlignFloor( int, int ) = 184, 1; +int Sector_SetRotation( int, int, int ) = 185, 1; +int Sector_SetCeilingPanning( int, int, int, int, int ) = 186, 1; +int Sector_SetFloorPanning( int, int, int, int, int ) = 187, 1; +int Sector_SetCeilingScale( int, int, int, int, int ) = 188, 1; +int Sector_SetFloorScale( int, int, int, int, int ) = 189, 1; +int Static_Init( int, int, int, int ) = 190, 0; +int SetPlayerProperty( int, int, int ) = 191, 1; +int Ceiling_LowerToHighestFloor( int, int ) = 192, 1; +int Ceiling_LowerInstant( int, int, int ) = 193, 1; +int Ceiling_RaiseInstant( int, int, int ) = 194, 1; +int Ceiling_CrushRaiseAndStayA( int, int, int, int, int = 0 ) = 195, 1; +int Ceiling_CrushAndRaiseA( int, int, int, int, int = 0 ) = 196, 1; +int Ceiling_CrushAndRaiseSilentA( int, int, int, int, int = 0 ) = 197, 1; +int Ceiling_RaiseByValueTimes8( int, int, int ) = 198, 1; +int Ceiling_LowerByValueTImes8( int, int, int ) = 199, 1; +int Generic_Floor( int, int, int, int, int ) = 200, 1; +int Generic_Ceiling( int, int, int, int, int ) = 201, 1; +int Generic_Door( int, int, int, int, int ) = 202, 1; +int Generic_Lift( int, int, int, int, int ) = 203, 1; +int Generic_Stairs( int, int, int, int, int ) = 204, 1; +int Generic_Crusher( int, int, int, int, int ) = 205, 1; +int Plat_DownWaitUpStayLip( int, int, int, int, int = 0 ) = 206, 1; +int Plat_PerpetualRaiseLip( int, int, int, int ) = 207, 1; +int TranslucentLine( int, int, int = 0 ) = 208, 1; +int Transfer_Heights( int, int ) = 209, 0; +int Transfer_FloorLight( int ) = 210, 0; +int Transfer_CeilingLight( int ) = 211, 0; +int Sector_SetColor( int, int, int, int, int = 0 ) = 212, 1; +int Sector_SetFade( int, int, int, int ) = 213, 1; +int Sector_SetDamage( int, int, int ) = 214, 1; +int Teleport_Line( int, int ) = 215, 1; +int Sector_SetGravity( int, int, int ) = 216, 1; +int Stairs_BuildUpDoom( int, int, int, int, int ) = 217, 1; +int Sector_SetWind( int, int, int, int ) = 218, 1; +int Sector_SetFriction( int, int ) = 219, 1; +int Sector_SetCurrent( int, int, int, int ) = 220, 1; +int Scroll_Texture_Both( int, int, int, int, int ) = 221, 1; +int Scroll_Texture_Model( int, int ) = 222, 0; +int Scroll_Floor( int, int, int, int ) = 223, 1; +int Scroll_Ceiling( int, int, int, int ) = 224, 1; +int Scroll_Texture_Offsets( int ) = 225, 0; +int Acs_ExecuteAlways( int, int, int = 0, int = 0, int = 0 ) = 226, 1; +int PointPush_SetForce( int, int, int, int ) = 227, 0; +int Plat_RaiseAndStayTx0( int, int, int = 0 ) = 228, 1; +int Thing_SetGoal( int, int, int, int = 0 ) = 229, 1; +int Plat_UpByValueStayTx( int, int, int ) = 230, 1; +int Plat_ToggleCeiling( int ) = 231, 1; +int Light_StrobeDoom( int, int, int ) = 232, 1; +int Light_MinNeighbor( int ) = 233, 1; +int Light_MaxNeighbor( int ) = 234, 1; +int Floor_TransferTrigger( int ) = 235, 1; +int Floor_TransferNumeric( int ) = 236, 1; +int ChangeCamera( int, int, int ) = 237, 1; +int Floor_RaiseToLowestCeiling( int, int ) = 238, 1; +int Floor_RaiseByValueTxTy( int, int, int ) = 239, 1; +int Floor_RaiseByTexture( int, int ) = 240, 1; +int Floor_LowerToLowestTxTy( int, int ) = 241, 1; +int Floor_LowerToHighest( int, int, int ) = 242, 1; +int Exit_Normal( int ) = 243, 1; +int Exit_Secret( int ) = 244, 1; +int Elevator_RaiseToNearest( int, int ) = 245, 1; +int Elevator_MoveToFloor( int, int ) = 246, 1; +int Elevator_LowerToNearest( int, int ) = 247, 1; +int HealThing( int, int = 0 ) = 248, 1; +int Door_CloseWaitOpen( int, int, int, int = 0 ) = 249, 1; +int Floor_Donut( int, int, int ) = 250, 1; +int FloorAndCeiling_LowerRaise( int, int, int, int = 0 ) = 251, 1; +int Ceiling_RaiseToNearest( int, int ) = 252, 1; +int Ceiling_LowerToLowest( int, int ) = 253, 1; +int Ceiling_LowerToFloor( int, int ) = 254, 1; +int Ceiling_CrushRaiseAndStaySilA( int, int, int, int, + int = 0 ) = 255, 1; + +// Extension functions +// Tail format: -= +int GetLineUdmfInt( int, str ) -= 1; +int GetLineUdmfFixed( int, str ) -= 2; +int GetThingUdmfInt( int, str ) -= 3; +int GetThingUdmfFixed( int, str ) -= 4; +int GetSectorUdmfInt( int, str ) -= 5; +int GetSectorUdmfFixed( int, str ) -= 6; +int GetSideUdmfInt( int, bool, str ) -= 7; +int GetSideUdmfFixed( int, bool, str ) -= 8; +int GetActorVelX( int ) -= 9; +int GetActorVelY( int ) -= 10; +int GetActorVelZ( int ) -= 11; +bool SetActivator( int ) -= 12; +bool SetActivatorToTarget( int ) -= 13; +int GetActorViewHeight( int ) -= 14; +int GetChar( str, int ) -= 15; +int GetAirSupply( int ) -= 16; +bool SetAirSupply( int, int ) -= 17; +void SetSkyScrollSpeed( int, int ) -= 18; +int GetArmorType( str, int ) -= 19; +int SpawnSpotForced( str, int, int = 0, int = 0 ) -= 20; +int SpawnSpotFacingForced( str, int, int = 0 ) -= 21; +bool CheckActorProperty( int, int, int ) -= 22; +bool SetActorVelocity( int, int, int, int, bool, bool ) -= 23; +void SetUserVariable( int, str, int ) -= 24; +int GetUserVariable( int, str ) -= 25; +void Radius_Quake2( int, int, int, int, int, str ) -= 26; +bool CheckActorClass( int, str ) -= 27; +void SetUserArray( int, str, int, int ) -= 28; +int GetUserArray( int, str, int ) -= 29; +void SoundSequenceOnActor( int, str ) -= 30; +void SoundSequenceOnSector( int, str, int ) -= 31; +void SoundSequenceOnPolyobj( int, str ) -= 32; +int GetPolyobjX( int ) -= 33; +int GetPolyobjY( int ) -= 34; +bool CheckSight( int, int, int ) -= 35; +int SpawnForced( str, int, int, int, int = 0, int = 0 ) -= 36; +void AnnouncerSound( str, int ) -= 37; +bool SetPointer( int, int, int = 0, int = 0 ) -= 38; +bool Acs_NamedExecute( str, int, int = 0, int = 0, int = 0 ) -= 39; +bool Acs_NamedSuspend( str, int ) -= 40; +bool Acs_NamedTerminate( str, int ) -= 41; +bool Acs_NamedLockedExecute( str, int, int, int, int ) -= 42; +bool Acs_NamedLockedExecuteDoor( str, int, int, int, int ) -= 43; +int Acs_NamedExecuteWithResult( str, int = 0, int = 0, int = 0 ) -= 44; +bool Acs_NamedExecuteAlways( str, int, int = 0, int = 0, int = 0 ) -= 45; +int UniqueTid( int = 0, int = 0 ) -= 46; +bool IsTidUsed( int ) -= 47; +int Sqrt( int ) -= 48; +int FixedSqrt( int ) -= 49; +int VectorLength( int, int ) -= 50; +void SetHudClipRect( int, int, int, int, int = 0 ) -= 51; +void SetHudWrapWidth( int ) -= 52; +bool SetCVar( str, int ) -= 53; +int GetUserCVar( int, str ) -= 54; +bool SetUserCVar( int, str, int ) -= 55; +str GetCVarString( str ) -= 56; +bool SetCVarString( str, str ) -= 57; +str GetUserCVarString( int, str ) -= 58; +bool SetUserCVarString( int, str, str ) -= 59; +void LineAttack( int, int, int, int, str, str, int, int = 0 ) -= 60; +void PlaySound( int, str, int, int, bool, int ) -= 61; +void StopSound( int, int ) -= 62; +int Strcmp( str, str, int = 0 ) -= 63; +int Stricmp( str, str, int = 0 ) -= 64; +int Strcasecmp( str, str, int = 0 ) -= 64; +str StrLeft( str, int ) -= 65; +str StrRight( str, int ) -= 66; +str StrMid( str, int, int ) -= 67; +str GetActorClass( int ) -= 68; +str GetWeapon() -= 69; +void SoundVolume( int, int, int ) -= 70; +void PlayActorSound( int, int, int = 0, int = 0.0, bool = false, + int = 0.0 ) -= 71; +int SpawnDecal( int, str, int = 0, int = 0.0, int = 0.0, int = 0.0 ) -= 72; +bool CheckFont( str ) -= 73; +int DropItem( int, str, int = 0, int = 0 ) -= 74; +bool CheckFlag( int, str ) -= 75; +void SetLineActivation( int, int ) -= 76; +int GetLineActivation( int ) -= 77; +int GetActorPowerupTics( int, str ) -= 78; +void ChangeActorAngle( int, int, bool = false ) -= 79; +void ChangeActorPitch( int, int, bool = false ) -= 80; +int GetArmorInfo( int ) -= 81; +bool ResetMap() -= 100; +bool PlayerIsSpectator( int ) -= 101; +int ConsolePlayerNumber() -= 102; +int GetTeamProperty( int, int ) -= 103; +int GetPlayerLivesLeft( int ) -= 104; +bool SetPlayerLivesLeft( int, int ) -= 105; +bool KickFromGame( int, str ) -= 106; +int GetGamemodeState() -= 107; +void SetDBEntry( str, str, int ) -= 108; +int GetDBEntry( str, str ) -= 109; +void SetDBEntryString( str, str, str ) -= 110; +str GetDBEntryString( str, str ) -= 111; +void IncrementDBEntry( str, str, int ) -= 112; +bool PlayerIsLoggedIn( int ) -= 113; +str GetPlayerAccountName( int ) -= 114; +int SortDBEntries( str, int, int, bool ) -= 115; +int CountDBResults( int ) -= 116; +void FreeDBResults( int ) -= 117; +str GetDBResultKeyString( int, int ) -= 118; +str GetDBResultValueString( int, int ) -= 119; +int GetDBResultValue( int, int ) -= 120; +int GetDBEntryRank( str, str, bool ) -= 121; +int RequestScriptPuke( int, int = 0, int = 0, int = 0 ) -= 122; +int GetTeamScore( int ) -= 19620; +void SetTeamScore( int, int ) -= 19621; + +// Dedicated functions +// Tail format: += , +void Delay( int ) += 55, 1; +int Random( int, int ) += 57, 0; +int ThingCount( int, int = 0 ) += 59, 0; +void TagWait( int ) += 61, 1; +void PolyWait( int ) += 63, 1; +void ChangeFloor( int, str ) += 65, 0; +void ChangeCeiling( int, str ) += 67, 0; +int LineSide() += 80, 0; +void ScriptWait( int ) += 81, 1; +void ClearLineSpecial() += 83, 0; +int PlayerCount() += 90, 0; +int GameType() += 91, 0; +int GameSkill() += 92, 0; +int Timer() += 93, 0; +void SectorSound( str, int ) += 94, 0; +void AmbientSound( str, int ) += 95, 0; +void SoundSequence( str ) += 96, 0; +void SetLineTexture( int, int, int, str ) += 97, 0; +void SetLineBlocking( int, int ) += 98, 0; +void SetLineSpecial( int, int, int = 0, int = 0, int = 0, int = 0, + int = 0 ) += 99, 0; +void ThingSound( int, str, int ) += 100, 0; +void ActivatorSound( str, int ) += 102, 0; +void LocalAmbientSound( str, int ) += 103, 0; +void SetLineMonsterBlocking( int, int ) += 104, 0; +bool IsMultiplayer() += 118, 0; +int PlayerTeam() += 119, 0; +int PlayerHealth() += 120, 0; +int PlayerArmorPoints() += 121, 0; +int PlayerFrags() += 122, 0; +int BlueCount() += 124, 0; +int BlueTeamCount() += 124, 0; +int RedCount() += 125, 0; +int RedTeamCount() += 125, 0; +int BlueScore() += 126, 0; +int BlueTeamScore() += 126, 0; +int RedScore() += 127, 0; +int RedTeamScore() += 127, 0; +bool IsOneFlagCtf() += 128, 0; +int GetInvasionWave() += 129, 0; +int GetInvasionState() += 130, 0; +void Music_Change( str, int ) += 132, 0; +void ConsoleCommand( str, int = 0, int = 0 ) += 134, 0; +bool SinglePlayer() += 135, 0; +int FixedMul( int, int ) += 136, 0; +int FixedDiv( int, int ) += 137, 0; +void SetGravity( int ) += 138, 0; +void SetAirControl( int ) += 140, 0; +void ClearInventory() += 142, 0; +void GiveInventory( str, int ) += 143, 0; +void TakeInventory( str, int ) += 145, 0; +int CheckInventory( str ) += 147, 0; +int Spawn( str, int, int, int, int = 0, int = 0 ) += 149, 0; +int SpawnSpot( str, int, int = 0, int = 0 ) += 151, 0; +void SetMusic( str, int = 0, int = 0 ) += 153, 0; +void LocalSetMusic( str, int = 0, int = 0 ) += 155, 0; +void SetFont( str ) += 165, 0; +void SetThingSpecial( int, int, int = 0, int = 0, int = 0, int = 0, + int = 0 ) += 180, 0; +void FadeTo( int, int, int, int, int ) += 190, 0; +void FadeRange( int, int, int, int, int, int, int, int, int ) += 191, 0; +void CancelFade() += 192, 0; +int PlayMovie( str ) += 193, 0; +void SetFloorTrigger( int, int, int, int = 0, int = 0, int = 0, + int = 0, int = 0 ) += 194, 0; +void SetCeilingTrigger( int, int, int, int = 0, int = 0, int = 0, + int = 0, int = 0 ) += 195, 0; +int GetActorX( int ) += 196, 0; +int GetActorY( int ) += 197, 0; +int GetActorZ( int ) += 198, 0; +int Sin( int ) += 220, 0; +int Cos( int ) += 221, 0; +int VectorAngle( int, int ) += 222, 0; +bool CheckWeapon( str ) += 223, 0; +bool SetWeapon( str ) += 224, 0; +void SetMarineWeapon( int, int ) += 244, 0; +void SetActorProperty( int, int, int ) += 245, 0; +int GetActorProperty( int, int ) += 246, 0; +int PlayerNumber() += 247, 0; +int ActivatorTid() += 248, 0; +void SetMarineSprite( int, str ) += 249, 0; +int GetScreenWidth() += 250, 0; +int GetScreenHeight() += 251, 0; +void Thing_Projectile2( int, int, int, int, int, int, int ) += 252, 0; +int StrLen( str ) += 253, 0; +void SetHudSize( int, int, bool ) += 254, 0; +int GetCvar( str ) += 255, 0; +void SetResultValue( int ) += 257, 0; +int GetLineRowOffset() += 258, 0; +int GetActorFloorZ( int ) += 259, 0; +int GetActorAngle( int ) += 260, 0; +int GetSectorFloorZ( int, int, int ) += 261, 0; +int GetSectorCeilingZ( int, int, int ) += 262, 0; +int GetSigilPieces() += 264, 0; +int GetLevelInfo( int ) += 265, 0; +void ChangeSky( str, str ) += 266, 0; +bool PlayerInGame( int ) += 267, 0; +bool PlayerIsBot( int ) += 268, 0; +void SetCameraToTexture( int, str, int ) += 269, 0; +int GetAmmoCapacity( str ) += 271, 0; +void SetAmmoCapacity( str, int ) += 272, 0; +void SetActorAngle( int, int ) += 276, 0; +void SpawnProjectile( int, str, int, int, int, int, int ) += 280, 0; +int GetSectorLightLevel( int ) += 281, 0; +int GetActorCeilingZ( int ) += 282, 0; +bool SetActorPosition( int, int, int, int, bool ) += 283, 0; +void ClearActorInventory( int ) += 284, 0; +void GiveActorInventory( int, str, int ) += 285, 0; +void TakeActorInventory( int, str, int ) += 286, 0; +int CheckActorInventory( int, str ) += 287, 0; +int ThingCountName( str, int ) += 288, 0; +int SpawnSpotFacing( str, int, int = 0 ) += 289, 0; +int PlayerClass( int ) += 290, 0; +int GetPlayerInfo( int, int ) += 326, 0; +void ChangeLevel( str, int, int, int = 0 ) += 327, 0; +void SectorDamage( int, int, str, str, int ) += 328, 0; +void ReplaceTextures( str, str, int = 0 ) += 329, 0; +int GetActorPitch( int ) += 331, 0; +void SetActorPitch( int, int ) += 332, 0; +int SetActorState( int, str, bool = false ) += 334, 0; +int Thing_Damage2( int, int, str ) += 335, 0; +int UseInventory( str ) += 336, 0; +int UseActorInventory( int, str ) += 337, 0; +bool CheckActorCeilingTexture( int, str ) += 338, 0; +bool CheckActorFloorTexture( int, str ) += 339, 0; +int GetActorLightLevel( int ) += 340, 0; +void SetMugShotState( str ) += 341, 0; +int ThingCountSector( str, int, int ) += 342, 0; +int ThingCountNameSector( str, int, int ) += 343, 0; +int CheckPlayerCamera( int ) += 344, 0; +int MorphActor( int, str = "", str = "", int = 0, int = 0, str = "", + str = "" ) += 345, 0; +int UnmorphActor( int, int = 0 ) += 346, 0; +int GetPlayerInput( int, int ) += 347, 0; +int ClassifyActor( int ) += 348, 0; + +// Format functions +// Tail format: *= +void Print( {} ) *= 86; +void PrintBold( {} ) *= 101; +void HudMessage( {}, int, int, int, int, int, int, int = 0.0, + int = 0.0 ) *= 161; +void HudMessageBold( {}, int, int, int, int, int, int, int = 0.0, + int = 0.0 ) *= 162; +void Log( {} ) *= 270; +str StrParam( {} ) *= 352; + +// Internal functions +// Tail format: /= +void Acs_ExecuteWait( int, int = 0, int = 0, int = 0, int = 0 ) /= 0; + +} \ No newline at end of file diff --git a/Build/Compilers/BCC/zcommon.acs b/Build/Compilers/BCC/zcommon.acs new file mode 100644 index 0000000..ce5b00d --- /dev/null +++ b/Build/Compilers/BCC/zcommon.acs @@ -0,0 +1,3 @@ +#include "std.acs" + +import upmost: region = std; \ No newline at end of file diff --git a/Build/Compilers/Hexen/acc.cfg b/Build/Compilers/Hexen/acc.cfg new file mode 100644 index 0000000..3ec4db0 --- /dev/null +++ b/Build/Compilers/Hexen/acc.cfg @@ -0,0 +1,17 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + // The "interface" setting defines what interal interface to use for processing and error feedback + // All others are the required files (the setting names do not matter) + hexen_acc + { + interface = "AccCompiler"; + program = "acc.exe"; + zcommon = "common.acs"; + zdefs = "defs.acs"; + zspecial = "specials.acs"; + zwvars = "wvars.acs"; + } +} diff --git a/Build/Compilers/Hexen/acc.exe b/Build/Compilers/Hexen/acc.exe new file mode 100644 index 0000000..a60988b Binary files /dev/null and b/Build/Compilers/Hexen/acc.exe differ diff --git a/Build/Compilers/Hexen/common.acs b/Build/Compilers/Hexen/common.acs new file mode 100644 index 0000000..8b9a082 --- /dev/null +++ b/Build/Compilers/Hexen/common.acs @@ -0,0 +1,10 @@ + +//************************************************************************** +//** +//** common.acs +//** +//************************************************************************** + +#include "specials.acs" +#include "defs.acs" +#include "wvars.acs" diff --git a/Build/Compilers/Hexen/defs.acs b/Build/Compilers/Hexen/defs.acs new file mode 100644 index 0000000..0e630a1 --- /dev/null +++ b/Build/Compilers/Hexen/defs.acs @@ -0,0 +1,149 @@ + +//************************************************************************** +//** +//** defs.acs +//** +//************************************************************************** + +#define TRUE 1 +#define FALSE 0 +#define ON 1 +#define OFF 0 +#define YES 1 +#define NO 0 + +#define LINE_FRONT 0 +#define LINE_BACK 1 + +#define SIDE_FRONT 0 +#define SIDE_BACK 1 + +#define TEXTURE_TOP 0 +#define TEXTURE_MIDDLE 1 +#define TEXTURE_BOTTOM 2 + +#define GAME_SINGLE_PLAYER 0 +#define GAME_NET_COOPERATIVE 1 +#define GAME_NET_DEATHMATCH 2 + +#define CLASS_FIGHTER 0 +#define CLASS_CLERIC 1 +#define CLASS_MAGE 2 + +#define SKILL_VERY_EASY 0 +#define SKILL_EASY 1 +#define SKILL_NORMAL 2 +#define SKILL_HARD 3 +#define SKILL_VERY_HARD 4 + +#define T_NONE 0 +#define T_CENTAUR 1 +#define T_CENTAURLEADER 2 +#define T_DEMON 3 +#define T_ETTIN 4 +#define T_FIREGARGOYLE 5 +#define T_WATERLURKER 6 +#define T_WATERLURKERLEADER 7 +#define T_WRAITH 8 +#define T_WRAITHBURIED 9 +#define T_FIREBALL1 10 +#define T_MANA1 11 +#define T_MANA2 12 +#define T_ITEMBOOTS 13 +#define T_ITEMEGG 14 +#define T_ITEMFLIGHT 15 +#define T_ITEMSUMMON 16 +#define T_ITEMTPORTOTHER 17 +#define T_ITEMTELEPORT 18 +#define T_BISHOP 19 +#define T_ICEGOLEM 20 +#define T_BRIDGE 21 +#define T_DRAGONSKINBRACERS 22 +#define T_ITEMHEALTHPOTION 23 +#define T_ITEMHEALTHFLASK 24 +#define T_ITEMHEALTHFULL 25 +#define T_ITEMBOOSTMANA 26 +#define T_FIGHTERAXE 27 +#define T_FIGHTERHAMMER 28 +#define T_FIGHTERSWORD1 29 +#define T_FIGHTERSWORD2 30 +#define T_FIGHTERSWORD3 31 +#define T_CLERICSTAFF 32 +#define T_CLERICHOLY1 33 +#define T_CLERICHOLY2 34 +#define T_CLERICHOLY3 35 +#define T_MAGESHARDS 36 +#define T_MAGESTAFF1 37 +#define T_MAGESTAFF2 38 +#define T_MAGESTAFF3 39 +#define T_MORPHBLAST 40 +#define T_ROCK1 41 +#define T_ROCK2 42 +#define T_ROCK3 43 +#define T_DIRT1 44 +#define T_DIRT2 45 +#define T_DIRT3 46 +#define T_DIRT4 47 +#define T_DIRT5 48 +#define T_DIRT6 49 +#define T_ARROW 50 +#define T_DART 51 +#define T_POISONDART 52 +#define T_RIPPERBALL 53 +#define T_STAINEDGLASS1 54 +#define T_STAINEDGLASS2 55 +#define T_STAINEDGLASS3 56 +#define T_STAINEDGLASS4 57 +#define T_STAINEDGLASS5 58 +#define T_STAINEDGLASS6 59 +#define T_STAINEDGLASS7 60 +#define T_STAINEDGLASS8 61 +#define T_STAINEDGLASS9 62 +#define T_STAINEDGLASS0 63 +#define T_BLADE 64 +#define T_ICESHARD 65 +#define T_FLAME_SMALL 66 +#define T_FLAME_LARGE 67 +#define T_MESHARMOR 68 +#define T_FALCONSHIELD 69 +#define T_PLATINUMHELM 70 +#define T_AMULETOFWARDING 71 +#define T_ITEMFLECHETTE 72 +#define T_ITEMTORCH 73 +#define T_ITEMREPULSION 74 +#define T_MANA3 75 +#define T_PUZZSKULL 76 +#define T_PUZZGEMBIG 77 +#define T_PUZZGEMRED 78 +#define T_PUZZGEMGREEN1 79 +#define T_PUZZGEMGREEN2 80 +#define T_PUZZGEMBLUE1 81 +#define T_PUZZGEMBLUE2 82 +#define T_PUZZBOOK1 83 +#define T_PUZZBOOK2 84 +#define T_METALKEY 85 +#define T_SMALLMETALKEY 86 +#define T_AXEKEY 87 +#define T_FIREKEY 88 +#define T_GREENKEY 89 +#define T_MACEKEY 90 +#define T_SILVERKEY 91 +#define T_RUSTYKEY 92 +#define T_HORNKEY 93 +#define T_SERPENTKEY 94 +#define T_WATERDRIP 95 +#define T_TEMPSMALLFLAME 96 +#define T_PERMSMALLFLAME 97 +#define T_TEMPLARGEFLAME 98 +#define T_PERMLARGEFLAME 99 +#define T_DEMON_MASH 100 +#define T_DEMON2_MASH 101 +#define T_ETTIN_MASH 102 +#define T_CENTAUR_MASH 103 +#define T_THRUSTSPIKEUP 104 +#define T_THRUSTSPIKEDOWN 105 +#define T_FLESH_DRIP1 106 +#define T_FLESH_DRIP2 107 +#define T_SPARK_DRIP 108 + + diff --git a/Build/Compilers/Hexen/specials.acs b/Build/Compilers/Hexen/specials.acs new file mode 100644 index 0000000..91f346e --- /dev/null +++ b/Build/Compilers/Hexen/specials.acs @@ -0,0 +1,84 @@ +//************************************************************************** +//** +//** specials.acs +//** +//************************************************************************** + +special + 80:ACS_Execute(5), + 81:ACS_Suspend(2), + 82:ACS_Terminate(2), + 83:ACS_LockedExecute(5), + 42:Ceiling_CrushAndRaise(3), + 44:Ceiling_CrushStop(1), + 43:Ceiling_LowerAndCrush(3), + 40:Ceiling_LowerByValue(3), + 41:Ceiling_RaiseByValue(3), + 45:Ceiling_CrushRaiseAndStay(3), + 69:Ceiling_MoveToValueTimes8(4), + 10:Door_Close(2), + 11:Door_Open(2), + 12:Door_Raise(3), + 13:Door_LockedRaise(4), + 20:Floor_LowerByValue(3), + 36:Floor_LowerByValueTimes8(3), + 66:Floor_LowerInstant(3), + 68:Floor_MoveToValueTimes8(4), + 21:Floor_LowerToLowest(2), + 22:Floor_LowerToNearest(2), + 28:Floor_RaiseAndCrush(3), + 23:Floor_RaiseByValue(3), + 35:Floor_RaiseByValueTimes8(3), + 67:Floor_RaiseInstant(3), + 24:Floor_RaiseToHighest(2), + 25:Floor_RaiseToNearest(2), + 95:FloorAndCeiling_LowerByValue(3), + 96:FloorAndCeiling_RaiseByValue(3), + 46:Floor_CrushStop(1), + 109:Light_ForceLightning(1), + 110:Light_RaiseByValue(2), + 111:Light_LowerByValue(2), + 112:Light_ChangeToValue(2), + 113:Light_Fade(3), + 114:Light_Glow(4), + 115:Light_Flicker(3), + 116:Light_Strobe(5), + 29:Pillar_Build(3), + 94:Pillar_BuildAndCrush(4), + 30:Pillar_Open(4), + 62:Plat_DownWaitUpStay(3), + 63:Plat_DownByValue(4), + 64:Plat_UpWaitDownStay(3), + 65:Plat_UpByValue(4), + 60:Plat_PerpetualRaise(3), + 61:Plat_Stop(1), + 6:Polyobj_MoveTimes8(4), + 4:Polyobj_Move(4), + 2:Polyobj_RotateLeft(3), + 3:Polyobj_RotateRight(3), + 7:Polyobj_DoorSwing(4), + 8:Polyobj_DoorSlide(5), + 93:Polyobj_OR_MoveTimes8(4), + 92:Polyobj_OR_Move(4), + 90:Polyobj_OR_RotateLeft(3), + 91:Polyobj_OR_RotateRight(3), + 120:Radius_Quake(5), + 140:Sector_ChangeSound(2), + 26:Stairs_BuildDown(5), + 27:Stairs_BuildUp(5), + 31:Stairs_BuildDownSync(4), + 32:Stairs_BuildUpSync(4), + 70:Teleport(1), + 71:Teleport_NoFog(1), + 74:Teleport_NewMap(2), + 72:ThrustThing(2), + 73:DamageThing(1), + 130:Thing_Activate(1), + 131:Thing_Deactivate(1), + 133:Thing_Destroy(1), + 134:Thing_Projectile(5), + 136:Thing_ProjectileGravity(5), + 132:Thing_Remove(1), + 135:Thing_Spawn(3), + 137:Thing_SpawnNoFog(3), + 138:Floor_Waggle(5); diff --git a/Build/Compilers/Hexen/wvars.acs b/Build/Compilers/Hexen/wvars.acs new file mode 100644 index 0000000..252b4a1 --- /dev/null +++ b/Build/Compilers/Hexen/wvars.acs @@ -0,0 +1,13 @@ + +//************************************************************************** +//** +//** wvars.acs +//** +//************************************************************************** + +/* +world int 0:WorldFree1; +world int 1:WorldFree2; +world int 2:WorldFree3; +world int 3:WorldFree4; +*/ diff --git a/Build/Compilers/Nodebuilders/ZenNode.cfg b/Build/Compilers/Nodebuilders/ZenNode.cfg new file mode 100644 index 0000000..36148ad --- /dev/null +++ b/Build/Compilers/Nodebuilders/ZenNode.cfg @@ -0,0 +1,38 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + zennode + { + interface = "NodesCompiler"; + program = "ZenNode.exe"; + } +} + + +// Below are configurations for this nodebuilder. If you want to make your own configurations, +// it is recommended to do so in your own file as this file will be updated each release. + +// NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! +// Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. + +// The "compiler" setting must refer to an existing compiler (such as defined above), but it +// does not have to be a compiler defined in the same configuration file. + +nodebuilders +{ + zennode_normal + { + title = "ZenNode - Normal"; + compiler = "zennode"; + parameters = "%FI -o %FI"; + } + + zennode_fast + { + title = "ZenNode - Fast (no reject)"; + compiler = "zennode"; + parameters = "-n3 -nq -rz %FI -o %FI"; + } +} diff --git a/Build/Compilers/Nodebuilders/ZenNode.exe b/Build/Compilers/Nodebuilders/ZenNode.exe new file mode 100644 index 0000000..0478720 Binary files /dev/null and b/Build/Compilers/Nodebuilders/ZenNode.exe differ diff --git a/Build/Compilers/Nodebuilders/bsp-w32.bat b/Build/Compilers/Nodebuilders/bsp-w32.bat new file mode 100644 index 0000000..2d7be17 --- /dev/null +++ b/Build/Compilers/Nodebuilders/bsp-w32.bat @@ -0,0 +1 @@ +bsp-w32.exe %* diff --git a/Build/Compilers/Nodebuilders/bsp-w32.cfg b/Build/Compilers/Nodebuilders/bsp-w32.cfg new file mode 100644 index 0000000..b9af8a5 --- /dev/null +++ b/Build/Compilers/Nodebuilders/bsp-w32.cfg @@ -0,0 +1,41 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + bspw32 + { + // Don't ask me why, but running the exe directly doesn't seem to work. + // It seems like it ignores the parameters. Using a batch file seems to 'fix' this. + interface = "NodesCompiler"; + program = "bsp-w32.bat"; + executable = "bsp-w32.exe"; + } +} + + +// Below are configurations for this nodebuilder. If you want to make your own configurations, +// it is recommended to do so in your own file as this file will be updated each release. + +// NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! +// Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. + +// The "compiler" setting must refer to an existing compiler (such as defined above), but it +// does not have to be a compiler defined in the same configuration file. + +nodebuilders +{ + bspw32_normal + { + title = "BSP-W32 - Normal"; + compiler = "bspw32"; + parameters = "%FI -o %FO"; + } + + bspw32_fast + { + title = "BSP-W32 - Fast (no reject)"; + compiler = "bspw32"; + parameters = "-noreject %FI -o %FO"; + } +} diff --git a/Build/Compilers/Nodebuilders/bsp-w32.exe b/Build/Compilers/Nodebuilders/bsp-w32.exe new file mode 100644 index 0000000..1434e72 Binary files /dev/null and b/Build/Compilers/Nodebuilders/bsp-w32.exe differ diff --git a/Build/Compilers/Nodebuilders/deepbsp.cfg b/Build/Compilers/Nodebuilders/deepbsp.cfg new file mode 100644 index 0000000..c5cfc71 --- /dev/null +++ b/Build/Compilers/Nodebuilders/deepbsp.cfg @@ -0,0 +1,32 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + deepbsp + { + interface = "NodesCompiler"; + program = "deepbsp.exe"; + } +} + + +// Below are configurations for this nodebuilder. If you want to make your own configurations, +// it is recommended to do so in your own file as this file will be updated each release. + +// NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! +// Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. + +// The "compiler" setting must refer to an existing compiler (such as defined above), but it +// does not have to be a compiler defined in the same configuration file. + +nodebuilders +{ + deepbsp_normal + { + title = "DeepBSP - Normal"; + compiler = "deepbsp"; + parameters = "%FI %FO"; + } +} + diff --git a/Build/Compilers/Nodebuilders/deepbsp.exe b/Build/Compilers/Nodebuilders/deepbsp.exe new file mode 100644 index 0000000..a027431 Binary files /dev/null and b/Build/Compilers/Nodebuilders/deepbsp.exe differ diff --git a/Build/Compilers/Nodebuilders/glBSP.cfg b/Build/Compilers/Nodebuilders/glBSP.cfg new file mode 100644 index 0000000..48727df --- /dev/null +++ b/Build/Compilers/Nodebuilders/glBSP.cfg @@ -0,0 +1,37 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + glbsp + { + interface = "NodesCompiler"; + program = "glBSP.exe"; + } +} + +// Below are configurations for this nodebuilder. If you want to make your own configurations, +// it is recommended to do so in your own file as this file will be updated each release. + +// NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! +// Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. + +// The "compiler" setting must refer to an existing compiler (such as defined above), but it +// does not have to be a compiler defined in the same configuration file. + +nodebuilders +{ + glbsp_normal + { + title = "glBSP - Normal"; + compiler = "glbsp"; + parameters = "%FI -o %FO"; + } + + glbsp_fast + { + title = "glBSP - Fast (no reject)"; + compiler = "glbsp"; + parameters = "-normal -noreject -v5 -factor 1 %FI -o %FO"; + } +} diff --git a/Build/Compilers/Nodebuilders/glbsp.exe b/Build/Compilers/Nodebuilders/glbsp.exe new file mode 100644 index 0000000..b6f9f1d Binary files /dev/null and b/Build/Compilers/Nodebuilders/glbsp.exe differ diff --git a/Build/Compilers/Nodebuilders/zdbsp.cfg b/Build/Compilers/Nodebuilders/zdbsp.cfg new file mode 100644 index 0000000..ebaa4da --- /dev/null +++ b/Build/Compilers/Nodebuilders/zdbsp.cfg @@ -0,0 +1,68 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + zdbsp + { + interface = "NodesCompiler"; + program = "zdbsp.exe"; + } +} + + +// Below are configurations for this nodebuilder. If you want to make your own configurations, +// it is recommended to do so in your own file as this file will be updated each release. + +// NOTE: Nodebuilder configuration key names defined here must be unique for all nodebuilders! +// Recommend to start the key name with the name of the compiler, followed by underscore and a specific name. + +// The "compiler" setting must refer to an existing compiler (such as defined above), but it +// does not have to be a compiler defined in the same configuration file. + +nodebuilders +{ + zdbsp_normal + { + title = "ZDBSP - Normal (no reject)"; + compiler = "zdbsp"; + parameters = "-c -o%FO %FI"; + // -c adds comment indices in UDMF format. This is not documented in the ZDBSP usage. + } + + zdbsp_udmf_normal + { + title = "ZDBSP - UDMF Normal (no reject)"; + compiler = "zdbsp"; + parameters = "-c -X -o%FO %FI"; + // -c adds comment indices in UDMF format. This is not documented in the ZDBSP usage. + } + + zdbsp_fast + { + title = "ZDBSP - Normal (zero reject)"; + compiler = "zdbsp"; + parameters = "-R -o%FO %FI"; + } + + zdbsp_udmf_fast + { + title = "ZDBSP - UDMF Normal (zero reject)"; + compiler = "zdbsp"; + parameters = "-R -X -o%FO %FI"; + } + + zdbsp_compressed + { + title = "ZDBSP - Compress nodes"; + compiler = "zdbsp"; + parameters = "-z -o%FO %FI"; + } + + zdbsp_udmf_compressed + { + title = "ZDBSP - Compress nodes (UDMF)"; + compiler = "zdbsp"; + parameters = "-z -X -o%FO %FI"; + } +} diff --git a/Build/Compilers/Nodebuilders/zdbsp.exe b/Build/Compilers/Nodebuilders/zdbsp.exe new file mode 100644 index 0000000..2fa3102 Binary files /dev/null and b/Build/Compilers/Nodebuilders/zdbsp.exe differ diff --git a/Build/Compilers/ZDoom/acc.cfg b/Build/Compilers/ZDoom/acc.cfg new file mode 100644 index 0000000..7e6d0e0 --- /dev/null +++ b/Build/Compilers/ZDoom/acc.cfg @@ -0,0 +1,17 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + // The "interface" setting defines what interal interface to use for processing and error feedback + // All others are the required files (the setting names do not matter) + zdoom_acc + { + interface = "AccCompiler"; + program = "acc.exe"; + zcommon = "zcommon.acs"; + zdefs = "zdefs.acs"; + zspecial = "zspecial.acs"; + zwvars = "zwvars.acs"; + } +} diff --git a/Build/Compilers/ZDoom/acc.exe b/Build/Compilers/ZDoom/acc.exe new file mode 100644 index 0000000..a60988b Binary files /dev/null and b/Build/Compilers/ZDoom/acc.exe differ diff --git a/Build/Compilers/ZDoom/zcommon.acs b/Build/Compilers/ZDoom/zcommon.acs new file mode 100644 index 0000000..5cdec5d --- /dev/null +++ b/Build/Compilers/ZDoom/zcommon.acs @@ -0,0 +1,15 @@ + +//************************************************************************** +//** +//** zcommon.acs +//** +//************************************************************************** + +// If you are not using the -h command line switch and do not want to use +// WadAuthor's error checker, you can uncomment the following line to shave +// a few bytes off the size of compiled scripts. +//#nowadauthor + +#include "zspecial.acs" +#include "zdefs.acs" +#include "zwvars.acs" diff --git a/Build/Compilers/ZDoom/zdefs.acs b/Build/Compilers/ZDoom/zdefs.acs new file mode 100644 index 0000000..c80cf89 --- /dev/null +++ b/Build/Compilers/ZDoom/zdefs.acs @@ -0,0 +1,1080 @@ +//************************************************************************** +//** +//** zdefs.acs +//** +//** Common definitions for use when compiling ACS scripts for ZDoom +//** +//************************************************************************** + +#define TRUE 1 +#define FALSE 0 +#define ON 1 +#define OFF 0 +#define YES 1 +#define NO 0 + +#define LINE_FRONT 0 +#define LINE_BACK 1 + +#define SIDE_FRONT 0 +#define SIDE_BACK 1 + +#define TEXTURE_TOP 0 +#define TEXTURE_MIDDLE 1 +#define TEXTURE_BOTTOM 2 + +// same information as combinable bit flags +#define TEXFLAG_TOP 1 +#define TEXFLAG_MIDDLE 2 +#define TEXFLAG_BOTTOM 4 +#define TEXFLAG_ADDOFFSET 8 + +#define GAME_SINGLE_PLAYER 0 +#define GAME_NET_COOPERATIVE 1 +#define GAME_NET_DEATHMATCH 2 +#define GAME_TITLE_MAP 3 + +// Classes are only useful with Hexen +#define CLASS_FIGHTER 0 +#define CLASS_CLERIC 1 +#define CLASS_MAGE 2 + +#define SKILL_VERY_EASY 0 +#define SKILL_EASY 1 +#define SKILL_NORMAL 2 +#define SKILL_HARD 3 +#define SKILL_VERY_HARD 4 + +#define BLOCK_NOTHING 0 +#define BLOCK_CREATURES 1 +#define BLOCK_EVERYTHING 2 +#define BLOCK_RAILING 3 +#define BLOCK_PLAYERS 4 + +#define SCROLL 0 +#define CARRY 1 +#define SCROLL_AND_CARRY 2 + +// Means-of-death for Sector_SetDamage -------------------------------------- + +#define MOD_UNKNOWN 0 +#define MOD_ROCKET 5 +#define MOD_R_SPLASH 6 +#define MOD_PLASMARIFLE 7 +#define MOD_BFG_BOOM 8 +#define MOD_BFG_SPLASH 9 +#define MOD_CHAINSAW 10 +#define MOD_SSHOTGUN 11 +#define MOD_WATER 12 +#define MOD_SLIME 13 +#define MOD_LAVA 14 +#define MOD_CRUSH 15 +#define MOD_TELEFRAG 16 +#define MOD_FALLING 17 +#define MOD_SUICIDE 18 +#define MOD_BARREL 19 +#define MOD_EXIT 20 +#define MOD_SPLASH 21 +#define MOD_HIT 22 +#define MOD_RAILGUN 23 +#define MOD_ICE 24 +#define MOD_DISINTEGRATE 25 +#define MOD_POISON 26 +#define MOD_ELECTRIC 27 + +// Return values for PlayMovie ---------------------------------------------- + +#define MOVIE_Played 0 +#define MOVIE_Played_NoVideo 1 +#define MOVIE_Played_Aborted 2 +#define MOVIE_Failed -1 + + +// Player properties -------------------------------------------------------- + +#define PROP_FROZEN 0 +#define PROP_NOTARGET 1 +#define PROP_INSTANTWEAPONSWITCH 2 +#define PROP_FLY 3 +#define PROP_TOTALLYFROZEN 4 +#define PROP_BUDDHA 16 + +// The following properties correspond to powers given by certain items +#define PROP_INVULNERABILITY 5 +#define PROP_STRENGTH 6 +#define PROP_INVISIBILITY 7 +#define PROP_RADIATIONSUIT 8 +#define PROP_ALLMAP 9 +#define PROP_INFRARED 10 +#define PROP_WEAPONLEVEL2 11 +#define PROP_FLIGHT 12 +#define PROP_SPEED 15 + +// Player input ------------------------------------------------------------- + +// These are the original inputs sent by the player. +#define INPUT_OLDBUTTONS 0 +#define INPUT_BUTTONS 1 +#define INPUT_PITCH 2 +#define INPUT_YAW 3 +#define INPUT_ROLL 4 +#define INPUT_FORWARDMOVE 5 +#define INPUT_SIDEMOVE 6 +#define INPUT_UPMOVE 7 + +// These are the inputs, as modified by P_PlayerThink(). +// Most of the time, these will match the original inputs, but +// they can be different if a player is frozen or using a +// chainsaw. +#define MODINPUT_OLDBUTTONS 8 +#define MODINPUT_BUTTONS 9 +#define MODINPUT_PITCH 10 +#define MODINPUT_YAW 11 +#define MODINPUT_ROLL 12 +#define MODINPUT_FORWARDMOVE 13 +#define MODINPUT_SIDEMOVE 14 +#define MODINPUT_UPMOVE 15 + +// Player buttons ----------------------------------------------------------- + +#define BT_ATTACK 1 +#define BT_USE 2 +#define BT_JUMP 4 +#define BT_CROUCH 8 +#define BT_TURN180 16 +#define BT_ALTATTACK 32 +#define BT_RELOAD 64 +#define BT_ZOOM 128 + +#define BT_SPEED 256 +#define BT_STRAFE 512 + +#define BT_MOVERIGHT 1024 +#define BT_MOVELEFT 2048 +#define BT_BACK 4096 +#define BT_FORWARD 8192 +#define BT_RIGHT 16384 +#define BT_LEFT 32768 +#define BT_LOOKUP 65536 +#define BT_LOOKDOWN 131072 +#define BT_MOVEUP 262144 +#define BT_MOVEDOWN 524288 +#define BT_SHOWSCORES 1048576 + +// Do whatever you want with these. +#define BT_USER1 2097152 +#define BT_USER2 4194304 +#define BT_USER3 8388608 +#define BT_USER4 16777216 + +// Text colors -------------------------------------------------------------- + +#define CR_UNTRANSLATED -1 +#define CR_BRICK 0 +#define CR_TAN 1 +#define CR_GRAY 2 +#define CR_GREY 2 +#define CR_GREEN 3 +#define CR_BROWN 4 +#define CR_GOLD 5 +#define CR_RED 6 +#define CR_BLUE 7 +#define CR_ORANGE 8 +#define CR_WHITE 9 +#define CR_YELLOW 10 +#define CR_BLACK 12 +#define CR_LIGHTBLUE 13 +#define CR_CREAM 14 +#define CR_OLIVE 15 +#define CR_DARKGREEN 16 +#define CR_DARKRED 17 +#define CR_DARKBROWN 18 +#define CR_PURPLE 19 +#define CR_DARKGRAY 20 +#define CR_DARKGREY 20 +#define CR_CYAN 21 + +// HUD message types -------------------------------------------------------- + +#define HUDMSG_PLAIN 0 +#define HUDMSG_FADEOUT 1 +#define HUDMSG_TYPEON 2 +#define HUDMSG_FADEINOUT 3 + +// OR this with one of the above to log the hudmessage to the console. +// i.e. instead of HUDMSG_PLAIN, you can use HUDMSG_PLAIN | HUDMSG_LOG +#define HUDMSG_LOG 0x80000000 + +// OR this with one of the above if the color you passed is a string +// instead of one of the CR_ constants. +#define HUDMSG_COLORSTRING 0x40000000 + +// OR this with one of the above to use additive blending when drawing the +// HUD message. +#define HUDMSG_ADDBLEND 0x20000000 + +// OR this with one of the above to use the extra alpha parameter +#define HUDMSG_ALPHA 0x10000000 + +// Or this with one of the above to not wrap lines +#define HUDMSG_NOWRAP 0x08000000 + +// HUD message layers; these are not flags +#define HUDMSG_LAYER_OVERHUD 0x00000000 +#define HUDMSG_LAYER_UNDERHUD 0x00001000 +#define HUDMSG_LAYER_OVERMAP 0x00002000 + +// HUD message visibility flags +#define HUDMSG_NOTWITH3DVIEW 0x00010000 +#define HUDMSG_NOTWITHFULLMAP 0x00020000 +#define HUDMSG_NOTWITHOVERLAYMAP 0x00040000 + + +// "Scripted" Marine weapon types ------------------------------------------- + +#define MARINEWEAPON_Dummy 0 +#define MARINEWEAPON_Fist 1 +#define MARINEWEAPON_BerserkFist 2 +#define MARINEWEAPON_Chainsaw 3 +#define MARINEWEAPON_Pistol 4 +#define MARINEWEAPON_Shotgun 5 +#define MARINEWEAPON_SuperShotgun 6 +#define MARINEWEAPON_Chaingun 7 +#define MARINEWEAPON_RocketLauncher 8 +#define MARINEWEAPON_PlasmaRifle 9 +#define MARINEWEAPON_Railgun 10 +#define MARINEWEAPON_BFG 11 + +// Actor properties you can get/set ----------------------------------------- + +#define APROP_Health 0 +#define APROP_Speed 1 +#define APROP_Damage 2 +#define APROP_Alpha 3 +#define APROP_RenderStyle 4 +#define APROP_SeeSound 5 // Sounds can only be set, not gotten +#define APROP_AttackSound 6 +#define APROP_PainSound 7 +#define APROP_DeathSound 8 +#define APROP_ActiveSound 9 +#define APROP_Ambush 10 +#define APROP_Invulnerable 11 +#define APROP_JumpZ 12 +#define APROP_ChaseGoal 13 +#define APROP_Frightened 14 +#define APROP_Gravity 15 +#define APROP_Friendly 16 +#define APROP_SpawnHealth 17 +#define APROP_Dropped 18 +#define APROP_Notarget 19 +#define APROP_Species 20 +#define APROP_Nametag 21 +#define APROP_Score 22 +#define APROP_Notrigger 23 +#define APROP_DamageFactor 24 +#define APROP_MasterTID 25 +#define APROP_TargetTID 26 +#define APROP_TracerTID 27 +#define APROP_Waterlevel 28 +#define APROP_ScaleX 29 +#define APROP_ScaleY 30 +#define APROP_Dormant 31 +#define APROP_Mass 32 +#define APROP_Accuracy 33 +#define APROP_Stamina 34 +#define APROP_Height 35 +#define APROP_Radius 36 +#define APROP_Reactiontime 37 +#define APROP_MeleeRange 38 +#define APROP_ViewHeight 39 +#define APROP_AttackZOffset 40 +#define APROP_StencilColor 41 +#define APROP_Friction 42 +#define APROP_DamageMultiplier 43 + +// Render Styles ------------------------------------------------------------ + +#define STYLE_None 0 // Do not draw +#define STYLE_Normal 1 // Normal; just copy the image to the screen +#define STYLE_Fuzzy 2 // Draw silhouette using "fuzz" effect +#define STYLE_SoulTrans 3 // Draw translucent with amount in r_transsouls +#define STYLE_OptFuzzy 4 // Draw as fuzzy, translucent or shadow, based on user preference +#define STYLE_Stencil 5 // Draw as solid color +#define STYLE_AddStencil 6 // Draw as additive solid color +#define STYLE_AddShaded 7 // +#define STYLE_Translucent 64 // Draw translucent +#define STYLE_Add 65 // Draw additive +#define STYLE_Shaded 66 // +#define STYLE_TranslucentStencil 67 +#define STYLE_Shadow 68 // Draw dark translucent stencil +#define STYLE_Subtract 69 // Draw subtractive + +// Properties you can use with GetLevelInfo() ------------------------------- + +#define LEVELINFO_PAR_TIME 0 +#define LEVELINFO_CLUSTERNUM 1 +#define LEVELINFO_LEVELNUM 2 +#define LEVELINFO_TOTAL_SECRETS 3 +#define LEVELINFO_FOUND_SECRETS 4 +#define LEVELINFO_TOTAL_ITEMS 5 +#define LEVELINFO_FOUND_ITEMS 6 +#define LEVELINFO_TOTAL_MONSTERS 7 +#define LEVELINFO_KILLED_MONSTERS 8 +#define LEVELINFO_SUCK_TIME 9 + +// Properties you can use with GetPlayerInfo() ------------------------------ + +#define PLAYERINFO_TEAM 0 +#define PLAYERINFO_AIMDIST 1 +#define PLAYERINFO_COLOR 2 +#define PLAYERINFO_GENDER 3 +#define PLAYERINFO_NEVERSWITCH 4 +#define PLAYERINFO_MOVEBOB 5 +#define PLAYERINFO_STILLBOB 6 +#define PLAYERINFO_PLAYERCLASS 7 +#define PLAYERINFO_FOV 8 +#define PLAYERINFO_DESIREDFOV 9 + + +// Flags for ReplaceTextures ------------------------------------------------ + +#define NOT_BOTTOM 1 +#define NOT_MIDDLE 2 +#define NOT_TOP 4 +#define NOT_FLOOR 8 +#define NOT_CEILING 16 + +// Flags for SectorDamage --------------------------------------------------- + +#define DAMAGE_PLAYERS 1 +#define DAMAGE_NONPLAYERS 2 +#define DAMAGE_IN_AIR 4 +#define DAMAGE_SUBCLASSES_PROTECT 8 + +// Flags for MorphActor ----------------------------------------------------- + +#define MRF_OLDEFFECTS 0x00000000 +#define MRF_ADDSTAMINA 0x00000001 +#define MRF_FULLHEALTH 0x00000002 +#define MRF_UNDOBYTOMEOFPOWER 0x00000004 +#define MRF_UNDOBYCHAOSDEVICE 0x00000008 +#define MRF_FAILNOTELEFRAG 0x00000010 +#define MRF_FAILNOLAUGH 0x00000020 +#define MRF_WHENINVULNERABLE 0x00000040 +#define MRF_LOSEACTUALWEAPON 0x00000080 +#define MRF_NEWTIDBEHAVIOUR 0x00000100 +#define MRF_UNDOBYDEATH 0x00000200 +#define MRF_UNDOBYDEATHFORCED 0x00000400 +#define MRF_UNDOBYDEATHSAVES 0x00000800 + +// Shared spawnable things from Hexen. You can spawn these in the other ----- +// games if you provide sprites for them, otherwise they'll be invisible. --- + +#define T_ROCK1 41 +#define T_ROCK2 42 +#define T_ROCK3 43 +#define T_DIRT1 44 +#define T_DIRT2 45 +#define T_DIRT3 46 +#define T_DIRT4 47 +#define T_DIRT5 48 +#define T_DIRT6 49 +#define T_STAINEDGLASS1 54 +#define T_STAINEDGLASS2 55 +#define T_STAINEDGLASS3 56 +#define T_STAINEDGLASS4 57 +#define T_STAINEDGLASS5 58 +#define T_STAINEDGLASS6 59 +#define T_STAINEDGLASS7 60 +#define T_STAINEDGLASS8 61 +#define T_STAINEDGLASS9 62 +#define T_STAINEDGLASS0 63 + +// Doom Spawnable things (used for thingcount() and thing spawners) --------- + +#define T_NONE 0 +#define T_SHOTGUY 1 +#define T_CHAINGUY 2 +#define T_BARON 3 +#define T_ZOMBIE 4 +#define T_IMP 5 +#define T_ARACHNOTRON 6 +#define T_SPIDERMASTERMIND 7 +#define T_DEMON 8 +#define T_SPECTRE 9 +#define T_IMPFIREBALL 10 +#define T_CLIP 11 +#define T_SHELLS 12 +#define T_CACODEMON 19 +#define T_REVENANT 20 +#define T_BRIDGE 21 +#define T_ARMORBONUS 22 +#define T_STIMPACK 23 +#define T_MEDKIT 24 +#define T_SOULSPHERE 25 +#define T_SHOTGUN 27 +#define T_CHAINGUN 28 +#define T_ROCKETLAUNCHER 29 +#define T_PLASMAGUN 30 +#define T_BFG 31 +#define T_CHAINSAW 32 +#define T_SUPERSHOTGUN 33 +#define T_PLASMABOLT 51 +#define T_TRACER 53 +#define T_GREENARMOR 68 +#define T_BLUEARMOR 69 +#define T_CELL 75 +#define T_BLUEKEYCARD 85 +#define T_REDKEYCARD 86 +#define T_YELLOWKEYCARD 87 +#define T_YELLOWSKULLKEY 88 +#define T_REDSKULLKEY 89 +#define T_BLUESKULLKEY 90 +#define T_TEMPLARGEFLAME 98 +#define T_STEALTHBARON 100 +#define T_STEALTHKNIGHT 101 +#define T_STEALTHZOMBIE 102 +#define T_STEALTHSHOTGUY 103 + +#define T_LOSTSOUL 110 +#define T_VILE 111 +#define T_MANCUBUS 112 +#define T_HELLKNIGHT 113 +#define T_CYBERDEMON 114 +#define T_PAINELEMENTAL 115 +#define T_WOLFSS 116 +#define T_STEALTHARACHNOTRON 117 +#define T_STEALTHVILE 118 +#define T_STEALTHCACODEMON 119 +#define T_STEALTHCHAINGUY 120 +#define T_STEALTHSERGEANT 121 +#define T_STEALTHIMP 122 +#define T_STEALTHMANCUBUS 123 +#define T_STEALTHREVENANT 124 +#define T_BARREL 125 +#define T_CACODEMONSHOT 126 +#define T_ROCKET 127 +#define T_BFGSHOT 128 +#define T_ARACHNOTRONPLASMA 129 +#define T_BLOOD 130 +#define T_PUFF 131 +#define T_MEGASPHERE 132 +#define T_INVULNERABILITY 133 +#define T_BERSERK 134 +#define T_INVISIBILITY 135 +#define T_IRONFEET 136 +#define T_COMPUTERMAP 137 +#define T_LIGHTAMP 138 +#define T_AMMOBOX 139 +#define T_ROCKETAMMO 140 +#define T_ROCKETBOX 141 +#define T_BATTERY 142 +#define T_SHELLBOX 143 +#define T_BACKPACK 144 +#define T_GUTS 145 +#define T_BLOODPOOL 146 +#define T_BLOODPOOL1 147 +#define T_BLOODPOOL2 148 +#define T_FLAMINGBARREL 149 +#define T_BRAINS 150 +#define T_SCRIPTEDMARINE 151 +#define T_HEALTHBONUS 152 +#define T_MANCUBUSSHOT 153 +#define T_BARONBALL 154 + +// Heretic Spawnable things (used for thingcount() and thing spawners) ------ + +#define T_CLINK 1 +#define T_MUMMYLEADER 2 +#define T_BEAST 3 +#define T_MUMMY 4 +//#define T_IMP 5 // Defined above +#define T_KNIGHT 6 +#define T_IMPLEADER 7 +#define T_MUMMYGHOST 8 +#define T_MUMMYLEADERGHOST 9 +//#define T_IMPFIREBALL 10 +#define T_WIMPYWANDAMMO 11 +#define T_HEFTYWANDAMMO 12 +#define T_ITEMEGG 14 +#define T_ITEMFLIGHT 15 +#define T_ITEMTELEPORT 18 +#define T_WIZARD 19 +#define T_IRONLICH 20 +#define T_ITEMHEALTHPOTION 23 +#define T_ITEMHEALTHFLASH 24 // incorrect name but keep it for compatibility +#define T_ITEMHEALTHFLASK 24 +#define T_ITEMHEALTHFULL 25 +#define T_CROSSBOW 27 +#define T_BLASTER 28 +#define T_PHOENIXROD 29 +#define T_SKULLROD 30 +#define T_MACE 31 +#define T_GAUNTLETS 32 +#define T_WIMPYCROSSBOWAMMO 33 +#define T_HEFTYCROSSBOWAMMO 34 +#define T_WIMPYMACEAMMO 35 +#define T_HEFTYMACEAMMO 36 +#define T_WIMPYBLASTERAMMO 37 +#define T_HEFTYBLASTERAMMO 38 +#define T_MORPHBLAST 40 +#define T_SHIELD1 68 +#define T_SHIELD2 69 +#define T_ITEMTIMEBOMB 72 +#define T_ITEMTORCH 73 +#define T_BLUEKEY 85 +#define T_GREENKEY 86 +#define T_YELLOWKEY 87 + +#define T_SOUND_WIND 110 +#define T_SOUND_WATERFALL 111 + +#define T_BEASTBALL 120 +#define T_FEATHER 121 +#define T_CHICKEN 122 +#define T_VOLCANOBALL 123 +#define T_TINYVOLCANOBALL 124 +#define T_POD 125 +#define T_PODGENERATOR 126 +#define T_KNIGHTAXE 127 +#define T_KNIGHTBLOODAXE 128 +#define T_KNIGHTGHOST 129 +#define T_MUMMYHEAD 131 +#define T_SNAKE 132 +#define T_ITEMINVULNERABILITY 133 +#define T_ITEMTOME 134 +#define T_ITEMINVISIBILITY 135 +#define T_ITEMBAGOFHOLDING 136 +#define T_ITEMALLMAP 137 +#define T_SNAKEPROJECTILE 138 +#define T_SNAKEPROJECTILEBIG 139 +#define T_WIZARDSHOT 140 + +#define T_DSPARILTELEPORTDEST 141 +#define T_DSPARILONSERPENT 142 +#define T_DSPARILALONE 143 +#define T_SERPENTFIREBALL 144 +#define T_DSPARILBLUESHOT 145 +#define T_DSPARILWIZARDSPAWNER 146 + +#define T_CROSSBOWMAINBLAST 147 +#define T_CROSSBOWMINIBLAST 148 +#define T_CROSSBOWPOWERBLAST 149 +#define T_VOLCANO 150 +#define T_POWERWANDMINIBLAST 151 +#define T_POWERWANDBIGGERBLAST 152 +#define T_DEATHBALL 153 +#define T_NOGRAVITYMACEBALL 154 +#define T_BOUNCYMACEBALL 155 +#define T_HEAVYMACEBALL 156 +#define T_RIPPER 157 +#define T_WIMPYSKULLRODAMMO 158 +#define T_HEFTYSKULLRODAMMO 159 +#define T_SKULLRODBLAST 160 +#define T_WIMPYPHOENIXRODAMMO 161 +#define T_HEFTYPHOENIXRODAMMO 162 +#define T_PHOENIXSHOT 163 +#define T_IRONLICHBLUESHOT 164 +#define T_WHIRLWIND 165 +#define T_REDTELEGLITTER 166 +#define T_BLUETELEGLITTER 167 + +// Hexen Spawnable things (used for thingcount() and thing spawners) ------ + +#define T_CENTAUR 1 +#define T_CENTAURLEADER 2 +#define T_DEMON1 3 +#define T_ETTIN 4 +#define T_FIREGARGOYLE 5 +#define T_WATERLURKER 6 +#define T_WATERLURKERLEADER 7 +#define T_WRAITH 8 +#define T_WRAITHBURIED 9 +#define T_FIREBALL1 10 +#define T_MANA1 11 +#define T_MANA2 12 +#define T_ITEMBOOTS 13 +#define T_ITEMPORK 14 +#define T_ITEMSUMMON 16 +#define T_ITEMTPORTOTHER 17 +#define T_BISHOP 19 +#define T_ICEGOLEM 20 +#define T_DRAGONSKINBRACERS 22 +#define T_ITEMBOOSTMANA 26 +#define T_FIGHTERAXE 27 +#define T_FIGHTERHAMMER 28 +#define T_FIGHTERSWORD1 29 +#define T_FIGHTERSWORD2 30 +#define T_FIGHTERSWORD3 31 +#define T_CLERICSTAFF 32 +#define T_CLERICHOLY1 33 +#define T_CLERICHOLY2 34 +#define T_CLERICHOLY3 35 +#define T_MAGESHARDS 36 +#define T_MAGESTAFF1 37 +#define T_MAGESTAFF2 38 +#define T_MAGESTAFF3 39 +#define T_ARROW 50 +#define T_DART 51 +#define T_POISONDART 52 +#define T_RIPPERBALL 53 +#define T_BLADE 64 +#define T_ICESHARD 65 +#define T_FLAME_SMALL 66 +#define T_FLAME_LARGE 67 +#define T_MESHARMOR 68 +#define T_FALCONSHIELD 69 +#define T_PLATINUMHELM 70 +#define T_AMULETOFWARDING 71 +#define T_ITEMFLECHETTE 72 +#define T_ITEMREPULSION 74 +#define T_MANA3 75 +#define T_PUZZSKULL 76 +#define T_PUZZGEMBIG 77 +#define T_PUZZGEMRED 78 +#define T_PUZZGEMGREEN1 79 +#define T_PUZZGEMGREEN2 80 +#define T_PUZZGEMBLUE1 81 +#define T_PUZZGEMBLUE2 82 +#define T_PUZZBOOK1 83 +#define T_PUZZBOOK2 84 +#define T_METALKEY 85 +#define T_SMALLMETALKEY 86 +#define T_AXEKEY 87 +#define T_FIREKEY 88 +#define T_EMERALDKEY 89 +#define T_MACEKEY 90 +#define T_SILVERKEY 91 +#define T_RUSTYKEY 92 +#define T_HORNKEY 93 +#define T_SERPENTKEY 94 +#define T_WATERDRIP 95 +#define T_TEMPSMALLFLAME 96 +#define T_PERMSMALLFLAME 97 +#define T_PERMLARGEFLAME 99 +#define T_DEMON_MASH 100 +#define T_DEMON2_MASH 101 +#define T_ETTIN_MASH 102 +#define T_CENTAUR_MASH 103 +#define T_THRUSTSPIKEUP 104 +#define T_THRUSTSPIKEDOWN 105 +#define T_FLESH_DRIP1 106 +#define T_FLESH_DRIP2 107 +#define T_SPARK_DRIP 108 + + +// Flags returned by ClassifyActor + +#define ACTOR_NONE 0 +#define ACTOR_WORLD 1 +#define ACTOR_PLAYER 2 +#define ACTOR_BOT 4 +#define ACTOR_VOODOODOLL 8 +#define ACTOR_MONSTER 16 +#define ACTOR_ALIVE 32 +#define ACTOR_DEAD 64 +#define ACTOR_MISSILE 128 +#define ACTOR_GENERIC 256 + + +// Physical volumes for SoundSequenceOnSector + +#define SECSEQ_FLOOR 1 +#define SECSEQ_CEILING 2 +#define SECSEQ_FULLHEIGHT 3 +#define SECSEQ_INTERIOR 4 + +// Channels for PlaySound and StopSound + +#define CHAN_AUTO 0 +#define CHAN_WEAPON 1 +#define CHAN_VOICE 2 +#define CHAN_ITEM 3 +#define CHAN_BODY 4 +#define CHAN_5 5 +#define CHAN_6 6 +#define CHAN_7 7 + +// Modifier flags for PlaySound + +#define CHAN_LISTENERZ 8 +#define CHAN_MAYBE_LOCAL 16 +#define CHAN_UI 32 +#define CHAN_NOPAUSE 64 + +// Standard attenuation values for PlaySound + +#define ATTN_NONE 0 // full volume the entire level +#define ATTN_NORM 1.0 +#define ATTN_IDLE 1.001 +#define ATTN_STATIC 3.0 // dimish very rapidly with distance + +// Identifiers for PlayActorSound + +#define SOUND_See 0 +#define SOUND_Attack 1 +#define SOUND_Pain 2 +#define SOUND_Death 3 +#define SOUND_Active 4 +#define SOUND_Use 5 +#define SOUND_Bounce 6 +#define SOUND_WallBounce 7 +#define SOUND_CrushPain 8 +#define SOUND_Howl 9 + +// Flags for SpawnDecal + +#define SDF_ABSANGLE 1 +#define SDF_PERMANENT 2 + +// Actor pointer selectors + +#DEFINE AAPTR_DEFAULT 0 +#DEFINE AAPTR_NULL 0x1 +#DEFINE AAPTR_TARGET 0x2 +#DEFINE AAPTR_MASTER 0x4 +#DEFINE AAPTR_TRACER 0x8 + +#DEFINE AAPTR_PLAYER_GETTARGET 0x10 +#DEFINE AAPTR_PLAYER_GETCONVERSATION 0x20 + +#DEFINE AAPTR_PLAYER1 0x40 +#DEFINE AAPTR_PLAYER2 0x80 +#DEFINE AAPTR_PLAYER3 0x100 +#DEFINE AAPTR_PLAYER4 0x200 +#DEFINE AAPTR_PLAYER5 0x400 +#DEFINE AAPTR_PLAYER6 0x800 +#DEFINE AAPTR_PLAYER7 0x1000 +#DEFINE AAPTR_PLAYER8 0x2000 + +#DEFINE AAPTR_FRIENDPLAYER 0x4000 +#DEFINE AAPTR_GET_LINETARGET 0x8000 + +// Actor pointer operation flags + +#DEFINE PTROP_UNSAFETARGET 1 +#DEFINE PTROP_UNSAFEMASTER 2 +#DEFINE PTROP_NOSAFEGUARDS PTROP_UNSAFETARGET |PTROP_UNSAFEMASTER + +// Line activation flags + +#define SPAC_Cross 1 // when player crosses line +#define SPAC_Use 2 // when player uses line +#define SPAC_MCross 4 // when monster crosses line +#define SPAC_Impact 8 // when projectile hits line +#define SPAC_Push 16 // when player pushes line +#define SPAC_PCross 32 // when projectile crosses line +#define SPAC_UseThrough 64 // when player uses line (doesn't block) +#define SPAC_AnyCross 128 // when anything without the TELEPORT flag crosses the line +#define SPAC_MUse 256 // monsters can use +#define SPAC_MPush 512 // monsters can push +#define SPAC_UseBack 1024 // can be used from the back side + +#define SPAC_None 0 + +// GetArmorInfo + +#define ARMORINFO_CLASSNAME 0 +#define ARMORINFO_SAVEAMOUNT 1 +#define ARMORINFO_SAVEPERCENT 2 +#define ARMORINFO_MAXABSORB 3 +#define ARMORINFO_MAXFULLABSORB 4 +#define ARMORINFO_ACTUALSAVEAMOUNT 5 + +// ========================================================================== +// Skulltag Definitions +// ========================================================================== + +// Skulltag Teams ----------------------------------------------------------- +#define TEAM_BLUE 0 +#define TEAM_RED 1 +#define NO_TEAM 2 + +// Team properties ---------------------------------------------------------- +#define TPROP_Name 0 +#define TPROP_Score 1 +#define TPROP_IsValid 2 +#define TPROP_NumPlayers 3 +#define TPROP_NumLivePlayers 4 +#define TPROP_TextColor 5 +#define TPROP_PlayerStartNum 6 +#define TPROP_Spread 7 +#define TPROP_Carrier 8 +#define TPROP_Assister 9 +#define TPROP_FragCount 10 +#define TPROP_DeathCount 11 +#define TPROP_WinCount 12 +#define TPROP_PointCount 13 +#define TPROP_ReturnTics 14 +#define TPROP_TeamItem 15 +#define TPROP_WinnerTheme 16 +#define TPROP_LoserTheme 17 + +// Skulltag Invasion -------------------------------------------------------- +#define IS_WAITINGFORPLAYERS 0 +#define IS_FIRSTCOUNTDOWN 1 +#define IS_INPROGRESS 2 +#define IS_BOSSFIGHT 3 +#define IS_WAVECOMPLETE 4 +#define IS_COUNTDOWN 5 + + +#define T_GRENADE 216 +#define T_BFG10KSHOT 217 +#define T_DARKIMPFIREBALL 218 +#define T_CACOLANTERNSHOT 219 +#define T_ABADDONSHOT 221 + +// Skulltag Monsters -------------------------------------------------------- +#define T_DARKIMP 155 +#define T_BLOODDEMON 156 +#define T_SSGGUY 157 +#define T_HECTEBUS 158 +#define T_CACOLANTERN 159 +#define T_BELPHEGOR 215 +#define T_ABADDON 220 + +// Skulltag Weapons --------------------------------------------------------- +#define T_PISTOL 162 +#define T_GRENADELAUNCHER 163 +#define T_RAILGUN 164 +#define T_BFG10000 165 +#define T_MINIGUN 214 + +// Skulltag Armor/Health Items ---------------------------------------------- +#define T_MAXHEALTHBONUS 166 +#define T_MAXARMORBONUS 167 +#define T_REDARMOR 168 + +// Skulltag Powerups -------------------------------------------------------- +#define T_TURBOSPHERE 169 +#define T_ANTIGRAVBELT 170 +#define T_TIMEFREEZER 171 +#define T_INFRAGOGGLES 172 +#define T_INFRATRACKER 173 +#define T_TRANSLUCENCY 174 +#define T_DOOMSPHERE 175 +#define T_RANDOMPOWERUP 176 + +// Skulltag Flags ----------------------------------------------------------- +#define T_BLUEFLAG 177 +#define T_REDFLAG 178 +#define T_WHITEFLAG 179 + +// Skulltag Runes ----------------------------------------------------------- +#define T_STRENGTH 180 +#define T_RAGE 181 +#define T_DRAIN 182 +#define T_SPREAD 183 +#define T_RESISTANCE 184 +#define T_REGENERATION 185 +#define T_PROSPERITY 186 +#define T_REFLECTION 187 +#define T_HIGHJUMP 188 +#define T_HASTE 189 + +// Zandronum database additions --------------------------------------------- +#define DB_ORDER_ASC 0 +#define DB_ORDER_DESC 1 + +// Events when you have input grabbed + +#define EV_KeyDown 1 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_KeyRepeat 2 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_KeyUp 3 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_Char 4 // data1: translated character for text input +#define EV_MouseMove 5 // data1: x, data2: y +#define EV_LButtonDown 6 +#define EV_LButtonUp 7 +#define EV_LButtonDblClick 8 +#define EV_MButtonDown 9 +#define EV_MButtonUp 10 +#define EV_MButtonDblClick 11 +#define EV_RButtonDown 12 +#define EV_RButtonUp 13 +#define EV_RButtonDblClick 14 +#define EV_WheelDown 15 +#define EV_WheelUp 16 + +// Key modifiers (or'd with event type) + +#define GKM_SHIFT 256 +#define GKM_CTRL 512 +#define GKM_ALT 1024 + +// Button modifiers are only valid for EV_MouseMove events + +#define GKM_LBUTTON 2048 +#define GKM_MBUTTON 4096 +#define GKM_RBUTTON 8192 + +// Special codes for some GUI keys, including a few real ASCII codes. + +#define GK_PGDN 1 +#define GK_PGUP 2 +#define GK_HOME 3 +#define GK_END 4 +#define GK_LEFT 5 +#define GK_RIGHT 6 +#define GK_ALERT 7 // ASCII bell +#define GK_BACKSPACE 8 // ASCII +#define GK_TAB 9 // ASCII +#define GK_LINEFEED 10 // ASCII +#define GK_DOWN 10 +#define GK_VTAB 11 // ASCII +#define GK_UP 11 +#define GK_FORMFEED 12 // ASCII +#define GK_RETURN 13 // ASCII +#define GK_F1 14 +#define GK_F2 15 +#define GK_F3 16 +#define GK_F4 17 +#define GK_F5 18 +#define GK_F6 19 +#define GK_F7 20 +#define GK_F8 21 +#define GK_F9 22 +#define GK_F10 23 +#define GK_F11 24 +#define GK_F12 25 +#define GK_DEL 26 +#define GK_ESCAPE 27 // ASCII +#define GK_FREE1 28 +#define GK_FREE2 29 +#define GK_FREE3 30 +#define GK_CESCAPE 31 // color escape + +#define CHANGELEVEL_KEEPFACING 1 +#define CHANGELEVEL_RESETINVENTORY 2 +#define CHANGELEVEL_NOMONSTERS 4 +#define CHANGELEVEL_CHANGESKILL 8 +#define CHANGELEVEL_NOINTERMISSION 16 +#define CHANGELEVEL_RESETHEALTH 32 +#define CHANGELEVEL_PRERAISEWEAPON 64 + +#define NO_CHANGE 32767.0 + +#define SECF_SILENT 1 +#define SECF_NOFALLINGDAMAGE 2 +#define SECF_FLOORDROP 4 +#define SECF_NORESPAWN 8 + +#define BLOCKF_CREATURES 1 +#define BLOCKF_MONSTERS 2 +#define BLOCKF_PLAYERS 4 +#define BLOCKF_FLOATERS 8 +#define BLOCKF_PROJECTILES 16 +#define BLOCKF_EVERYTHING 32 +#define BLOCKF_RAILING 64 +#define BLOCKF_USE 128 +#define BLOCKF_SIGHT 256 +#define BLOCKF_HITSCAN 512 + +#define FOGP_DENSITY 0 +#define FOGP_OUTSIDEDENSITY 1 +#define FOGP_SKYFOG 2 + +#define PRINTNAME_LEVELNAME -1 +#define PRINTNAME_LEVEL -2 +#define PRINTNAME_SKILL -3 + +#define CSF_NOFAKEFLOORS 1 +#define CSF_NOBLOCKALL 2 + +#define FHF_NORANDOMPUFFZ 1 +#define FHF_NOIMPACTDECAL 2 + +// PickActor flags + +#define PICKAF_FORCETID 1 +#define PICKAF_RETURNTID 2 + +// magic value to set the ice translation through ACS +#define TRANSLATION_ICE 0x100007 + +// Actor flags +#define MF_SPECIAL 0x00000001 +#define MF_SOLID 0x00000002 +#define MF_SHOOTABLE 0x00000004 +#define MF_NOSECTOR 0x00000008 +#define MF_NOBLOCKMAP 0x00000010 +#define MF_AMBUSH 0x00000020 +#define MF_JUSTHIT 0x00000040 +#define MF_JUSTATTACKED 0x00000080 +#define MF_SPAWNCEILING 0x00000100 +#define MF_NOGRAVITY 0x00000200 +#define MF_DROPOFF 0x00000400 +#define MF_PICKUP 0x00000800 +#define MF_NOCLIP 0x00001000 +#define MF_INCHASE 0x00002000 +#define MF_FLOAT 0x00004000 +#define MF_TELEPORT 0x00008000 +#define MF_MISSILE 0x00010000 +#define MF_DROPPED 0x00020000 +#define MF_SHADOW 0x00040000 +#define MF_NOBLOOD 0x00080000 +#define MF_CORPSE 0x00100000 +#define MF_INFLOAT 0x00200000 +#define MF_INBOUNCE 0x00200000 +#define MF_COUNTKILL 0x00400000 +#define MF_COUNTITEM 0x00800000 +#define MF_SKULLFLY 0x01000000 +#define MF_NOTDMATCH 0x02000000 +#define MF_SPAWNSOUNDSOURCE 0x04000000 +#define MF_FRIENDLY 0x08000000 +#define MF_UNMORPHED 0x10000000 +#define MF_NOLIFTDROP 0x20000000 +#define MF_STEALTH 0x40000000 +#define MF_ICECORPSE 0x80000000 + +// Linedef flags +#define ML_BLOCKING 0x00000001 +#define ML_BLOCKMONSTERS 0x00000002 +#define ML_TWOSIDED 0x00000004 +#define ML_DONTPEGTOP 0x00000008 +#define ML_DONTPEGBOTTOM 0x00000010 +#define ML_SECRET 0x00000020 +#define ML_SOUNDBLOCK 0x00000040 +#define ML_DONTDRAW 0x00000080 +#define ML_MAPPED 0x00000100 +#define ML_REPEAT_SPECIAL 0x00000200 +#define ML_ADDTRANS 0x00000400 +#define ML_MONSTERSCANACTIVATE 0x00002000 +#define ML_BLOCK_PLAYERS 0x00004000 +#define ML_BLOCKEVERYTHING 0x00008000 +#define ML_ZONEBOUNDARY 0x00010000 +#define ML_RAILING 0x00020000 +#define ML_BLOCK_FLOATERS 0x00040000 +#define ML_CLIP_MIDTEX 0x00080000 +#define ML_WRAP_MIDTEX 0x00100000 +#define ML_3DMIDTEX 0x00200000 +#define ML_CHECKSWITCHRANGE 0x00400000 +#define ML_FIRSTSIDEONLY 0x00800000 +#define ML_BLOCKPROJECTILE 0x01000000 +#define ML_BLOCKUSE 0x02000000 +#define ML_BLOCKSIGHT 0x04000000 +#define ML_BLOCKHITSCAN 0x08000000 + +#define QF_RELATIVE 1 +#define QF_SCALEDOWN 1 << 1 +#define QF_SCALEUP 1 << 2 +#define QF_MAX 1 << 3 +#define QF_FULLINTENSITY 1 << 4 +#define QF_WAVE 1 << 5 + +#define WARPF_ABSOLUTEOFFSET 0x1 +#define WARPF_ABSOLUTEANGLE 0x2 +#define WARPF_USECALLERANGLE 0x4 +#define WARPF_NOCHECKPOSITION 0x8 +#define WARPF_INTERPOLATE 0x10 +#define WARPF_WARPINTERPOLATION 0x20 +#define WARPF_COPYINTERPOLATION 0x40 +#define WARPF_STOP 0x80 +#define WARPF_TOFLOOR 0x100 +#define WARPF_TESTONLY 0x200 +#define WARPF_ABSOLUTEPOSITION 0x400 +#define WARPF_BOB 0x800 +#define WARPF_MOVEPTR 0x1000 +#define WARPF_USEPTR 0x2000 +#define WARPF_COPYVELOCITY 0x4000 +#define WARPF_COPYPITCH 0x8000 diff --git a/Build/Compilers/ZDoom/zspecial.acs b/Build/Compilers/ZDoom/zspecial.acs new file mode 100644 index 0000000..22e7298 --- /dev/null +++ b/Build/Compilers/ZDoom/zspecial.acs @@ -0,0 +1,374 @@ +//************************************************************************** +//** +//** zspecials.acs +//** +//************************************************************************** + +special +// 1:Polyobj_StartLine + 2:Polyobj_RotateLeft(3), + 3:Polyobj_RotateRight(3), + 4:Polyobj_Move(4), +// 5:Polyobj_ExplicitLine + 6:Polyobj_MoveTimes8(4), + 7:Polyobj_DoorSwing(4), + 8:Polyobj_DoorSlide(5), + 9:Line_Horizon(0), + 10:Door_Close(2,3), + 11:Door_Open(2,3), + 12:Door_Raise(3,4), + 13:Door_LockedRaise(4,5), + 14:Door_Animated(3,4), + 15:Autosave(0), +// 16:Transfer_WallLight + 17:Thing_Raise(1), + 18:StartConversation(1,2), + 19:Thing_Stop(1), + 20:Floor_LowerByValue(3), + 21:Floor_LowerToLowest(2), + 22:Floor_LowerToNearest(2), + 23:Floor_RaiseByValue(3), + 24:Floor_RaiseToHighest(2), + 25:Floor_RaiseToNearest(2), + 26:Stairs_BuildDown(5), + 27:Stairs_BuildUp(5), + 28:Floor_RaiseAndCrush(3,4), + 29:Pillar_Build(3), + 30:Pillar_Open(4), + 31:Stairs_BuildDownSync(4), + 32:Stairs_BuildUpSync(4), + 33:ForceField(0), + 34:ClearForceField(1), + 35:Floor_RaiseByValueTimes8(3), + 36:Floor_LowerByValueTimes8(3), + 37:Floor_MoveToValue(3,4), + 38:Ceiling_Waggle(5), + 39:Teleport_ZombieChanger(2), + 40:Ceiling_LowerByValue(3), + 41:Ceiling_RaiseByValue(3), + 42:Ceiling_CrushAndRaise(3,4), + 43:Ceiling_LowerAndCrush(3,4), + 44:Ceiling_CrushStop(1), + 45:Ceiling_CrushRaiseAndStay(3,4), + 46:Floor_CrushStop(1), + 47:Ceiling_MoveToValue(3,4), +// 48:Sector_Attach3dMidtex + 49:GlassBreak(0,1), +// 50:ExtraFloor_LightOnly + 51:Sector_SetLink(4), + 52:Scroll_Wall(5), + 53:Line_SetTextureOffset(5), + 54:Sector_ChangeFlags(3), + 55:Line_SetBlocking(3), + 56:Line_SetTextureScale(5), +// 57: Sector_SetPortal +// 58: Sector_CopyScroller + 59:Polyobj_OR_MoveToSpot(3), + 60:Plat_PerpetualRaise(3), + 61:Plat_Stop(1), + 62:Plat_DownWaitUpStay(3), + 63:Plat_DownByValue(4), + 64:Plat_UpWaitDownStay(3), + 65:Plat_UpByValue(4), + 66:Floor_LowerInstant(3), + 67:Floor_RaiseInstant(3), + 68:Floor_MoveToValueTimes8(4), + 69:Ceiling_MoveToValueTimes8(4), + 70:Teleport(1,3), + 71:Teleport_NoFog(1,4), + 72:ThrustThing(2,4), + 73:DamageThing(1,2), + 74:Teleport_NewMap(2,3), + 75:Teleport_EndGame(0), + 76:TeleportOther(3), + 77:TeleportGroup(5), + 78:TeleportInSector(4,5), + 79:Thing_SetConversation(2), + 80:ACS_Execute(2,5), + 81:ACS_Suspend(2), + 82:ACS_Terminate(2), + 83:ACS_LockedExecute(5), + 84:ACS_ExecuteWithResult(1,5), + 85:ACS_LockedExecuteDoor(5), + 86:Polyobj_MoveToSpot(3), + 87:Polyobj_Stop(1), + 88:Polyobj_MoveTo(4), + 89:Polyobj_OR_MoveTo(4), + 90:Polyobj_OR_RotateLeft(3), + 91:Polyobj_OR_RotateRight(3), + 92:Polyobj_OR_Move(4), + 93:Polyobj_OR_MoveTimes8(4), + 94:Pillar_BuildAndCrush(4,5), + 95:FloorAndCeiling_LowerByValue(3), + 96:FloorAndCeiling_RaiseByValue(3), + 97:Ceiling_LowerAndCrushDist(3,5), + 98:Sector_SetTranslucent(3,4), + 99:Floor_RaiseAndCrushDoom(3,4), +// 100:Scroll_Texture_Left +// 101:Scroll_Texture_Right +// 102:Scroll_Texture_Up +// 103:Scroll_Texture_Down + 104:Ceiling_CrushAndRaiseSilentDist(4,5), + + 109:Light_ForceLightning(1), + 110:Light_RaiseByValue(2), + 111:Light_LowerByValue(2), + 112:Light_ChangeToValue(2), + 113:Light_Fade(3), + 114:Light_Glow(4), + 115:Light_Flicker(3), + 116:Light_Strobe(5), + 117:Light_Stop(1), +// 118:Plane_Copy + 119:Thing_Damage(2,3), + 120:Radius_Quake(5), +// 121:Line_SetIdentification + + 125:Thing_Move(2,3), + + 127:Thing_SetSpecial(5), + 128:ThrustThingZ(4), + 129:UsePuzzleItem(0), // only for setting it on a line. Cannot be called! + 130:Thing_Activate(1), + 131:Thing_Deactivate(1), + 132:Thing_Remove(1), + 133:Thing_Destroy(1,3), + 134:Thing_Projectile(5), + 135:Thing_Spawn(3,4), + 136:Thing_ProjectileGravity(5), + 137:Thing_SpawnNoFog(3,4), + 138:Floor_Waggle(5), + 139:Thing_SpawnFacing(2,4), + 140:Sector_ChangeSound(2), + + 143:Player_RemoveItem(2), // Skulltag Functions + 144:Player_GiveItem(2), // Skulltag Functions + 145:Player_SetTeam(1), // Skulltag Functions + 152:Team_Score(2), // Skulltag Functions + 153:Team_GivePoints(3), // Skulltag Functions + 154:Teleport_NoStop(2, 3), + + 157:SetGlobalFogParameter(2), // GZDoom only! + 158:FS_Execute(1,4), + 159:Sector_SetPlaneReflection(3), // GZDoom only! +// 160:Sector_Set3DFloor +// 161:Sector_SetContents + + 168:Ceiling_CrushAndRaiseDist(3,5), + 169:Generic_Crusher2(5), + 170:Sector_SetCeilingScale2(3), + 171:Sector_SetFloorScale2(3), + 172:Plat_UpNearestWaitDownStay(3), + 173:NoiseAlert(2), + 174:SendToCommunicator(4), + 175:Thing_ProjectileIntercept(5), + 176:Thing_ChangeTID(2), + 177:Thing_Hate(2,3), + 178:Thing_ProjectileAimed(4,5), + 179:ChangeSkill(1), + 180:Thing_SetTranslation(2), +// 181:Plane_Align, + 182:Line_Mirror(0), + 183:Line_AlignCeiling(2), + 184:Line_AlignFloor(2), + 185:Sector_SetRotation(3), + 186:Sector_SetCeilingPanning(5), + 187:Sector_SetFloorPanning(5), + 188:Sector_SetCeilingScale(5), + 189:Sector_SetFloorScale(5), + 191:SetPlayerProperty(3), + 192:Ceiling_LowerToHighestFloor(2), + 193:Ceiling_LowerInstant(3), + 194:Ceiling_RaiseInstant(3), + 195:Ceiling_CrushRaiseAndStayA(4,5), + 196:Ceiling_CrushAndRaiseA(4,5), + 197:Ceiling_CrushAndRaiseSilentA(4,5), + 198:Ceiling_RaiseByValueTimes8(3), + 199:Ceiling_LowerByValueTimes8(3), + 200:Generic_Floor(5), + 201:Generic_Ceiling(5), + 202:Generic_Door(5), + 203:Generic_Lift(5), + 204:Generic_Stairs(5), + 205:Generic_Crusher(5), + 206:Plat_DownWaitUpStayLip(4,5), + 207:Plat_PerpetualRaiseLip(4), + 208:TranslucentLine(2,3), +// 209:Transfer_Heights, +// 210:Transfer_FloorLight, +// 211:Transfer_CeilingLight, + 212:Sector_SetColor(4,5), + 213:Sector_SetFade(4), + 214:Sector_SetDamage(3), + 215:Teleport_Line(2), + 216:Sector_SetGravity(3), + 217:Stairs_BuildUpDoom(5), + 218:Sector_SetWind(4), + 219:Sector_SetFriction(2), + 220:Sector_SetCurrent(4), + 221:Scroll_Texture_Both(5), +// 222:Scroll_Texture_Model, + 223:Scroll_Floor(4), + 224:Scroll_Ceiling(4), +// 225:Scroll_Texture_Offsets, + 226:ACS_ExecuteAlways(2,5), +// 227:PointPush_SetForce, + 228:Plat_RaiseAndStayTx0(2,3), + 229:Thing_SetGoal(3,4), + 230:Plat_UpByValueStayTx(3), + 231:Plat_ToggleCeiling(1), + 232:Light_StrobeDoom(3), + 233:Light_MinNeighbor(1), + 234:Light_MaxNeighbor(1), + 235:Floor_TransferTrigger(1), + 236:Floor_TransferNumeric(1), + 237:ChangeCamera(3), + 238:Floor_RaiseToLowestCeiling(2), + 239:Floor_RaiseByValueTxTy(3), + 240:Floor_RaiseByTexture(2), + 241:Floor_LowerToLowestTxTy(2), + 242:Floor_LowerToHighest(3,4), + 243:Exit_Normal(1), + 244:Exit_Secret(1), + 245:Elevator_RaiseToNearest(2), + 246:Elevator_MoveToFloor(2), + 247:Elevator_LowerToNearest(2), + 248:HealThing(1,2), + 249:Door_CloseWaitOpen(3, 4), + 250:Floor_Donut(3), + 251:FloorAndCeiling_LowerRaise(3,4), + 252:Ceiling_RaiseToNearest(2), + 253:Ceiling_LowerToLowest(2), + 254:Ceiling_LowerToFloor(2), + 255:Ceiling_CrushRaiseAndStaySilA(4,5), + + // internal functions have negative values + -1:GetLineUDMFInt(2), + -2:GetLineUDMFFixed(2), + -3:GetThingUDMFInt(2), + -4:GetThingUDMFFixed(2), + -5:GetSectorUDMFInt(2), + -6:GetSectorUDMFFixed(2), + -7:GetSideUDMFInt(3), + -8:GetSideUDMFFixed(3), + -9:GetActorVelX(1), + -10:GetActorVelY(1), + -11:GetActorVelZ(1), + -12:SetActivator(1,2), + -13:SetActivatorToTarget(1), + -14:GetActorViewHeight(1), + -15:GetChar(2), + -16:GetAirSupply(1), + -17:SetAirSupply(2), + -18:SetSkyScrollSpeed(2), + -19:GetArmorType(2), + -20:SpawnSpotForced(4), + -21:SpawnSpotFacingForced(3), + -22:CheckActorProperty(3), + -23:SetActorVelocity(6), + -24:SetUserVariable(3), + -25:GetUserVariable(2), + -26:Radius_Quake2(6), + -27:CheckActorClass(2), + -28:SetUserArray(4), + -29:GetUserArray(3), + -30:SoundSequenceOnActor(2), + -31:SoundSequenceOnSector(3), + -32:SoundSequenceOnPolyobj(2), + -33:GetPolyobjX(1), + -34:GetPolyobjY(1), + -35:CheckSight(3), + -36:SpawnForced(4,6), + -37:AnnouncerSound(2), + -38:SetPointer(2,4), + -39:ACS_NamedExecute(2,5), + -40:ACS_NamedSuspend(2), + -41:ACS_NamedTerminate(2), + -42:ACS_NamedLockedExecute(5), + -43:ACS_NamedLockedExecuteDoor(5), + -44:ACS_NamedExecuteWithResult(1,5), + -45:ACS_NamedExecuteAlways(2,5), + -46:UniqueTID(0,2), + -47:IsTIDUsed(1), + -48:Sqrt(1), + -49:FixedSqrt(1), + -50:VectorLength(2), + -51:SetHUDClipRect(4,6), + -52:SetHUDWrapWidth(1), + -53:SetCVar(2), + -54:GetUserCVar(2), + -55:SetUserCVar(3), + -56:GetCVarString(1), + -57:SetCVarString(2), + -58:GetUserCVarString(2), + -59:SetUserCVarString(3), + -60:LineAttack(4,8), + -61:PlaySound(2,6), + -62:StopSound(1,2), + -63:strcmp(2,3), + -64:stricmp(2,3), + -64:strcasecmp(2,3), // an alias for stricmp + -65:StrLeft(2), + -66:StrRight(2), + -67:StrMid(3), + -68:GetActorClass(1), + -69:GetWeapon(0), + -70:SoundVolume(3), + -71:PlayActorSound(2,6), + -72:SpawnDecal(2,6), + -73:CheckFont(1), + -74:DropItem(2,4), + -75:CheckFlag(2), + -76:SetLineActivation(2), + -77:GetLineActivation(1), + -78:GetActorPowerupTics(2), + -79:ChangeActorAngle(2,3), + -80:ChangeActorPitch(2,3), + -81:GetArmorInfo(1), + -82:DropInventory(2), + -83:PickActor(5,8), + -84:IsPointerEqual(2,4), + -85:CanRaiseActor(1), + -86:SetActorTeleFog(3), + -87:SwapActorTeleFog(1), + -88:SetActorRoll(2), + -89:ChangeActorRoll(2,3), + -90:GetActorRoll(1), + -91:QuakeEx(8,12), + -92:Warp(6,11), + -93:GetMaxInventory(2), + + // Zandronum's + -100:ResetMap(0), + -101:PlayerIsSpectator(1), + -102:ConsolePlayerNumber(0), + -103:GetTeamProperty(2), + -104:GetPlayerLivesLeft(1), + -105:SetPlayerLivesLeft(2), + -106:KickFromGame(2), + -107:GetGamemodeState(0), + -108:SetDBEntry(3), + -109:GetDBEntry(2), + -110:SetDBEntryString(3), + -111:GetDBEntryString(2), + -112:IncrementDBEntry(3), + -113:PlayerIsLoggedIn(1), + -114:GetPlayerAccountName(1), + -115:SortDBEntries(4), + -116:CountDBResults(1), + -117:FreeDBResults(1), + -118:GetDBResultKeyString(2), + -119:GetDBResultValueString(2), + -120:GetDBResultValue(2), + -121:GetDBEntryRank(3), + -122:RequestScriptPuke(4), + -123:BeginDBTransaction(0), + -124:EndDBTransaction(0), + -125:GetDBEntries(1), + + // ZDaemon's + -19620:GetTeamScore(1), + -19621:SetTeamScore(2), + + -100000:__EndOfList__(10); + diff --git a/Build/Compilers/ZDoom/zwvars.acs b/Build/Compilers/ZDoom/zwvars.acs new file mode 100644 index 0000000..b21f4e7 --- /dev/null +++ b/Build/Compilers/ZDoom/zwvars.acs @@ -0,0 +1,8 @@ + +//************************************************************************** +//** +//** zwvars.acs +//** +//************************************************************************** + +// include your world-variable declarations here. diff --git a/Build/Compilers/Zandronum/acc.cfg b/Build/Compilers/Zandronum/acc.cfg new file mode 100644 index 0000000..cd6a413 --- /dev/null +++ b/Build/Compilers/Zandronum/acc.cfg @@ -0,0 +1,17 @@ + +compilers +{ + // This defines what files a compiler uses + // The setting named "program" defines what .exe to run + // The "interface" setting defines what interal interface to use for processing and error feedback + // All others are the required files (the setting names do not matter) + zandronum_acc + { + interface = "AccCompiler"; + program = "acc.exe"; + zcommon = "zcommon.acs"; + zdefs = "zdefs.acs"; + zspecial = "zspecial.acs"; + zwvars = "zwvars.acs"; + } +} diff --git a/Build/Compilers/Zandronum/acc.exe b/Build/Compilers/Zandronum/acc.exe new file mode 100644 index 0000000..005a714 Binary files /dev/null and b/Build/Compilers/Zandronum/acc.exe differ diff --git a/Build/Compilers/Zandronum/commonFuncs.h b/Build/Compilers/Zandronum/commonFuncs.h new file mode 100644 index 0000000..a621c27 --- /dev/null +++ b/Build/Compilers/Zandronum/commonFuncs.h @@ -0,0 +1,1079 @@ +// A bunch of functions that I've built up +// They come in handy :> + +#define PLAYERMAX 64 +#define TEAMCOUNT 8 +#define DEFAULTTID_SCRIPT 471 + +#define SECOND_TICS 35.714285714285715 +#define UNIT_CM 2.73921568627451 + +#define DAMAGE_NORANDOM 0x40000000 + +int TeamNames[TEAMCOUNT] = +{ + "Blue", "Red", "Green", "Gold", "Black", "White", "Orange", "Purple" +}; + +int TeamColors[TEAMCOUNT] = +{ + CR_BLUE, CR_RED, CR_GREEN, CR_GOLD, CR_BLACK, CR_WHITE, CR_ORANGE, CR_PURPLE +}; + +int TeamColorCodes[TEAMCOUNT] = +{ + "\ch", "\cg", "\cd", "\cf", "\cm", "\cj", "\ci", "\ct" +}; + +function int itof(int x) { return x << 16; } +function int ftoi(int x) { return x >> 16; } + +function int abs(int x) +{ + if (x < 0) { return -x; } + return x; +} + +function int sign(int x) +{ + if (x < 0) { return -1; } + return 1; +} + +function int randSign(void) +{ + return (2*random(0,1))-1; +} + +function int mod(int x, int y) +{ + int ret = x - ((x / y) * y); + if (ret < 0) { ret = y + ret; } + return ret; +} + +function int pow(int x, int y) +{ + int n = 1; + while (y-- > 0) { n *= x; } + return n; +} + +function int powFloat(int x, int y) +{ + int n = 1.0; + while (y-- > 0) { n = FixedMul(n, x); } + return n; +} + +function int gcf(int a, int b) +{ + int c; + while (1) + { + if (b == 0) { return a; } + c = a % b; + a = b; + b = c; + } + + return -1; +} + +function int min(int x, int y) +{ + if (x < y) { return x; } + return y; +} + +function int max(int x, int y) +{ + if (x > y) { return x; } + return y; +} + +function int middle(int x, int y, int z) +{ + if ((x < z) && (y < z)) { return max(x, y); } + return max(min(x, y), z); +} + +function int percFloat(int intg, int frac) +{ + return itof(intg) + (itof(frac) / 100); +} + +function int percFloat2(int intg, int frac1, int frac2) +{ + return itof(intg) + (itof(frac1) / 100) + (itof(frac2) / 10000); +} + +function int keyUp(int key) +{ + int buttons = GetPlayerInput(-1, INPUT_BUTTONS); + + if ((~buttons & key) == key) { return 1; } + return 0; +} + +function int keyUp_any(int key) +{ + int buttons = GetPlayerInput(-1, INPUT_BUTTONS); + + if (~buttons & key) { return 1; } + return 0; +} + +function int keyDown(int key) +{ + int buttons = GetPlayerInput(-1, INPUT_BUTTONS); + + if ((buttons & key) == key) { return 1; } + return 0; +} + +function int keyDown_any(int key) +{ + int buttons = GetPlayerInput(-1, INPUT_BUTTONS); + + if (buttons & key) { return 1; } + return 0; +} + +function int keysPressed(void) +{ + int buttons = GetPlayerInput(-1, INPUT_BUTTONS); + int oldbuttons = GetPlayerInput(-1, INPUT_OLDBUTTONS); + int newbuttons = (buttons ^ oldbuttons) & buttons; + + return newbuttons; +} + +function int keyPressed(int key) +{ + if ((keysPressed() & key) == key) { return 1; } + return 0; +} + +function int keyPressed_any(int key) +{ + if (keysPressed() & key) { return 1; } + return 0; +} + +function int inputUp(int input) +{ + int buttons = GetPlayerInput(-1, MODINPUT_BUTTONS); + + if ((~buttons & input) == input) { return 1; } + return 0; +} + +function int inputUp_any(int input) +{ + int buttons = GetPlayerInput(-1, MODINPUT_BUTTONS); + + if (~buttons & input) { return 1; } + return 0; +} + +function int inputDown(int input) +{ + int buttons = GetPlayerInput(-1, MODINPUT_BUTTONS); + + if ((buttons & input) == input) { return 1; } + return 0; +} + +function int inputDown_any(int input) +{ + int buttons = GetPlayerInput(-1, MODINPUT_BUTTONS); + + if (buttons & input) { return 1; } + return 0; +} + +function int inputsPressed(void) +{ + int buttons = GetPlayerInput(-1, MODINPUT_BUTTONS); + int oldbuttons = GetPlayerInput(-1, MODINPUT_OLDBUTTONS); + int newbuttons = (buttons ^ oldbuttons) & buttons; + + return newbuttons; +} + +function int inputPressed(int input) +{ + if ((inputsPressed() & input) == input) { return 1; } + return 0; +} + +function int inputPressed_any(int input) +{ + if (inputsPressed() & input) { return 1; } + return 0; +} + +function int adjustBottom(int tmin, int tmax, int i) +{ + if (tmin > tmax) + { + tmax ^= tmin; tmin ^= tmax; tmax ^= tmin; // XOR swap + } + + if (i < tmin) { tmin = i; } + if (i > tmax) { tmin += (i - tmax); } + + return tmin; +} + +function int adjustTop(int tmin, int tmax, int i) +{ + if (tmin > tmax) + { + tmax ^= tmin; tmin ^= tmax; tmax ^= tmin; + } + + if (i < tmin) { tmax -= (tmin - i); } + if (i > tmax) { tmax = i; } + + return tmax; +} + +function int adjustShort(int tmin, int tmax, int i) +{ + if (tmin > tmax) + { + tmax ^= tmin; tmin ^= tmax; tmax ^= tmin; + } + + if (i < tmin) + { + tmax -= (tmin - i); + tmin = i; + } + if (i > tmax) + { + tmin += (i - tmax); + tmax = i; + } + + return packShorts(tmin, tmax); +} + + +// Taken from http://zdoom.org/wiki/sqrt + +function int sqrt_i(int number) +{ + if (number <= 3) { return number > 0; } + + int oldAns = number >> 1, // initial guess + newAns = (oldAns + (number / oldAns)) >> 1; // first iteration + + // main iterative method + while (newAns < oldAns) + { + oldAns = newAns; + newAns = (oldAns + number / oldAns) >> 1; + } + + return oldAns; +} + +function int sqrt(int number) +{ + if (number == 1.0) { return 1.0; } + if (number <= 0) { return 0; } + int val = 150.0; + for (int i=0; i<15; i++) { val = (val + FixedDiv(number, val)) >> 1; } + + return val; +} + +function int magnitudeTwo(int x, int y) +{ + return sqrt_i(x*x + y*y); +} + +function int magnitudeTwo_f(int x, int y) +{ + int len, ang; + + ang = VectorAngle(x, y); + if (((ang + 0.125) % 0.5) > 0.25) { len = FixedDiv(y, sin(ang)); } + else { len = FixedDiv(x, cos(ang)); } + + return len; +} + +function int magnitudeThree(int x, int y, int z) +{ + return sqrt_i(x*x + y*y + z*z); +} + +function int magnitudeThree_f(int x, int y, int z) +{ + int len, ang; + + ang = VectorAngle(x, y); + if (((ang + 0.125) % 0.5) > 0.25) { len = FixedDiv(y, sin(ang)); } + else { len = FixedDiv(x, cos(ang)); } + + ang = VectorAngle(len, z); + if (((ang + 0.125) % 0.5) > 0.25) { len = FixedDiv(z, sin(ang)); } + else { len = FixedDiv(len, cos(ang)); } + + return len; +} + + +function int quadPos(int a, int b, int c) +{ + int s1 = sqrt(FixedMul(b, b)-(4*FixedMul(a, c))); + int s2 = (2 * a); + int b1 = FixedDiv(-b + s1, s2); + + return b1; +} + +function int quadNeg(int a, int b, int c) +{ + int s1 = sqrt(FixedMul(b, b)-(4*FixedMul(a, c))); + int s2 = (2 * a); + int b1 = FixedDiv(-b - s1, s2); + + return b1; +} + +// All the arguments are to be fixed-point +function int quad(int a, int b, int c, int y) +{ + return FixedMul(a, FixedMul(y, y)) + FixedMul(b, y) + c + y; +} + +function int quadHigh(int a, int b, int c, int x) +{ + return quadPos(a, b, c-x); +} + +function int quadLow(int a, int b, int c, int x) +{ + return quadNeg(a, b, c-x); +} + +function int inRange(int low, int high, int x) +{ + return ((x >= low) && (x < high)); +} + +function void AddAmmoCapacity(int type, int add) +{ + SetAmmoCapacity(type, GetAmmoCapacity(type) + add); +} + +function int packShorts(int left, int right) +{ + return ((left & 0xFFFF) << 16) + (right & 0xFFFF); +} + +function int leftShort(int packed) { return packed >> 16; } +function int rightShort(int packed) { return (packed << 16) >> 16; } + + +// This stuff only works with StrParam + +function int cleanString(int string) +{ + int ret = ""; + int strSize = StrLen(string); + + int c, i, ignoreNext; + + for (i = 0; i < strSize; i++) + { + c = GetChar(string, i); + + if ( ( ((c > 8) && (c < 14)) || ((c > 31) && (c < 127)) || ((c > 160) && (c < 173)) ) && !ignoreNext) + { + ret = StrParam(s:ret, c:c); + } + else if (c == 28 && !ignoreNext) + { + ignoreNext = 1; + } + else + { + ignoreNext = 0; + } + } + + return ret; +} + +function int cvarFromString(int prefix, int newname) +{ + int ret = ""; + int i, c; + int prelen = strlen(prefix); + int namelen = strlen(newname); + int cap = prelen+namelen; + + for (i = 0; i <= cap; i++) + { + c = cond(i >= prelen, GetChar(newname, i-prelen), GetChar(prefix, i)); + + if ( + (c > 64 && c < 91) // is uppercase letter + || (c > 90 && c < 123) // is lowercase letter + || (c > 47 && c < 58) // is number + || c == 95 // _ + ) + { + ret = StrParam(s:ret, c:c); + } + } + + return ret; +} + +function int padStringR(int baseStr, int padChar, int len) +{ + int baseStrLen = StrLen(baseStr); + int pad = ""; + int padLen; int i; + + if (baseStrLen >= len) + { + return baseStr; + } + + padChar = GetChar(padChar, 0); + padLen = len - baseStrLen; + + for (i = 0; i < padLen; i++) + { + pad = StrParam(s:pad, c:padChar); + } + + return StrParam(s:baseStr, s:pad); +} + +function int padStringL(int baseStr, int padChar, int len) +{ + int baseStrLen = StrLen(baseStr); + int pad = ""; + int padLen; int i; + + if (baseStrLen >= len) + { + return baseStr; + } + + padChar = GetChar(padChar, 0); + padLen = len - baseStrLen; + + for (i = 0; i < padLen; i++) + { + pad = StrParam(s:pad, c:padChar); + } + + return StrParam(s:pad, s:baseStr); +} + +function int changeString(int string, int repl, int where) +{ + int i; int j; int k; + int ret = ""; + int len = StrLen(string); + int rLen = StrLen(repl); + + if ((where + rLen < 0) || (where >= len)) + { + return string; + } + + for (i = 0; i < len; i++) + { + if (inRange(where, where+rLen, i)) + { + ret = StrParam(s:ret, c:GetChar(repl, i-where)); + } + else + { + ret = StrParam(s:ret, c:GetChar(string, i)); + } + } + + return ret; +} + +function int sliceString(int string, int start, int end) +{ + int len = StrLen(string); + int ret = ""; + int i; + + if (start < 0) + { + start = len + start; + } + + if (end <= 0) + { + end = len + end; + } + + start = max(0, start); + end = min(end, len-1); + + for (i = start; i < end; i++) + { + ret = StrParam(s:ret, c:GetChar(string, i)); + } + + return ret; +} + +function int strcmp(int str1, int str2) +{ + int i,j,k,l; + int len1 = StrLen(str1); + int len2 = StrLen(str2); + j = max(len1, len2); + + for (i = 0; i < j; i++) + { + if (i >= len1) { return -1; } + if (i >= len2) { return 1; } + + k = GetChar(str1, i); l = GetChar(str2, i); + + if (k > j) { return 1; } + if (k < j) { return -1; } + } + return 0; +} + + +// End StrParam + +function int unusedTID(int start, int end) +{ + int ret = start - 1; + int tidNum; + + if (start > end) { start ^= end; end ^= start; start ^= end; } // good ol' XOR swap + + while (ret++ != end) + { + if (ThingCount(0, ret) == 0) + { + return ret; + } + } + + return -1; +} + +function int getMaxHealth(void) +{ + int maxHP = GetActorProperty(0, APROP_SpawnHealth); + + if ((maxHP == 0) && (PlayerNumber() != -1)) + { + maxHP = 100; + } + + return maxHP; +} + +function int giveHealth(int amount) +{ + return giveHealthFactor(amount, 1.0); +} + +function int giveHealthFactor(int amount, int maxFactor) +{ + return giveHealthMax(amount, FixedMul(getMaxHealth(), maxFactor)); +} + +function int giveHealthMax(int amount, int maxHP) +{ + int newHP; + + int curHP = GetActorProperty(0, APROP_Health); + + if (maxHP == 0) { newHP = max(curHP, curHP+amount); } + else + { + if (curHP > maxHP) { return 0; } + newHP = middle(curHP, curHP+amount, maxHP); + } + + SetActorProperty(0, APROP_Health, newHP); + + return newHP - curHP; +} + +function int isDead(int tid) +{ + return GetActorProperty(tid, APROP_Health) <= 0; +} + +function int isSinglePlayer(void) +{ + return GameType() == GAME_SINGLE_PLAYER; +} + +function int isLMS(void) +{ + return GetCVar("lastmanstanding") || GetCVar("teamlms"); +} + +function int isCoop(void) +{ + int check1 = GameType() == GAME_NET_COOPERATIVE; + int check2 = GetCVar("cooperative") || GetCVar("invasion") || GetCVar("survival"); + + return check1 || check2; +} + +function int isInvasion(void) +{ + return GetCVar("invasion"); +} + +function int isFreeForAll(void) +{ + if (GetCVar("terminator") || GetCVar("duel")) + { + return 1; + } + + int check1 = GetCVar("deathmatch") || GetCVar("possession") || GetCVar("lastmanstanding"); + int check2 = check1 && !GetCVar("teamplay"); + + return check2; +} + +function int isTeamGame(void) +{ + int ret = (GetCVar("teamplay") || GetCVar("teamgame") || GetCVar("teamlms")); + return ret; +} + +function int spawnDistance(int item, int dist, int tid) +{ + int myX, myY, myZ, myAng, myPitch, spawnX, spawnY, spawnZ; + + myX = GetActorX(0); myY = GetActorY(0); myZ = GetActorZ(0); + myAng = GetActorAngle(0); myPitch = GetActorPitch(0); + + spawnX = FixedMul(cos(myAng) * dist, cos(myPitch)); + spawnX += myX; + spawnY = FixedMul(sin(myAng) * dist, cos(myPitch)); + spawnY += myY; + spawnZ = myZ + (-sin(myPitch) * dist); + + return Spawn(item, spawnX, spawnY, spawnZ, tid, myAng >> 8); +} + +function void SetInventory(int item, int amount) +{ + int count = CheckInventory(item); + + if (count == amount) { return; } + + if (count > amount) + { + TakeInventory(item, count - amount); + return; + } + + GiveAmmo(item, amount - count); + return; +} +function int ToggleInventory(int inv) +{ + if (CheckInventory(inv)) + { + TakeInventory(inv, 0x7FFFFFFF); + return 0; + } + + GiveInventory(inv, 1); + return 1; +} + +function void GiveAmmo(int type, int amount) +{ + if (GetCVar("sv_doubleammo")) + { + int m = GetAmmoCapacity(type); + int expected = min(m, CheckInventory(type) + amount); + + GiveInventory(type, amount); + TakeInventory(type, CheckInventory(type) - expected); + } + else + { + GiveInventory(type, amount); + } +} + +function void GiveActorAmmo(int tid, int type, int amount) +{ + if (GetCVar("sv_doubleammo")) + { + int m = GetAmmoCapacity(type); + int expected = min(m, CheckActorInventory(tid, type) + amount); + + GiveActorInventory(tid, type, amount); + TakeActorInventory(tid, type, CheckActorInventory(tid, type) - expected); + } + else + { + GiveActorInventory(tid, type, amount); + } +} + +function int cond(int test, int trueRet, int falseRet) +{ + if (test) { return trueRet; } + return falseRet; +} + +function int condTrue(int test, int trueRet) +{ + if (test) { return trueRet; } + return test; +} + +function int condFalse(int test, int falseRet) +{ + if (test) { return test; } + return falseRet; +} + +function void saveCVar(int cvar, int val) +{ + int setStr = StrParam(s:"set ", s:cvar, s:" ", d:val); + int arcStr = StrParam(s:"archivecvar ", s:cvar); + ConsoleCommand(setStr); ConsoleCommand(arcStr); +} + +function int defaultCVar(int cvar, int defaultVal) +{ + int ret = GetCVar(cvar); + if (ret == 0) { saveCVar(cvar, defaultVal); return defaultVal; } + + return ret; +} + + +function int onGround(int tid) +{ + return (GetActorZ(tid) - GetActorFloorZ(tid)) == 0; +} + +function int ThingCounts(int start, int end) +{ + int i, ret = 0; + + if (start > end) { start ^= end; end ^= start; start ^= end; } + for (i = start; i < end; i++) { ret += ThingCount(0, i); } + + return ret; +} + +function int PlaceOnFloor(int tid) +{ + if (ThingCount(0, tid) != 1) { return 1; } + + SetActorPosition(tid, GetActorX(tid), GetActorY(tid), GetActorFloorZ(tid), 0); + return 0; +} + +#define DIR_E 1 +#define DIR_NE 2 +#define DIR_N 3 +#define DIR_NW 4 +#define DIR_W 5 +#define DIR_SW 6 +#define DIR_S 7 +#define DIR_SE 8 + +function int getDirection(void) +{ + int sideMove = keyDown(BT_MOVERIGHT) - keyDown(BT_MOVELEFT); + int forwMove = keyDown(BT_FORWARD) - keyDown(BT_BACK); + + if (sideMove || forwMove) + { + switch (sideMove) + { + case -1: + switch (forwMove) + { + case -1: return DIR_SW; + case 0: return DIR_W; + case 1: return DIR_NW; + } + break; + + case 0: + switch (forwMove) + { + case -1: return DIR_S; + case 1: return DIR_N; + } + break; + + case 1: + switch (forwMove) + { + case -1: return DIR_SE; + case 0: return DIR_E; + case 1: return DIR_NE; + } + break; + } + } + + return 0; +} + +function int isInvulnerable(void) +{ + int check1 = GetActorProperty(0, APROP_Invulnerable); + int check2 = CheckInventory("PowerInvulnerable"); + + return check1 || check2; +} + +function void saveStringCVar(int string, int cvarname) +{ + int slen = StrLen(string); + int i, c, cvarname2; + + for (i = 0; i < slen; i++) + { + cvarname2 = StrParam(s:cvarname, s:"_char", d:i); + SaveCVar(cvarname2, GetChar(string, i)); + } + + while (1) + { + cvarname2 = StrParam(s:cvarname, s:"_char", d:i); + c = GetCVar(cvarname2); + + if (c == 0) { break; } + + ConsoleCommand(StrParam(s:"unset ", s:cvarname2)); + i += 1; + } +} + +function int loadStringCVar(int cvarname) +{ + int ret = ""; + int i = 0, c, cvarname2; + + while (1) + { + cvarname2 = StrParam(s:cvarname, s:"_char", d:i); + c = GetCVar(cvarname2); + + if (c == 0) { break; } + + ret = StrParam(s:ret, c:c); + i += 1; + } + + return ret; +} + +function int defaultTID(int def) +{ + return _defaulttid(def, 0); +} + +function int _defaulttid(int def, int alwaysPropagate) +{ + if (ClassifyActor(0) & ACTOR_WORLD) { return 0; } + + int tid = ActivatorTID(); + int i, changed = 0; + + if (ThingCount(0, tid) != 1) + { + tid = def; + changed = 1; + if (def <= 0) + { + i = random(12, 220); + tid = unusedTID(i*100, (i+100)*100); + } + + Thing_ChangeTID(0, tid); + } + + if ((changed || (alwaysPropagate == 1)) && (alwaysPropagate != 2)) + { + ACS_ExecuteAlways(DEFAULTTID_SCRIPT, 0, tid,0,0); + } + + return tid; +} + +script DEFAULTTID_SCRIPT (int tid) clientside +{ + if (ConsolePlayerNumber() == -1) { terminate; } + Thing_ChangeTID(0, tid); +} + +function int JumpZFromHeight(int height, int gravFactor) +{ + return sqrt(2 * height * gravFactor); +} + +function int roundZero(int toround) +{ + int i = toround % 1.0; + return ftoi(toround - i); +} + +function int roundAway(int toround) +{ + int i = toround % 1.0; + + if (i == 0) { return ftoi(toround); } + return ftoi(toround + (1.0 - i)); +} + +function int round(int toround) +{ + return ftoi(toround + 0.5); +} + +function int ceil(int toround) +{ + return ftoi(toround + (1.0-1)); +} + +function int intFloat(int toround) +{ + return itof(ftoi(toround)); +} + +function int distance(int x1, int y1, int z1, int x2, int y2, int z2) +{ + return magnitudeThree_f(x2-x1, y2-y1, z2-z1); +} + +function int distance_tid(int tid1, int tid2) +{ + int x1 = GetActorX(tid1); + int y1 = GetActorY(tid1); + int z1 = GetActorZ(tid1); + + int x2 = GetActorX(tid2); + int y2 = GetActorY(tid2); + int z2 = GetActorZ(tid2); + + return magnitudeThree_f(x2-x1, y2-y1, z2-z1); +} + +function int distance_ftoi(int x1, int y1, int z1, int x2, int y2, int z2) +{ + return ftoi(distance(x1,y1,z1, x2,y2,z2)); +} + +function void printDebugInfo(void) +{ + int classify = ClassifyActor(0); + int fead = classify & ACTOR_DEAD; + int player = classify & ACTOR_PLAYER; + int pln = PlayerNumber(); + + Log(s:" -- DEBUG INFO -- "); + + Log(s:"Executed on tic ", d:Timer(), s:" on map ", d:GetLevelInfo(LEVELINFO_LEVELNUM)); + + if (classify & (ACTOR_PLAYER | ACTOR_MONSTER)) + { + Log(s:"Script activator has ", d:GetActorProperty(0, APROP_Health), s:"/", d:getMaxHealth(), s:" HP"); + } + + if (player) + { + Log(s:"Is player ", d:pln, s:" (", n:0, s:"\c-) with class number ", d:PlayerClass(pln)); + } + + Log(s:" -- END DEBUG -- "); +} + + +function int PlayerTeamCount(int teamNo) +{ + int i, ret; + for (i = 0; i < PLAYERMAX; i++) + { + if (GetPlayerInfo(i, PLAYERINFO_TEAM) == teamNO) { ret++; } + } + return ret; +} + +function int lower(int chr) +{ + if (chr > 64 && chr < 91) { return chr+32; } + return chr; +} + +function int upper(int chr) +{ + if (chr > 90 && chr < 123) { return chr-32; } + return chr; +} + +function int AddActorProperty(int tid, int prop, int amount) +{ + int newAmount = GetActorProperty(tid, prop) + amount; + SetActorProperty(tid, prop, newAmount); + return newAmount; +} + +function int ClientCount(void) +{ + int ret, i; + + for (i = 0; i < PLAYERMAX; i++) + { + if (PlayerInGame(i) || PlayerIsSpectator(i)) { ret++; } + } + + return ret; +} + +function int HasRoom(int actorname, int x, int y, int z) +{ + int tid = unusedTID(40000, 50000); + int ret = Spawn(actorname, x, y, z, tid); + + if (ret >= 1) { Thing_Remove(tid); } + + return ret; +} + +function int RealPlayerCount(void) +{ + int ret, i; + + for (i = 0; i < PLAYERMAX; i++) + { + if (PlayerInGame(i) && !PlayerIsBot(i)) { ret++; } + } + + return ret; +} diff --git a/Build/Compilers/Zandronum/zcommon.acs b/Build/Compilers/Zandronum/zcommon.acs new file mode 100644 index 0000000..5cdec5d --- /dev/null +++ b/Build/Compilers/Zandronum/zcommon.acs @@ -0,0 +1,15 @@ + +//************************************************************************** +//** +//** zcommon.acs +//** +//************************************************************************** + +// If you are not using the -h command line switch and do not want to use +// WadAuthor's error checker, you can uncomment the following line to shave +// a few bytes off the size of compiled scripts. +//#nowadauthor + +#include "zspecial.acs" +#include "zdefs.acs" +#include "zwvars.acs" diff --git a/Build/Compilers/Zandronum/zdefs.acs b/Build/Compilers/Zandronum/zdefs.acs new file mode 100644 index 0000000..a20236e --- /dev/null +++ b/Build/Compilers/Zandronum/zdefs.acs @@ -0,0 +1,889 @@ + +//************************************************************************** +//** +//** zdefs.acs +//** +//** Common definitions for use when compiling ACS scripts for ZDoom +//** +//************************************************************************** + +#define TRUE 1 +#define FALSE 0 +#define ON 1 +#define OFF 0 +#define YES 1 +#define NO 0 + +#define LINE_FRONT 0 +#define LINE_BACK 1 + +#define SIDE_FRONT 0 +#define SIDE_BACK 1 + +#define TEXTURE_TOP 0 +#define TEXTURE_MIDDLE 1 +#define TEXTURE_BOTTOM 2 + +// same information as combinable bit flags +#define TEXFLAG_TOP 1 +#define TEXFLAG_MIDDLE 2 +#define TEXFLAG_BOTTOM 4 +#define TEXFLAG_ADDOFFSET 8 + +#define GAME_SINGLE_PLAYER 0 +#define GAME_NET_COOPERATIVE 1 +#define GAME_NET_DEATHMATCH 2 +#define GAME_TITLE_MAP 3 + +// Classes are only useful with Hexen +#define CLASS_FIGHTER 0 +#define CLASS_CLERIC 1 +#define CLASS_MAGE 2 + +#define SKILL_VERY_EASY 0 +#define SKILL_EASY 1 +#define SKILL_NORMAL 2 +#define SKILL_HARD 3 +#define SKILL_VERY_HARD 4 + +#define BLOCK_NOTHING 0 +#define BLOCK_CREATURES 1 +#define BLOCK_EVERYTHING 2 +#define BLOCK_RAILING 3 +#define BLOCK_PLAYERS 4 + +#define SCROLL 0 +#define CARRY 1 +#define SCROLL_AND_CARRY 2 + +// Means-of-death for Sector_SetDamage -------------------------------------- + +#define MOD_UNKNOWN 0 +#define MOD_ROCKET 5 +#define MOD_R_SPLASH 6 +#define MOD_PLASMARIFLE 7 +#define MOD_BFG_BOOM 8 +#define MOD_BFG_SPLASH 9 +#define MOD_CHAINSAW 10 +#define MOD_SSHOTGUN 11 +#define MOD_WATER 12 +#define MOD_SLIME 13 +#define MOD_LAVA 14 +#define MOD_CRUSH 15 +#define MOD_TELEFRAG 16 +#define MOD_FALLING 17 +#define MOD_SUICIDE 18 +#define MOD_BARREL 19 +#define MOD_EXIT 20 +#define MOD_SPLASH 21 +#define MOD_HIT 22 +#define MOD_RAILGUN 23 +#define MOD_ICE 24 +#define MOD_DISINTEGRATE 25 +#define MOD_POISON 26 +#define MOD_ELECTRIC 27 + +// Return values for PlayMovie ---------------------------------------------- + +#define MOVIE_Played 0 +#define MOVIE_Played_NoVideo 1 +#define MOVIE_Played_Aborted 2 +#define MOVIE_Failed -1 + + +// Player properties -------------------------------------------------------- + +#define PROP_FROZEN 0 +#define PROP_NOTARGET 1 +#define PROP_INSTANTWEAPONSWITCH 2 +#define PROP_FLY 3 +#define PROP_TOTALLYFROZEN 4 +#define PROP_BUDDHA 16 + +// The following properties correspond to powers given by certain items +#define PROP_INVULNERABILITY 5 +#define PROP_STRENGTH 6 +#define PROP_INVISIBILITY 7 +#define PROP_RADIATIONSUIT 8 +#define PROP_ALLMAP 9 +#define PROP_INFRARED 10 +#define PROP_WEAPONLEVEL2 11 +#define PROP_FLIGHT 12 +#define PROP_SPEED 15 + +// Player input ------------------------------------------------------------- + +// These are the original inputs sent by the player. +#define INPUT_OLDBUTTONS 0 +#define INPUT_BUTTONS 1 +#define INPUT_PITCH 2 +#define INPUT_YAW 3 +#define INPUT_ROLL 4 +#define INPUT_FORWARDMOVE 5 +#define INPUT_SIDEMOVE 6 +#define INPUT_UPMOVE 7 + +// These are the inputs, as modified by P_PlayerThink(). +// Most of the time, these will match the original inputs, but +// they can be different if a player is frozen or using a +// chainsaw. +#define MODINPUT_OLDBUTTONS 8 +#define MODINPUT_BUTTONS 9 +#define MODINPUT_PITCH 10 +#define MODINPUT_YAW 11 +#define MODINPUT_ROLL 12 +#define MODINPUT_FORWARDMOVE 13 +#define MODINPUT_SIDEMOVE 14 +#define MODINPUT_UPMOVE 15 + +// Player buttons ----------------------------------------------------------- + +#define BT_ATTACK 1 +#define BT_USE 2 +#define BT_JUMP 4 +#define BT_CROUCH 8 +#define BT_TURN180 16 +#define BT_ALTATTACK 32 +#define BT_RELOAD 64 +#define BT_ZOOM 128 + +#define BT_SPEED 256 +#define BT_STRAFE 512 + +#define BT_MOVERIGHT 1024 +#define BT_MOVELEFT 2048 +#define BT_BACK 4096 +#define BT_FORWARD 8192 +#define BT_RIGHT 16384 +#define BT_LEFT 32768 +#define BT_LOOKUP 65536 +#define BT_LOOKDOWN 131072 +#define BT_MOVEUP 262144 +#define BT_MOVEDOWN 524288 +#define BT_SHOWSCORES 1048576 + +// Do whatever you want with these. +#define BT_USER1 2097152 +#define BT_USER2 4194304 +#define BT_USER3 8388608 +#define BT_USER4 16777216 + +// Text colors -------------------------------------------------------------- + +#define CR_UNTRANSLATED -1 +#define CR_BRICK 0 +#define CR_TAN 1 +#define CR_GRAY 2 +#define CR_GREY 2 +#define CR_GREEN 3 +#define CR_BROWN 4 +#define CR_GOLD 5 +#define CR_RED 6 +#define CR_BLUE 7 +#define CR_ORANGE 8 +#define CR_WHITE 9 +#define CR_YELLOW 10 +#define CR_BLACK 12 +#define CR_LIGHTBLUE 13 +#define CR_CREAM 14 +#define CR_OLIVE 15 +#define CR_DARKGREEN 16 +#define CR_DARKRED 17 +#define CR_DARKBROWN 18 +#define CR_PURPLE 19 +#define CR_DARKGRAY 20 +#define CR_DARKGREY 20 +#define CR_CYAN 21 + +// HUD message types -------------------------------------------------------- + +#define HUDMSG_PLAIN 0 +#define HUDMSG_FADEOUT 1 +#define HUDMSG_TYPEON 2 +#define HUDMSG_FADEINOUT 3 + +// OR this with one of the above to log the hudmessage to the console. +// i.e. instead of HUDMSG_PLAIN, you can use HUDMSG_PLAIN | HUDMSG_LOG +#define HUDMSG_LOG 0x80000000 + +// OR this with one of the above if the color you passed is a string +// instead of one of the CR_ constants. +#define HUDMSG_COLORSTRING 0x40000000 + +// OR this with one of the above to use additive blending when drawing the +// HUD message. +#define HUDMSG_ADDBLEND 0x20000000 + +// HUD message layers; these are not flags +#define HUDMSG_LAYER_OVERHUD 0x00000000 +#define HUDMSG_LAYER_UNDERHUD 0x00001000 +#define HUDMSG_LAYER_OVERMAP 0x00002000 + +// HUD message visibility flags +#define HUDMSG_NOTWITH3DVIEW 0x00010000 +#define HUDMSG_NOTWITHFULLMAP 0x00020000 +#define HUDMSG_NOTWITHOVERLAYMAP 0x00040000 + + +// "Scripted" Marine weapon types ------------------------------------------- + +#define MARINEWEAPON_Dummy 0 +#define MARINEWEAPON_Fist 1 +#define MARINEWEAPON_BerserkFist 2 +#define MARINEWEAPON_Chainsaw 3 +#define MARINEWEAPON_Pistol 4 +#define MARINEWEAPON_Shotgun 5 +#define MARINEWEAPON_SuperShotgun 6 +#define MARINEWEAPON_Chaingun 7 +#define MARINEWEAPON_RocketLauncher 8 +#define MARINEWEAPON_PlasmaRifle 9 +#define MARINEWEAPON_Railgun 10 +#define MARINEWEAPON_BFG 11 + +// Actor properties you can get/set ----------------------------------------- + +#define APROP_Health 0 +#define APROP_Speed 1 +#define APROP_Damage 2 +#define APROP_Alpha 3 +#define APROP_RenderStyle 4 +#define APROP_SeeSound 5 // Sounds can only be set, not gotten +#define APROP_AttackSound 6 +#define APROP_PainSound 7 +#define APROP_DeathSound 8 +#define APROP_ActiveSound 9 +#define APROP_Ambush 10 +#define APROP_Invulnerable 11 +#define APROP_JumpZ 12 +#define APROP_ChaseGoal 13 +#define APROP_Frightened 14 +#define APROP_Gravity 15 +#define APROP_Friendly 16 +#define APROP_SpawnHealth 17 +#define APROP_Dropped 18 +#define APROP_Notarget 19 +#define APROP_Species 20 +#define APROP_Nametag 21 +#define APROP_Score 22 +#define APROP_Notrigger 23 +#define APROP_DamageFactor 24 +#define APROP_MasterTID 25 +#define APROP_TargetTID 26 +#define APROP_TracerTID 27 +#define APROP_Waterlevel 28 +#define APROP_ScaleX 29 +#define APROP_ScaleY 30 +#define APROP_Dormant 31 +#define APROP_Mass 32 +#define APROP_Accuracy 33 +#define APROP_Stamina 34 + +// Render Styles ------------------------------------------------------------ + +#define STYLE_None 0 // Do not draw +#define STYLE_Normal 1 // Normal; just copy the image to the screen +#define STYLE_Fuzzy 2 // Draw silhouette using "fuzz" effect +#define STYLE_SoulTrans 3 // Draw translucent with amount in r_transsouls +#define STYLE_OptFuzzy 4 // Draw as fuzzy or translucent, based on user preference +#define STYLE_Stencil 5 // Draw as solid color +#define STYLE_Translucent 64 // Draw translucent +#define STYLE_Add 65 // Draw additive +#define STYLE_Shaded 66 // +#define STYLE_TranslucentStencil 67 + +// Properties you can use with GetLevelInfo() ------------------------------- + +#define LEVELINFO_PAR_TIME 0 +#define LEVELINFO_CLUSTERNUM 1 +#define LEVELINFO_LEVELNUM 2 +#define LEVELINFO_TOTAL_SECRETS 3 +#define LEVELINFO_FOUND_SECRETS 4 +#define LEVELINFO_TOTAL_ITEMS 5 +#define LEVELINFO_FOUND_ITEMS 6 +#define LEVELINFO_TOTAL_MONSTERS 7 +#define LEVELINFO_KILLED_MONSTERS 8 +#define LEVELINFO_SUCK_TIME 9 + +// Properties you can use with GetPlayerInfo() ------------------------------ + +#define PLAYERINFO_TEAM 0 +#define PLAYERINFO_AIMDIST 1 +#define PLAYERINFO_COLOR 2 +#define PLAYERINFO_GENDER 3 +#define PLAYERINFO_NEVERSWITCH 4 +#define PLAYERINFO_MOVEBOB 5 +#define PLAYERINFO_STILLBOB 6 +#define PLAYERINFO_PLAYERCLASS 7 +#define PLAYERINFO_FOV 8 +#define PLAYERINFO_DESIREDFOV 9 + + +// Flags for ReplaceTextures ------------------------------------------------ + +#define NOT_BOTTOM 1 +#define NOT_MIDDLE 2 +#define NOT_TOP 4 +#define NOT_FLOOR 8 +#define NOT_CEILING 16 + +// Flags for SectorDamage --------------------------------------------------- + +#define DAMAGE_PLAYERS 1 +#define DAMAGE_NONPLAYERS 2 +#define DAMAGE_IN_AIR 4 +#define DAMAGE_SUBCLASSES_PROTECT 8 + +// Flags for MorphActor ----------------------------------------------------- + +#define MRF_OLDEFFECTS 0x00000000 +#define MRF_ADDSTAMINA 0x00000001 +#define MRF_FULLHEALTH 0x00000002 +#define MRF_UNDOBYTOMEOFPOWER 0x00000004 +#define MRF_UNDOBYCHAOSDEVICE 0x00000008 +#define MRF_FAILNOTELEFRAG 0x00000010 +#define MRF_FAILNOLAUGH 0x00000020 +#define MRF_WHENINVULNERABLE 0x00000040 +#define MRF_LOSEACTUALWEAPON 0x00000080 +#define MRF_NEWTIDBEHAVIOUR 0x00000100 +#define MRF_UNDOBYDEATH 0x00000200 +#define MRF_UNDOBYDEATHFORCED 0x00000400 +#define MRF_UNDOBYDEATHSAVES 0x00000800 + +// Shared spawnable things from Hexen. You can spawn these in the other ----- +// games if you provide sprites for them, otherwise they'll be invisible. --- + +#define T_ROCK1 41 +#define T_ROCK2 42 +#define T_ROCK3 43 +#define T_DIRT1 44 +#define T_DIRT2 45 +#define T_DIRT3 46 +#define T_DIRT4 47 +#define T_DIRT5 48 +#define T_DIRT6 49 +#define T_STAINEDGLASS1 54 +#define T_STAINEDGLASS2 55 +#define T_STAINEDGLASS3 56 +#define T_STAINEDGLASS4 57 +#define T_STAINEDGLASS5 58 +#define T_STAINEDGLASS6 59 +#define T_STAINEDGLASS7 60 +#define T_STAINEDGLASS8 61 +#define T_STAINEDGLASS9 62 +#define T_STAINEDGLASS0 63 + +// Doom Spawnable things (used for thingcount() and thing spawners) --------- + +#define T_NONE 0 +#define T_SHOTGUY 1 +#define T_CHAINGUY 2 +#define T_BARON 3 +#define T_ZOMBIE 4 +#define T_IMP 5 +#define T_ARACHNOTRON 6 +#define T_SPIDERMASTERMIND 7 +#define T_DEMON 8 +#define T_SPECTRE 9 +#define T_IMPFIREBALL 10 +#define T_CLIP 11 +#define T_SHELLS 12 +#define T_CACODEMON 19 +#define T_REVENANT 20 +#define T_BRIDGE 21 +#define T_ARMORBONUS 22 +#define T_STIMPACK 23 +#define T_MEDKIT 24 +#define T_SOULSPHERE 25 +#define T_SHOTGUN 27 +#define T_CHAINGUN 28 +#define T_ROCKETLAUNCHER 29 +#define T_PLASMAGUN 30 +#define T_BFG 31 +#define T_CHAINSAW 32 +#define T_SUPERSHOTGUN 33 +#define T_PLASMABOLT 51 +#define T_TRACER 53 +#define T_GREENARMOR 68 +#define T_BLUEARMOR 69 +#define T_CELL 75 +#define T_BLUEKEYCARD 85 +#define T_REDKEYCARD 86 +#define T_YELLOWKEYCARD 87 +#define T_YELLOWSKULLKEY 88 +#define T_REDSKULLKEY 89 +#define T_BLUESKULLKEY 90 +#define T_TEMPLARGEFLAME 98 +#define T_STEALTHBARON 100 +#define T_STEALTHKNIGHT 101 +#define T_STEALTHZOMBIE 102 +#define T_STEALTHSHOTGUY 103 + +#define T_LOSTSOUL 110 +#define T_VILE 111 +#define T_MANCUBUS 112 +#define T_HELLKNIGHT 113 +#define T_CYBERDEMON 114 +#define T_PAINELEMENTAL 115 +#define T_WOLFSS 116 +#define T_STEALTHARACHNOTRON 117 +#define T_STEALTHVILE 118 +#define T_STEALTHCACODEMON 119 +#define T_STEALTHCHAINGUY 120 +#define T_STEALTHSERGEANT 121 +#define T_STEALTHIMP 122 +#define T_STEALTHMANCUBUS 123 +#define T_STEALTHREVENANT 124 +#define T_BARREL 125 +#define T_CACODEMONSHOT 126 +#define T_ROCKET 127 +#define T_BFGSHOT 128 +#define T_ARACHNOTRONPLASMA 129 +#define T_BLOOD 130 +#define T_PUFF 131 +#define T_MEGASPHERE 132 +#define T_INVULNERABILITY 133 +#define T_BERSERK 134 +#define T_INVISIBILITY 135 +#define T_IRONFEET 136 +#define T_COMPUTERMAP 137 +#define T_LIGHTAMP 138 +#define T_AMMOBOX 139 +#define T_ROCKETAMMO 140 +#define T_ROCKETBOX 141 +#define T_BATTERY 142 +#define T_SHELLBOX 143 +#define T_BACKPACK 144 +#define T_GUTS 145 +#define T_BLOODPOOL 146 +#define T_BLOODPOOL1 147 +#define T_BLOODPOOL2 148 +#define T_FLAMINGBARREL 149 +#define T_BRAINS 150 +#define T_SCRIPTEDMARINE 151 +#define T_HEALTHBONUS 152 +#define T_MANCUBUSSHOT 153 +#define T_BARONBALL 154 + +// Heretic Spawnable things (used for thingcount() and thing spawners) ------ + +#define T_CLINK 1 +#define T_MUMMYLEADER 2 +#define T_BEAST 3 +#define T_MUMMY 4 +//#define T_IMP 5 // Defined above +#define T_KNIGHT 6 +#define T_IMPLEADER 7 +#define T_MUMMYGHOST 8 +#define T_MUMMYLEADERGHOST 9 +//#define T_IMPFIREBALL 10 +#define T_WIMPYWANDAMMO 11 +#define T_HEFTYWANDAMMO 12 +#define T_ITEMEGG 14 +#define T_ITEMFLIGHT 15 +#define T_ITEMTELEPORT 18 +#define T_WIZARD 19 +#define T_IRONLICH 20 +#define T_ITEMHEALTHPOTION 23 +#define T_ITEMHEALTHFLASH 24 // incorrect name but keep it for compatibility +#define T_ITEMHEALTHFLASK 24 +#define T_ITEMHEALTHFULL 25 +#define T_CROSSBOW 27 +#define T_BLASTER 28 +#define T_PHOENIXROD 29 +#define T_SKULLROD 30 +#define T_MACE 31 +#define T_GAUNTLETS 32 +#define T_WIMPYCROSSBOWAMMO 33 +#define T_HEFTYCROSSBOWAMMO 34 +#define T_WIMPYMACEAMMO 35 +#define T_HEFTYMACEAMMO 36 +#define T_WIMPYBLASTERAMMO 37 +#define T_HEFTYBLASTERAMMO 38 +#define T_MORPHBLAST 40 +#define T_SHIELD1 68 +#define T_SHIELD2 69 +#define T_ITEMTIMEBOMB 72 +#define T_ITEMTORCH 73 +#define T_BLUEKEY 85 +#define T_GREENKEY 86 +#define T_YELLOWKEY 87 + +#define T_SOUND_WIND 110 +#define T_SOUND_WATERFALL 111 + +#define T_BEASTBALL 120 +#define T_FEATHER 121 +#define T_CHICKEN 122 +#define T_VOLCANOBALL 123 +#define T_TINYVOLCANOBALL 124 +#define T_POD 125 +#define T_PODGENERATOR 126 +#define T_KNIGHTAXE 127 +#define T_KNIGHTBLOODAXE 128 +#define T_KNIGHTGHOST 129 +#define T_MUMMYHEAD 131 +#define T_SNAKE 132 +#define T_ITEMINVULNERABILITY 133 +#define T_ITEMTOME 134 +#define T_ITEMINVISIBILITY 135 +#define T_ITEMBAGOFHOLDING 136 +#define T_ITEMALLMAP 137 +#define T_SNAKEPROJECTILE 138 +#define T_SNAKEPROJECTILEBIG 139 +#define T_WIZARDSHOT 140 + +#define T_DSPARILTELEPORTDEST 141 +#define T_DSPARILONSERPENT 142 +#define T_DSPARILALONE 143 +#define T_SERPENTFIREBALL 144 +#define T_DSPARILBLUESHOT 145 +#define T_DSPARILWIZARDSPAWNER 146 + +#define T_CROSSBOWMAINBLAST 147 +#define T_CROSSBOWMINIBLAST 148 +#define T_CROSSBOWPOWERBLAST 149 +#define T_VOLCANO 150 +#define T_POWERWANDMINIBLAST 151 +#define T_POWERWANDBIGGERBLAST 152 +#define T_DEATHBALL 153 +#define T_NOGRAVITYMACEBALL 154 +#define T_BOUNCYMACEBALL 155 +#define T_HEAVYMACEBALL 156 +#define T_RIPPER 157 +#define T_WIMPYSKULLRODAMMO 158 +#define T_HEFTYSKULLRODAMMO 159 +#define T_SKULLRODBLAST 160 +#define T_WIMPYPHOENIXRODAMMO 161 +#define T_HEFTYPHOENIXRODAMMO 162 +#define T_PHOENIXSHOT 163 +#define T_IRONLICHBLUESHOT 164 +#define T_WHIRLWIND 165 +#define T_REDTELEGLITTER 166 +#define T_BLUETELEGLITTER 167 + +// Hexen Spawnable things (used for thingcount() and thing spawners) ------ + +#define T_CENTAUR 1 +#define T_CENTAURLEADER 2 +#define T_DEMON1 3 +#define T_ETTIN 4 +#define T_FIREGARGOYLE 5 +#define T_WATERLURKER 6 +#define T_WATERLURKERLEADER 7 +#define T_WRAITH 8 +#define T_WRAITHBURIED 9 +#define T_FIREBALL1 10 +#define T_MANA1 11 +#define T_MANA2 12 +#define T_ITEMBOOTS 13 +#define T_ITEMPORK 14 +#define T_ITEMSUMMON 16 +#define T_ITEMTPORTOTHER 17 +#define T_BISHOP 19 +#define T_ICEGOLEM 20 +#define T_DRAGONSKINBRACERS 22 +#define T_ITEMBOOSTMANA 26 +#define T_FIGHTERAXE 27 +#define T_FIGHTERHAMMER 28 +#define T_FIGHTERSWORD1 29 +#define T_FIGHTERSWORD2 30 +#define T_FIGHTERSWORD3 31 +#define T_CLERICSTAFF 32 +#define T_CLERICHOLY1 33 +#define T_CLERICHOLY2 34 +#define T_CLERICHOLY3 35 +#define T_MAGESHARDS 36 +#define T_MAGESTAFF1 37 +#define T_MAGESTAFF2 38 +#define T_MAGESTAFF3 39 +#define T_ARROW 50 +#define T_DART 51 +#define T_POISONDART 52 +#define T_RIPPERBALL 53 +#define T_BLADE 64 +#define T_ICESHARD 65 +#define T_FLAME_SMALL 66 +#define T_FLAME_LARGE 67 +#define T_MESHARMOR 68 +#define T_FALCONSHIELD 69 +#define T_PLATINUMHELM 70 +#define T_AMULETOFWARDING 71 +#define T_ITEMFLECHETTE 72 +#define T_ITEMREPULSION 74 +#define T_MANA3 75 +#define T_PUZZSKULL 76 +#define T_PUZZGEMBIG 77 +#define T_PUZZGEMRED 78 +#define T_PUZZGEMGREEN1 79 +#define T_PUZZGEMGREEN2 80 +#define T_PUZZGEMBLUE1 81 +#define T_PUZZGEMBLUE2 82 +#define T_PUZZBOOK1 83 +#define T_PUZZBOOK2 84 +#define T_METALKEY 85 +#define T_SMALLMETALKEY 86 +#define T_AXEKEY 87 +#define T_FIREKEY 88 +#define T_EMERALDKEY 89 +#define T_MACEKEY 90 +#define T_SILVERKEY 91 +#define T_RUSTYKEY 92 +#define T_HORNKEY 93 +#define T_SERPENTKEY 94 +#define T_WATERDRIP 95 +#define T_TEMPSMALLFLAME 96 +#define T_PERMSMALLFLAME 97 +#define T_PERMLARGEFLAME 99 +#define T_DEMON_MASH 100 +#define T_DEMON2_MASH 101 +#define T_ETTIN_MASH 102 +#define T_CENTAUR_MASH 103 +#define T_THRUSTSPIKEUP 104 +#define T_THRUSTSPIKEDOWN 105 +#define T_FLESH_DRIP1 106 +#define T_FLESH_DRIP2 107 +#define T_SPARK_DRIP 108 + + +// Flags returned by ClassifyActor + +#define ACTOR_NONE 0 +#define ACTOR_WORLD 1 +#define ACTOR_PLAYER 2 +#define ACTOR_BOT 4 +#define ACTOR_VOODOODOLL 8 +#define ACTOR_MONSTER 16 +#define ACTOR_ALIVE 32 +#define ACTOR_DEAD 64 +#define ACTOR_MISSILE 128 +#define ACTOR_GENERIC 256 + + +// Physical volumes for SoundSequenceOnSector + +#define SECSEQ_FLOOR 1 +#define SECSEQ_CEILING 2 +#define SECSEQ_FULLHEIGHT 3 +#define SECSEQ_INTERIOR 4 + +// Actor pointer selectors + +#DEFINE AAPTR_DEFAULT 0 +#DEFINE AAPTR_NULL 0x1 +#DEFINE AAPTR_TARGET 0x2 +#DEFINE AAPTR_MASTER 0x4 +#DEFINE AAPTR_TRACER 0x8 + +#DEFINE AAPTR_PLAYER_GETTARGET 0x10 +#DEFINE AAPTR_PLAYER_GETCONVERSATION 0x20 + +#DEFINE AAPTR_PLAYER1 0x40 +#DEFINE AAPTR_PLAYER2 0x80 +#DEFINE AAPTR_PLAYER3 0x100 +#DEFINE AAPTR_PLAYER4 0x200 +#DEFINE AAPTR_PLAYER5 0x400 +#DEFINE AAPTR_PLAYER6 0x800 +#DEFINE AAPTR_PLAYER7 0x1000 +#DEFINE AAPTR_PLAYER8 0x2000 + +#DEFINE AAPTR_FRIENDPLAYER 0x4000 + +// Actor pointer operation flags + +#DEFINE PTROP_UNSAFETARGET 1 +#DEFINE PTROP_UNSAFEMASTER 2 +#DEFINE PTROP_NOSAFEGUARDS PTROP_UNSAFETARGET |PTROP_UNSAFEMASTER + +// ========================================================================== +// Skulltag Definitions +// ========================================================================== + +// Skulltag Teams ----------------------------------------------------------- +#define TEAM_BLUE 0 +#define TEAM_RED 1 +#define NO_TEAM 2 + +// Skulltag Invasion -------------------------------------------------------- +#define IS_WAITINGFORPLAYERS 0 +#define IS_FIRSTCOUNTDOWN 1 +#define IS_INPROGRESS 2 +#define IS_BOSSFIGHT 3 +#define IS_WAVECOMPLETE 4 +#define IS_COUNTDOWN 5 + + +#define T_GRENADE 216 +#define T_BFG10KSHOT 217 +#define T_DARKIMPFIREBALL 218 +#define T_CACOLANTERNSHOT 219 +#define T_ABADDONSHOT 221 + +// Skulltag Monsters -------------------------------------------------------- +#define T_DARKIMP 155 +#define T_BLOODDEMON 156 +#define T_SSGGUY 157 +#define T_HECTEBUS 158 +#define T_CACOLANTERN 159 +#define T_BELPHEGOR 215 +#define T_ABADDON 220 + +// Skulltag Weapons --------------------------------------------------------- +#define T_PISTOL 162 +#define T_GRENADELAUNCHER 163 +#define T_RAILGUN 164 +#define T_BFG10000 165 +#define T_MINIGUN 214 + +// Skulltag Armor/Health Items ---------------------------------------------- +#define T_MAXHEALTHBONUS 166 +#define T_MAXARMORBONUS 167 +#define T_REDARMOR 168 + +// Skulltag Powerups -------------------------------------------------------- +#define T_TURBOSPHERE 169 +#define T_ANTIGRAVBELT 170 +#define T_TIMEFREEZER 171 +#define T_INFRAGOGGLES 172 +#define T_INFRATRACKER 173 +#define T_TRANSLUCENCY 174 +#define T_DOOMSPHERE 175 +#define T_RANDOMPOWERUP 176 + +// Skulltag Flags ----------------------------------------------------------- +#define T_BLUEFLAG 177 +#define T_REDFLAG 178 +#define T_WHITEFLAG 179 + +// Skulltag Runes ----------------------------------------------------------- +#define T_STRENGTH 180 +#define T_RAGE 181 +#define T_DRAIN 182 +#define T_SPREAD 183 +#define T_RESISTANCE 184 +#define T_REGENERATION 185 +#define T_PROSPERITY 186 +#define T_REFLECTION 187 +#define T_HIGHJUMP 188 +#define T_HASTE 189 + + +// Events when you have input grabbed + +#define EV_KeyDown 1 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_KeyRepeat 2 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_KeyUp 3 // data1: unshifted ASCII, data2: shifted ASCII +#define EV_Char 4 // data1: translated character for text input +#define EV_MouseMove 5 // data1: x, data2: y +#define EV_LButtonDown 6 +#define EV_LButtonUp 7 +#define EV_LButtonDblClick 8 +#define EV_MButtonDown 9 +#define EV_MButtonUp 10 +#define EV_MButtonDblClick 11 +#define EV_RButtonDown 12 +#define EV_RButtonUp 13 +#define EV_RButtonDblClick 14 +#define EV_WheelDown 15 +#define EV_WheelUp 16 + +// Key modifiers (or'd with event type) + +#define GKM_SHIFT 256 +#define GKM_CTRL 512 +#define GKM_ALT 1024 + +// Button modifiers are only valid for EV_MouseMove events + +#define GKM_LBUTTON 2048 +#define GKM_MBUTTON 4096 +#define GKM_RBUTTON 8192 + +// Special codes for some GUI keys, including a few real ASCII codes. + +#define GK_PGDN 1 +#define GK_PGUP 2 +#define GK_HOME 3 +#define GK_END 4 +#define GK_LEFT 5 +#define GK_RIGHT 6 +#define GK_ALERT 7 // ASCII bell +#define GK_BACKSPACE 8 // ASCII +#define GK_TAB 9 // ASCII +#define GK_LINEFEED 10 // ASCII +#define GK_DOWN 10 +#define GK_VTAB 11 // ASCII +#define GK_UP 11 +#define GK_FORMFEED 12 // ASCII +#define GK_RETURN 13 // ASCII +#define GK_F1 14 +#define GK_F2 15 +#define GK_F3 16 +#define GK_F4 17 +#define GK_F5 18 +#define GK_F6 19 +#define GK_F7 20 +#define GK_F8 21 +#define GK_F9 22 +#define GK_F10 23 +#define GK_F11 24 +#define GK_F12 25 +#define GK_DEL 26 +#define GK_ESCAPE 27 // ASCII +#define GK_FREE1 28 +#define GK_FREE2 29 +#define GK_FREE3 30 +#define GK_CESCAPE 31 // color escape + +#define CHANGELEVEL_KEEPFACING 1 +#define CHANGELEVEL_RESETINVENTORY 2 +#define CHANGELEVEL_NOMONSTERS 4 +#define CHANGELEVEL_CHANGESKILL 8 +#define CHANGELEVEL_NOINTERMISSION 16 +#define CHANGELEVEL_RESETHEALTH 32 + +#define NO_CHANGE 32767.0 + +#define SECF_SILENT 1 +#define SECF_NOFALLINGDAMAGE 2 +#define SECF_FLOORDROP 4 +#define SECF_NORESPAWN 8 + +#define BLOCKF_CREATURES 1 +#define BLOCKF_MONSTERS 2 +#define BLOCKF_PLAYERS 4 +#define BLOCKF_FLOATERS 8 +#define BLOCKF_PROJECTILES 16 +#define BLOCKF_EVERYTHING 32 +#define BLOCKF_RAILING 64 +#define BLOCKF_USE 128 +#define BLOCKF_SIGHT 256 + +#define FOGP_DENSITY 0 +#define FOGP_OUTSIDEDENSITY 1 +#define FOGP_SKYFOG 2 + +#define PRINTNAME_LEVELNAME -1 +#define PRINTNAME_LEVEL -2 +#define PRINTNAME_SKILL -3 + +#define CSF_NOFAKEFLOORS 1 +#define CSF_NOBLOCKALL 2 + +#define TPROP_Name 0 +#define TPROP_Score 1 +#define TPROP_IsValid 2 +#define TPROP_NumPlayers 3 +#define TPROP_NumLivePlayers 4 +#define TPROP_TextColor 5 +#define TPROP_PlayerStartNum 6 +#define TPROP_Spread 7 +#define TPROP_Carrier 8 +#define TPROP_Assister 9 +#define TPROP_FragCount 10 +#define TPROP_DeathCount 11 +#define TPROP_WinCount 12 +#define TPROP_PointCount 13 +#define TPROP_ReturnTics 14 +#define TPROP_TeamItem 15 +#define TPROP_WinnerTheme 16 +#define TPROP_LoserTheme 17 \ No newline at end of file diff --git a/Build/Compilers/Zandronum/zspecial.acs b/Build/Compilers/Zandronum/zspecial.acs new file mode 100644 index 0000000..0888a15 --- /dev/null +++ b/Build/Compilers/Zandronum/zspecial.acs @@ -0,0 +1,286 @@ +//************************************************************************** +//** +//** zspecials.acs +//** +//************************************************************************** + +special +// 1:Polyobj_StartLine + 2:Polyobj_RotateLeft(3), + 3:Polyobj_RotateRight(3), + 4:Polyobj_Move(4), +// 5:Polyobj_ExplicitLine + 6:Polyobj_MoveTimes8(4), + 7:Polyobj_DoorSwing(4), + 8:Polyobj_DoorSlide(5), + 9:Line_Horizon(0), + 10:Door_Close(2), + 11:Door_Open(2,3), + 12:Door_Raise(3,4), + 13:Door_LockedRaise(4,5), + 14:Door_Animated(3), + 15:Autosave(0), +// 16:Transfer_WallLight + 17:Thing_Raise(1), + 18:StartConversation(1,2), + 19:Thing_Stop(1), + 20:Floor_LowerByValue(3), + 21:Floor_LowerToLowest(2), + 22:Floor_LowerToNearest(2), + 23:Floor_RaiseByValue(3), + 24:Floor_RaiseToHighest(2), + 25:Floor_RaiseToNearest(2), + 26:Stairs_BuildDown(5), + 27:Stairs_BuildUp(5), + 28:Floor_RaiseAndCrush(3,4), + 29:Pillar_Build(3), + 30:Pillar_Open(4), + 31:Stairs_BuildDownSync(4), + 32:Stairs_BuildUpSync(4), + 33:ForceField(0), + 34:ClearForceField(1), + 35:Floor_RaiseByValueTimes8(3), + 36:Floor_LowerByValueTimes8(3), + 37:Floor_MoveToValue(3,4), + 38:Ceiling_Waggle(5), + 39:Teleport_ZombieChanger(2), + 40:Ceiling_LowerByValue(3), + 41:Ceiling_RaiseByValue(3), + 42:Ceiling_CrushAndRaise(3,4), + 43:Ceiling_LowerAndCrush(3,4), + 44:Ceiling_CrushStop(1), + 45:Ceiling_CrushRaiseAndStay(3,4), + 46:Floor_CrushStop(1), + 47:Ceiling_MoveToValue(3,4), +// 48:Sector_Attach3dMidtex + 49:GlassBreak(0,1), +// 50:ExtraFloor_LightOnly + 51:Sector_SetLink(4), + 52:Scroll_Wall(5), + 53:Line_SetTextureOffset(5), + 54:Sector_ChangeFlags(3), + 55:Line_SetBlocking(3), + 56:Line_SetTextureScale(5), +// 57: Sector_SetPortal +// 58: Sector_CopyScroller + 59:Polyobj_OR_MoveToSpot(3), + 60:Plat_PerpetualRaise(3), + 61:Plat_Stop(1), + 62:Plat_DownWaitUpStay(3), + 63:Plat_DownByValue(4), + 64:Plat_UpWaitDownStay(3), + 65:Plat_UpByValue(4), + 66:Floor_LowerInstant(3), + 67:Floor_RaiseInstant(3), + 68:Floor_MoveToValueTimes8(4), + 69:Ceiling_MoveToValueTimes8(4), + 70:Teleport(1,3), + 71:Teleport_NoFog(1,3), + 72:ThrustThing(2,4), + 73:DamageThing(1,2), + 74:Teleport_NewMap(2,3), + 75:Teleport_EndGame(0), + 76:TeleportOther(3), + 77:TeleportGroup(5), + 78:TeleportInSector(4,5), + + 80:ACS_Execute(2,5), + 81:ACS_Suspend(2), + 82:ACS_Terminate(2), + 83:ACS_LockedExecute(5), + 84:ACS_ExecuteWithResult(1,4), + 85:ACS_LockedExecuteDoor(5), + 86:Polyobj_MoveToSpot(3), + 87:Polyobj_Stop(1), + 88:Polyobj_MoveTo(4), + 89:Polyobj_OR_MoveTo(4), + 90:Polyobj_OR_RotateLeft(3), + 91:Polyobj_OR_RotateRight(3), + 92:Polyobj_OR_Move(4), + 93:Polyobj_OR_MoveTimes8(4), + 94:Pillar_BuildAndCrush(4,5), + 95:FloorAndCeiling_LowerByValue(3), + 96:FloorAndCeiling_RaiseByValue(3), + +// 100:Scroll_Texture_Left +// 101:Scroll_Texture_Right +// 102:Scroll_Texture_Up +// 103:Scroll_Texture_Down + + 109:Light_ForceLightning(1), + 110:Light_RaiseByValue(2), + 111:Light_LowerByValue(2), + 112:Light_ChangeToValue(2), + 113:Light_Fade(3), + 114:Light_Glow(4), + 115:Light_Flicker(3), + 116:Light_Strobe(5), + 117:Light_Stop(1), +// 118:Plane_Copy + 119:Thing_Damage(2,3), + 120:Radius_Quake(5), +// 121:Line_SetIdentification + + 125:Thing_Move(2,3), + + 127:Thing_SetSpecial(5), + 128:ThrustThingZ(4), + 129:UsePuzzleItem(0), // only for setting it on a line. Cannot be called! + 130:Thing_Activate(1), + 131:Thing_Deactivate(1), + 132:Thing_Remove(1), + 133:Thing_Destroy(1,2), + 134:Thing_Projectile(5), + 135:Thing_Spawn(3,4), + 136:Thing_ProjectileGravity(5), + 137:Thing_SpawnNoFog(3,4), + 138:Floor_Waggle(5), + 139:Thing_SpawnFacing(2,4), + 140:Sector_ChangeSound(2), + + 143:Player_RemoveItem(2), // Skulltag Functions + 144:Player_GiveItem(2), // Skulltag Functions + 145:Player_SetTeam(1), // Skulltag Functions + 152:Team_Score(2), // Skulltag Functions + 153:Team_GivePoints(3), // Skulltag Functions + 154:Teleport_NoStop(2, 3), + + 157:SetGlobalFogParameter(2), // GZDoom only! + 158:FS_Execute(1,4), // GZDoom only! + 159:Sector_SetPlaneReflection(3), // GZDoom only! +// 160:Sector_Set3DFloor // GZDoom/Vavoom +// 161:Sector_SetContents // Vavoom + + 169:Generic_Crusher2(5), + 170:Sector_SetCeilingScale2(3), + 171:Sector_SetFloorScale2(3), + 172:Plat_UpNearestWaitDownStay(3), + 173:NoiseAlert(2), + 174:SendToCommunicator(4), + 175:Thing_ProjectileIntercept(5), + 176:Thing_ChangeTID(2), + 177:Thing_Hate(2,3), + 178:Thing_ProjectileAimed(4,5), + 179:ChangeSkill(1), + 180:Thing_SetTranslation(2), +// 181:Plane_Align, + 182:Line_Mirror(0), + 183:Line_AlignCeiling(2), + 184:Line_AlignFloor(2), + 185:Sector_SetRotation(3), + 186:Sector_SetCeilingPanning(5), + 187:Sector_SetFloorPanning(5), + 188:Sector_SetCeilingScale(5), + 189:Sector_SetFloorScale(5), + 191:SetPlayerProperty(3), + 192:Ceiling_LowerToHighestFloor(2), + 193:Ceiling_LowerInstant(3), + 194:Ceiling_RaiseInstant(3), + 195:Ceiling_CrushRaiseAndStayA(4,5), + 196:Ceiling_CrushAndRaiseA(4,5), + 197:Ceiling_CrushAndRaiseSilentA(4,5), + 198:Ceiling_RaiseByValueTimes8(3), + 199:Ceiling_LowerByValueTimes8(3), + 200:Generic_Floor(5), + 201:Generic_Ceiling(5), + 202:Generic_Door(5), + 203:Generic_Lift(5), + 204:Generic_Stairs(5), + 205:Generic_Crusher(5), + 206:Plat_DownWaitUpStayLip(4,5), + 207:Plat_PerpetualRaiseLip(4), + 208:TranslucentLine(2,3), +// 209:Transfer_Heights, +// 210:Transfer_FloorLight, +// 211:Transfer_CeilingLight, + 212:Sector_SetColor(4,5), + 213:Sector_SetFade(4), + 214:Sector_SetDamage(3), + 215:Teleport_Line(2), + 216:Sector_SetGravity(3), + 217:Stairs_BuildUpDoom(5), + 218:Sector_SetWind(4), + 219:Sector_SetFriction(2), + 220:Sector_SetCurrent(4), + 221:Scroll_Texture_Both(5), +// 222:Scroll_Texture_Model, + 223:Scroll_Floor(4), + 224:Scroll_Ceiling(4), +// 225:Scroll_Texture_Offsets, + 226:ACS_ExecuteAlways(2,5), +// 227:PointPush_SetForce, + 228:Plat_RaiseAndStayTx0(2), + 229:Thing_SetGoal(3,4), + 230:Plat_UpByValueStayTx(3), + 231:Plat_ToggleCeiling(1), + 232:Light_StrobeDoom(3), + 233:Light_MinNeighbor(1), + 234:Light_MaxNeighbor(1), + 235:Floor_TransferTrigger(1), + 236:Floor_TransferNumeric(1), + 237:ChangeCamera(3), + 238:Floor_RaiseToLowestCeiling(2), + 239:Floor_RaiseByValueTxTy(3), + 240:Floor_RaiseByTexture(2), + 241:Floor_LowerToLowestTxTy(2), + 242:Floor_LowerToHighest(3), + 243:Exit_Normal(1), + 244:Exit_Secret(1), + 245:Elevator_RaiseToNearest(2), + 246:Elevator_MoveToFloor(2), + 247:Elevator_LowerToNearest(2), + 248:HealThing(1,2), + 249:Door_CloseWaitOpen(3, 4), + 250:Floor_Donut(3), + 251:FloorAndCeiling_LowerRaise(3), + 252:Ceiling_RaiseToNearest(2), + 253:Ceiling_LowerToLowest(2), + 254:Ceiling_LowerToFloor(2), + 255:Ceiling_CrushRaiseAndStaySilA(4,5), + + // internal functions have negative values + -1:GetLineUDMFInt(2), + -2:GetLineUDMFFixed(2), + -3:GetThingUDMFInt(2), + -4:GetThingUDMFFixed(2), + -5:GetSectorUDMFInt(2), + -6:GetSectorUDMFFixed(2), + -7:GetSideUDMFInt(3), + -8:GetSideUDMFFixed(3), + -9:GetActorVelX(1), + -10:GetActorVelY(1), + -11:GetActorVelZ(1), + -12:SetActivator(1), + -13:SetActivatorToTarget(1), + -14:GetActorViewHeight(1), + -15:GetChar(2), + -16:GetAirSupply(1), + -17:SetAirSupply(2), + -18:SetSkyScrollSpeed(2), + -19:GetArmorType(2), + -20:SpawnSpotForced(4), + -21:SpawnSpotFacingForced(3), + -22:CheckActorProperty(3), + -23:SetActorVelocity(6), + -24:SetUserVariable(3), + -25:GetUserVariable(2), + -26:Radius_Quake2(6), + -27:CheckActorClass(2), + -28:SetUserArray(4), + -29:GetUserArray(3), + -30:SoundSequenceOnActor(2), + -31:SoundSequenceOnSector(3), + -32:SoundSequenceOnPolyobj(2), + -33:GetPolyobjX(1), + -34:GetPolyobjY(1), + -45:ACS_NamedExecuteAlways(2,5), + -100:ResetMap(0), + -101:PlayerIsSpectator(1), + -102:ConsolePlayerNumber(0), + -103:GetTeamProperty(2), + -104:GetPlayerLivesLeft(1), + -105:SetPlayerLivesLeft(2), + -106:KickFromGame(2), + -19620:GetTeamScore(1), //Zdaemon + -100000:__EndOfList__(10); + //-1000:__EndOfList__(10); \ No newline at end of file diff --git a/Build/Compilers/Zandronum/zwvars.acs b/Build/Compilers/Zandronum/zwvars.acs new file mode 100644 index 0000000..b21f4e7 --- /dev/null +++ b/Build/Compilers/Zandronum/zwvars.acs @@ -0,0 +1,8 @@ + +//************************************************************************** +//** +//** zwvars.acs +//** +//************************************************************************** + +// include your world-variable declarations here. diff --git a/Build/Configurations/Boom_Doom2Doom.cfg b/Build/Configurations/Boom_Doom2Doom.cfg new file mode 100644 index 0000000..52cbb9f --- /dev/null +++ b/Build/Configurations/Boom_Doom2Doom.cfg @@ -0,0 +1,62 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Boom: Doom 2 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "boom"; + +// Should this configuration be initially available? +enabledbydefault = true; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Boom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); +} diff --git a/Build/Configurations/Boom_DoomDoom.cfg b/Build/Configurations/Boom_DoomDoom.cfg new file mode 100644 index 0000000..5bb7ee9 --- /dev/null +++ b/Build/Configurations/Boom_DoomDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Boom: Doom (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "boom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Boom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +//Default map name +defaultlumpname = "E1M1"; + +// Default testing parameters +include("Includes\\Test_params.cfg", "vanilla_exmx"); + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); +} diff --git a/Build/Configurations/Doom_Doom2Doom.cfg b/Build/Configurations/Doom_Doom2Doom.cfg new file mode 100644 index 0000000..e7d7fd8 --- /dev/null +++ b/Build/Configurations/Doom_Doom2Doom.cfg @@ -0,0 +1,62 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Doom: Doom 2 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "doom2"; + +// Should this configuration be initially available? +enabledbydefault = true; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Doom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); +} diff --git a/Build/Configurations/Doom_DoomDoom.cfg b/Build/Configurations/Doom_DoomDoom.cfg new file mode 100644 index 0000000..79ce1ba --- /dev/null +++ b/Build/Configurations/Doom_DoomDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Doom: Doom (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "doom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Doom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +//Default map name +defaultlumpname = "E1M1"; + +// Default testing parameters +include("Includes\\Test_params.cfg", "vanilla_exmx"); + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); +} diff --git a/Build/Configurations/GZDoom_DoomDoom.cfg b/Build/Configurations/GZDoom_DoomDoom.cfg new file mode 100644 index 0000000..bd0652e --- /dev/null +++ b/Build/Configurations/GZDoom_DoomDoom.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Doom 2 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/GZDoom_DoomHexen.cfg b/Build/Configurations/GZDoom_DoomHexen.cfg new file mode 100644 index 0000000..a145c3b --- /dev/null +++ b/Build/Configurations/GZDoom_DoomHexen.cfg @@ -0,0 +1,70 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Doom 2 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// Should this configuration be initially available? +enabledbydefault = true; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/GZDoom_DoomUDMF.cfg b/Build/Configurations/GZDoom_DoomUDMF.cfg new file mode 100644 index 0000000..5b4d069 --- /dev/null +++ b/Build/Configurations/GZDoom_DoomUDMF.cfg @@ -0,0 +1,70 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Doom 2 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// Should this configuration be initially available? +enabledbydefault = true; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/GZDoom_HereticDoom.cfg b/Build/Configurations/GZDoom_HereticDoom.cfg new file mode 100644 index 0000000..538f6b5 --- /dev/null +++ b/Build/Configurations/GZDoom_HereticDoom.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Heretic (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Heretic_misc.cfg", "mapformat_doom"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/GZDoom_HereticHexen.cfg b/Build/Configurations/GZDoom_HereticHexen.cfg new file mode 100644 index 0000000..fd792f7 --- /dev/null +++ b/Build/Configurations/GZDoom_HereticHexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Heretic (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/GZDoom_HereticUDMF.cfg b/Build/Configurations/GZDoom_HereticUDMF.cfg new file mode 100644 index 0000000..7549bce --- /dev/null +++ b/Build/Configurations/GZDoom_HereticUDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Heretic (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/GZDoom_HexenHexen.cfg b/Build/Configurations/GZDoom_HexenHexen.cfg new file mode 100644 index 0000000..398b417 --- /dev/null +++ b/Build/Configurations/GZDoom_HexenHexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Hexen (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Hexen_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); +} diff --git a/Build/Configurations/GZDoom_HexenUDMF.cfg b/Build/Configurations/GZDoom_HexenUDMF.cfg new file mode 100644 index 0000000..8cc1cc4 --- /dev/null +++ b/Build/Configurations/GZDoom_HexenUDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Hexen (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); +} diff --git a/Build/Configurations/GZDoom_StrifeDoom.cfg b/Build/Configurations/GZDoom_StrifeDoom.cfg new file mode 100644 index 0000000..56cb821 --- /dev/null +++ b/Build/Configurations/GZDoom_StrifeDoom.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Strife (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Strife_misc.cfg", "mapformat_doom"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/GZDoom_StrifeHexen.cfg b/Build/Configurations/GZDoom_StrifeHexen.cfg new file mode 100644 index 0000000..4567fce --- /dev/null +++ b/Build/Configurations/GZDoom_StrifeHexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Strife (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/GZDoom_StrifeUDMF.cfg b/Build/Configurations/GZDoom_StrifeUDMF.cfg new file mode 100644 index 0000000..39f036f --- /dev/null +++ b/Build/Configurations/GZDoom_StrifeUDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Strife (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/Heretic_HereticDoom.cfg b/Build/Configurations/Heretic_HereticDoom.cfg new file mode 100644 index 0000000..8329e0a --- /dev/null +++ b/Build/Configurations/Heretic_HereticDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Heretic: Heretic (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "heretic"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Heretic_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Heretic.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +//Default map name +defaultlumpname = "E1M1"; + +// Default testing parameters +include("Includes\\Test_params.cfg", "vanilla_exmx"); + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); +} diff --git a/Build/Configurations/Hexen_HexenHexen.cfg b/Build/Configurations/Hexen_HexenHexen.cfg new file mode 100644 index 0000000..2de8824 --- /dev/null +++ b/Build/Configurations/Hexen_HexenHexen.cfg @@ -0,0 +1,62 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Hexen: Hexen (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "hexen"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\Hexen_common.cfg", "mapformat_hexen"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Hexen_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); +} diff --git a/Build/Configurations/Includes/Boom_common.cfg b/Build/Configurations/Includes/Boom_common.cfg new file mode 100644 index 0000000..b80246e --- /dev/null +++ b/Build/Configurations/Includes/Boom_common.cfg @@ -0,0 +1,107 @@ +mapformat_doom +{ + // The format interface handles the map data format + formatinterface = "DoomMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "doommaplumpnames"); + include("Boom_misc.cfg", "boommaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = true; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("Doom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_doom"); + + // Generalized actions + generalizedlinedefs = true; + generalizedsectors = true; + + // GENERALIZED LINEDEF TYPES + gen_linedeftypes + { + include("Boom_generalized.cfg", "gen_linedeftypes"); + } + + // GENERALIZED SECTOR TYPES + gen_sectortypes + { + include("Boom_generalized.cfg", "gen_sectortypes"); + } + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("Doom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Doom_sectors.cfg"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + include("Boom_misc.cfg", "linedefflags"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Boom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Doom_linedefs.cfg"); + include("Boom_linedefs.cfg"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + include("Boom_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + include("Boom_misc.cfg", "thingflagstranslation"); + } + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Boom_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Doom_misc.cfg", "thingflagsmasks"); + +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Boom_generalized.cfg b/Build/Configurations/Includes/Boom_generalized.cfg new file mode 100644 index 0000000..f2c0f99 --- /dev/null +++ b/Build/Configurations/Includes/Boom_generalized.cfg @@ -0,0 +1,425 @@ + +// Generalized sector types +gen_sectortypes +{ + lighting + { + 0 = "Normal"; + 1 = "Light Blinks (randomly)"; + 2 = "Light Blinks (0.5 sec)"; + 3 = "Light Blinks (1 sec)"; + 8 = "Light Glows (1+ sec)"; + 12 = "Light Blinks (0.5 sec sync)"; + 13 = "Light Blinks (1 sec sync)"; + 17 = "Light Flickers (randomly)"; + } + + damage + { + 0 = "None"; + 32 = "5 per second"; + 64 = "10 per second"; + 96 = "20 per second"; + } + + secret + { + 0 = "No"; + 128 = "Yes"; + } + + friction + { + 0 = "Disabled"; + 256 = "Enabled"; + } + + wind + { + 0 = "Disabled"; + 512 = "Enabled"; + } +} + + +// Generalized linedef types +gen_linedeftypes +{ + normal + { + title = "None"; + offset = 0; + length = 0; + } + + floors + { + title = "Floor"; + offset = 24576; + length = 8192; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + direction + { + 0 = "Down"; + 64 = "Up"; + } + + target + { + 0 = "Highest Adjacent Floor"; + 128 = "Lowest Adjacent Floor"; + 256 = "Next Adjacent Floor"; + 384 = "Lowest Adjacent Ceiling"; + 512 = "Ceiling"; + 640 = "Shortest Lower Texture"; + 768 = "24 Map Pixels (relative)"; + 896 = "32 Map Pixels (relative)"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + model + { + 0 = "Trigger"; + 32 = "Numeric"; + } + + change + { + 0 = "None"; + 1024 = "Change Texture and Remove Effect"; + 2048 = "Change Texture Only"; + 3072 = "Change Texture and Effect"; + } + + crusher + { + 0 = "No"; + 4096 = "Yes"; + } + } + + ceilings + { + title = "Ceiling"; + offset = 16384; + length = 8192; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + direction + { + 0 = "Down"; + 64 = "Up"; + } + + target + { + 0 = "Highest Adjacent Ceiling"; + 128 = "Lowest Adjacent Ceiling"; + 256 = "Next Adjacent Ceiling"; + 384 = "Highest Adjacent Floor"; + 512 = "Floor"; + 640 = "Shortest Lower Texture"; + 768 = "24 Map Pixels (relative)"; + 896 = "32 Map Pixels (relative)"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + model + { + 0 = "Trigger"; + 32 = "Numeric"; + } + + change + { + 0 = "None"; + 1024 = "Change Texture and Remove Effect"; + 2048 = "Change Texture Only"; + 3072 = "Change Texture and Effect"; + } + + crusher + { + 0 = "No"; + 4096 = "Yes"; + } + } + + doors + { + title = "Door"; + offset = 15360; + length = 1024; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + action + { + 0 = "Open Wait Close"; + 32 = "Open Only"; + 64 = "Close Wait Open"; + 96 = "Close Only"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + wait + { + 0 = "1 Second"; + 256 = "4 Seconds"; + 512 = "9 Seconds"; + 768 = "30 Seconds"; + } + + monsters + { + 0 = "No"; + 128 = "Yes"; + } + } + + lockeddoors + { + title = "Locked Door"; + offset = 14336; + length = 1024; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + action + { + 0 = "Open Wait Close"; + 32 = "Open Only"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + lock + { + 0 = "Any"; + 64 = "Red Keycard"; + 128 = "Blue Keycard"; + 192 = "Yellow Keycard"; + 256 = "Red Skullkey"; + 320 = "Blue Skullkey"; + 384 = "Yellow Skullkey"; + 448 = "All"; + } + + combination + { + 0 = "No (each is a different key)"; + 512 = "Keycard and Skullkey are same"; + } + } + + lifts + { + title = "Lift"; + offset = 13312; + length = 1024; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + target + { + 0 = "Lowest adjacent Floor"; + 256 = "Next adjacent Floor"; + 512 = "Lowest adjacent Ceiling"; + 768 = "Perpetual Lowest and Highest Floors"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + delay + { + 0 = "1 Second"; + 64 = "3 Seconds"; + 128 = "5 Seconds"; + 192 = "10 Seconds"; + } + + monsters + { + 0 = "No"; + 32 = "Yes"; + } + } + + stairs + { + title = "Stairs"; + offset = 12288; + length = 1024; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + direction + { + 0 = "Down"; + 256 = "Up"; + } + + step + { + 0 = "4 Map Pixels"; + 64 = "8 Map Pixels"; + 128 = "16 Map Pixels"; + 192 = "24 Map Pixels"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + break + { + 0 = "At different texture"; + 512 = "No"; + } + + monsters + { + 0 = "No"; + 32 = "Yes"; + } + } + + crushers + { + title = "Crusher"; + offset = 12160; + length = 128; + + trigger + { + 0 = "Walk Over Once"; + 1 = "Walk Over Repeatable"; + 2 = "Switch Once"; + 3 = "Switch Repeatable"; + 4 = "Gunfire Once"; + 5 = "Gunfire Repeatable"; + 6 = "Door Once"; + 7 = "Door Repeatable"; + } + + speed + { + 0 = "Slow"; + 8 = "Normal"; + 16 = "Fast"; + 24 = "Turbo"; + } + + silent + { + 0 = "No"; + 64 = "Yes"; + } + + monsters + { + 0 = "No"; + 32 = "Yes"; + } + } +} diff --git a/Build/Configurations/Includes/Boom_linedefs.cfg b/Build/Configurations/Includes/Boom_linedefs.cfg new file mode 100644 index 0000000..d1d25c9 --- /dev/null +++ b/Build/Configurations/Includes/Boom_linedefs.cfg @@ -0,0 +1,899 @@ + +door +{ + title = "Door"; + + 175 + { + title = "Door Close Wait Open (30 seconds)"; + prefix = "S1"; + } + + 196 + { + title = "Door Close Wait Open (30 seconds)"; + prefix = "SR"; + } +} + + +floor +{ + title = "Floor"; + + 146 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "W1"; + } + + 155 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "WR"; + } + + 191 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "SR"; + } + + 142 + { + title = "Floor Raise by 512"; + prefix = "W1"; + } + + 147 + { + title = "Floor Raise by 512"; + prefix = "WR"; + } + + 158 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "S1"; + } + + 159 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "S1"; + } + + 160 + { + title = "Floor Raise by 24 (changes texture and effect)"; + prefix = "S1"; + } + + 161 + { + title = "Floor Raise by 24"; + prefix = "S1"; + } + + 176 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "SR"; + } + + 177 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "SR"; + } + + 178 + { + title = "Floor Raise by 512"; + prefix = "SR"; + } + + 179 + { + title = "Floor Raise by 24 (changes texture and effect)"; + prefix = "SR"; + } + + 180 + { + title = "Floor Raise by 24"; + prefix = "SR"; + } + + 213 + { + title = "Floor Change Brightness to this Brightness"; + prefix = ""; + } + + 219 + { + title = "Floor Lower to Nearest Floor"; + prefix = "W1"; + } + + 220 + { + title = "Floor Lower to Nearest Floor"; + prefix = "WR"; + } + + 221 + { + title = "Floor Lower to Nearest Floor"; + prefix = "S1"; + } + + 222 + { + title = "Floor Lower to Nearest Floor"; + prefix = "SR"; + } +} + + +crusher +{ + title = "Crusher"; + + 150 + { + title = "Crusher Start (silent)"; + prefix = "WR"; + } + + 164 + { + title = "Crusher Start (fast)"; + prefix = "S1"; + } + + 165 + { + title = "Crusher Start (silent)"; + prefix = "S1"; + } + + 168 + { + title = "Crusher Stop"; + prefix = "S1"; + } + + 183 + { + title = "Crusher Start (fast)"; + prefix = "SR"; + } + + 184 + { + title = "Crusher Start"; + prefix = "SR"; + } + + 185 + { + title = "Crusher Start (silent)"; + prefix = "SR"; + } + + 188 + { + title = "Crusher Stop"; + prefix = "SR"; + } +} + + +stairs +{ + title = "Stairs"; + + 256 + { + title = "Stairs Raise by 8"; + prefix = "WR"; + } + + 257 + { + title = "Stairs Raise by 16 (fast)"; + prefix = "WR"; + } + + 258 + { + title = "Stairs Raise by 8"; + prefix = "SR"; + } + + 259 + { + title = "Stairs Raise by 16 (fast)"; + prefix = "SR"; + } +} + + +lift +{ + title = "Lift"; + + 143 + { + title = "Lift Raise by 24 (changes texture)"; + prefix = "W1"; + } + + 144 + { + title = "Lift Raise by 32 (changes texture)"; + prefix = "W1"; + } + + 148 + { + title = "Lift Raise by 24 (changes texture)"; + prefix = "WR"; + } + + 149 + { + title = "Lift Raise by 32 (changes texture)"; + prefix = "WR"; + } + + 162 + { + title = "Lift Perpetual Lowest and Highest Floors"; + prefix = "S1"; + } + + 163 + { + title = "Lift Stop"; + prefix = "S1"; + } + + 181 + { + title = "Lift Perpetual Lowest and Highest Floors"; + prefix = "SR"; + } + + 182 + { + title = "Lift Stop"; + prefix = "SR"; + } + + 211 + { + title = "Lift Raise to Ceiling (instantly)"; + prefix = "SR"; + } + + 212 + { + title = "Lift Raise to Ceiling (instantly)"; + prefix = "WR"; + } + + 227 + { + title = "Lift Raise to Next Highest Floor (fast)"; + prefix = "W1"; + } + + 228 + { + title = "Lift Raise to Next Highest Floor (fast)"; + prefix = "WR"; + } + + 229 + { + title = "Lift Raise to Next Highest Floor (fast)"; + prefix = "S1"; + } + + 230 + { + title = "Lift Raise to Next Highest Floor (fast)"; + prefix = "SR"; + } + + 231 + { + title = "Lift Lower to Next Lowest Floor (fast)"; + prefix = "W1"; + } + + 232 + { + title = "Lift Lower to Next Lowest Floor (fast)"; + prefix = "WR"; + } + + 233 + { + title = "Lift Lower to Next Lowest Floor (fast)"; + prefix = "S1"; + } + + 234 + { + title = "Lift Lower to Next Lowest Floor (fast)"; + prefix = "SR"; + } + + 235 + { + title = "Lift Move to Same Floor Height (fast)"; + prefix = "W1"; + } + + 236 + { + title = "Lift Move to Same Floor Height (fast)"; + prefix = "WR"; + } + + 237 + { + title = "Lift Move to Same Floor Height (fast)"; + prefix = "S1"; + } + + 238 + { + title = "Lift Move to Same Floor Height (fast)"; + prefix = "SR"; + } +} + + +exit +{ + title = "Exit"; + + 197 + { + title = "Exit Level"; + prefix = "G1"; + } + + 198 + { + title = "Exit Level (goes to secret level)"; + prefix = "G1"; + } +} + + +light +{ + title = "Light"; + + 156 + { + title = "Light Start Blinking"; + prefix = "WR"; + } + + 157 + { + title = "Light Change to Darkest Adjacent"; + prefix = "WR"; + } + + 169 + { + title = "Light Change to Brightest Adjacent"; + prefix = "S1"; + } + + 170 + { + title = "Light Change to 35"; + prefix = "S1"; + } + + 171 + { + title = "Light Change to 255"; + prefix = "S1"; + } + + 172 + { + title = "Light Start Blinking"; + prefix = "S1"; + } + + 173 + { + title = "Light Change to Darkest Adjacent"; + prefix = "S1"; + } + + 192 + { + title = "Light Change to Brightest Adjacent"; + prefix = "SR"; + } + + 193 + { + title = "Light Start Blinking"; + prefix = "SR"; + } + + 194 + { + title = "Light Change to Darkest Adjacent"; + prefix = "SR"; + } +} + + +teleport +{ + title = "Teleport"; + + 174 + { + title = "Teleport (also monsters)"; + prefix = "S1"; + } + + 195 + { + title = "Teleport (also monsters)"; + prefix = "SR"; + } + + 207 + { + title = "Teleport (also monsters, silent, same angle)"; + prefix = "W1"; + } + + 208 + { + title = "Teleport (also monsters, silent, same angle)"; + prefix = "WR"; + } + + 209 + { + title = "Teleport (also monsters, silent, same angle)"; + prefix = "S1"; + } + + 210 + { + title = "Teleport (also monsters, silent, same angle)"; + prefix = "SR"; + } + + 243 + { + title = "Teleport to Line With Same Tag (silent, same angle)"; + prefix = "W1"; + } + + 244 + { + title = "Teleport to Line With Same Tag (silent, same angle)"; + prefix = "WR"; + } + + 262 + { + title = "Teleport to Line With Same Tag (silent, reversed angle)"; + prefix = "W1"; + } + + 263 + { + title = "Teleport to Line With Same Tag (silent, reversed angle)"; + prefix = "WR"; + } + + 264 + { + title = "Teleport to Line With Same Tag (also monsters, silent, reversed angle)"; + prefix = "W1"; + } + + 265 + { + title = "Teleport to Line With Same Tag (also monsters, reversed angle)"; + prefix = "WR"; + } + + 266 + { + title = "Teleport to Line With Same Tag (monsters only, silent)"; + prefix = "W1"; + } + + 267 + { + title = "Teleport to Line With Same Tag (monsters only, silent)"; + prefix = "WR"; + } + + 268 + { + title = "Teleport (monsters only, silent)"; + prefix = "W1"; + } + + 269 + { + title = "Teleport (monsters only, silent)"; + prefix = "WR"; + } +} + + +ceiling +{ + title = "Ceiling"; + + 145 + { + title = "Ceiling Lower to Floor (fast)"; + prefix = "W1"; + } + + 151 + { + title = "Ceiling Raise to Highest Ceiling"; + prefix = "WR"; + } + + 152 + { + title = "Ceiling Lower to Floor (fast)"; + prefix = "WR"; + } + + 166 + { + title = "Ceiling Raise to Highest Ceiling"; + prefix = "S1"; + } + + 167 + { + title = "Ceiling Lower to 8 Above Floor"; + prefix = "S1"; + } + + 186 + { + title = "Ceiling Raise to Highest Ceiling"; + prefix = "SR"; + } + + 187 + { + title = "Ceiling Lower to 8 Above Floor"; + prefix = "SR"; + } + + 199 + { + title = "Ceiling Lower to Lowest Ceiling"; + prefix = "W1"; + } + + 200 + { + title = "Ceiling Lower to Highest Floor"; + prefix = "W1"; + } + + 201 + { + title = "Ceiling Lower to Lowest Ceiling"; + prefix = "WR"; + } + + 202 + { + title = "Ceiling Lower to Highest Floor"; + prefix = "WR"; + } + + 203 + { + title = "Ceiling Lower to Lowest Ceiling"; + prefix = "S1"; + } + + 204 + { + title = "Ceiling Lower to Highest Floor"; + prefix = "S1"; + } + + 205 + { + title = "Ceiling Lower to Lowest Ceiling"; + prefix = "SR"; + } + + 206 + { + title = "Ceiling Lower to Highest Floor"; + prefix = "SR"; + } + + 261 + { + title = "Ceiling Brightness to this Brightness"; + prefix = ""; + } +} + + +scroll +{ + title = "Scroll"; + + 85 + { + title = "Scroll Texture Right"; + prefix = ""; + } + + 214 + { + title = "Scroll Ceiling Accelerates when Sector Changes Height"; + prefix = ""; + } + + 215 + { + title = "Scroll Floor Accelerates when Sector Changes Height"; + prefix = ""; + } + + 216 + { + title = "Scroll Things Accelerates when Sector Changes Height"; + prefix = ""; + } + + 217 + { + title = "Scroll Floor/Things Accelerates when Sector Changes Height"; + prefix = ""; + } + + 218 + { + title = "Scroll Wall Accelerates when Sector Changes Height"; + prefix = ""; + } + + 245 + { + title = "Scroll Ceiling when Sector Changes Height"; + prefix = ""; + } + + 246 + { + title = "Scroll Floor when Sector Changes Height"; + prefix = ""; + } + + 247 + { + title = "Scroll Move Things when Sector Changes Height"; + prefix = ""; + } + + 248 + { + title = "Scroll Floor/Move Things when Sector Changes Height"; + prefix = ""; + } + + 249 + { + title = "Scroll Wall when Sector Changes Height"; + prefix = ""; + } + + 250 + { + title = "Scroll Ceiling according to Line Vector"; + prefix = ""; + } + + 251 + { + title = "Scroll Floor according to Line Vector"; + prefix = ""; + } + + 252 + { + title = "Scroll Move Things according to Line Vector"; + prefix = ""; + } + + 253 + { + title = "Scroll Floor, Move Things"; + prefix = ""; + } + + 254 + { + title = "Scroll Wall according to Line Vector"; + prefix = ""; + } + + 255 + { + title = "Scroll Wall using Sidedef Offsets"; + prefix = ""; + } +} + + +change +{ + title = "Change"; + + 78 + { + title = "Change Texture and Effect to Nearest"; + prefix = "SR"; + } + + 153 + { + title = "Change Texture And Effect"; + prefix = "W1"; + } + + 154 + { + title = "Change Texture And Effect"; + prefix = "WR"; + } + + 189 + { + title = "Change Texture And Effect"; + prefix = "S1"; + } + + 190 + { + title = "Change Texture And Effect"; + prefix = "SR"; + } + + 239 + { + title = "Change Texture and Effect to Nearest"; + prefix = "W1"; + } + + 240 + { + title = "Change Texture and Effect to Nearest"; + prefix = "WR"; + } + + 241 + { + title = "Change Texture and Effect to Nearest"; + prefix = "S1"; + } +} + + +friction +{ + title = "Friction"; + + 223 + { + title = "Friction Tagged Sector: Drag < 100, Slide > 100"; + prefix = ""; + } +} + + +wind +{ + title = "Wind"; + + 224 + { + title = "Wind according to Line Vector"; + prefix = ""; + } +} + + +current +{ + title = "Current"; + + 225 + { + title = "Current according to Line Vector"; + prefix = ""; + } +} + + +wind/current +{ + title = "Wind/Current"; + + 226 + { + title = "Wind/Current by Push/Pull Thing In Sector"; + prefix = ""; + } +} + + +create +{ + title = "Create"; + + 242 + { + title = "Create Fake Ceiling and Floor"; + prefix = ""; + } +} + + +translucent +{ + title = "Translucent"; + + 260 + { + title = "Translucent (Middle Texture)"; + prefix = ""; + } +} + + +transfer +{ + title = "Transfer"; + + 271 + { + title = "Transfer Sky Texture to Tagged Sectors"; + prefix = ""; + } + + 272 + { + title = "Transfer Sky Texture to Tagged Sectors (flipped)"; + prefix = ""; + } +} diff --git a/Build/Configurations/Includes/Boom_misc.cfg b/Build/Configurations/Includes/Boom_misc.cfg new file mode 100644 index 0000000..b351812 --- /dev/null +++ b/Build/Configurations/Includes/Boom_misc.cfg @@ -0,0 +1,124 @@ + +// LINEDEF FLAGS +linedefflags +{ + 512 = "Pass use action"; +} + + +// Linedef flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +linedefflagstranslation +{ + 512 = "passuse"; +} + + +// THING FLAGS +thingflags +{ + 32 = "Not Deathmatch"; + 64 = "Not Cooperative"; +} + + +// Thing flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +thingflagstranslation +{ + 32 = "!dm"; + 64 = "!coop"; +} + +// How thing flags should be compared (for the stuck thing error check) +thingflagscompare +{ + skills + { + 1; + 2; + 4; + } + + gamemodes + { + 16 + { + comparemethod = "equal"; + ignoredgroups = "skills"; + ingnorethisgroupwhenunset = true; + } + } + + gamemodes_extra + { + optional = true; + + 32 + { + invert = true; + requiredflag = "16"; + requiredgroups = "gamemodes"; + ignoredgroups = "skills"; + } + + 64 + { + invert = true; + requiredflag = "16"; + requiredgroups = "skills,gamemodes"; + } + } +} + + +/* +TEXTURES AND FLAT SOURCES +This tells Doom Builder where to find the information for textures +and flats in the IWAD file, Addition WAD file and Map WAD file. + +Start and end lumps must be given in a structure (of which the +key name doesnt matter) and any textures or flats in between them +are loaded in either the textures category or flats category. + +For textures: PNAMES, TEXTURE1 and TEXTURE2 are loaded by default. +*/ + +// Colormap sources +colormaps +{ + standard1 + { + start = "C_START"; + end = "C_END"; + } +} + + + +/* +MAP LUMP NAMES +Map lumps are loaded with the map as long as they are right after each other. When the editor +meets a lump which is not defined in this list it will ignore the map if not satisfied. +The order of items defines the order in which lumps will be written to WAD file on save. +To indicate the map header lump, use ~MAP + +Legenda: +required = Lump is required to exist. +blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use) +nodebuild = The nodebuilder generates this lump. +allowempty = The nodebuilder is allowed to leave this lump empty. +script = This lump is a text-based script. Specify the filename of the script configuration to use. +*/ + +boommaplumpnames +{ + DEHACKED + { + required = false; + nodebuild = false; + script = "Dehacked.cfg"; + } +} diff --git a/Build/Configurations/Includes/Boom_things.cfg b/Build/Configurations/Includes/Boom_things.cfg new file mode 100644 index 0000000..732b89c --- /dev/null +++ b/Build/Configurations/Includes/Boom_things.cfg @@ -0,0 +1,25 @@ + +boom +{ + color = 8; // Grey + arrow = 1; + title = "Boom Items"; + width = 0; + height = 0; + sort = 1; + fixedsize = true; + + 5001 + { + title = "Pusher"; + sprite = "internal:pointpusher"; + class = "PointPusher"; + } + + 5002 + { + title = "Puller"; + sprite = "internal:pointpuller"; + class = "PointPuller"; + } +} diff --git a/Build/Configurations/Includes/Common.cfg b/Build/Configurations/Includes/Common.cfg new file mode 100644 index 0000000..539adc2 --- /dev/null +++ b/Build/Configurations/Includes/Common.cfg @@ -0,0 +1,51 @@ + +// Common settings that are included in most (if not every) game configuration +// These are settings you probably don't have to deal with unless you're making +// something really advanced (or maybe using a game engine not based on Doom) + + +// Simulate Doom brightness levels (turn this off for linear lighting) +doomlightlevels = true; + + +// Thing number for start position in 3D Mode +start3dmode = 32000; + + +// Map boundaries. Map objects can only be placed within these boundaries +// WARNING: changing this may mess your map up, so only change it when you +// know what you are doing +leftboundary = -32768; +rightboundary = 32767; +topboundary = 32767; +bottomboundary = -32768; + + +// Enables support for long (> 8 chars) texture names +// WARNING: this should only be enabled for UDMF game configurations! +// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! +longtexturenames = false; + + + +// Things used by the editor +thingtypes +{ + editor + { + color = 15; // White + arrow = 1; + title = "Editor Things"; + width = 16; + sort = 1; + height = 0; + hangs = 0; + blocking = 0; + error = 0; + fixedsize = true; + + 32000 = "Visual Mode camera"; + } +} + + diff --git a/Build/Configurations/Includes/Doom2_things.cfg b/Build/Configurations/Includes/Doom2_things.cfg new file mode 100644 index 0000000..197b18f --- /dev/null +++ b/Build/Configurations/Includes/Doom2_things.cfg @@ -0,0 +1,304 @@ + +// Only the new Doom 2 things, use in combination with Doom_things.cfg + + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 65 + { + title = "Chaingunner"; + sprite = "CPOSA2"; + class = "ChaingunGuy"; + } + + 69 + { + title = "Hell Knight"; + width = 24; + sprite = "BOS2A2C8"; + height = 64; + class = "HellKnight"; + } + + 68 + { + title = "Arachnotron"; + width = 64; + sprite = "BSPIA2A8"; + height = 64; + class = "Arachnotron"; + } + + 71 + { + title = "Pain Elemental"; + width = 31; + sprite = "PAINA2A8"; + class = "PainElemental"; + } + + 66 + { + title = "Revenant"; + sprite = "SKELA2D8"; + class = "Revenant"; + } + + 67 + { + title = "Mancubus"; + width = 48; + sprite = "FATTC2C8"; + height = 64; + class = "Fatso"; + } + + 64 + { + title = "Archvile"; + sprite = "VILEA2D8"; + class = "Archvile"; + } + + 84 + { + title = "Wolfenstein SS"; + sprite = "SSWVA2"; + class = "WolfensteinSS"; + } + + 72 + { + title = "Commander Keen"; + width = 16; + sprite = "KEENA0"; + height = 72; + hangs = 1; + class = "CommanderKeen"; + } + + 88 + { + title = "Icon of Sin"; + width = 16; + sprite = "BBRNA0"; + height = 16; + class = "BossBrain"; + } + + 89 + { + title = "Monsters Spawner"; + sprite = "BOSFB0"; + locksprite = true; + height = 32; + class = "BossEye"; + } + + 87 + { + title = "Monsters Target"; + sprite = "internal:Target"; + height = 32; + class = "BossTarget"; + } +} + + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + height = 25; + hangs = 0; + blocking = 0; + sort = 1; + + 82 + { + title = "Super Shotgun"; + sprite = "SGN2A0"; + class = "SuperShotgun"; + } +} + + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + height = 20; + hangs = 0; + blocking = 0; + sort = 1; + + 83 + { + title = "Megasphere"; + sprite = "MEGAA0"; + height = 40; + class = "Megasphere"; + } +} + + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + sort = 1; + blocking = 1; + error = 2; + + 70 + { + title = "Burning barrel"; + width = 16; + sprite = "FCANA0"; + height = 32; + class = "BurningBarrel"; + } +} + + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + blocking = 1; + error = 2; + hangs = 0; + + 85 + { + title = "Tall techno floor lamp"; + sprite = "TLMPA0"; + class = "TechLamp"; + } + + 86 + { + title = "Short techno floor lamp"; + sprite = "TLP2A0"; + class = "TechLamp2"; + } +} + + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 79 + { + title = "Pool of blood and guts"; + sprite = "POB1A0"; + class = "ColonGibs"; + } + + 80 + { + title = "Pool of blood"; + sprite = "POB2A0"; + class = "SmallBloodPool"; + } + + 81 + { + title = "Pool of brains"; + sprite = "BRS1A0"; + class = "BrainStem"; + } + + 73 + { + title = "Hanging victim, guts removed"; + sprite = "HDB1A0"; + height = 88; + hangs = 1; + blocking = 1; + error = 2; + class = "HangNoGuts"; + } + + 74 + { + title = "Hanging victim, guts and brain removed"; + sprite = "HDB2A0"; + height = 88; + hangs = 1; + blocking = 1; + error = 2; + class = "HangBNoBrain"; + } + + 75 + { + title = "Hanging torso, looking down"; + sprite = "HDB3A0"; + height = 64; + hangs = 1; + blocking = 1; + error = 2; + class = "HangTLookingDown"; + } + + 76 + { + title = "Hanging torso, open skull"; + sprite = "HDB4A0"; + height = 64; + hangs = 1; + blocking = 1; + error = 2; + class = "HangTSkull"; + } + + 77 + { + title = "Hanging torso, looking up"; + sprite = "HDB5A0"; + height = 64; + hangs = 1; + blocking = 1; + error = 2; + class = "HangTLookingUp"; + } + + 78 + { + title = "Hanging torso, brain removed"; + sprite = "HDB6A0"; + height = 64; + hangs = 1; + blocking = 1; + error = 2; + class = "HangTNoBrain"; + } +} diff --git a/Build/Configurations/Includes/Doom_common.cfg b/Build/Configurations/Includes/Doom_common.cfg new file mode 100644 index 0000000..c8f96fe --- /dev/null +++ b/Build/Configurations/Includes/Doom_common.cfg @@ -0,0 +1,133 @@ +common +{ + // Some common settings + include("Common.cfg"); + + // Default testing parameters + include("Test_params.cfg", "vanilla_mapxx"); + testshortpaths = true; + + // Default nodebuilder configurations + defaultsavecompiler = "zennode_normal"; + defaulttestcompiler = "zennode_fast"; + + // Texture loading options + mixtexturesflats = false; + defaulttexturescale = 1.0f; + defaultflatscale = 1.0f; + scaledtextureoffsets = true; + + // Texture sources + textures + { + include("Doom_misc.cfg", "textures"); + } + + // Patch sources + patches + { + include("Doom_misc.cfg", "patches"); + } + + // Sprite sources + sprites + { + include("Doom_misc.cfg", "sprites"); + } + + // Flat sources + flats + { + include("Doom_misc.cfg", "flats"); + } +} + +mapformat_doom +{ + // The format interface handles the map data format + formatinterface = "DoomMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "doommaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = true; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("Doom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_doom"); + + // Generalized actions + generalizedlinedefs = false; + generalizedsectors = false; + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("Doom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Doom_sectors.cfg"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Doom_linedefs.cfg"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Doom_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Doom_misc.cfg", "thingflagsmasks"); +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Doom_linedefs.cfg b/Build/Configurations/Includes/Doom_linedefs.cfg new file mode 100644 index 0000000..823742d --- /dev/null +++ b/Build/Configurations/Includes/Doom_linedefs.cfg @@ -0,0 +1,905 @@ + +misc +{ + + 0 + { + title = "None"; + prefix = ""; + } +} + + +door +{ + title = "Door"; + + 1 + { + title = "Door Open Wait Close (also monsters)"; + prefix = "DR"; + } + + 2 + { + title = "Door Open Stay"; + prefix = "W1"; + } + + 3 + { + title = "Door Close Stay"; + prefix = "W1"; + } + + 4 + { + title = "Door Open Wait Close"; + prefix = "W1"; + } + + 16 + { + title = "Door Close Wait Open"; + prefix = "W1"; + } + + 26 + { + title = "Door (Blue) Open Wait Close"; + prefix = "DR"; + } + + 27 + { + title = "Door (Yellow) Open Wait Close"; + prefix = "DR"; + } + + 28 + { + title = "Door (Red) Open Wait Close"; + prefix = "DR"; + } + + 29 + { + title = "Door Open Wait Close"; + prefix = "S1"; + } + + 31 + { + title = "Door Open Stay"; + prefix = "D1"; + } + + 32 + { + title = "Door (Blue) Open Stay"; + prefix = "D1"; + } + + 33 + { + title = "Door (Red) Open Stay"; + prefix = "D1"; + } + + 34 + { + title = "Door (Yellow) Open Stay"; + prefix = "D1"; + } + + 42 + { + title = "Door Close Stay"; + prefix = "SR"; + } + + 46 + { + title = "Door Open Stay"; + prefix = "GR"; + } + + 50 + { + title = "Door Close Stay"; + prefix = "S1"; + } + + 61 + { + title = "Door Open Stay"; + prefix = "SR"; + } + + 63 + { + title = "Door Open Wait Close"; + prefix = "SR"; + } + + 75 + { + title = "Door Close Stay"; + prefix = "WR"; + } + + 76 + { + title = "Door Close Stay Open"; + prefix = "WR"; + } + + 86 + { + title = "Door Open Stay"; + prefix = "WR"; + } + + 90 + { + title = "Door Open Wait Close"; + prefix = "WR"; + } + + 99 + { + title = "Door (Blue) Open Stay (fast)"; + prefix = "SR"; + } + + 103 + { + title = "Door Open Stay"; + prefix = "S1"; + } + + 105 + { + title = "Door Open Wait Close (fast)"; + prefix = "WR"; + } + + 106 + { + title = "Door Open Stay (fast)"; + prefix = "WR"; + } + + 107 + { + title = "Door Close Stay (fast)"; + prefix = "WR"; + } + + 108 + { + title = "Door Open Wait Close (fast)"; + prefix = "W1"; + } + + 109 + { + title = "Door Open Stay (fast)"; + prefix = "W1"; + } + + 110 + { + title = "Door Close (fast)"; + prefix = "W1"; + } + + 111 + { + title = "Door Open Wait Close (fast)"; + prefix = "S1"; + } + + 112 + { + title = "Door Open Stay (fast)"; + prefix = "S1"; + } + + 113 + { + title = "Door Close Stay (fast)"; + prefix = "S1"; + } + + 114 + { + title = "Door Open Wait Close (fast)"; + prefix = "SR"; + } + + 115 + { + title = "Door Open Stay (fast)"; + prefix = "SR"; + } + + 116 + { + title = "Door Close Stay (fast)"; + prefix = "SR"; + } + + 117 + { + title = "Door Open Wait Close (fast)"; + prefix = "DR"; + } + + 118 + { + title = "Door Open Stay (fast)"; + prefix = "D1"; + } + + 133 + { + title = "Door (Blue) Open Stay (fast)"; + prefix = "S1"; + } + + 134 + { + title = "Door (Red) Open Stay (fast)"; + prefix = "SR"; + } + + 135 + { + title = "Door (Red) Open Stay (fast)"; + prefix = "S1"; + } + + 136 + { + title = "Door (Yellow) Open Stay (fast)"; + prefix = "SR"; + } + + 137 + { + title = "Door (Yellow) Open Stay (fast)"; + prefix = "S1"; + } +} + + +floor +{ + title = "Floor"; + + 5 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "W1"; + } + + 9 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "S1"; + } + + 14 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "S1"; + } + + 15 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "S1"; + } + + 18 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "S1"; + } + + 19 + { + title = "Floor Lower to Highest Floor"; + prefix = "W1"; + } + + 20 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "S1"; + } + + 22 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "W1"; + } + + 23 + { + title = "Floor Lower to Lowest Floor"; + prefix = "S1"; + } + + 24 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "G1"; + } + + 30 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "W1"; + } + + 36 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "W1"; + } + + 37 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "W1"; + } + + 38 + { + title = "Floor Lower to Lowest Floor"; + prefix = "W1"; + } + + 45 + { + title = "Floor Lower to Highest Floor"; + prefix = "SR"; + } + + 47 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "G1"; + } + + 53 + { + title = "Floor Start Moving Up and Down"; + prefix = "W1"; + } + + 54 + { + title = "Floor Stop Moving"; + prefix = "W1"; + } + + 55 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "S1"; + } + + 56 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "W1"; + } + + 58 + { + title = "Floor Raise by 24"; + prefix = "W1"; + } + + 59 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "W1"; + } + + 60 + { + title = "Floor Lower to Lowest Floor"; + prefix = "SR"; + } + + 64 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "SR"; + } + + 65 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "SR"; + } + + 66 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "SR"; + } + + 67 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "SR"; + } + + 68 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "SR"; + } + + 69 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "SR"; + } + + 70 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "SR"; + } + + 71 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "S1"; + } + + 82 + { + title = "Floor Lower to Lowest Floor"; + prefix = "WR"; + } + + 83 + { + title = "Floor Lower to Highest Floor"; + prefix = "WR"; + } + + 84 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "WR"; + } + + 87 + { + title = "Floor Start Moving Up and Down"; + prefix = "WR"; + } + + 89 + { + title = "Floor Stop Moving"; + prefix = "WR"; + } + + 91 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "WR"; + } + + 92 + { + title = "Floor Raise by 24"; + prefix = "WR"; + } + + 93 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "WR"; + } + + 94 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "WR"; + } + + 95 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "WR"; + } + + 96 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "WR"; + } + + 98 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "WR"; + } + + 101 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "S1"; + } + + 102 + { + title = "Floor Lower to Highest Floor"; + prefix = "S1"; + } + + 119 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "W1"; + } + + 128 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "WR"; + } + + 129 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "WR"; + } + + 130 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "W1"; + } + + 131 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "S1"; + } + + 132 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "SR"; + } + + 140 + { + title = "Floor Raise by 512"; + prefix = "S1"; + } +} + + +crusher +{ + title = "Crusher"; + + 6 + { + title = "Crusher Start with Fast Damage"; + prefix = "W1"; + } + + 25 + { + title = "Crusher Start with Slow Damage"; + prefix = "W1"; + } + + 57 + { + title = "Crusher Stop"; + prefix = "W1"; + } + + 73 + { + title = "Crusher Start with Slow Damage"; + prefix = "WR"; + } + + 74 + { + title = "Crusher Stop"; + prefix = "WR"; + } + + 77 + { + title = "Crusher Start with Fast Damage"; + prefix = "WR"; + } + + 141 + { + title = "Crusher Start with Slow Damage (silent)"; + prefix = "W1"; + } +} + + +stairs +{ + title = "Stairs"; + + 7 + { + title = "Stairs Raise by 8"; + prefix = "S1"; + } + + 8 + { + title = "Stairs Raise by 8"; + prefix = "W1"; + } + + 100 + { + title = "Stairs Raise by 16 (fast)"; + prefix = "W1"; + } + + 127 + { + title = "Stairs Raise by 16 (fast)"; + prefix = "S1"; + } +} + + +lift +{ + title = "Lift"; + + 10 + { + title = "Lift Lower Wait Raise"; + prefix = "W1"; + } + + 21 + { + title = "Lift Lower Wait Raise"; + prefix = "S1"; + } + + 62 + { + title = "Lift Lower Wait Raise"; + prefix = "SR"; + } + + 88 + { + title = "Lift Lower Wait Raise"; + prefix = "WR"; + } + + 120 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "WR"; + } + + 121 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "W1"; + } + + 122 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "S1"; + } + + 123 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "SR"; + } +} + + +exit +{ + title = "Exit"; + + 11 + { + title = "Exit Level"; + prefix = "S1"; + } + + 51 + { + title = "Exit Level (goes to secret level)"; + prefix = "S1"; + } + + 52 + { + title = "Exit Level"; + prefix = "W1"; + } + + 124 + { + title = "Exit Level (goes to secret level)"; + prefix = "W1"; + } +} + + +light +{ + title = "Light"; + + 12 + { + title = "Light Change to Brightest Adjacent"; + prefix = "W1"; + } + + 13 + { + title = "Light Change to 255"; + prefix = "W1"; + } + + 17 + { + title = "Light Start Blinking"; + prefix = "W1"; + } + + 35 + { + title = "Light Change to 35"; + prefix = "W1"; + } + + 79 + { + title = "Light Change to 35"; + prefix = "WR"; + } + + 80 + { + title = "Light Change to Brightest Adjacent"; + prefix = "WR"; + } + + 81 + { + title = "Light Change to 255"; + prefix = "WR"; + } + + 104 + { + title = "Light Change to Darkest Adjacent"; + prefix = "W1"; + } + + 138 + { + title = "Light Change to 255"; + prefix = "SR"; + } + + 139 + { + title = "Light Change to 35"; + prefix = "SR"; + } +} + + +ceiling +{ + title = "Ceiling"; + + 40 + { + title = "Ceiling Raise to Highest Ceiling"; + prefix = "W1"; + } + + 41 + { + title = "Ceiling Lower to Floor"; + prefix = "S1"; + } + + 43 + { + title = "Ceiling Lower to Floor"; + prefix = "SR"; + } + + 44 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "W1"; + } + + 49 + { + title = "Ceiling Lower to 8 above Floor (perpetual slow crusher damage)"; + prefix = "S1"; + } + + 72 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "WR"; + } +} + + +scroll +{ + title = "Scroll"; + + 48 + { + title = "Scroll Texture Left"; + prefix = ""; + } +} + + +teleport +{ + title = "Teleport"; + + 97 + { + title = "Teleport"; + prefix = "WR"; + } + + 39 + { + title = "Teleport"; + prefix = "W1"; + } + + 125 + { + title = "Teleport (monsters only)"; + prefix = "W1"; + } + + 126 + { + title = "Teleport (monsters only)"; + prefix = "WR"; + } +} + diff --git a/Build/Configurations/Includes/Doom_misc.cfg b/Build/Configurations/Includes/Doom_misc.cfg new file mode 100644 index 0000000..f4c56fc --- /dev/null +++ b/Build/Configurations/Includes/Doom_misc.cfg @@ -0,0 +1,489 @@ +// Basic Doom and Vanilla engine stuff. +skills +{ + 1 = "I'm too young to die"; + 2 = "Hey, not too rough"; + 3 = "Hurt me plenty"; + 4 = "Ultra-Violence"; + 5 = "Nightmare!"; +} + +linedefflags +{ + 1 = "Impassable"; + 2 = "Block Monsters"; + 4 = "Double Sided"; + 8 = "Upper Unpegged"; + 16 = "Lower Unpegged"; + 32 = "Shown as 1-sided on automap"; + 64 = "Block Sound"; + 128 = "Not shown on automap"; + 256 = "Initially shown on automap"; +} + +thingflags +{ + 1 = "Easy"; + 2 = "Medium"; + 4 = "Hard"; + 8 = "Ambush players"; + 16 = "Multiplayer only"; +} + +// Default flags for first new thing +defaultthingflags +{ + 1; + 2; + 4; +} + +// How thing flags should be compared (for the stuck thing error check) +thingflagscompare +{ + skills + { + 1; + 2; + 4; + } + + gamemodes + { + 16 + { + comparemethod = "equal"; + ignoredgroups = "skills"; + ingnorethisgroupwhenunset = true; + } + } +} + +// Mask for the thing flags which indicates the options +// that make the same thing appear in the same modes +thingflagsmasks +{ + thingflagsmask1 = 7; // 1 + 2 + 4 + thingflagsmask2 = 0; +} + +// Linedef flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +linedefflagstranslation +{ + 1 = "blocking"; + 2 = "blockmonsters"; + 4 = "twosided"; + 8 = "dontpegtop"; + 16 = "dontpegbottom"; + 32 = "secret"; + 64 = "blocksound"; + 128 = "dontdraw"; + 256 = "mapped"; +} + +// Thing flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +thingflagstranslation +{ + 1 = "skill1,skill2"; + 2 = "skill3"; + 4 = "skill4,skill5"; + 8 = "ambush"; + 16 = "!single"; +} + +// Default sector brightness levels +sectorbrightness +{ + 256; 240; 224; 208; 192; 176; 160; 144; + 128; 112; 96; 80; 64; 48; 32; 16; 0; +} + +/* +TEXTURES AND FLAT SOURCES +This tells Doom Builder where to find the information for textures +and flats in the IWAD file, Addition WAD file and Map WAD file. + +Start and end lumps must be given in a structure (of which the +key name doesnt matter) and any textures or flats in between them +are loaded in either the textures category or flats category. + +For textures: PNAMES, TEXTURE1 and TEXTURE2 are loaded by default. +*/ + +// Texture sources +textures +{ +} + +// Patch sources +patches +{ + standard1 + { + start = "P_START"; + end = "P_END"; + } + + standard2 + { + start = "PP_START"; + end = "PP_END"; + } +} + +// Sprite sources +sprites +{ + standard1 + { + start = "S_START"; + end = "S_END"; + } + + standard2 + { + start = "SS_START"; + end = "SS_END"; + } +} + +// Flat sources +flats +{ + standard1 + { + start = "F_START"; + end = "F_END"; + } + + standard2 + { + start = "FF_START"; + end = "FF_END"; + } + + standard3 + { + start = "FF_START"; + end = "F_END"; + } + + standard4 + { + start = "F_START"; + end = "FF_END"; + } +} + +/* +MAP LUMP NAMES +Map lumps are loaded with the map as long as they are right after each other. When the editor +meets a lump which is not defined in this list it will ignore the map if not satisfied. +The order of items defines the order in which lumps will be written to WAD file on save. +To indicate the map header lump, use ~MAP + +Legenda: +required = Lump is required to exist. +blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use) +nodebuild = The nodebuilder generates this lump. +allowempty = The nodebuilder is allowed to leave this lump empty. +script = This lump is a text-based script. Specify the filename of the script configuration to use. +*/ + +doommaplumpnames +{ + ~MAP + { + required = true; + blindcopy = true; + nodebuild = false; + } + + THINGS + { + required = true; + nodebuild = true; + allowempty = true; + } + + LINEDEFS + { + required = true; + nodebuild = true; + allowempty = false; + } + + SIDEDEFS + { + required = true; + nodebuild = true; + allowempty = false; + } + + VERTEXES + { + required = true; + nodebuild = true; + allowempty = false; + } + + SEGS + { + required = false; + nodebuild = true; + allowempty = false; + } + + SSECTORS + { + required = false; + nodebuild = true; + allowempty = false; + } + + NODES + { + required = false; + nodebuild = true; + allowempty = false; + } + + SECTORS + { + required = true; + nodebuild = true; + allowempty = false; + } + + REJECT + { + required = false; + nodebuild = true; + allowempty = false; + } + + BLOCKMAP + { + required = false; + nodebuild = true; + allowempty = false; + } + + BEHAVIOR //mxd + { + forbidden = true; + } +} + +hexenmaplumpnames +{ + ~MAP + { + required = true; + blindcopy = true; + nodebuild = false; + } + + THINGS + { + required = true; + nodebuild = true; + allowempty = true; + } + + LINEDEFS + { + required = true; + nodebuild = true; + allowempty = false; + } + + SIDEDEFS + { + required = true; + nodebuild = true; + allowempty = false; + } + + VERTEXES + { + required = true; + nodebuild = true; + allowempty = false; + } + + SEGS + { + required = false; + nodebuild = true; + allowempty = false; + } + + SSECTORS + { + required = false; + nodebuild = true; + allowempty = false; + } + + NODES + { + required = false; + nodebuild = true; + allowempty = false; + } + + SECTORS + { + required = true; + nodebuild = true; + allowempty = false; + } + + REJECT + { + required = false; + nodebuild = true; + allowempty = true; + } + + BLOCKMAP + { + required = false; + nodebuild = true; + allowempty = false; + } + + BEHAVIOR + { + required = true; + nodebuild = false; + blindcopy = true; + } + + SCRIPTS + { + required = false; + nodebuild = false; + script = "Hexen_ACS.cfg"; + } +} + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + filter0 + { + name = "Easy skill"; + category = ""; + type = -1; + + fields + { + 1 = true; + } + } + + filter1 + { + name = "Medium skill"; + category = ""; + type = -1; + + fields + { + 2 = true; + } + } + + filter2 + { + name = "Hard skill"; + category = ""; + type = -1; + + fields + { + 4 = true; + } + } + + filter3 + { + name = "Keys only"; + category = "keys"; + type = -1; + } + + filter4 + { + name = "Multiplayer"; + category = ""; + type = -1; + + fields + { + 16 = true; + } + } +} + + +// ENUMERATIONS +// These are enumerated lists for linedef types and UDMF fields. +// Reserved names are: angledeg, anglerad, color, texture, flat +enums +{ + falsetrue + { + 0 = "False"; + 1 = "True"; + } + + yesno + { + 0 = "Yes"; + 1 = "No"; + } + + noyes + { + 0 = "No"; + 1 = "Yes"; + } + + onoff + { + 0 = "On"; + 1 = "Off"; + } + + offon + { + 0 = "Off"; + 1 = "On"; + } + + updown + { + 0 = "Up"; + 1 = "Down"; + } + + downup + { + 0 = "Down"; + 1 = "Up"; + } + + addset + { + 0 = "Add"; + 1 = "Set"; + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Doom_sectors.cfg b/Build/Configurations/Includes/Doom_sectors.cfg new file mode 100644 index 0000000..c8b96dd --- /dev/null +++ b/Build/Configurations/Includes/Doom_sectors.cfg @@ -0,0 +1,17 @@ + +0 = "None"; +1 = "Light Blinks (randomly)"; +2 = "Light Blinks (2 Hz)"; +3 = "Light Blinks (1 Hz)"; +4 = "Damage -10 or 20% health and Light Blinks (2 Hz)"; +5 = "Damage -5 or 10% health"; +7 = "Damage -2 or 5% health"; +8 = "Light Glows (1+ sec)"; +9 = "Secret"; +10 = "Door Close Stay (after 30 sec)"; +11 = "Damage -10 or 20% health and End level"; +12 = "Light Blinks (1 Hz synchronized)"; +13 = "Light Blinks (2 Hz synchronized)"; +14 = "Door Open Close (opens after 5 min)"; +16 = "Damage -10 or 20% health"; +17 = "Light Flickers (randomly)"; diff --git a/Build/Configurations/Includes/Doom_texturesets.cfg b/Build/Configurations/Includes/Doom_texturesets.cfg new file mode 100644 index 0000000..4007879 --- /dev/null +++ b/Build/Configurations/Includes/Doom_texturesets.cfg @@ -0,0 +1,615 @@ + +set0 +{ + name = "Rock"; + filter0 = "ASHWALL*"; + filter1 = "BSTONE*"; + filter2 = "FLAT1_1"; + filter3 = "FLAT1_2"; + filter4 = "FLAT1_3"; + filter5 = "FLAT10"; + filter6 = "FLAT5_7"; + filter7 = "FLAT5_8"; + filter8 = "FLOOR6_1"; + filter9 = "FLOOR6_2"; + filter10 = "GRNROCK"; + filter11 = "MFLR8_2"; + filter12 = "MFLR8_3"; + filter13 = "MFLR8_4"; + filter14 = "ROCK*"; + filter15 = "SLIME09"; + filter16 = "SLIME10"; + filter17 = "SLIME11"; + filter18 = "SLIME12"; + filter19 = "SP_ROCK1"; + filter20 = "STONE4"; + filter21 = "STONE5"; + filter22 = "STONE6"; + filter23 = "STONE7"; + filter24 = "SW1ROCK"; + filter25 = "SW1STON6"; + filter26 = "SW2ROCK"; + filter27 = "SW2STON6"; + filter28 = "TANROCK*"; + filter29 = "RROCK*"; +} + + +set1 +{ + name = "Brick"; + filter0 = "BIGBRIK*"; + filter1 = "BRICK*"; + filter2 = "FLOOR5_4"; + filter3 = "FLAT8"; + filter4 = "GSTFONT1"; + filter5 = "GSTFONT2"; + filter6 = "GSTFONT3"; + filter7 = "GSTGARG"; + filter8 = "GSTLION"; + filter9 = "GSTONE1"; + filter10 = "GSTONE2"; + filter11 = "GSTSATYR"; + filter12 = "GSTVINE1"; + filter13 = "GSTVINE2"; + filter14 = "MFLR8_1"; + filter15 = "RROCK10"; + filter16 = "RROCK14"; + filter17 = "SLIME13"; + filter18 = "SP_DUDE1"; + filter19 = "SP_DUDE2"; + filter20 = "SP_DUDE4"; + filter21 = "SP_DUDE5"; + filter22 = "SP_DUDE7"; + filter23 = "SP_DUDE8"; + filter24 = "SP_HOT1"; + filter25 = "STONE2"; + filter26 = "STONE3"; + filter27 = "SW1GSTON"; + filter28 = "SW1HOT"; + filter29 = "SW2GSTON"; + filter30 = "SW2HOT"; +} + + +set2 +{ + name = "Liquids"; + filter0 = "BFALL*"; + filter1 = "BLOOD*"; + filter2 = "DBRAIN*"; + filter3 = "FWATER*"; + filter4 = "LAVA*"; + filter5 = "NUKAGE*"; + filter6 = "SFALL*"; + filter7 = "SLIME01"; + filter8 = "SLIME02"; + filter9 = "SLIME03"; + filter10 = "SLIME04"; + filter11 = "SLIME05"; + filter12 = "SLIME06"; + filter13 = "SLIME07"; + filter14 = "SLIME08"; +} + + +set3 +{ + name = "Doors"; + filter0 = "BIGDOOR*"; + filter1 = "DOOR*"; + filter2 = "EXITDOOR"; + filter3 = "SPCDOOR*"; + filter4 = "TEKBRON1"; + filter5 = "TEKBRON2"; +} + + +set4 +{ + name = "Steps"; + filter0 = "STEP*"; +} + + +set5 +{ + name = "Wood"; + filter0 = "BIGDOOR5"; + filter1 = "BIGDOOR6"; + filter2 = "BIGDOOR7"; + filter3 = "CEIL1_1"; + filter4 = "CEIL1_3"; + filter5 = "FLAT5_1"; + filter6 = "FLAT5_2"; + filter7 = "PAN*"; + filter8 = "SW1PANEL"; + filter9 = "SW1WDMET"; + filter10 = "SW1WOOD"; + filter11 = "SW2PANEL"; + filter12 = "SW2WDMET"; + filter13 = "SW2WOOD"; + filter14 = "WOOD*"; +} + + +set6 +{ + name = "Flesh"; + filter0 = "AASHITTY"; + filter1 = "FLAT5_6"; + filter2 = "SFLR6_1"; + filter3 = "SFLR6_4"; + filter4 = "SFLR7_1"; + filter5 = "SFLR7_4"; + filter6 = "SK_LEFT"; + filter7 = "SK_RIGHT"; + filter8 = "SKIN*"; + filter9 = "SKSNAKE1"; + filter10 = "SKSNAKE2"; + filter11 = "SKSPINE1"; + filter12 = "SKSPINE2"; + filter13 = "SLOPPY1"; + filter14 = "SLOPPY2"; + filter15 = "SP_DUDE1"; + filter16 = "SP_DUDE2"; + filter17 = "SP_DUDE4"; + filter18 = "SP_DUDE5"; + filter19 = "SP_DUDE7"; + filter20 = "SP_DUDE8"; + filter21 = "SP_FACE1"; + filter22 = "SP_FACE2"; + filter23 = "SW1SKIN"; + filter24 = "SW1SKULL"; + filter25 = "SW2SKIN"; + filter26 = "SW2SKULL"; +} + + +set7 +{ + name = "Switches"; + filter0 = "SW1*"; + filter1 = "SW2*"; +} + + +set8 +{ + name = "Marble"; + filter0 = "DEM1_*"; + filter1 = "FLOOR7_2"; + filter2 = "GST*"; + filter3 = "MARB*"; + filter4 = "SP_DUDE1"; + filter5 = "SP_DUDE2"; + filter6 = "SP_DUDE4"; + filter7 = "SP_DUDE5"; + filter8 = "SP_HOT1"; + filter9 = "SW1GSTON"; + filter10 = "SW1MARB"; + filter11 = "SW2GSTON"; + filter12 = "SW2MARB"; +} + + +set9 +{ + name = "Lights"; + filter0 = "BRICKLIT"; + filter1 = "BSTONE3"; + filter2 = "CEIL1_2"; + filter3 = "CEIL1_3"; + filter4 = "CEIL3_4"; + filter5 = "CEIL3_6"; + filter6 = "CEIL4_3"; + filter7 = "FLAT17"; + filter8 = "FLAT2"; + filter9 = "FLAT22"; + filter10 = "FLOOR1_7"; + filter11 = "GRNLITE1"; + filter12 = "LITE3"; + filter13 = "LITE5"; + filter14 = "LITEBLU1"; + filter15 = "LITEBLU4"; + filter16 = "TLITE6_1"; + filter17 = "TLITE6_4"; + filter18 = "TLITE6_5"; + filter19 = "TLITE6_6"; +} + + +set10 +{ + name = "Metal"; + filter0 = "CEIL1_2"; + filter1 = "METAL*"; + filter2 = "METAL"; + filter3 = "MIDBRN1"; + filter4 = "MIDGRATE"; + filter5 = "SW1GARG"; + filter6 = "SW1LION"; + filter7 = "SW1SATYR"; + filter8 = "SW2GARG"; + filter9 = "SW2LION"; + filter10 = "SW2MET2"; + filter11 = "SW2METAL"; + filter12 = "SW1METAL"; + filter13 = "SW1MET2"; + filter14 = "SW2SATYR"; + filter15 = "WOODMET1"; + filter16 = "WOODMET2"; + filter17 = "WOODMET3"; + filter18 = "WOODMET4"; + filter19 = "SW2WDMET"; + filter20 = "SW1WDMET"; + filter21 = "SUPPORT*"; +} + + +set11 +{ + name = "Silver"; + filter0 = "BIGDOOR1"; + filter1 = "DOORSTOP"; + filter2 = "LITEBLU1"; + filter3 = "SHAWN*"; + filter4 = "SILVER*"; + filter5 = "SPCDOOR3"; + filter6 = "STEP4"; + filter7 = "SUPPORT2"; + filter8 = "SW1COMM"; + filter9 = "SW2COMM"; +} + + +set12 +{ + name = "Base"; + filter0 = "BIGBRIK*"; + filter1 = "BIGDOOR1"; + filter2 = "BIGDOOR2"; + filter3 = "BIGDOOR3"; + filter4 = "BIGDOOR4"; + filter5 = "BLAKWAL*"; + filter6 = "BRN*"; + filter7 = "BRONZE*"; + filter8 = "BROWN*"; + filter9 = "BROVINE2"; + filter10 = "CEIL3_1"; + filter11 = "CEIL3_2"; + filter12 = "CEIL3_3"; + filter13 = "CEIL3_4"; + filter14 = "CEIL3_5"; + filter15 = "CEIL3_6"; + filter16 = "CEIL4_1"; + filter17 = "CEIL4_2"; + filter18 = "CEIL4_3"; + filter19 = "CEIL5_1"; + filter20 = "CEIL5_2"; + filter21 = "CEMENT*"; + filter22 = "COMP*"; + filter23 = "CONS*"; + filter24 = "CRAT*"; + filter25 = "DOOR1"; + filter26 = "DOOR3"; + filter27 = "DOORBLU"; + filter28 = "DOORRED"; + filter29 = "DOORSTOP"; + filter30 = "DOORTRAK"; + filter31 = "DOORYEL"; + filter32 = "EXITDOOR"; + filter33 = "EXITSIGN"; + filter34 = "EXITSTON"; + filter35 = "FLAT1"; + filter36 = "FLAT1_1"; + filter37 = "FLAT1_2"; + filter38 = "FLAT1_3"; + filter39 = "FLAT14"; + filter40 = "FLAT17"; + filter41 = "FLAT18"; + filter42 = "FLAT19"; + filter43 = "FLAT2"; + filter44 = "FLAT20"; + filter45 = "FLAT22"; + filter46 = "FLAT23"; + filter47 = "FLAT3"; + filter48 = "FLAT4"; + filter49 = "FLAT5"; + filter50 = "FLAT5_4"; + filter51 = "FLAT5_5"; + filter52 = "FLAT8"; + filter53 = "FLAT9"; + filter54 = "FLOOR0_1"; + filter55 = "FLOOR0_2"; + filter56 = "FLOOR0_3"; + filter57 = "FLOOR0_5"; + filter58 = "FLOOR0_6"; + filter59 = "FLOOR0_7"; + filter60 = "FLOOR1_1"; + filter61 = "FLOOR1_6"; + filter62 = "FLOOR1_7"; + filter63 = "FLOOR3_3"; + filter64 = "FLOOR4_1"; + filter65 = "FLOOR4_5"; + filter66 = "FLOOR4_6"; + filter67 = "FLOOR4_8"; + filter68 = "FLOOR5_1"; + filter69 = "FLOOR5_2"; + filter70 = "FLOOR5_3"; + filter71 = "FLOOR5_4"; + filter72 = "FLOOR7_1"; + filter73 = "GRAY*"; + filter74 = "ICKWALL*"; + filter75 = "LITE*"; + filter76 = "METAL"; + filter77 = "METAL1"; + filter78 = "METAL2"; + filter79 = "METAL3"; + filter80 = "METAL4"; + filter81 = "METAL5"; + filter82 = "METAL6"; + filter83 = "METAL7"; + filter84 = "MFLR8_1"; + filter85 = "MIDBARS1"; + filter86 = "MIDBARS3"; + filter87 = "MIDBRONZ"; + filter88 = "MIDSPACE"; + filter89 = "MODWALL*"; + filter90 = "NUKE*"; + filter91 = "PIPES"; + filter92 = "PIPEWAL1"; + filter93 = "PIPEWAL2"; + filter94 = "PLAT1"; + filter95 = "RROCK14"; + filter96 = "SHAWN*"; + filter97 = "SILVER*"; + filter98 = "SLAD*"; + filter99 = "SLIME13"; + filter100 = "SLIME14"; + filter101 = "SLIME15"; + filter102 = "SLIME16"; + filter103 = "SPACE*"; + filter104 = "SPCDOOR*"; + filter105 = "STAR*"; + filter106 = "STEP*"; + filter107 = "STONE"; + filter108 = "STONE2"; + filter109 = "STONE3"; + filter110 = "SUPPORT2"; + filter111 = "SUPPORT3"; + filter112 = "SW1BLUE"; + filter113 = "SW1BRCOM"; + filter114 = "SW1BRIK"; + filter115 = "SW1BRN1"; + filter116 = "SW1BRN2"; + filter117 = "SW1BRNGN"; + filter118 = "SW1BROWN"; + filter119 = "SW1CMT"; + filter120 = "SW1COMM"; + filter121 = "SW1COMP"; + filter122 = "SW1DIRT"; + filter123 = "SW1EXIT"; + filter124 = "SW1GRAY"; + filter125 = "SW1GRAY1"; + filter126 = "SW1MET2"; + filter127 = "SW1METAL"; + filter128 = "SW1MOD1"; + filter129 = "SW1SLAD"; + filter130 = "SW1STARG"; + filter131 = "SW1STON1"; + filter132 = "SW1STON2"; + filter133 = "SW1STONE"; + filter134 = "SW1STRTN"; + filter135 = "SW1TEK"; + filter136 = "SW1VINE"; + filter137 = "SW2BLUE"; + filter138 = "SW2BRCOM"; + filter139 = "SW2BRIK"; + filter140 = "SW2BRN1"; + filter141 = "SW2BRN2"; + filter142 = "SW2BRNGN"; + filter143 = "SW2BROWN"; + filter144 = "SW2CMT"; + filter145 = "SW2COMM"; + filter146 = "SW2COMP"; + filter147 = "SW2DIRT"; + filter148 = "SW2EXIT"; + filter149 = "SW2GRAY"; + filter150 = "SW2GRAY1"; + filter151 = "SW2MET2"; + filter152 = "SW2METAL"; + filter153 = "SW2MOD1"; + filter154 = "SW2SLAD"; + filter155 = "SW2STARG"; + filter156 = "SW2STON1"; + filter157 = "SW2STON2"; + filter158 = "SW2STONE"; + filter159 = "SW2STRTN"; + filter160 = "SW2TEK"; + filter161 = "SW2VINE"; + filter162 = "TEK*"; + filter163 = "TLITE*"; + filter164 = "PIPE1"; + filter165 = "PIPE2"; + filter166 = "PIPE4"; + filter167 = "PIPE6"; + filter168 = "STUCCO*"; + filter169 = "STUCCO"; +} + + +set13 +{ + name = "Hell"; + filter0 = "BFALL*"; + filter1 = "BIGDOOR5"; + filter2 = "BIGDOOR6"; + filter3 = "BIGDOOR7"; + filter4 = "BLODRIP*"; + filter5 = "BLOOD1"; + filter6 = "BLOOD2"; + filter7 = "BLOOD3"; + filter8 = "CEIL1_2"; + filter9 = "CEIL1_3"; + filter10 = "CEIL1_1"; + filter11 = "BSTONE1"; + filter12 = "BSTONE2"; + filter13 = "BSTONE3"; + filter14 = "CRACKLE2"; + filter15 = "CRACKLE4"; + filter16 = "DOORBLU2"; + filter17 = "DOORRED2"; + filter18 = "DOORYEL2"; + filter19 = "FIRE*"; + filter20 = "FLAT1_1"; + filter21 = "FLAT1_2"; + filter22 = "FLAT1_3"; + filter23 = "FLAT5_1"; + filter24 = "FLAT5_2"; + filter25 = "FLAT5_3"; + filter26 = "FLAT5_6"; + filter27 = "FLAT5_7"; + filter28 = "FLAT5_8"; + filter29 = "FLOOR1_6"; + filter30 = "FLOOR1_7"; + filter31 = "FLOOR6_1"; + filter32 = "FLOOR6_2"; + filter33 = "GATE*"; + filter34 = "GST*"; + filter35 = "LAVA*"; + filter36 = "MARB*"; + filter37 = "METAL"; + filter38 = "MFLR8_2"; + filter39 = "MFLR8_3"; + filter40 = "MIDBRN1"; + filter41 = "MIDGRATE"; + filter42 = "REDWALL"; + filter43 = "ROCKRED1"; + filter44 = "ROCKRED2"; + filter45 = "ROCKRED3"; + filter46 = "RROCK01"; + filter47 = "RROCK02"; + filter48 = "RROCK03"; + filter49 = "RROCK04"; + filter50 = "RROCK05"; + filter51 = "RROCK06"; + filter52 = "RROCK07"; + filter53 = "RROCK08"; + filter54 = "RROCK09"; + filter55 = "RROCK10"; + filter56 = "RROCK11"; + filter57 = "RROCK12"; + filter58 = "RROCK15"; + filter59 = "SFLR6_1"; + filter60 = "SFLR6_4"; + filter61 = "SFLR7_1"; + filter62 = "SFLR7_4"; + filter63 = "SK_LEFT"; + filter64 = "SK_RIGHT"; + filter65 = "SKIN*"; + filter66 = "SKSNAKE1"; + filter67 = "SKSNAKE2"; + filter68 = "SKSPINE1"; + filter69 = "SKSPINE2"; + filter70 = "SLIME09"; + filter71 = "SLIME10"; + filter72 = "SLIME11"; + filter73 = "SLIME12"; + filter74 = "SLOPPY1"; + filter75 = "SLOPPY2"; + filter76 = "SP_*"; + filter77 = "SUPPORT3"; + filter78 = "SW1GARG"; + filter79 = "SW1GSTON"; + filter80 = "SW1HOT"; + filter81 = "SW1LION"; + filter82 = "SW1MARB"; + filter83 = "SW1SATYR"; + filter84 = "SW1SKIN"; + filter85 = "SW1SKULL"; + filter86 = "SW1WDMET"; + filter87 = "SW1WOOD"; + filter88 = "SW2GARG"; + filter89 = "SW2GSTON"; + filter90 = "SW2HOT"; + filter91 = "SW2LION"; + filter92 = "SW2MARB"; + filter93 = "SW2SATYR"; + filter94 = "SW2SKIN"; + filter95 = "SW2SKULL"; + filter96 = "SW2WDMET"; + filter97 = "SW2WOOD"; + filter98 = "WOOD*"; +} + + +set14 +{ + name = "Outdoors"; + filter0 = "ASHWALL*"; + filter1 = "BFALL*"; + filter2 = "FLAT10"; + filter3 = "FLAT5_7"; + filter4 = "FLAT5_8"; + filter5 = "FLOOR6_1"; + filter6 = "FLOOR6_2"; + filter7 = "FWATER*"; + filter8 = "GRASS*"; + filter9 = "LAVA*"; + filter10 = "MFLR8_2"; + filter11 = "MFLR8_3"; + filter12 = "MFLR8_4"; + filter13 = "NUKAGE*"; + filter14 = "ROCK4"; + filter15 = "ROCK5"; + filter16 = "ROCKRED1"; + filter17 = "ROCKRED2"; + filter18 = "ROCKRED3"; + filter19 = "RROCK01"; + filter20 = "RROCK02"; + filter21 = "RROCK03"; + filter22 = "RROCK04"; + filter23 = "RROCK05"; + filter24 = "RROCK06"; + filter25 = "RROCK07"; + filter26 = "RROCK08"; + filter27 = "RROCK16"; + filter28 = "RROCK17"; + filter29 = "RROCK18"; + filter30 = "RROCK19"; + filter31 = "RROCK20"; + filter32 = "SFALL*"; + filter33 = "SLIME01"; + filter34 = "SLIME02"; + filter35 = "SLIME03"; + filter36 = "SLIME04"; + filter37 = "SLIME05"; + filter38 = "SLIME06"; + filter39 = "SLIME07"; + filter40 = "SLIME08"; + filter41 = "SLIME09"; + filter42 = "SLIME10"; + filter43 = "SLIME11"; + filter44 = "SLIME12"; + filter45 = "SP_ROCK1"; + filter46 = "STONE4"; + filter47 = "STONE5"; + filter48 = "STONE6"; + filter49 = "STONE7"; + filter50 = "TANROCK5"; + filter51 = "TANROCK8"; + filter52 = "ZIMMER*"; +} + + +set15 +{ + name = "Computer"; + filter0 = "COMP*"; + filter1 = "CONS*"; + filter2 = "SILVER3"; + filter3 = "SPACEW3"; + filter4 = "SW1COMP"; + filter5 = "SW2COMP"; +} diff --git a/Build/Configurations/Includes/Doom_things.cfg b/Build/Configurations/Includes/Doom_things.cfg new file mode 100644 index 0000000..8d3e1f2 --- /dev/null +++ b/Build/Configurations/Includes/Doom_things.cfg @@ -0,0 +1,898 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 1 + { + title = "Player 1 start"; + sprite = "PLAYA2A8"; + class = "$Player1Start"; + } + + 2 + { + title = "Player 2 start"; + sprite = "PLAYA2A8"; + class = "$Player2Start"; + } + + 3 + { + title = "Player 3 start"; + sprite = "PLAYA2A8"; + class = "$Player3Start"; + } + + 4 + { + title = "Player 4 start"; + sprite = "PLAYA2A8"; + class = "$Player4Start"; + } + + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYF1"; + class = "$DeathmatchStart"; + } +} + + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + error = 0; + + 14 + { + title = "Teleport Destination"; + sprite = "TFOGB0"; + class = "TeleportDest"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 3004 + { + title = "Former Human"; + sprite = "POSSA2A8"; + class = "ZombieMan"; + } + + 9 + { + title = "Former Sergeant"; + sprite = "SPOSA2A8"; + class = "ShotgunGuy"; + } + + 3001 + { + title = "Imp"; + sprite = "TROOA2A8"; + class = "DoomImp"; + } + + 3002 + { + title = "Demon"; + width = 30; + sprite = "SARGA2A8"; + class = "Demon"; + } + + 58 + { + title = "Spectre"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 30; + sprite = "SARGF1"; + class = "Spectre"; + } + + 3006 + { + title = "Lost Soul"; + width = 16; + sprite = "SKULA8A2"; + class = "LostSoul"; + } + + 3005 + { + title = "Cacodemon"; + width = 31; + sprite = "HEADA2A8"; + class = "Cacodemon"; + } + + 3003 + { + title = "Baron of Hell"; + width = 24; + sprite = "BOSSA2A8"; + height = 64; + class = "BaronOfHell"; + } + + 16 + { + title = "Cyberdemon"; + width = 40; + sprite = "CYBRA2"; + height = 110; + class = "Cyberdemon"; + } + + 7 + { + title = "Spider Mastermind"; + width = 128; + sprite = "SPIDG2G8"; + height = 100; + class = "SpiderMastermind"; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 2005 + { + title = "Chainsaw"; + sprite = "CSAWA0"; + class = "Chainsaw"; + } + + 2001 + { + title = "Shotgun"; + sprite = "SHOTA0"; + class = "Shotgun"; + } + + 2002 + { + title = "Chaingun"; + sprite = "MGUNA0"; + class = "Chaingun"; + } + + 2003 + { + title = "Rocket launcher"; + sprite = "LAUNA0"; + class = "RocketLauncher"; + } + + 2004 + { + title = "Plasma gun"; + sprite = "PLASA0"; + class = "PlasmaRifle"; + } + + 2006 + { + title = "BFG9000"; + sprite = "BFUGA0"; + height = 30; + class = "BFG9000"; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + height = 16; + blocking = 0; + hangs = 0; + + 2007 + { + title = "Ammo clip"; + sprite = "CLIPA0"; + class = "Clip"; + } + + 2008 + { + title = "Shotgun shells"; + sprite = "SHELA0"; + class = "Shell"; + } + + 2010 + { + title = "Rocket"; + sprite = "ROCKA0"; + height = 25; + class = "RocketAmmo"; + } + + 2047 + { + title = "Cell charge"; + sprite = "CELLA0"; + class = "Cell"; + } + + 2048 + { + title = "Box of Ammo"; + sprite = "AMMOA0"; + class = "ClipBox"; + } + + 2049 + { + title = "Box of Shells"; + sprite = "SBOXA0"; + class = "ShellBox"; + } + + 2046 + { + title = "Box of Rockets"; + sprite = "BROKA0"; + height = 25; + class = "RocketBox"; + } + + 17 + { + title = "Cell charge pack"; + sprite = "CELPA0"; + height = 25; + class = "CellPack"; + } + + 8 + { + title = "Backpack"; + sprite = "BPAKA0"; + class = "Backpack"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 20; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 2011 + { + title = "Stimpack"; + sprite = "STIMA0"; + class = "Stimpack"; + } + + 2012 + { + title = "Medikit"; + sprite = "MEDIA0"; + height = 25; + class = "Medikit"; + } + + 2014 + { + title = "Health bonus"; + sprite = "BON1A0"; + class = "HealthBonus"; + } + + 2015 + { + title = "Armor bonus"; + sprite = "BON2A0"; + class = "ArmorBonus"; + } + + 2018 + { + title = "Green armor"; + sprite = "ARM1A0"; + class = "GreenArmor"; + } + + 2019 + { + title = "Blue armor"; + sprite = "ARM2A0"; + class = "BlueArmor"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 2013 + { + title = "Soulsphere"; + sprite = "SOULA0"; + height = 45; + class = "Soulsphere"; + } + + 2022 + { + title = "Invulnerability"; + sprite = "PINVA0"; + height = 30; + class = "InvulnerabilitySphere"; + } + + 2023 + { + title = "Berserk"; + sprite = "PSTRA0"; + class = "Berserk"; + } + + 2024 + { + title = "Invisibility"; + sprite = "PINSA0"; + height = 45; + class = "BlurSphere"; + } + + 2025 + { + title = "Radiation suit"; + sprite = "SUITA0"; + height = 60; + class = "RadSuit"; + } + + 2026 + { + title = "Computer map"; + sprite = "PMAPA0"; + height = 35; + class = "Allmap"; + } + + 2045 + { + title = "Lite Amplification goggles"; + sprite = "PVISA0"; + class = "Infrared"; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 20; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 5 + { + title = "Blue keycard"; + sprite = "BKEYA0"; + class = "BlueCard"; + } + + 40 + { + title = "Blue skullkey"; + sprite = "BSKUB0"; + class = "BlueSkull"; + } + + 13 + { + title = "Red keycard"; + sprite = "RKEYA0"; + class = "RedCard"; + } + + 38 + { + title = "Red skullkey"; + sprite = "RSKUB0"; + class = "RedSkull"; + } + + 6 + { + title = "Yellow keycard"; + sprite = "YKEYA0"; + class = "YellowCard"; + } + + 39 + { + title = "Yellow skullkey"; + sprite = "YSKUB0"; + class = "YellowSkull"; + } +} + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 2035 + { + title = "Barrel"; + width = 10; + sprite = "BAR1A0"; + height = 32; + class = "ExplosiveBarrel"; + } + + 48 + { + title = "Tall techno pillar"; + sprite = "ELECA0"; + class = "TechPillar"; + } + + 30 + { + title = "Tall green pillar"; + sprite = "COL1A0"; + class = "TallGreenColumn"; + } + + 32 + { + title = "Tall red pillar"; + sprite = "COL3A0"; + class = "TallRedColumn"; + } + + 31 + { + title = "Short green pillar"; + sprite = "COL2A0"; + class = "ShortGreenColumn"; + } + + 36 + { + title = "Short green pillar (beating heart)"; + sprite = "COL5A0"; + class = "HeartColumn"; + } + + 33 + { + title = "Short red pillar"; + sprite = "COL4A0"; + class = "ShortRedColumn"; + } + + 37 + { + title = "Short red pillar (skull)"; + sprite = "COL6A0"; + class = "SkullColumn"; + } + + 47 + { + title = "Stalagtite"; + sprite = "SMITA0"; + class = "Stalagtite"; + } + + 43 + { + title = "Gray tree"; + sprite = "TRE1A0"; + class = "TorchTree"; + } + + 54 + { + title = "Large brown tree"; + width = 32; + sprite = "TRE2A0"; + class = "BigTree"; + } + + 41 + { + title = "Evil Eye"; + sprite = "CEYEA0"; + class = "EvilEye"; + } + + 42 + { + title = "Floating skull rock"; + sprite = "FSKUA0"; + class = "FloatingSkull"; + } +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 2028 + { + title = "Floor lamp"; + sprite = "COLUA0"; + class = "Column"; + } + + 34 + { + title = "Candle"; + sprite = "CANDA0"; + width = 20; + blocking = 0; + error = 1; + class = "Candlestick"; + } + + 35 + { + title = "Candelabra"; + sprite = "CBRAA0"; + class = "Candelabra"; + } + + 44 + { + title = "Tall blue firestick"; + sprite = "TBLUA0"; + class = "BlueTorch"; + } + + 45 + { + title = "Tall green firestick"; + sprite = "TGRNA0"; + class = "GreenTorch"; + } + + 46 + { + title = "Tall red firestick"; + sprite = "TREDA0"; + class = "RedTorch"; + } + + 55 + { + title = "Short blue firestick"; + sprite = "SMBTA0"; + class = "ShortBlueTorch"; + } + + 56 + { + title = "Short green firestick"; + sprite = "SMGTA0"; + class = "ShortGreenTorch"; + } + + 57 + { + title = "Short red firestick"; + sprite = "SMRTA0"; + class = "ShortRedTorch"; + } +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 20; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 49 + { + title = "Hanging victim, twitching (blocking)"; + sprite = "GOR1A0"; + height = 68; + width = 16; + hangs = 1; + blocking = 1; + error = 2; + class = "BloodyTwitch"; + } + + 63 + { + title = "Hanging victim, twitching"; + sprite = "GOR1A0"; + height = 68; + hangs = 1; + class = "NonsolidTwitch"; + } + + 50 + { + title = "Hanging victim, arms out (blocking)"; + sprite = "GOR2A0"; + height = 84; + hangs = 1; + blocking = 1; + error = 2; + class = "Meat2"; + } + + 59 + { + title = "Hanging victim, arms out"; + sprite = "GOR2A0"; + height = 84; + hangs = 1; + class = "NonsolidMeat2"; + } + + 52 + { + title = "Hanging pair of legs (blocking)"; + sprite = "GOR4A0"; + height = 68; + width = 16; + hangs = 1; + blocking = 1; + error = 2; + class = "Meat4"; + } + + 60 + { + title = "Hanging pair of legs"; + sprite = "GOR4A0"; + height = 68; + hangs = 1; + class = "NonsolidMeat4"; + } + + 51 + { + title = "Hanging victim, 1-legged (blocking)"; + sprite = "GOR3A0"; + height = 84; + width = 16; + hangs = 1; + blocking = 1; + error = 2; + class = "HangingCorpse"; + } + + 61 + { + title = "Hanging victim, 1-legged"; + sprite = "GOR3A0"; + height = 52; + hangs = 1; + class = "NonsolidMeat3"; + } + + 53 + { + title = "Hanging leg (blocking)"; + sprite = "GOR5A0"; + height = 52; + width = 16; + hangs = 1; + blocking = 1; + error = 2; + class = "Meat5"; + } + + 62 + { + title = "Hanging leg"; + sprite = "GOR5A0"; + height = 52; + hangs = 1; + class = "NonsolidMeat5"; + } + + 25 + { + title = "Impaled human"; + sprite = "POL1A0"; + width = 16; + blocking = 1; + error = 2; + class = "DeadStick"; + } + + 26 + { + title = "Twitching impaled human"; + sprite = "POL6A0"; + width = 16; + blocking = 1; + error = 2; + class = "LiveStick"; + } + + 27 + { + title = "Skull on a pole"; + sprite = "POL4A0"; + width = 16; + blocking = 1; + error = 2; + class = "HeadOnAStick"; + } + + 28 + { + title = "5 skulls shish kebob"; + sprite = "POL2A0"; + width = 16; + blocking = 1; + error = 2; + class = "HeadsOnAStick"; + } + + 29 + { + title = "Pile of skulls and candles"; + sprite = "POL3A0"; + width = 16; + blocking = 1; + error = 2; + class = "HeadCandles"; + } + + 10 + { + title = "Bloody mess 1"; + sprite = "PLAYW0"; + class = "GibbedMarine"; + } + + 12 + { + title = "Bloody mess 2"; + sprite = "PLAYW0"; + class = "GibbedMarineExtra"; + } + + 24 + { + title = "Pool of blood and bones"; + sprite = "POL5A0"; + class = "Gibs"; + } + + 15 + { + title = "Dead player"; + sprite = "PLAYN0"; + class = "DeadMarine"; + } + + 18 + { + title = "Dead former human"; + sprite = "POSSL0"; + width = 20; + class = "DeadZombieMan"; + } + + 19 + { + title = "Dead former sergeant"; + sprite = "SPOSL0"; + width = 20; + class = "DeadShotgunGuy"; + } + + 20 + { + title = "Dead imp"; + sprite = "TROOM0"; + width = 20; + class = "DeadDoomImp"; + } + + 21 + { + title = "Dead demon"; + sprite = "SARGN0"; + width = 30; + class = "DeadDemon"; + } + + 22 + { + title = "Dead cacodemon"; + sprite = "HEADL0"; + width = 31; + class = "DeadCacodemon"; + } + + 23 + { + title = "Dead lost soul"; + class = "DeadLostSoul"; + } +} diff --git a/Build/Configurations/Includes/GZDoom_things.cfg b/Build/Configurations/Includes/GZDoom_things.cfg new file mode 100644 index 0000000..37fc550 --- /dev/null +++ b/Build/Configurations/Includes/GZDoom_things.cfg @@ -0,0 +1,474 @@ +gzdoom_lights +{ + dynlights + { + color = 7; + arrow = 0; + title = "Dynamic Lights"; + sort = 1; + width = 0; + height = 0; + hangs = 0; + blocking = 0; + fixedsize = true; + sprite = "internal:light"; + + 9800 + { + title = "Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Intensity"; + default = 64; + } + } + 9801 + { + title = "Pulse Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Start intensity"; + default = 64; + } + arg4 + { + title = "End intensity"; + default = 32; + } + } + 9802 + { + title = "Flicker Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Primary intensity"; + default = 64; + } + arg4 + { + title = "Secondary intensity"; + default = 32; + } + } + 9803 + { + title = "Sector Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Intensity scale"; + default = 4; + } + } + 9804 + { + title = "Random Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Minimal intensity"; + default = 32; + } + arg4 + { + title = "Maximal intensity"; + default = 64; + } + } + 9810 + { + title = "Additive Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Intensity"; + default = 64; + } + } + 9811 + { + title = "Additive Pulse Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Start intensity"; + default = 32; + } + arg4 + { + title = "End intensity"; + default = 64; + } + } + 9812 + { + title = "Additive Flicker Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Primary intensity"; + default = 64; + } + arg4 + { + title = "Secondary intensity"; + default = 32; + } + } + 9813 + { + title = "Additive Sector Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Intensity scale"; + default = 4; + } + } + 9814 + { + title = "Additive Random Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Minimal intensity"; + default = 32; + } + arg4 + { + title = "Maximal intensity"; + default = 64; + } + } + 9820 + { + title = "Subtractive Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Radius"; + default = 64; + } + } + 9821 + { + title = "Subtractive Pulse Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Start intensity"; + default = 32; + } + arg4 + { + title = "End intensity"; + default = 64; + } + } + 9822 + { + title = "Subtractive Flicker Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Primary intensity"; + default = 32; + } + arg4 + { + title = "Secondary intensity"; + default = 64; + } + } + 9823 + { + title = "Subtractive Sector Light"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Intensity scale"; + default = 4; + } + } + 9824 + { + title = "Subtractive Random Light"; + fixedrotation = true; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Minimal intensity"; + default = 32; + } + arg4 + { + title = "Maximal intensity"; + default = 64; + } + } + 9825 = "Vavoom Light"; + 1502 + { + title = "Vavoom Light "; + arg0 + { + title = "Radius"; + default = 16; + } + } + 1503 + { + title = "Vavoom Light Color"; + arg0 + { + title = "Radius"; + default = 16; + } + arg1 + { + title = "Red"; + default = 255; + } + arg2 + { + title = "Green"; + default = 255; + } + arg3 + { + title = "Blue"; + default = 255; + } + } + } +} + +gzdoom +{ + zdoom + { + blocking = 2; + 5004 = "Map Spot (FraggleScript)"; + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Game_Doom.cfg b/Build/Configurations/Includes/Game_Doom.cfg new file mode 100644 index 0000000..f3d3fd3 --- /dev/null +++ b/Build/Configurations/Includes/Game_Doom.cfg @@ -0,0 +1,29 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + basegame = 1; //mxd: 0 - UNKNOWN, 1 - DOOM, 2 - HERETIC, 3 - HEXEN, 4 - STRIFE, + + // Decorate actors to include depending on actor game property + decorategames = "doom"; + + // Skill levels + skills + { + include("Doom_misc.cfg", "skills"); + } + + // Default textures + defaultwalltexture = "STARTAN"; + defaultfloortexture = "FLOOR0_1"; + defaultceilingtexture = "CEIL1_1"; + + // Door making + makedoortrack = "DOORTRAK"; + makedoordoor = "BIGDOOR2"; + makedoorceil = "FLAT20"; + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Doom_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Includes/Game_Heretic.cfg b/Build/Configurations/Includes/Game_Heretic.cfg new file mode 100644 index 0000000..d73b31b --- /dev/null +++ b/Build/Configurations/Includes/Game_Heretic.cfg @@ -0,0 +1,29 @@ +// Default lump name for new map + defaultlumpname = "E1M1"; + basegame = 2; + + // Decorate actors to include depending on actor game property + decorategames = "heretic raven"; + + // Skill levels + skills + { + include("Heretic_misc.cfg", "skills"); + } + + // Default textures + defaultwalltexture = "GRSTNPB"; + defaultfloortexture = "FLOOR03"; + defaultceilingtexture = "FLAT506"; + + // Door making + makedoortrack = "WOODWL"; + makedoordoor = "DOORWOOD"; + makedoorceil = "FLOOR04"; + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Heretic_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Includes/Game_Hexen.cfg b/Build/Configurations/Includes/Game_Hexen.cfg new file mode 100644 index 0000000..30b1418 --- /dev/null +++ b/Build/Configurations/Includes/Game_Hexen.cfg @@ -0,0 +1,30 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + skyflatname = "F_SKY"; + basegame = 3; + + // Decorate actors to include depending on actor game property + decorategames = "hexen raven"; + + // Skill levels + skills + { + include("Hexen_misc.cfg", "skills"); + } + + // Default textures + defaultwalltexture = "FOREST01"; + defaultfloortexture = "F_010"; + defaultceilingtexture = "F_011"; + + // Door making + makedoortrack = "D_END2"; + makedoordoor = "D_WD07"; + makedoorceil = "F_092"; + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Hexen_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Includes/Game_Strife.cfg b/Build/Configurations/Includes/Game_Strife.cfg new file mode 100644 index 0000000..de3b6a6 --- /dev/null +++ b/Build/Configurations/Includes/Game_Strife.cfg @@ -0,0 +1,30 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + skyflatname = "F_SKY001"; + basegame = 4; + + // Decorate actors to include depending on actor game property + decorategames = "strife"; + + // Skill levels + skills + { + include("Strife_misc.cfg", "skills"); + } + + // Default textures + defaultwalltexture = "BRKGRY17"; + defaultfloortexture = "F_NOLINE"; + defaultceilingtexture = "F_DECK"; + + // Door making + makedoortrack = "DORTRK01"; + makedoordoor = "DORML01"; + makedoorceil = "F_UNDOOR"; + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Strife_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Includes/Heretic_common.cfg b/Build/Configurations/Includes/Heretic_common.cfg new file mode 100644 index 0000000..9fe8a86 --- /dev/null +++ b/Build/Configurations/Includes/Heretic_common.cfg @@ -0,0 +1,90 @@ +//mxd. These settings are used only in Vanilla Heretic configuration. +mapformat_doom +{ + // The format interface handles the map data format + formatinterface = "DoomMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "doommaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = true; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("Doom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_doom"); + + // Generalized actions + generalizedlinedefs = false; + generalizedsectors = false; + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("Doom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Heretic_sectors.cfg"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Heretic_linedefs.cfg"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Doom_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Doom_misc.cfg", "thingflagsmasks"); +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Heretic_linedefs.cfg b/Build/Configurations/Includes/Heretic_linedefs.cfg new file mode 100644 index 0000000..b1eb4e0 --- /dev/null +++ b/Build/Configurations/Includes/Heretic_linedefs.cfg @@ -0,0 +1,700 @@ + +misc +{ + + 0 + { + title = "None"; + prefix = ""; + } +} + + +door +{ + title = "Door"; + + 1 + { + title = "Door Open Wait Close (also monsters)"; + prefix = "DR"; + } + + 2 + { + title = "Door Open Stay"; + prefix = "W1"; + } + + 3 + { + title = "Door Close Stay"; + prefix = "W1"; + } + + 4 + { + title = "Door Open Wait Close"; + prefix = "W1"; + } + + 16 + { + title = "Door Close Wait Open"; + prefix = "W1"; + } + + 26 + { + title = "Door (Blue) Open Wait Close"; + prefix = "DR"; + } + + 27 + { + title = "Door (Yellow) Open Wait Close"; + prefix = "DR"; + } + + 28 + { + title = "Door (Red) Open Wait Close"; + prefix = "DR"; + } + + 29 + { + title = "Door Open Wait Close"; + prefix = "S1"; + } + + 31 + { + title = "Door Open Stay"; + prefix = "D1"; + } + + 32 + { + title = "Door (Blue) Open Stay"; + prefix = "D1"; + } + + 33 + { + title = "Door (Red) Open Stay"; + prefix = "D1"; + } + + 34 + { + title = "Door (Yellow) Open Stay"; + prefix = "D1"; + } + + 42 + { + title = "Door Close Stay"; + prefix = "SR"; + } + + 46 + { + title = "Door Open Stay"; + prefix = "GR"; + } + + 50 + { + title = "Door Close Stay"; + prefix = "S1"; + } + + 61 + { + title = "Door Open Stay"; + prefix = "SR"; + } + + 63 + { + title = "Door Open Wait Close"; + prefix = "SR"; + } + + 75 + { + title = "Door Close Stay"; + prefix = "WR"; + } + + 76 + { + title = "Door Close Stay Open"; + prefix = "WR"; + } + + 86 + { + title = "Door Open Stay"; + prefix = "WR"; + } + + 90 + { + title = "Door Open Wait Close"; + prefix = "WR"; + } + + 103 + { + title = "Door Open Stay"; + prefix = "S1"; + } +} + + +floor +{ + title = "Floor"; + + 5 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "W1"; + } + + 9 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "S1"; + } + + 14 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "S1"; + } + + 15 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "S1"; + } + + 18 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "S1"; + } + + 19 + { + title = "Floor Lower to Highest Floor"; + prefix = "W1"; + } + + 20 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "S1"; + } + + 22 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "W1"; + } + + 23 + { + title = "Floor Lower to Lowest Floor"; + prefix = "S1"; + } + + 24 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "G1"; + } + + 30 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "W1"; + } + + 36 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "W1"; + } + + 37 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "W1"; + } + + 38 + { + title = "Floor Lower to Lowest Floor"; + prefix = "W1"; + } + + 45 + { + title = "Floor Lower to Highest Floor"; + prefix = "SR"; + } + + 47 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "G1"; + } + + 53 + { + title = "Floor Start Moving Up and Down"; + prefix = "W1"; + } + + 54 + { + title = "Floor Stop Moving"; + prefix = "W1"; + } + + 55 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "S1"; + } + + 56 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "W1"; + } + + 58 + { + title = "Floor Raise by 24"; + prefix = "W1"; + } + + 59 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "W1"; + } + + 60 + { + title = "Floor Lower to Lowest Floor"; + prefix = "SR"; + } + + 64 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "SR"; + } + + 65 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "SR"; + } + + 66 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "SR"; + } + + 67 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "SR"; + } + + 68 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "SR"; + } + + 69 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "SR"; + } + + 70 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "SR"; + } + + 71 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "S1"; + } + + 82 + { + title = "Floor Lower to Lowest Floor"; + prefix = "WR"; + } + + 83 + { + title = "Floor Lower to Highest Floor"; + prefix = "WR"; + } + + 84 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "WR"; + } + + 87 + { + title = "Floor Start Moving Up and Down"; + prefix = "WR"; + } + + 89 + { + title = "Floor Stop Moving"; + prefix = "WR"; + } + + 91 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "WR"; + } + + 92 + { + title = "Floor Raise by 24"; + prefix = "WR"; + } + + 93 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "WR"; + } + + 94 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "WR"; + } + + 95 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "WR"; + } + + 96 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "WR"; + } + + 98 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "WR"; + } + + 101 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "S1"; + } + + 102 + { + title = "Floor Lower to Highest Floor"; + prefix = "S1"; + } +} + + +crusher +{ + title = "Crusher"; + + 6 + { + title = "Crusher Start with Fast Damage"; + prefix = "W1"; + } + + 25 + { + title = "Crusher Start with Slow Damage"; + prefix = "W1"; + } + + 57 + { + title = "Crusher Stop"; + prefix = "W1"; + } + + 73 + { + title = "Crusher Start with Slow Damage"; + prefix = "WR"; + } + + 74 + { + title = "Crusher Stop"; + prefix = "WR"; + } + + 77 + { + title = "Crusher Start with Fast Damage"; + prefix = "WR"; + } +} + + +stairs +{ + title = "Stairs"; + + 7 + { + title = "Stairs Raise by 8"; + prefix = "S1"; + } + + 8 + { + title = "Stairs Raise by 8"; + prefix = "W1"; + } +} + + +lift +{ + title = "Lift"; + + 10 + { + title = "Lift Lower Wait Raise"; + prefix = "W1"; + } + + 21 + { + title = "Lift Lower Wait Raise"; + prefix = "S1"; + } + + 62 + { + title = "Lift Lower Wait Raise"; + prefix = "SR"; + } + + 88 + { + title = "Lift Lower Wait Raise"; + prefix = "WR"; + } +} + + +exit +{ + title = "Exit"; + + 11 + { + title = "Exit Level"; + prefix = "S1"; + } + + 51 + { + title = "Exit Level (goes to secret level)"; + prefix = "S1"; + } + + 52 + { + title = "Exit Level"; + prefix = "W1"; + } + + 105 + { + title = "Exit Level (goes to secret level)"; + prefix = "W1"; + } +} + + +light +{ + title = "Light"; + + 12 + { + title = "Light Change to Brightest Adjacent"; + prefix = "W1"; + } + + 13 + { + title = "Light Change to Brightest"; + prefix = "W1"; + } + + 17 + { + title = "Light Start Blinking"; + prefix = "W1"; + } + + 35 + { + title = "Light Change to Darkest"; + prefix = "W1"; + } + + 79 + { + title = "Light Change to Darkest"; + prefix = "WR"; + } + + 80 + { + title = "Light Change to Brightest Adjacent"; + prefix = "WR"; + } + + 81 + { + title = "Light Change to Brightest"; + prefix = "WR"; + } + + 104 + { + title = "Light Change to Darkest Adjacent"; + prefix = "W1"; + } +} + + +ceiling +{ + title = "Ceiling"; + + 40 + { + title = "Ceiling Raise to Highest Ceiling"; + prefix = "W1"; + } + + 41 + { + title = "Ceiling Lower to Floor"; + prefix = "S1"; + } + + 43 + { + title = "Ceiling Lower to Floor"; + prefix = "SR"; + } + + 44 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "W1"; + } + + 49 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "S1"; + } + + 72 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "WR"; + } +} + + +scroll +{ + title = "Scroll"; + + 48 + { + title = "Scroll Texture Left"; + prefix = ""; + } + + 99 + { + title = "Scroll Texture Right"; + prefix = ""; + } +} + + +build +{ + title = "Build"; + + 106 + { + title = "Build Stairs (16 Tall)"; + prefix = "W1"; + } + + 107 + { + title = "Build Stairs (16 Tall)"; + prefix = "S1"; + } +} + + +teleport +{ + title = "Teleport"; + + 97 + { + title = "Teleport"; + prefix = "WR"; + } + + 39 + { + title = "Teleport"; + prefix = "W1"; + } +} diff --git a/Build/Configurations/Includes/Heretic_misc.cfg b/Build/Configurations/Includes/Heretic_misc.cfg new file mode 100644 index 0000000..524304d --- /dev/null +++ b/Build/Configurations/Includes/Heretic_misc.cfg @@ -0,0 +1,19 @@ +// Basic Heretic stuff. +skills +{ + 1 = "Thou needeth a wet-nurse"; + 2 = "Yellowbellies-r-us"; + 3 = "Bringest them oneth"; + 4 = "Thou art a smite-meister"; + 5 = "Black plague possesses thee"; +} + +//mxd. These are Heretic-specific settings only. +//mxd. These settings are valid only in native Heretic map format. +mapformat_doom +{ + sectortypes + { + include("Heretic_sectors.cfg"); + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Heretic_sectors.cfg b/Build/Configurations/Includes/Heretic_sectors.cfg new file mode 100644 index 0000000..6f21afe --- /dev/null +++ b/Build/Configurations/Includes/Heretic_sectors.cfg @@ -0,0 +1,49 @@ + +0 = "None"; +1 = "Light Blinks (Randomly)"; +2 = "Light Blinks (0.5s)"; +3 = "Light Blinks (1.0s)"; +4 = "Damage (5 Points, Fast, Fire), Light Blinks (0.5s), Scroll East (Fast)"; +5 = "Damage (5 Points, Fast, Fire)"; +7 = "Damage (4 Points, Slow, Normal)"; +8 = "Light Glows (1.0s)"; +9 = "Secret"; +10 = "Door Close Stay (After 30s)"; +12 = "Light Blinks (0.5s Synchronized)"; +13 = "Light Blinks (1.0s Synchronized)"; +14 = "Door Open Stay (After 300s)"; +15 = "Friction"; +16 = "Damage (8 Points, Fast, Fire)"; +20 = "Scroll East (Slowest)"; +21 = "Scroll East (Slow)"; +22 = "Scroll East (Medium)"; +23 = "Scroll East (Fast)"; +24 = "Scroll East (Fastest)"; +25 = "Scroll North (Slowest)"; +26 = "Scroll North (Slow)"; +27 = "Scroll North (Medium)"; +28 = "Scroll North (Fast)"; +29 = "Scroll North (Fastest)"; +30 = "Scroll South (Slowest)"; +31 = "Scroll South (Slow)"; +32 = "Scroll South (Medium)"; +33 = "Scroll South (Fast)"; +34 = "Scroll South (Fastest)"; +35 = "Scroll West (Slowest)"; +36 = "Scroll West (Slow)"; +37 = "Scroll West (Medium)"; +38 = "Scroll West (Fast)"; +39 = "Scroll West (Fastest)"; +40 = "Wind East (Weak)"; +41 = "Wind East (Medium)"; +42 = "Wind East (Strong)"; +43 = "Wind North (Weak)"; +44 = "Wind North (Medium)"; +45 = "Wind North (Strong)"; +46 = "Wind South (Weak)"; +47 = "Wind South (Medium)"; +48 = "Wind South (Strong)"; +49 = "Wind West (Weak)"; +50 = "Wind West (Medium)"; +51 = "Wind West (Strong)"; + diff --git a/Build/Configurations/Includes/Heretic_texturesets.cfg b/Build/Configurations/Includes/Heretic_texturesets.cfg new file mode 100644 index 0000000..9cd707b --- /dev/null +++ b/Build/Configurations/Includes/Heretic_texturesets.cfg @@ -0,0 +1,100 @@ + +set0 +{ + name = "Liquids"; + filter0 = "FLATHUH*"; + filter1 = "FLTFLWW*"; + filter2 = "FLTLAVA*"; + filter3 = "FLTSLUD*"; + filter4 = "FLTWAWA*"; + filter5 = "LAVAFL*"; + filter6 = "WATRWAL*"; +} + + +set1 +{ + name = "Stone"; + filter0 = "BRWNRCKS"; + filter1 = "BANNER1"; + filter2 = "BANNER2"; + filter3 = "BANNER3"; + filter4 = "BANNER4"; + filter5 = "BANNER7"; + filter6 = "BANNER8"; + filter7 = "CSTLMOSS"; + filter8 = "CSTLRCK"; + filter9 = "FLAT520"; + filter10 = "FLAT521"; + filter11 = "FLAT522"; + filter12 = "FLAT523"; + filter13 = "FLOOR00"; + filter14 = "FLOOR01"; + filter15 = "FLOOR03"; + filter16 = "FLOOR18"; + filter17 = "GRSTNPB"; + filter18 = "GRSTNPBV"; + filter19 = "GRSTNPBW"; + filter20 = "LOOSERCK"; + filter21 = "RCKSNMUD"; + filter22 = "ROOTWALL"; + filter23 = "SQPEB1"; + filter24 = "SQPEB2"; + filter25 = "TRISTON1"; + filter26 = "TRISTON2"; + filter27 = "BLUEFRAG"; + filter28 = "FLOOR04"; + filter29 = "FLOOR05"; + filter30 = "FLOOR06"; + filter31 = "FLOOR07"; + filter32 = "FLOOR16"; + filter33 = "FLOOR19"; + filter34 = "FLOOR20"; + filter35 = "GRNBLOK*"; + filter36 = "LAVA1"; + filter37 = "SNDBLCKS"; +} + + +set2 +{ + name = "Metal"; + filter0 = "CHAINSD"; + filter1 = "DMNMSK"; + filter2 = "DOOREXIT"; + filter3 = "DOORSTON"; + filter4 = "FLAT500"; + filter5 = "FLOOR08"; + filter6 = "FLOOR21"; + filter7 = "FLOOR22"; + filter8 = "FLOOR23"; + filter9 = "FLOOR24"; + filter10 = "FLOOR26"; + filter11 = "FLOOR28"; + filter12 = "FLOOR29"; + filter13 = "FLOOR30"; + filter14 = "METL1"; + filter15 = "METL2"; + filter16 = "SAINT1"; + filter17 = "SKULLSB1"; + filter18 = "SKULLSB2"; + filter19 = "SW1OFF"; + filter20 = "SW1ON"; + filter21 = "SW2OFF"; + filter22 = "SW2ON"; + filter23 = "GATMETL*"; + filter24 = "GATMETL"; + filter25 = "GRSKULL*"; +} + + +set3 +{ + name = "Town"; + filter0 = "CTYSTCI*"; + filter1 = "CTYSTUC*"; + filter2 = "FLOOR11"; + filter3 = "FLOOR12"; + filter4 = "WOODWL"; + filter5 = "WDGAT64"; +} diff --git a/Build/Configurations/Includes/Heretic_things.cfg b/Build/Configurations/Includes/Heretic_things.cfg new file mode 100644 index 0000000..b484897 --- /dev/null +++ b/Build/Configurations/Includes/Heretic_things.cfg @@ -0,0 +1,659 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + height = 56; + blocking = 2; + error = 2; + sort = 1; + + 1 + { + title = "Player 1 start"; + sprite = "PLAYA1"; + } + 2 + { + title = "Player 2 start"; + sprite = "PLAYA1"; + } + 3 + { + title = "Player 3 start"; + sprite = "PLAYA1"; + } + 4 + { + title = "Player 4 start"; + sprite = "PLAYA1"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYQ0"; + } +} + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + height = 56; + blocking = 0; + error = 0; + sort = 0; + + 14 + { + title = "Teleport Landing"; + sprite = "TELEA0"; + } + 56 + { + title = "D'Sparil Teleport Location"; + sprite = "SOR2I0"; + } + 52 + { + title = "Teleport Glitter (Exit/Blue)"; + sprite = "TGLTF0"; + } + 74 + { + title = "Teleport Glitter (Normal/Red)"; + sprite = "TGLTA0"; + } + +} + +sounds +{ + color = 5; // Purple + arrow = 1; + title = "Sounds"; + width = 20; + height = 16; + blocking = 0; + error = 0; + sort = 1; + + 41 = "Looping Sound: Waterfall"; + 42 = "Looping Sound: Wind"; + + 1203 = "Sequence: Slow Footsteps"; + 1209 = "Sequence: Fast Footsteps"; + + 1200 = "Sequence: Scream"; + 1206 = "Sequence: Growl"; + 1208 = "Sequence: Laughter"; + + 1204 = "Sequence: Heartbeat"; + 1201 = "Sequence: Squish"; + + 1202 = "Sequence: Water Drops"; + 1205 = "Sequence: Bells"; + 1207 = "Sequence: Magic"; +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 16; + sort = 0; + error = 2; + blocking = 2; + + 66 + { + title = "Gargoyle"; + sprite = "IMPXA1"; + height = 36; + } + 5 + { + title = "Fire Gargoyle"; + sprite = "IMPXF1"; + height = 36; + } + 68 + { + title = "Golem"; + sprite = "MUMMA1"; + width = 22; + height = 62; + } + 69 + { + title = "Golem Ghost"; + sprite = "MUMMA1"; + width = 22; + height = 62; + } + 45 + { + title = "Nitrogolem"; + sprite = "MUMMY1"; + width = 22; + height = 62; + } + 46 + { + title = "Nitrogolem Ghost"; + sprite = "MUMMY1"; + width = 22; + height = 62; + } + 90 + { + title = "Sabreclaw"; + sprite = "CLNKA1"; + width = 20; + height = 64; + } + 64 + { + title = "Undead Warrior"; + sprite = "KNIGA1"; + width = 24; + height = 78; + } + 65 + { + title = "Undead Warrior Ghost"; + sprite = "KNIGA1"; + width = 24; + height = 78; + } + 70 + { + title = "Weredragon"; + sprite = "BEASA1"; + width = 32; + height = 74; + } + 92 + { + title = "Ophidian"; + sprite = "SNKEA1"; + width = 22; + height = 70; + } + 15 + { + title = "Disciple Of D'Sparil"; + sprite = "WZRDA1"; + height = 68; + } + 6 + { + title = "Iron Lich"; + sprite = "HEADA1"; + width = 40; + height = 72; + } + 9 + { + title = "Maulotaur"; + sprite = "MNTRA1"; + width = 28; + height = 100; + } + 7 + { + title = "D'Sparil"; + sprite = "SRCRA1"; + width = 28; + height = 100; + } +} + +hazards +{ + color = 4; // Red + arrow = 1; + title = "Hazards"; + width = 20; + blocking = 2; + error = 2; + sort = 0; + + 87 + { + title = "Volcano"; + sprite = "VLCOE0"; + height = 20; + } + 2035 + { + title = "Gasbag"; + sprite = "PPODA0"; + height = 54; + } + 43 + { + title = "Gasbag Generator"; + sprite = "PPODA0"; + height = 16; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 1; + title = "Weapons"; + width = 20; + height = 16; + blocking = 0; + sort = 0; + + 2005 + { + title = "Gauntlets Of The Necromancer"; + sprite = "WGNTA0"; + } + 2001 + { + title = "Ethereal Crossbow"; + sprite = "WBOWA0"; + } + 53 + { + title = "Dragon Claw"; + sprite = "WBLSA0"; + } + 2003 + { + title = "Phoenix Rod"; + sprite = "WPHXA0"; + } + 2004 + { + title = "Hellstaff"; + sprite = "WSKLA0"; + } + 2002 + { + title = "Firemace"; + sprite = "WMCEA0"; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 1; + title = "Ammunition"; + width = 20; + sort = 0; + height = 16; + blocking = 0; + + 10 + { + title = "Wand Crystal"; + sprite = "AMG1A0"; + } + 12 + { + title = "Crystal Geode"; + sprite = "AMG2A0"; + } + 18 + { + title = "Ethereal Arrows"; + sprite = "AMC1A0"; + } + 19 + { + title = "Quiver Of Ethereal Arrows"; + sprite = "AMC2A0"; + } + 54 + { + title = "Claw Orb"; + sprite = "AMB1A0"; + } + 55 + { + title = "Energy Orb"; + sprite = "AMB2A0"; + } + 22 + { + title = "Flame Orb"; + sprite = "AMP1A0"; + } + 23 + { + title = "Inferno Orb"; + sprite = "AMP2A0"; + } + 20 + { + title = "Lesser Runes"; + sprite = "AMS1A0"; + } + 21 + { + title = "Greater Runes"; + sprite = "AMS2A0"; + } + 13 + { + title = "Mace Spheres"; + sprite = "AMM1A0"; + } + 16 + { + title = "Pile Of Mace Spheres"; + sprite = "AMM2A0"; + } + 8 + { + title = "Bag Of Holding"; + sprite = "BAGHA0"; + } + 34 + { + title = "Time Bomb Of The Ancients"; + sprite = "FBMBA0"; + } + 30 + { + title = "Morph Ovum"; + sprite = "EGGCA0"; + } +} + +health +{ + color = 1; // Blue + arrow = 1; + title = "Health and Armor"; + width = 20; + height = 16; + blocking = 0; + sort = 0; + + 81 + { + title = "Crystal Vial"; + sprite = "PTN1A0"; + } + 82 + { + title = "Quartz Flask"; + sprite = "PTN2A0"; + } + 32 + { + title = "Mystic Urn"; + sprite = "SPHLA0"; + } + 85 + { + title = "Silver Shield"; + sprite = "SHLDA0"; + } + 31 + { + title = "Enchanted Shield"; + sprite = "SHD2A0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 1; + title = "Artifacts"; + width = 20; + height = 20; + blocking = 0; + sort = 0; + + 35 + { + title = "Map Scroll"; + sprite = "SPMPA0"; + } + 33 + { + title = "Torch"; + sprite = "TRCHA0"; + } + 36 + { + title = "Chaos Device"; + sprite = "ATLPA0"; + } + 75 + { + title = "Shadowsphere"; + sprite = "INVSA0"; + } + 84 + { + title = "Ring of Invulnerability"; + sprite = "INVUA0"; + } + 86 + { + title = "Tome of Power"; + sprite = "PWBKA0"; + } + 83 + { + title = "Wings Of Wrath"; + sprite = "SOARA0"; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 1; + title = "Keys"; + width = 20; + height = 16; + blocking = 0; + sort = 0; + + 80 + { + title = "Yellow Key"; + sprite = "CKYYA0"; + } + 73 + { + title = "Green Key"; + sprite = "AKYYA0"; + } + 79 + { + title = "Blue Key"; + sprite = "BKYYA0"; + } + +} + +obstacles +{ + color = 3; // Cyan + arrow = 1; + title = "Obstacles"; + width = 20; + blocking = 2; + error = 2; + sort = 0; + + 37 + { + title = "Stalagmite (Small)"; + sprite = "STGSA0"; + height = 32; + } + 38 + { + title = "Stalagmite (Large)"; + sprite = "STGLA0"; + height = 64; + } + 39 + { + title = "Stalactite (Small)"; + sprite = "STCSA0"; + height = 36; + hangs = 1; + } + 40 + { + title = "Stalactite (Large)"; + sprite = "STCLA0"; + height = 68; + hangs = 1; + } + 44 + { + title = "Barrel"; + sprite = "BARLA0"; + height = 32; + } + 29 + { + title = "Small Pillar"; + sprite = "SMPLA0"; + height = 34; + } + 47 + { + title = "Brown Pillar"; + sprite = "BRPLA0"; + height = 128; + } +} + +decoration +{ + color = 11; // Light Cyan + arrow = 1; + title = "Decoration"; + width = 16; + sort = 0; + blocking = 2; + error = 2; + + 96 + { + title = "Yellow Key Marker"; + sprite = "KGZYA0"; + height = 50; + } + 95 + { + title = "Green Key Marker"; + sprite = "KGZGA0"; + height = 50; + } + 94 + { + title = "Blue Key Marker"; + sprite = "KGZBA0"; + height = 50; + } + + 51 + { + title = "Hanging Corpse"; + sprite = "HCORA0"; + hangs = 1; + height = 104; + } + 17 + { + title = "Hanging Skull 1"; + sprite = "SKH1A0"; + hangs = 1; + height = 70; + } + 24 + { + title = "Hanging Skull 2"; + sprite = "SKH2A0"; + hangs = 1; + height = 60; + } + 25 + { + title = "Hanging Skull 3"; + sprite = "SKH3A0"; + hangs = 1; + height = 45; + } + 26 + { + title = "Hanging Skull 4"; + sprite = "SKH4A0"; + hangs = 1; + height = 35; + } + 48 + { + title = "Moss 1"; + sprite = "MOS1A0"; + height = 23; + hangs = 1; + } + 49 + { + title = "Moss 2"; + sprite = "MOS2A0"; + height = 27; + hangs = 1; + } +} + +lights +{ + color = 7; // Light Grey + arrow = 1; + title = "Light Sources"; + width = 16; + sort = 0; + blocking = 2; + error = 2; + + 50 + { + title = "Wall Torch"; + sprite = "WTRHA0"; + height = 64; + } + 27 + { + title = "Serpent Torch"; + sprite = "SRTCA0"; + height = 54; + } + 76 + { + title = "Fire Brazier"; + sprite = "KFR1A0"; + height = 44; + } + 28 + { + title = "Chandelier"; + sprite = "CHDLA0"; + hangs = 1; + height = 62; + } +} diff --git a/Build/Configurations/Includes/Hexen_common.cfg b/Build/Configurations/Includes/Hexen_common.cfg new file mode 100644 index 0000000..c4cf380 --- /dev/null +++ b/Build/Configurations/Includes/Hexen_common.cfg @@ -0,0 +1,101 @@ +//mxd. These settings are used only in Vanilla Hexen configuration. +mapformat_hexen +{ + // The format interface handles the map data format + formatinterface = "HexenMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "hexenmaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = false; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("ZDoom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_hexen"); + + // Generalized actions + generalizedlinedefs = false; + generalizedsectors = false; + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("ZDoom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Hexen_sectors.cfg"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + include("Hexen_misc.cfg", "linedefflags"); + } + + // Activations filter for Hexen type activations + // This filters the activation bits from the flags + include("Hexen_misc.cfg", "linedefactivationsfilter"); + + // LINEDEF ACTIVATIONS + // Make sure these are in order from lowest value to highest value + linedefactivations + { + include("Hexen_misc.cfg", "linedefactivations"); + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Hexen_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Hexen_linedefs.cfg"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + include("Hexen_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + include("Hexen_misc.cfg", "thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Hexen_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Hexen_misc.cfg", "thingflagsmasks"); + +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Hexen_linedefs.cfg b/Build/Configurations/Includes/Hexen_linedefs.cfg new file mode 100644 index 0000000..7994c8f --- /dev/null +++ b/Build/Configurations/Includes/Hexen_linedefs.cfg @@ -0,0 +1,2187 @@ + +misc +{ + + 0 + { + title = "None"; + } +} + + +polyobj +{ + title = "Polyobj"; + + 1 + { + title = "Polyobj Start Line"; + id = "Polyobj_StartLine"; + requiresactivation = false; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Mirror Polyobj Number"; + } + + arg2 + { + title = "Sound Number"; + } + } + + 2 + { + title = "Polyobj Rotate Left"; + id = "Polyobj_RotateLeft"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Rotation Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Target Angle"; + type = 11; + enum = "polyobj_angles"; + } + } + + 3 + { + title = "Polyobj Rotate Right"; + id = "Polyobj_RotateRight"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Rotation Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Target Angle"; + type = 11; + enum = "polyobj_angles"; + } + } + + 4 + { + title = "Polyobj Move"; + id = "Polyobj_Move"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Movement Distance"; + default = 64; + } + } + + 5 + { + title = "Polyobj Explicit Line"; + id = "Polyobj_ExplicitLine"; + requiresactivation = false; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Rendering order"; + } + + arg2 + { + title = "Mirror Polyobj Number"; + } + + arg3 + { + title = "Sound Number"; + } + } + + 6 + { + title = "Polyobj Move (* 8)"; + id = "Polyobj_MoveTimes8"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Movement Dist. * 8"; + default = 8; + } + } + + 7 + { + title = "Polyobj Door Swing"; + id = "Polyobj_DoorSwing"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "polyobj_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 8 + { + title = "Polyobj Door Slide"; + id = "Polyobj_DoorSlide"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Movement Distance"; + default = 64; + } + + arg4 + { + title = "Delay"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 90 + { + title = "Polyobj Rotate Left (override)"; + id = "Polyobj_OR_RotateLeft"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Rotation Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Target Angle"; + type = 11; + enum = "polyobj_angles"; + } + } + + 91 + { + title = "Polyobj Rotate Right (override)"; + id = "Polyobj_OR_RotateRight"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Rotation Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Target Angle"; + type = 11; + enum = "polyobj_angles"; + } + } + + 92 + { + title = "Polyobj Move (override)"; + id = "Polyobj_OR_Move"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Movement Distance"; + default = 64; + } + } + + 93 + { + title = "Polyobj Move (8mu, override)"; + id = "Polyobj_OR_MoveTimes8"; + + arg0 + { + title = "Polyobj Number"; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Movement Distance * 8"; + default = 8; + } + } +} + + +line +{ + title = "Line"; + + 121 + { + title = "Line Identification"; + id = "Line_SetIdentification"; + + arg0 + { + title = "Line ID"; + } + } +} + + +door +{ + title = "Door"; + + 10 + { + title = "Door Close"; + id = "Door_Close"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "door_speeds"; + default = 32; + } + + arg2 + { + title = "Light Tag"; + type = 13; + } + } + + 11 + { + title = "Door Open"; + id = "Door_Open"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "door_speeds"; + default = 32; + } + + arg2 + { + title = "Light Tag"; + type = 13; + } + } + + 12 + { + title = "Door Raise"; + id = "Door_Raise"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "door_speeds"; + default = 32; + } + + arg2 + { + title = "Close Delay"; + type = 11; + enum = "reset_tics"; + default = 105; + } + + arg3 + { + title = "Light Tag"; + type = 13; + } + } + + 13 + { + title = "Door Locked Raise"; + id = "Door_LockedRaise"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "door_speeds"; + default = 32; + } + + arg2 + { + title = "Close Delay"; + type = 11; + enum = "reset_tics"; + default = 105; + } + + arg3 + { + title = "Key Number"; + type = 11; + enum = "keys"; + } + + arg4 + { + title = "Light Tag"; + type = 13; + } + } +} + + +floor +{ + title = "Floor"; + + 20 + { + title = "Floor Lower by Value"; + id = "Floor_LowerByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Lower by"; + } + } + + 21 + { + title = "Floor Lower to Lowest Floor"; + id = "Floor_LowerToLowest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + } + + 22 + { + title = "Floor Lower to Nearest Floor"; + id = "Floor_LowerToNearest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + } + + 23 + { + title = "Floor Raise by Value"; + id = "Floor_RaiseByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Raise by"; + } + } + + 24 + { + title = "Floor Raise to Highest Floor"; + id = "Floor_RaiseToHighest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + } + + 25 + { + title = "Floor Raise to Nearest Floor"; + id = "Floor_RaiseToNearest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + } + + 28 + { + title = "Floor Crusher Start"; + id = "Floor_RaiseAndCrush"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Crush Damage"; + default = 100; + } + } + + 35 + { + title = "Floor Raise by Value * 8"; + id = "Floor_RaiseByValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Raise by (* 8)"; + } + } + + 36 + { + title = "Floor Lower by Value * 8"; + id = "Floor_LowerByValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Lower by (* 8)"; + } + } + + 46 + { + title = "Floor Crusher Stop"; + id = "Floor_CrushStop"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + + 66 + { + title = "Floor Lower Instantly by Value * 8"; + id = "Floor_LowerInstant"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg2 + { + title = "Lower by (* 8)"; + } + } + + 67 + { + title = "Floor Raise Instantly by Value * 8"; + id = "Floor_RaiseInstant"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg2 + { + title = "Raise by (* 8)"; + } + } + + 68 + { + title = "Floor Move to Value * 8"; + id = "Floor_MoveToValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Target Height * 8"; + } + + arg3 + { + title = "Negative Height"; + type = 11; + enum = "noyes"; + } + } + + 95 + { + title = "Floor and Ceiling Lower by Value"; + id = "FloorAndCeiling_LowerByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Lower by"; + } + } + + 96 + { + title = "Floor and Ceiling Raise by Value"; + id = "FloorAndCeiling_RaiseByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + + arg2 + { + title = "Raise by"; + } + } +} + + +stairs +{ + title = "Stairs"; + + 26 + { + title = "Stairs Build Down"; + id = "Stairs_BuildDown"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + + arg2 + { + title = "Step Height"; + default = 16; + } + + arg3 + { + title = "Build Step Delay"; + type = 11; + enum = "delay_tics"; + default = 35; + } + + arg4 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } + + 27 + { + title = "Stairs Build Up"; + id = "Stairs_BuildUp"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + + arg2 + { + title = "Step Height"; + default = 16; + } + + arg3 + { + title = "Build Step Delay"; + type = 11; + enum = "delay_tics"; + default = 35; + } + + arg4 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } + + 31 + { + title = "Stairs Build Down (sync)"; + id = "Stairs_BuildDownSync"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + + arg2 + { + title = "Step Height"; + default = 16; + } + + arg3 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } + + 32 + { + title = "Stairs Build Up (sync)"; + id = "Stairs_BuildUpSync"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + + arg2 + { + title = "Step Height"; + default = 16; + } + + arg3 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } +} + + +pillar +{ + title = "Pillar"; + + 29 + { + title = "Pillar Build"; + id = "Pillar_Build"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Target Height (rel.)"; + } + } + + 30 + { + title = "Pillar Open"; + id = "Pillar_Open"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Lower Floor by"; + } + + arg3 + { + title = "Raise Ceiling by"; + } + } + + 94 + { + title = "Pillar Build and Crush"; + id = "Pillar_BuildAndCrush"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Movement Amount"; + } + } +} + + +ceiling +{ + title = "Ceiling"; + + 40 + { + title = "Ceiling Lower by Value"; + id = "Ceiling_LowerByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Lower by"; + default = 64; + } + } + + 41 + { + title = "Ceiling Raise by Value"; + id = "Ceiling_RaiseByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Raise by"; + default = 64; + } + } + + 42 + { + title = "Ceiling Crusher Start"; + id = "Ceiling_CrushAndRaise"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Crush Damage"; + default = 100; + } + } + + 43 + { + title = "Ceiling Crush Once"; + id = "Ceiling_LowerAndCrush"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Crush Damage"; + default = 100; + } + } + + 44 + { + title = "Ceiling Crusher Stop"; + id = "Ceiling_CrushStop"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + + 45 + { + title = "Ceiling Crush Once and Open"; + id = "Ceiling_CrushRaiseAndStay"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Crush Damage"; + default = 100; + } + } + + 69 + { + title = "Ceiling Move to Value * 8"; + id = "Ceiling_MoveToValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Target Height * 8"; + } + + arg3 + { + title = "Negative Height"; + type = 11; + enum = "noyes"; + } + } +} + + +platform +{ + title = "Platform"; + + 60 + { + title = "Platform Perpetual Move"; + id = "Plat_PerpetualRaise"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 61 + { + title = "Platform Stop"; + id = "Plat_Stop"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + + 62 + { + title = "Platform Lower Wait Raise"; + id = "Plat_DownWaitUpStay"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 63 + { + title = "Platform Lower by Value * 8"; + id = "Plat_DownByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + + arg3 + { + title = "Lower by (* 8)"; + } + } + + 64 + { + title = "Platform Raise Wait Lower"; + id = "Plat_UpWaitDownStay"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 65 + { + title = "Platform Raise by Value * 8"; + id = "Plat_UpByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + + arg3 + { + title = "Lower by (* 8)"; + } + } +} + + +teleport +{ + title = "Teleport"; + + 70 + { + title = "Teleport"; + id = "Teleport"; + + arg0 + { + title = "Target MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Target Sector Tag"; + type = 13; + } + } + + 71 + { + title = "Teleport (silent)"; + id = "Teleport_NoFog"; + + arg0 + { + title = "Target MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Keep Orientation"; + type = 11; + enum = "noyes"; + } + + arg2 + { + title = "Target Sector Tag"; + type = 13; + } + } + + 74 + { + title = "Teleport to Map"; + id = "Teleport_NewMap"; + + arg0 + { + title = "Map Number"; + } + + arg1 + { + title = "Position"; + } + } +} + + +thing +{ + title = "Thing"; + + 72 + { + title = "Thrust Thing"; + id = "ThrustThing"; + + arg0 + { + title = "Thrust Angle"; + type = 22; + } + + arg1 + { + title = "Thrust Force (mu. per tic)"; + } + } + + 73 + { + title = "Damage Thing"; + id = "DamageThing"; + + arg0 + { + title = "Damage Amount"; + } + } + + 130 + { + title = "Activate Thing"; + id = "Thing_Activate"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + } + + 131 + { + title = "Deactivate Thing"; + id = "Thing_Deactivate"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + } + + 132 + { + title = "Remove Thing"; + id = "Thing_Remove"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + } + + 133 + { + title = "Destroy Thing"; + id = "Thing_Destroy"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Extreme Death"; + type = 11; + enum = "noyes"; + } + arg2 + { + title = "Sector Tag"; + type = 13; + } + + } + + 134 + { + title = "Spawn Projectile"; + id = "Thing_Projectile"; + + arg0 + { + title = "MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Projectile Type"; + type = 11; + enum = "spawn_projectile"; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Horizontal Speed"; + } + + arg4 + { + title = "Vertical Speed"; + } + } + + 135 + { + title = "Spawn Thing"; + id = "Thing_Spawn"; + + arg0 + { + title = "MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Thing Type"; + type = 11; + enum = "spawnthing"; + } + + arg2 + { + title = "Thing Angle"; + type = 22; + } + } + + 136 + { + title = "Spawn Projectile (gravity)"; + id = "Thing_ProjectileGravity"; + + arg0 + { + title = "MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Projectile Type"; + type = 11; + enum = "spawn_projectile"; + } + + arg2 + { + title = "Movement Angle"; + type = 22; + } + + arg3 + { + title = "Horizontal Speed"; + } + + arg4 + { + title = "Vertical Speed"; + } + } + + 137 + { + title = "Spawn Thing (silent)"; + id = "Thing_SpawnNoFog"; + + arg0 + { + title = "Target MapSpot Tag"; + type = 14; + } + + arg1 + { + title = "Thing Type"; + type = 11; + enum = "spawnthing"; + } + + arg2 + { + title = "Thing Angle"; + type = 22; + } + } +} + + +end +{ + title = "End"; + + 75 + { + title = "End Game"; + id = "Teleport_EndGame"; + } +} + + +script +{ + title = "Script"; + + 80 + { + title = "Script Execute"; + id = "ACS_Execute"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + + arg2 + { + title = "Script Argument 1"; + } + + arg3 + { + title = "Script Argument 2"; + } + + arg4 + { + title = "Script Argument 3"; + } + } + + 81 + { + title = "Script Suspend"; + id = "ACS_Suspend"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + } + + 82 + { + title = "Script Terminate"; + id = "ACS_Terminate"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + } + + 83 + { + title = "Script Locked Execute"; + id = "ACS_LockedExecute"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + + arg2 + { + title = "Script Argument 1"; + } + + arg3 + { + title = "Script Argument 2"; + } + + arg4 + { + title = "Key Number"; + type = 11; + enum = "keys"; + } + } +} + + +scroll +{ + title = "Scroll"; + + 100 + { + title = "Scroll Texture Left"; + id = "Scroll_Texture_Left"; + requiresactivation = false; + + arg0 + { + title = "Scroll Speed"; + type = 11; + enum = "scroll_speeds"; + default = 64; + } + } + + 101 + { + title = "Scroll Texture Right"; + id = "Scroll_Texture_Right"; + requiresactivation = false; + + arg0 + { + title = "Scroll Speed"; + type = 11; + enum = "scroll_speeds"; + default = 64; + } + } + + 102 + { + title = "Scroll Texture Up"; + id = "Scroll_Texture_Up"; + requiresactivation = false; + + arg0 + { + title = "Scroll Speed"; + type = 11; + enum = "scroll_speeds"; + default = 64; + } + } + + 103 + { + title = "Scroll Texture Down"; + id = "Scroll_Texture_Down"; + requiresactivation = false; + + arg0 + { + title = "Scroll Speed"; + type = 11; + enum = "scroll_speeds"; + default = 64; + } + } +} + + +light +{ + title = "Light"; + + 110 + { + title = "Light Raise by Value"; + id = "Light_RaiseByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Raise by"; + } + } + + 111 + { + title = "Light Lower by Value"; + id = "Light_LowerByValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Lower by"; + } + } + + 112 + { + title = "Light Change to Value"; + id = "Light_ChangeToValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Target Brightness"; + } + } + + 113 + { + title = "Light Fade"; + id = "Light_Fade"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Target Brightness"; + default = 128; + } + + arg2 + { + title = "Fade Duration (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 114 + { + title = "Light Glow"; + id = "Light_Glow"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Brightest Level"; + default = 255; + } + + arg2 + { + title = "Darkest Level"; + default = 128; + } + + arg3 + { + title = "Fade Duration (tics)"; + type = 11; + enum = "delay_tics"; + default = 105; + } + } + + 115 + { + title = "Light Flicker"; + id = "Light_Flicker"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Brightest Level"; + default = 255; + } + + arg2 + { + title = "Darkest Level"; + default = 128; + } + } + + 116 + { + title = "Light Strobe"; + id = "Light_Strobe"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Brightest Level"; + default = 255; + } + + arg2 + { + title = "Darkest Level"; + default = 128; + } + + arg3 + { + title = "Brightest Duration"; + type = 11; + enum = "delay_tics"; + default = 35; + } + + arg4 + { + title = "Darkest Duration"; + type = 11; + enum = "delay_tics"; + default = 35; + } + } +} + + +earthquake +{ + title = "Earthquake"; + + 120 + { + title = "Earthquake"; + id = "Radius_Quake"; + + arg0 + { + title = "Intensity (1-9)"; + default = 2; + } + + arg1 + { + title = "Duration (tics)"; + type = 11; + enum = "delay_tics"; + default = 150; + } + + arg2 + { + title = "Damage Radius * 64"; + default = 4; + } + + arg3 + { + title = "Tremor Radius * 64"; + default = 4; + } + + arg4 + { + title = "Focus Thing Tag"; + type = 14; + } + } +} + + +use +{ + title = "Use"; + + 129 + { + title = "Use Puzzle Item"; + id = "UsePuzzleItem"; + + arg0 + { + title = "Item Number"; + type = 11; + enum = "puzzle_items"; + } + + arg1 + { + title = "Script Number"; + } + + arg2 + { + title = "Script Argument 1"; + } + + arg3 + { + title = "Script Argument 2"; + } + + arg4 + { + title = "Script Argument 3"; + } + } +} + + +sector +{ + title = "Sector"; + + 140 + { + title = "Sector Change Sound"; + id = "Sector_ChangeSound"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Sound Number"; + } + } +} + diff --git a/Build/Configurations/Includes/Hexen_misc.cfg b/Build/Configurations/Includes/Hexen_misc.cfg new file mode 100644 index 0000000..4b55d31 --- /dev/null +++ b/Build/Configurations/Includes/Hexen_misc.cfg @@ -0,0 +1,269 @@ +// Basic Hexen stuff. +skills +{ + 1 = "Squire / Altar boy / Apprentice"; + 2 = "Knight / Acolyte / Enchanter"; + 3 = "Warrior / Priest / Sorceror"; + 4 = "Berserker / Cardinal / Warlock"; + 5 = "Titan / Pope / Archimage"; +} + +linedefflags +{ + 512 = "Repeatable Action"; + 8192 = "Monster Activates"; + 32768 = "Block Everything"; +} + +thingflags +{ + 16 = "Dormant"; + 32 = "Fighter class"; + 64 = "Cleric class"; + 128 = "Mage class"; + 256 = "Singleplayer"; + 512 = "Cooperative"; + 1024 = "Deathmatch"; +} + +// Default flags for first new thing +defaultthingflags +{ + 32; + 64; + 128; + 256; + 512; + 1024; +} + +// How thing flags should be compared (for the stuck thing error check) +thingflagscompare +{ + skills + { + 1; + 2; + 4; + } + + classes + { + 32; + 64; + 128; + } + + gamemodes + { + 256 { requiredgroups = "skills"; } + 512 { requiredgroups = "skills"; } + 1024 { ignoredgroups = "skills"; } + } +} + +// Mask for the thing flags which indicates the options +// that make the same thing appear in the same modes +thingflagsmasks +{ + thingflagsmask1 = 7; // 1 + 2 + 4 + thingflagsmask2 = 1792; // 256 + 512 + 1024 +} + +// Linedef flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +linedefflagstranslation +{ + 512 = "repeatspecial"; + 1024 = "playeruse"; + 2048 = "monstercross"; + 3072 = "impact"; + 4096 = "playerpush"; + 5120 = "missilecross"; + 8192 = "monsteractivate"; + 32768 = "blockeverything"; +} + +// Thing flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +thingflagstranslation +{ + 16 = "dormant"; + 32 = "class1"; + 64 = "class2"; + 128 = "class3"; + 256 = "single"; + 512 = "coop"; + 1024 = "dm"; +} + +// Activations filter for Hexen type activations +// This filters the activation bits from the flags +// This is in its own structure for inclusion only, +// the actual value will end up in the document scope +linedefactivationsfilter +{ + linedefactivationsfilter = 7168; +} + +// LINEDEF ACTIVATIONS +// Make sure these are in order from lowest value to highest value +linedefactivations +{ + 0 = "Player walks over"; + 1024 = "Player presses Use"; + 2048 = "Monster walks over"; + 3072 = "Projectile hits"; + 4096 = "Player bumps"; + 5120 = "Projectile flies over"; + 6144 = "Player presses Use (PassThru)"; +} + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + filter0 + { + name = "Easy skill"; + category = ""; + type = -1; + + fields + { + 1 = true; + } + } + + filter1 + { + name = "Medium skill"; + category = ""; + type = -1; + + fields + { + 2 = true; + } + } + + filter2 + { + name = "Hard skill"; + category = ""; + type = -1; + + fields + { + 4 = true; + } + } + + filter3 + { + name = "Fighter class"; + category = ""; + type = -1; + + fields + { + 32 = true; + } + } + + filter4 + { + name = "Cleric class"; + category = ""; + type = -1; + + fields + { + 64 = true; + } + } + + filter5 + { + name = "Mage class"; + category = ""; + type = -1; + + fields + { + 128 = true; + } + } + + filter6 + { + name = "Keys only"; + category = "keys"; + type = -1; + } + + filter7 + { + name = "Cooperative"; + category = ""; + type = -1; + + fields + { + 512 = true; + } + } + + filter8 + { + name = "Deathmatch"; + category = ""; + type = -1; + + fields + { + 1024 = true; + } + } +} + +// ENUMERATIONS +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + keys + { + 0 = "None"; + 1 = "Steel key"; + 2 = "Cave key"; + 3 = "Axe key"; + 4 = "Fire key"; + 5 = "Emerald key"; + 6 = "Dungeon key"; + 7 = "Silver key"; + 8 = "Rusted key"; + 9 = "Horn key"; + 10 = "Swamp key"; + 11 = "Castle key"; + 100 = "Any key"; + 101 = "All keys"; + 102 = "Impossible"; + } + + spawnthing + { + 0 = "None"; + } +} + +//mxd. These are Hexen-specific settings only. +//mxd. These settings are valid only in native Hexen map format. +mapformat_hexen +{ + sectortypes + { + include("Hexen_sectors.cfg"); + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Hexen_sectors.cfg b/Build/Configurations/Includes/Hexen_sectors.cfg new file mode 100644 index 0000000..930b03e --- /dev/null +++ b/Build/Configurations/Includes/Hexen_sectors.cfg @@ -0,0 +1,35 @@ + +0 = "None"; +1 = "Light Phased"; +2 = "Light Sequence Start"; +3 = "Light Sequence Special 1"; +4 = "Light Sequence Special 2"; +26 = "Stairs Special 1"; +27 = "Stairs Special 2"; +198 = "Light Indoor 2"; +199 = "Light Indoor 1"; +200 = "Sky 2 (MAPINFO)"; +201 = "Scroll North (slow)"; +202 = "Scroll North (medium)"; +203 = "Scroll North (fast)"; +204 = "Scroll East (slow)"; +205 = "Scroll East (medium)"; +206 = "Scroll East (fast)"; +207 = "Scroll South (slow)"; +208 = "Scroll South (medium)"; +209 = "Scroll South (fast)"; +210 = "Scroll West (slow)"; +211 = "Scroll West (medium)"; +212 = "Scroll West (fast)"; +213 = "Scroll NorthWest (slow)"; +214 = "Scroll NorthWest (medium)"; +215 = "Scroll NorthWest (fast)"; +216 = "Scroll NorthEast (slow)"; +217 = "Scroll NorthEast (medium)"; +218 = "Scroll NorthEast (fast)"; +219 = "Scroll SouthEast (slow)"; +220 = "Scroll SouthEast (medium)"; +221 = "Scroll SouthEast (fast)"; +222 = "Scroll SouthWest (slow)"; +223 = "Scroll SouthWest (medium)"; +224 = "Scroll SouthWest (fast)"; diff --git a/Build/Configurations/Includes/Hexen_texturesets.cfg b/Build/Configurations/Includes/Hexen_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Includes/Hexen_things.cfg b/Build/Configurations/Includes/Hexen_things.cfg new file mode 100644 index 0000000..2135c09 --- /dev/null +++ b/Build/Configurations/Includes/Hexen_things.cfg @@ -0,0 +1,1627 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + error = 2; + blocking = 2; + + 1 + { + title = "Player 1 start"; + sprite = "CLERA1"; + } + 2 + { + title = "Player 2 start"; + sprite = "CLERA1"; + } + 3 + { + title = "Player 3 start"; + sprite = "CLERA1"; + } + 4 + { + title = "Player 4 start"; + sprite = "CLERA1"; + } + 9100 + { + title = "Player 5 Start"; + sprite = "CLERA1"; + } + 9101 + { + title = "Player 6 Start"; + sprite = "CLERA1"; + } + 9102 + { + title = "Player 7 Start"; + sprite = "CLERA1"; + } + 9103 + { + title = "Player 8 Start"; + sprite = "CLERA1"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "CLERR0"; + } +} + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + blocking = 0; + + 14 + { + title = "Teleport Landing"; + sprite = "TELEA0"; + } + 140 + { + title = "Teleport Smoke"; + sprite = "TSMKA0"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + error = 2; + blocking = 2; + + 107 + { + title = "Centaur"; + sprite = "CENTA1"; + } + 10060 + { + title = "Affrit"; + sprite = "FDMNA1"; + } + 115 + { + title = "Slaughtaur"; + sprite = "CENTF1"; + } + 34 + { + title = "Reiver"; + sprite = "WRTHA1"; + } + 10011 + { + title = "Reiver (buried)"; + sprite = "WRTHA1"; + } + 254 + { + title = "Dragon Lich"; + sprite = "DRAGC1"; + arg0 + { + title = "Destination Thing Tag"; + type = 14; + } + arg1 + { + title = "Destination Thing Tag"; + type = 14; + } + arg2 + { + title = "Destination Thing Tag"; + type = 14; + } + arg3 + { + title = "Destination Thing Tag"; + type = 14; + } + arg4 + { + title = "Destination Thing Tag"; + type = 14; + } + } + 10030 + { + title = "Ettin"; + sprite = "ETTNA1"; + width = 25; + } + 8020 + { + title = "Wendigo"; + sprite = "ICEYA1"; + width = 22; + } + 31 + { + title = "Green Chaos Serpent"; + sprite = "DEMNA1"; + width = 32; + } + 8080 + { + title = "Brown Chaos Serpent"; + sprite = "DEM2A1"; + width = 32; + } + 114 + { + title = "Dark Bishop"; + sprite = "BISHA1"; + width = 22; + } + 121 + { + title = "Stalker"; + sprite = "SSPTB0"; + width = 32; + } + 120 + { + title = "Stalker Boss"; + sprite = "SSPTD0"; + width = 32; + } + 10100 + { + title = "Zedek (fighter)"; + sprite = "PLAYE8"; + width = 16; + } + 10101 + { + title = "Traductus (cleric)"; + sprite = "CLERE8"; + width = 16; + } + 10102 + { + title = "Menelkir (mage)"; + sprite = "MAGEE8"; + width = 16; + } + 10080 + { + title = "Heresiarch"; + sprite = "SORCA1"; + width = 40; + } + 10200 + { + title = "Korax"; + sprite = "KORXA1"; + width = 65; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + blocking = 0; + + 10 + { + title = "Serpent Staff"; + sprite = "WCSSA0"; + } + 8010 + { + title = "Timon's Axe"; + sprite = "WFAXA0"; + } + 53 + { + title = "Frost Shards"; + sprite = "WMCSA0"; + } + 8009 + { + title = "Firestorm"; + sprite = "WCFMA0"; + } + 123 + { + title = "Hammer Of Retribution"; + sprite = "WFHMA0"; + } + 8040 + { + title = "Arc Of Death"; + sprite = "WMLGG0"; + } + 18 + { + title = "Wraithverge Piece 1"; + sprite = "WCH1A0"; + } + 19 + { + title = "Wraithverge Piece 2"; + sprite = "WCH2A0"; + } + 20 + { + title = "Wraithverge Piece 3"; + sprite = "WCH3A0"; + } + 12 + { + title = "Quietus Piece 1"; + sprite = "WFR1A0"; + } + 13 + { + title = "Quietus Piece 2"; + sprite = "WFR2A0"; + } + 16 + { + title = "Quietus Piece 3"; + sprite = "WFR3A0"; + } + 21 + { + title = "BloodScourge Piece 1"; + sprite = "WMS1A0"; + } + 22 + { + title = "BloodScourge Piece 2"; + sprite = "WMS2A0"; + } + 23 + { + title = "BloodScourge Piece 3"; + sprite = "WMS3A0"; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Mana"; + width = 8; + sort = 1; + blocking = 0; + + 122 + { + title = "Blue Mana"; + sprite = "MAN1H0"; + } + 124 + { + title = "Green Mana"; + sprite = "MAN2H0"; + } + 8004 + { + title = "Combined Mana"; + sprite = "MAN3A0"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 20; + sort = 1; + blocking = 0; + + 8005 + { + title = "Mesh Armor"; + sprite = "ARM1A0"; + } + 8006 + { + title = "Falcon Shield"; + sprite = "ARM2A0"; + } + 8007 + { + title = "Platinum Helm"; + sprite = "ARM3A0"; + } + 8008 + { + title = "Amulet Of Warding"; + sprite = "ARM4A0"; + } + 81 + { + title = "Crystal Vial"; + sprite = "PTN1A0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Artifacts"; + width = 20; + height = 20; + sort = 1; + blocking = 0; + + 30 + { + title = "Porkalator"; + sprite = "PORKB0"; + } + 32 + { + title = "Mystic Urn"; + sprite = "SPHLA0"; + } + 33 + { + title = "Torch"; + sprite = "TRCHA0"; + } + 36 + { + title = "Chaos Device"; + sprite = "ATLPA0"; + } + 82 + { + title = "Quartz Flask"; + sprite = "PTN2A0"; + } + 83 + { + title = "Wings Of Wrath"; + sprite = "SOARA0"; + } + 84 + { + title = "Icon Of The Defender"; + sprite = "INVUA0"; + } + 86 + { + title = "Dark Servant"; + sprite = "SUMNA0"; + } + 10110 + { + title = "Disc Of Repulsion"; + sprite = "BLSTB0"; + } + 10120 + { + title = "Mystic Ambit Incant"; + sprite = "HRADB0"; + } + 10040 + { + title = "Banishment Device"; + sprite = "TELOA0"; + } + 8000 + { + title = "Flechette"; + sprite = "PSBGA0"; + } + 8002 + { + title = "Boots Of Speed"; + sprite = "SPEDB0"; + } + 8003 + { + title = "Krater Of Might"; + sprite = "BMANA0"; + } + 8041 + { + title = "Dragonskin Bracers"; + sprite = "BRACC0"; + } +} + +puzzle +{ + color = 7; // Light Grey + arrow = 1; + title = "Puzzle Items"; + width = 20; + sort = 1; + blocking = 0; + + 9002 + { + title = "Yorick's Skull"; + sprite = "ASKUA0"; + } + 9003 + { + title = "Heart Of D'Sparil"; + sprite = "ABGMA0"; + } + 9004 + { + title = "Ruby Planet"; + sprite = "AGMRA0"; + } + 9005 + { + title = "Emerald Planet 1"; + sprite = "AGMGA0"; + } + 9006 + { + title = "Sapphire Planet 1"; + sprite = "AGMBA0"; + } + 9007 + { + title = "Daemon Codex"; + sprite = "ABK1A0"; + } + 9008 + { + title = "Liber Obscura"; + sprite = "ABK2A0"; + } + 9009 + { + title = "Emerald Planet 2"; + sprite = "AGG2A0"; + } + 9010 + { + title = "Sapphire Planet 2"; + sprite = "AGMBA0"; + } + 9011 + { + title = "Yorick's Statue"; + sprite = "STWNA0"; + width = 10; + } + 9012 + { + title = "Pedestal Of D'Sparil"; + sprite = "GMPDA0"; + width = 10; + } + 9014 + { + title = "Flame mask"; + sprite = "ASK2A0"; + } + 9015 + { + title = "Glaive seal"; + sprite = "AFWPA0"; + } + 9016 + { + title = "Holy relic"; + sprite = "ACWPA0"; + width = 10; + } + 9017 + { + title = "Sigil of the magus"; + sprite = "AMWPA0"; + width = 10; + } + 9018 + { + title = "Clock Gear (steel)"; + sprite = "AGERA0"; + } + 9019 + { + title = "Clock Gear (bronze)"; + sprite = "AGR2A0"; + } + 9020 + { + title = "Clock Gear (steel and bronze)"; + sprite = "AGR3A0"; + } + 9021 + { + title = "Clock Gear (bronze and steel)"; + sprite = "AGR4A0"; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 8; + sort = 1; + blocking = 0; + + 8030 + { + title = "Steel Key"; + sprite = "KEY1A0"; + } + 8031 + { + title = "Cave Key"; + sprite = "KEY2A0"; + } + 8032 + { + title = "Axe Key"; + sprite = "KEY3A0"; + } + 8033 + { + title = "Fire Key"; + sprite = "KEY4A0"; + } + 8034 + { + title = "Emerald Key"; + sprite = "KEY5A0"; + } + 8035 + { + title = "Dungeon Key"; + sprite = "KEY6A0"; + } + 8036 + { + title = "Silver Key"; + sprite = "KEY7A0"; + } + 8037 + { + title = "Rusty Key"; + sprite = "KEY8A0"; + } + 8038 + { + title = "Horn Key"; + sprite = "KEY9A0"; + } + 8039 + { + title = "Swamp Key"; + sprite = "KEYAA0"; + } + 8200 + { + title = "Castle Key"; + sprite = "KEYBA0"; + } +} + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + blocking = 2; + error = 2; + + 8064 + { + title = "Suit Of Armor"; + sprite = "SUITA0"; + width = 16; + arg0 + { + title = "Contained Item"; + type = 11; + enum = "spawnthing"; + } + } + 77 + { + title = "Battle Rag Banner"; + sprite = "BNR1A0"; + width = 8; + } + 8100 + { + title = "Barrel"; + sprite = "BARLA0"; + width = 15; + } + 8065 + { + title = "Bell"; + sprite = "BBLLA0"; + width = 56; + } + 103 + { + title = "Pillar With Vase"; + sprite = "VASEA0"; + width = 12; + } + 5 + { + title= "Winged Statue"; + sprite = "STTWA0"; + width = 10; + } + 98 + { + title = "Small Rock (brown)"; + sprite = "RKBSA0"; + width = 15; + } + 97 + { + title = "Big Rock (brown)"; + sprite = "RKBLA0"; + width = 17; + } + 99 + { + title = "Big Rock (grey)"; + sprite = "RKBKA0"; + } + 57 + { + title = "Stalactite (small)"; + sprite = "SLC3A0"; + width = 8; + hangs = 1; + } + 56 + { + title = "Stalactite (medium)"; + sprite = "SLC2A0"; + width = 6; + hangs = 1; + } + 52 + { + title = "Stalactite (large)"; + sprite = "SLC1A0"; + width = 8; + hangs = 1; + } + 48 + { + title = "Stalagmite (pillar)"; + sprite = "SGMPA0"; + width = 8; + } + 51 + { + title = "Stalagmite (small)"; + sprite = "SGM3A0"; + width = 8; + } + 50 + { + title = "Stalagmite (medium)"; + sprite = "SGM2A0"; + width = 6; + } + 49 + { + title = "Stalagmite (large)"; + sprite = "SGM1A0"; + width = 8; + } + 80 + { + title = "Gnarled Tree 1"; + sprite = "TRE6A0"; + width = 22; + } + 87 + { + title = "Gnarled Tree 2"; + sprite = "TRE7A0"; + width = 22; + } + 78 + { + title = "Tall Tree 1"; + sprite = "TRE5A0"; + width = 15; + } + 79 + { + title = "Tall Tree 2"; + sprite = "TRE4A0"; + width = 15; + } + 8067 + { + title = "Iron Maiden"; + sprite = "IRONA0"; + width = 12; + } + 63 + { + title = "Tombstone (RIP)"; + sprite = "TMS1A0"; + width = 10; + } + 64 + { + title = "Tombstone (Shane)"; + sprite = "TMS2A0"; + width = 10; + } + 65 + { + title = "Tombstone (slimy)"; + sprite = "TMS3A0"; + width = 10; + } + 66 + { + title = "Tombstone (Brian R)"; + sprite = "TMS4A0"; + width = 10; + } + 67 + { + title = "Tombstone (cross circle)"; + sprite = "TMS5A0"; + width = 10; + } + 68 + { + title = "Tombstone (small cross)"; + sprite = "TMS6A0"; + width = 8; + } + 69 + { + title = "Tombstone (Brian P)"; + sprite = "TMS7A0"; + width = 8; + } + 96 + { + title = "Ice Spike (tiny)"; + sprite = "ICM4A0"; + width = 4; + } + 95 + { + title = "Ice Spike (small)"; + sprite = "ICM3A0"; + width = 5; + } + 94 + { + title = "Ice Spike (medium)"; + sprite = "ICM2A0"; + width = 5; + } + 93 + { + title = "Ice Spike (large)"; + sprite = "ICM1A0"; + width = 8; + } + 92 + { + title = "Icicle (tiny)"; + sprite = "ICT4A0"; + width = 4; + hangs = 1; + } + 91 + { + title = "Icicle (small)"; + sprite = "ICT3A0"; + width = 4; + hangs = 1; + } + 90 + { + title = "Icicle (medium)"; + sprite = "ICT2A0"; + width = 5; + hangs = 1; + } + 89 + { + title = "Icicle (large)"; + sprite = "ICT1A0"; + width = 8; + hangs = 1; + } + 8068 + { + title = "Evergreen Tree"; + sprite = "XMASA0"; + width = 11; + } + 8062 + { + title = "Rotten Dead Tree (destructible)"; + sprite = "TRDTA0"; + width = 15; + } + 24 + { + title = "Dead Tree"; + sprite = "TRE1A0"; + width = 10; + } + 25 + { + title = "Leafless Tree"; + sprite = "TRE1A0"; + width = 15; + } + 60 + { + title = "Dead Tree (mossy)"; + sprite = "SWMVA0"; + width = 8; + } + 26 + { + title = "Mossy Tree 1"; + sprite = "TRE2A0"; + width = 10; + } + 27 + { + title = "Mossy Tree 2"; + sprite = "TRE3A0"; + width = 10; + } + 88 + { + title = "Log"; + sprite = "SLTRA0"; + } + 29 + { + title= "Tree Stump (bare)"; + sprite = "STM2A0"; + width = 12; + } + 28 + { + title= "Tree Stump (burned)"; + sprite = "STM1A0"; + width = 12; + } + 37 + { + title = "Tree Stump 1"; + sprite = "STM3A0"; + } + 38 + { + title = "Tree Stump 2"; + sprite = "STM4A0"; + } + 8051 + { + title = "Bronze Gargoyle (short)"; + sprite = "GAR8A0"; + width = 14; + } + 8047 + { + title = "Bronze Gargoyle (tall)"; + sprite = "GAR4A0"; + width = 14; + } + 8044 + { + title = "Rusty Gargoyle (tall)"; + sprite = "GAR1A0"; + width = 14; + } + 76 + { + title = "Ice Gargoyle (short)"; + sprite = "STT5A0"; + width = 14; + } + 73 + { + title = "Ice Gargoyle (tall)"; + sprite = "STT3A0"; + width = 14; + } + 8050 + { + title = "Lava Gargoyle (short)"; + sprite = "GAR7A0"; + width = 14; + } + 8046 + { + title = "Lava Gargoyle (tall)"; + sprite = "GAR3A0"; + width = 14; + } + 8049 + { + title = "Dark Lava Gargoyle (short)"; + sprite = "GAR6A0"; + width = 14; + } + 8045 + { + title = "Dark Lava Gargoyle (tall)"; + sprite = "GAR2A0"; + width = 14; + } + 74 + { + title = "Stone Gargoyle (short)"; + sprite = "STT4A0"; + width = 14; + } + 72 + { + title = "Stone Gargoyle (tall)"; + sprite = "STT2A0"; + width = 14; + } + 8052 + { + title = "Steel Gargoyle (short)"; + sprite = "GAR9A0"; + width = 14; + } + 8048 + { + title = "Steel Gargoyle (tall)"; + sprite = "GAR5A0"; + width = 14; + } +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 20; + blocking = 2; + error = 2; + sort = 1; + + 17 + { + title = "Chandelier (lit)"; + sprite = "CDLRA0"; + hangs = 1; + } + 8063 + { + title = "Chandelier (unlit)"; + sprite = "CDLRD0"; + hangs = 1; + } + 8066 + { + title = "Blue Candle (lit)"; + sprite = "CANDA0"; + } + 8502 + { + title = "Candle With Web (unlit)"; + sprite = "TST3A0"; + } + 8503 + { + title = "Small Gray Candle (unlit)"; + sprite = "TST4A0"; + } + 8504 + { + title = "Small Candle (unlit)"; + sprite = "TST5A0"; + } + 119 + { + title = "3 Candles (lit)"; + sprite = "CNDLA0"; + } + 10500 + { + title = "Small Flame (timed)"; + sprite = "FFSMA0"; + } + 10501 + { + title = "Small Flame"; + sprite = "FFSMA0"; + } + 10502 + { + title = "Large Flame (timed)"; + sprite = "FFLGD0"; + } + 10503 + { + title = "Large Flame"; + sprite = "FFLGD0"; + } + 54 + { + title = "Wall Torch (lit)"; + sprite = "WLTRB0"; + } + 55 + { + title = "Wall Torch (unlit)"; + sprite = "WLTRI0"; + } + 8042 + { + title = "Minotaur Statue (lit)"; + sprite = "FBULB0"; + } + 8043 + { + title = "Minotaur Statue (unlit)"; + sprite = "FBULH0"; + } + 8069 + { + title = "Cauldron (lit)"; + sprite = "CDRNG0"; + width = 12; + } + 8070 + { + title = "Cauldron (unlit)"; + sprite = "CDRNA0"; + width = 12; + } + 8060 + { + title = "Skull With Flame"; + sprite = "FSKLA0"; + width = 5; + } + 8061 + { + title = "Brazier With Flame"; + sprite = "BRTRB0"; + width = 6; + } + 116 + { + title = "Twined Torch (lit)"; + sprite = "TWTRA0"; + width = 10; + } + 117 + { + title = "Twined Torch (unlit)"; + sprite = "TWTRI0"; + width = 10; + } +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 20; + sort = 1; + blocking = 0; + + 8071 + { + title = "Chain (short)"; + sprite = "CHNSA0"; + width = 4; + hangs = 1; + height = 32; + } + 8072 + { + title = "Chain (long)"; + sprite = "CHNSB0"; + width = 4; + hangs = 1; + height = 64; + } + 8073 + { + title = "Hook With Heart"; + sprite = "CHNSC0"; + width = 4; + hangs = 1; + } + 8077 + { + title = "Hook With Skull"; + sprite = "CHNSG0"; + width = 4; + hangs = 1; + } + 8074 + { + title = "Chain With Large Hook"; + sprite = "CHNSD0"; + width = 4; + hangs = 1; + height = 32; + } + 8075 + { + title = "Chain With Small Hook"; + sprite = "CHNSE0"; + width = 4; + hangs = 1; + height = 32; + } + 8076 + { + title = "Chain with Spike Ball"; + sprite = "CHNSF0"; + width = 4; + hangs = 1; + height = 32; + } + 8103 + { + title = "Hanging Bucket"; + sprite = "BCKTA0"; + width = 8; + hangs = 1; + height = 72; + blocking = 2; + error = 2; + } + 6 + { + title = "Tiny Rock (mossy)"; + sprite = "RCK1A0"; + } + 7 + { + title = "Small Rock (mossy)"; + sprite = "RCK2A0"; + } + 9 + { + title = "Medium Rock (mossy)"; + sprite = "RCK3A0"; + } + 15 + { + title = "Big Rock (mossy)"; + sprite = "RCK4A0"; + } + 101 + { + title = "Brick Rubble (small)"; + sprite = "RBL2A0"; + } + 102 + { + title = "Brick Rubble (medium)"; + sprite = "RBL3A0"; + } + 100 + { + title = "Brick Rubble (large)"; + sprite = "RBL1A0"; + } + 39 + { + title = "Large Mushroom 1"; + sprite = "MSH1A0"; + } + 40 + { + title = "Large Mushroom 2"; + sprite = "MSH2A0"; + } + 8104 + { + title = "Large Mushroom (explodes)"; + sprite = "SHRMB0"; + width = 6; + } + 41 + { + title = "Medium Mushroom"; + sprite = "MSH3A0"; + } + 42 + { + title = "Small Mushroom 1"; + sprite = "MSH4A0"; + } + 44 + { + title = "Small Mushroom 2"; + sprite = "MSH5A0"; + } + 45 + { + title = "Small Mushroom 3"; + sprite = "MSH6A0"; + } + 46 + { + title = "Small Mushroom 4"; + sprite = "MSH7A0"; + } + 47 + { + title = "Small Mushroom 5"; + sprite = "MSH8A0"; + } + 8101 + { + title = "Shrub"; + sprite = "SHB1A0"; + width = 8; + blocking = 2; + error = 2; + } + 8102 + { + title = "Shrub 2"; + sprite = "SHB2A0"; + width = 16; + blocking = 2; + error = 2; + } + 111 + { + title = "Pool Of Blood"; + sprite = "GIBSA0"; + } + 71 + { + title= "Hanging Corpse"; + sprite = "CPS3A0"; + width = 6; + hangs = 1; + height = 75; + blocking = 2; + error = 2; + } + 61 + { + title = "Impaled Corpse"; + sprite = "CPS1A0"; + width = 10; + height = 92; + blocking = 2; + error = 2; + } + 108 + { + title = "Lynched Corpse"; + sprite = "CPS4A0"; + width = 11; + hangs = 1; + height = 95; + blocking = 2; + error = 2; + } + 109 + { + title = "Lynched Corpse (heartless)"; + sprite = "CPS5A0"; + width = 10; + hangs = 1; + height = 95; + blocking = 2; + error = 2; + } + 110 + { + title = "Corpse (sitting)"; + sprite = "CPS6A0"; + width = 15; + height = 35; + blocking = 2; + error = 2; + } + 62 + { + title = "Corpse (sleeping)"; + sprite = "CPS2A0"; + } + 8509 + { + title = "Meat Cleaver"; + sprite = "TST0A0"; + } + 8508 + { + title = "Goblet (silver)"; + sprite = "TST9A0"; + } + 8507 + { + title = "Goblet (small)"; + sprite = "TST8A0"; + } + 8506 + { + title = "Goblet (tall)"; + sprite = "TST7A0"; + } + 8505 + { + title = "Goblet (spilled)"; + sprite = "TST6A0"; + } + 8501 + { + title = "Small Silver Stein"; + sprite = "TST2A0"; + } + 8500 + { + title = "Large Brown Stein"; + sprite = "TST1A0"; + } + 104 + { + title = "Pot (tall)"; + sprite = "POT1A0"; + width = 10; + blocking = 2; + error = 2; + arg0 + { + title = "Contained Item"; + type = 11; + enum = "spawnthing"; + } + } + 105 + { + title = "Pot (medium)"; + sprite = "POT2A0"; + width = 10; + blocking = 2; + error = 2; + arg0 + { + title = "Contained Item"; + type = 11; + enum = "spawnthing"; + } + } + 106 + { + title = "Pot (short)"; + sprite = "POT3A0"; + width = 15; + blocking = 2; + error = 2; + arg0 + { + title = "Contained Item"; + type = 11; + enum = "spawnthing"; + } + } + 58 + { + title = "Hanging Moss 1"; + sprite = "MSS1A0"; + hangs = 1; + } + 59 + { + title = "Hanging Moss 2"; + sprite = "MSS2A0"; + hangs = 1; + } + 10090 + { + title = "Spike Down"; + sprite = "TSPKD0"; + width = 20; + } + 10091 + { + title = "Spike Up"; + sprite = "TSPKB0"; + width = 20; + } +} + +sounds +{ + color = 5; // Purple + arrow = 1; + title = "Sounds"; + width = 8; + height = 16; + sort = 1; + fixedsize = true; + blocking = 0; + sprite = "internal:sound"; + + 1403 = "Creak"; + 1408 = "Earth Crack"; + 1401 = "Heavy"; + 1407 = "Ice"; + 1405 = "Lava"; + 1402 = "Metal"; + 1409 = "Metal2"; + 1404 = "Silent"; + 1400 = "Stone"; + 1406 = "Water"; + 1410 = "Wind"; +} + +other +{ + color = 8; // Dark Grey + arrow = 1; + title = "Other"; + width = 0; + height = 0; + sort = 1; + fixedsize = true; + blocking = 0; + sprite = "internal:actor"; + + 118 + { + title = "Glitter Bridge"; + width = 32; + fixedsize = false; + } + 3000 + { + title = "Polyobject Anchor"; + sprite = "internal:anchor"; + fixedrotation = true; + } + 3001 + { + title = "Polyobject Start Spot"; + sprite = "internal:anchor"; + fixedrotation = true; + } + 3002 + { + title = "Polyobject Start Spot (crush)"; + sprite = "internal:anchor"; + fixedrotation = true; + } + 10225 + { + title = "Spawn Bat"; + sprite = "ABATC2C8"; + arg0 + { + title = "Spawn Frequency"; + } + arg1 + { + title = "Spread Angle"; + } + arg3 + { + title = "Spawn Duration"; + } + arg4 + { + title = "Changing Angle"; + } + } + 10000 + { + title = "Spawn Fog"; + arg0 + { + title = "Movement Speed"; + } + arg1 + { + title = "Spread Angle"; + } + arg2 + { + title = "Spawn Frequency"; + } + arg3 + { + title = "Fog Lifetime"; + } + } + 10001 + { + title = "Fog Patch (small)"; + arg0 + { + title = "Movement Speed"; + } + arg3 + { + title = "Fog Lifetime"; + } + arg4 + { + title = "Moving Fog"; + } + } + 10002 + { + title = "Fog Patch (medium)"; + arg0 + { + title = "Movement Speed"; + } + arg3 + { + title = "Fog Lifetime"; + } + arg4 + { + title = "Moving Fog"; + } + } + 10003 + { + title = "Fog Patch (large)"; + arg0 + { + title = "Movement Speed"; + } + arg3 + { + title = "Fog Lifetime"; + } + arg4 + { + title = "Moving Fog"; + } + } + 112 = "Spawn Fly"; + 113 = "Spawn Leaf"; + 9001 = "Map Spot"; + 9013 = "Map Spot (gravity)"; +} diff --git a/Build/Configurations/Includes/Skulltag_things.cfg b/Build/Configurations/Includes/Skulltag_things.cfg new file mode 100644 index 0000000..dfff0b3 --- /dev/null +++ b/Build/Configurations/Includes/Skulltag_things.cfg @@ -0,0 +1,2894 @@ +skulltag +{ + // This one is from Skulltag_data.pk3, not Skulltag.pk3... + bridges + { + color = 8; // Grey + arrow = 0; + title = "Bridges"; + width = 16; + sort = 1; + height = 1; + hangs = 0; + blocking = 0; + + 1337 + { + title = "Cargo Bridge"; + sprite = "internal:Bridge"; + width = 64; + height = 16; + } + } + + flags + { + color = 13; // Light Magenta + arrow = 0; + title = "Flags"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5067 + { + title = "Skull Return Zone"; + sprite = "internal:Zone"; + } + + 5068 + { + title = "Spring Pad Zone"; + sprite = "internal:Zone"; + } + } + + obstacles + { + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 5009 + { + title = "Floating skull rock (bobs)"; + sprite = "FSKUA0"; + } + } + + monsters + { + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + // MBF stuff that's not in Zandronum yet + 888 = NULL; // MBF helper dog + + } +} + +// New things available in Doom, Heretic and Hexen; but not in Chex or Strife +doomheretichexen +{ + // New powerups + powerups + { + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 40; + hangs = 0; + blocking = 0; + + 5030 + { + title = "Turbo Sphere"; + sprite = "TURBA0"; + height = 45; + } + 5032 + { + title = "Time-freeze Sphere"; + sprite = "TIMEA0"; + height = 45; + } + 5035 + { + title = "Invisibility Sphere"; + sprite = "SINVA0"; + height = 45; + } + 5036 + { + title = "Doomsphere"; + sprite = "DOOMA0"; + height = 45; + } + 5037 + { + title = "Guard Sphere"; + sprite = "GARDA0"; + height = 45; + } + 6000 + { + title = "Hellstone"; + sprite = "PPOSA0"; + height = 45; + } + 6001 + { + title = "Terminator Sphere"; + sprite = "ARNOA0"; + height = 45; + } + } + + obstacles + { + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 5120 + { + title = "Impaling Spike"; + sprite = "POL7A0"; + } + 5121 + { + title = "Impaled Chaingunner Head"; + sprite = "POL8A0"; + } + 5122 + { + title = "Impaled ZombieMan Head"; + sprite = "POL9A0"; + } + 5051 + { + title = "Short Grey Pillar"; + sprite = "COL8A0"; + } + 5052 + { + title = "Tall Grey Pillar"; + sprite = "COL7A0"; + } + 5053 + { + title = "Grey Pillar with Pumping Heart"; + sprite = "COL9A0"; + } + 5054 + { + title = "Tall Gothic Pillar"; + sprite = "GCOLA0"; + } + 5055 + { + title = "Revenant Hand"; + sprite = "SGRBA0"; + } + 5056 + { + title = "Imp's Head"; + sprite = "IHEDA1"; + } + 5059 + { + title = "Evil Eye (Red)"; + sprite = "CEYRA0"; + } + 5060 + { + title = "Evil Eye (Blue)"; + sprite = "CEYBA0"; + } + } + + decoration + { + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 5058 + { + title = "NEEDS MOAR IMPSE"; + sprite = "IMPSA0"; + } + 5070 + { + title = "Dead cyberdemon"; + sprite = "CYBRP0"; + } + 5110 + { + title = "Imp Statue"; + sprite = "STA1A1"; + width = 20; + height = 56; + } + 5111 + { + title = "Demon Statue"; + sprite = "STA2A1"; + width = 30; + height = 56; + } + 5112 + { + title = "Arch-Vile Statue"; + width = 20; + sprite = "STA3A1"; + height = 56; + } + 5113 + { + title = "Baron of Hell Statue"; + sprite = "STA4A1"; + width = 24; + height = 64; + } + 5114 + { + title = "Cyberdemon Statue"; + sprite = "STA5A1"; + width = 40; + height = 110; + } + 5115 + { + title = "Massmouth Statue"; + width = 20; + sprite = "STA6A1"; + height = 56; + } + 5320 + { + title = "Impaling Spike (doomguy head)"; + sprite = "POLAA0"; + width = 16; + height = 56; + } + 5321 + { + title = "Impaling Spike (3 doomguy heads)"; + sprite = "POLBA0"; + width = 16; + height = 64; + } + 5322 + { + title = "Impaling Spike (3 doomguy heads, short)"; + sprite = "POLCA0"; + width = 16; + height = 45; + } + 5323 + { + title = "Impaling Spike (doomguy torso, one arm)"; + sprite = "POLDA0"; + width = 16; + height = 54; + } + 5324 + { + title = "Impaling Spike (doomguy torso, two arms)"; + sprite = "POLEA0"; + width = 16; + height = 54; + } + 5325 + { + title = "Impaling Spike (doomguy skewered, twitching)"; + sprite = "POLFA0"; + width = 16; + height = 64; + } + 5326 + { + title = "Impaling Spike (doomguy skewered, long arm)"; + sprite = "POLGA0"; + width = 16; + height = 64; + } + 5327 + { + title = "Impaling Spike (doomguy skewered, short arm)"; + sprite = "POLHA0"; + width = 16; + height = 64; + } + 5328 + { + title = "Pool of Blood with Marine Helmet"; + sprite = "GIB1A0"; + width = 16; + height = 64; + } + } + + + lights + { + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 5150 + { + title = "Tall white firestick"; + sprite = "TWHIA0"; + } + 5151 + { + title = "Short white firestick"; + sprite = "SMWTA0"; + } + 5152 + { + title = "Tall yellow firestick"; + sprite = "TYELA0"; + } + 5153 + { + title = "Short yellow firestick"; + sprite = "SMYTA0"; + } + 5154 + { + title = "Tall techno floor lamp (Red)"; + sprite = "TLP3A0"; + } + 5155 + { + title = "Short techno floor lamp (Red)"; + sprite = "TLP4A0"; + } + 5156 + { + title = "Candle (Red)"; + sprite = "CANRA0"; + blocking = 0; + } + 5157 + { + title = "Candle (Blue)"; + sprite = "CANBA0"; + blocking = 0; + } + 5158 + { + title = "Floor lamp (Red)"; + sprite = "RCOLA0"; + } + 5159 + { + title = "Floor lamp (Blue)"; + sprite = "BCOLA0"; + } + } + + scorepillars + { + color = 3; // Cyan + arrow = 0; + title = "Score pillars"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 5020 + { + title = "Hell Pillar"; + sprite = "HLSPA0"; + } + } + + // All the invasion spawners + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + } + + invweapons + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Weapon Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + } + + invammunition + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Ammunition Spawners"; + width = 16; + sort = 1; + height = 20; + blocking = 0; + hangs = 0; + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + } + + + invrandom + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Random Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + } + + invrunes + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Rune Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5248 + { + title = "Strength Spawner"; + sprite = "STRRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5249 + { + title = "Rage Spawner"; + sprite = "RAGRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5250 + { + title = "Drain Spawner"; + sprite = "DRARA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5251 + { + title = "Spread Spawner"; + sprite = "SPRRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5252 + { + title = "Resistance Spawner"; + sprite = "RESRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5253 + { + title = "Regeneration Spawner"; + sprite = "REGRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5254 + { + title = "Prosperity Spawner"; + sprite = "PRSRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5255 + { + title = "Reflection Spawner"; + sprite = "REFRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5256 + { + title = "Haste Spawner"; + sprite = "HIJRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5257 + { + title = "High jump Spawner"; + sprite = "HIJRA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} + +// New things available only in Doom +doom +{ + // New monsters + monsters + { + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5004 + { + title = "Blood Demon"; + width = 30; + sprite = "SRG2A2A8"; + } + 5003 + { + title = "Dark Imp"; + sprite = "DIMPA2A8"; + } + 5005 + { + title = "Super Shotgunner"; + sprite = "GPOSA2A8"; + } + 5006 + { + title = "Cacolantern"; + width = 31; + sprite = "HED2A2A8"; + } + 5007 + { + title = "Hectebus"; + width = 48; + sprite = "HECTC2C8"; + } + 5015 + { + title = "Abaddon"; + width = 31; + sprite = "HED3A2A8"; + } + 5008 + { + title = "Belphegor"; + width = 24; + sprite = "BOS3A2A8"; + } + + // MBF stuff that's not in Zandronum yet + 9037 = NULL; // Beta lost soul + } + + // New weapons + // The pistol pickup is already in ZDoom + weapons + { + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5014 + { + title = "Minigun"; + sprite = "MNGNA0"; + } + 5011 + { + title = "Grenade launcher"; + sprite = "GLAUA0"; + } + 5012 + { + title = "Railgun"; + sprite = "RAILA0"; + } + 5013 + { + title = "BFG10000"; + sprite = "BFG2A0"; + } + } + + // New health and armor items + health + { + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5091 + { + title = "Max. armor bonus"; + sprite = "BON4A0"; + } + 5090 + { + title = "Max. health bonus"; + sprite = "BON3A0"; + } + 5040 + { + title = "Red armor"; + sprite = "ARM3A0"; + } + } + + // New powerups + powerups + { + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 40; + hangs = 0; + blocking = 0; + + 5039 + { + title = "Random powerup"; + sprite = "DOOMA0"; + height = 45; + } + + // MBF stuff that's not in Zandronum yet + 2016 = NULL; // Beta evil sceptre + 2017 = NULL; // Beta unholy bible + } + + obstacles + { + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 5057 + { + title = "Hissy"; + sprite = "HISYA1"; + } + } + + // All the invasion spawners + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5205 + { + title = "Imp Spawner"; + sprite = "TROOA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5206 + { + title = "Dark Imp Spawner"; + sprite = "DIMPA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5207 + { + title = "Demon Spawner"; + width = 30; + sprite = "SARGA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5208 + { + title = "Spectre Spawner"; + width = 30; + sprite = "SARGA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5209 + { + title = "Blood Demon Spawner"; + width = 30; + sprite = "SRG2A2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5210 + { + title = "Former Human Spawner"; + sprite = "POSSA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5211 + { + title = "Former Sergeant Spawner"; + sprite = "SPOSA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5212 + { + title = "Chaingunner Spawner"; + sprite = "CPOSA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5213 + { + title = "Super Shotgunner Spawner"; + sprite = "GPOSA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5214 + { + title = "Cacodemon Spawner"; + width = 31; + sprite = "HEADA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5215 + { + title = "Cacolantern Spawner"; + width = 31; + sprite = "HED2A2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5216 + { + title = "Abaddon Spawner"; + width = 31; + sprite = "HED3A2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5217 + { + title = "Revenant Spawner"; + sprite = "SKELA2D8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5218 + { + title = "Mancubus Spawner"; + width = 48; + sprite = "FATTC2C8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5219 + { + title = "Hectebus Spawner"; + width = 48; + sprite = "HECTC2C8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5220 + { + title = "Arachnotron Spawner"; + width = 64; + sprite = "BSPIA2A8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5221 + { + title = "Hell Knight Spawner"; + width = 24; + sprite = "BOS2A2C8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5222 + { + title = "Baron of Hell Spawner"; + width = 24; + sprite = "BOSSA2A8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5223 + { + title = "Belphegor Spawner"; + width = 24; + sprite = "BOS3A2A8"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5224 + { + title = "Lost Soul Spawner"; + width = 16; + sprite = "SKULA8A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5225 + { + title = "Pain Elemental Spawner"; + width = 31; + sprite = "PAINA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5226 + { + title = "Cyberdemon Spawner"; + width = 40; + sprite = "CYBRA2"; + height = 110; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5227 + { + title = "Spider Mastermind Spawner"; + width = 128; + sprite = "SPIDA2A8"; + height = 100; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5228 + { + title = "Arch-Vile Spawner"; + sprite = "VILEA2D8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + + 5280 + { + title = "Wolfenstein SS Spawner"; + sprite = "SSWVA2"; + height = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invweapons + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Weapon Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5267 + { + title = "Chainsaw Spawner"; + sprite = "CSAWA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5268 + { + title = "Shotgun Spawner"; + sprite = "SHOTA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5269 + { + title = "Super Shotgun Spawner"; + sprite = "SGN2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5270 + { + title = "Chaingun Spawner"; + sprite = "MGUNA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5271 + { + title = "Minigun Spawner"; + sprite = "MNGNA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5272 + { + title = "Rocket Launcher Spawner"; + sprite = "LAUNA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5273 + { + title = "Grenade Launcher Spawner"; + sprite = "GLAUA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5274 + { + title = "Plasma Gun Spawner"; + sprite = "PLASA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5275 + { + title = "Railgun Spawner"; + sprite = "RAILA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5276 + { + title = "BFG9000 Spawner"; + sprite = "BFUGA0"; + height = 30; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5277 + { + title = "BFG10000 Spawner"; + sprite = "BFG2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invammunition + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Ammunition Spawners"; + width = 16; + sort = 1; + height = 20; + blocking = 0; + hangs = 0; + + 5258 + { + title = "Ammo Clip Spawner"; + sprite = "CLIPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5259 + { + title = "Shotgun Shells Spawner"; + sprite = "SHELA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5260 + { + title = "Rocket Spawner"; + sprite = "ROCKA0"; + height = "25"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5261 + { + title = "Cell Charge Spawner"; + sprite = "CELLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5262 + { + title = "Box of Ammo Spawner"; + sprite = "AMMOA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5263 + { + title = "Box of Shells Spawner"; + sprite = "SBOXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5264 + { + title = "Box of Rockets Spawner"; + width = 30; + sprite = "BROKA0"; + height = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5265 + { + title = "Cell Charge Pack Spawner"; + sprite = "CELPA0"; + height = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5281 + { + title = "Backpack Spawner"; + sprite = "BPAKA0"; + height = "25"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5229 + { + title = "Stimpack Spawner"; + sprite = "STIMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5230 + { + title = "Medkit Spawner"; + sprite = "MEDIA0"; + height = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5231 + { + title = "Health Bonus Spawner"; + sprite = "BON1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5232 + { + title = "Armor Bonus Spawner"; + sprite = "BON2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5233 + { + title = "Max. Health Bonus Spawner"; + sprite = "BON3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5234 + { + title = "Max. Armor Bonus Spawner"; + sprite = "BON4A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5235 + { + title = "Green Armor Spawner"; + sprite = "ARM1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5236 + { + title = "Blue Armor Spawner"; + sprite = "ARM2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5237 + { + title = "Red Armor Spawner"; + sprite = "ARM3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5238 + { + title = "Doomsphere Spawner"; + sprite = "DOOMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5239 + { + title = "Guardsphere Spawner"; + sprite = "GARDA0"; + height = 30; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5240 + { + title = "Invisibility Spawner"; + sprite = "INVSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5241 + { + title = "Partial Invisibility Spawner"; + sprite = "PINSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5242 + { + title = "Invulnerability Spawner"; + sprite = "PINVA0"; + height = 30; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5243 + { + title = "Megasphere Spawner"; + sprite = "MEGAA0"; + height = 40; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5244 + { + title = "Random Powerup Spawner"; + sprite = "DOOMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5245 + { + title = "Soulsphere Spawner"; + sprite = "SOULA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5246 + { + title = "Time Freeze Spawner"; + sprite = "TIMEA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5247 + { + title = "Turbosphere Spawner"; + sprite = "TURBA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + + 5266 + { + title = "Berserk Spawner"; + sprite = "PSTRA0"; + height = 20; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invrandom + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Random Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5200 + { + title = "Generic Item/Monster Spawner"; + sprite = "TFOGB0"; + height = 45; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5201 + { + title = "Random Weak Monster Spawner"; + width = 30; + sprite = "TFOGB0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5202 + { + title = "Random Powerful Monster Spawner"; + width = 64; + sprite = "TFOGB0"; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5203 + { + title = "Random Very Powerful Monster Spawner"; + width = 128; + sprite = "TFOGB0"; + height = 110; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5204 + { + title = "Random Monster Spawner"; + width = 128; + sprite = "TFOGB0"; + height = 110; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + + 5278 + { + title = "Random Clip Ammo Spawner"; + sprite = "CELLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5279 + { + title = "Random Box Ammo Spawner"; + sprite = "CELPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} + +// New things available only in Heretic +heretic +{ + // All the invasion spawners + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5400 + { + title = "Gargoyle Spawner"; + sprite = "IMPXA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5401 + { + title = "Fire Gargoyle Spawner"; + sprite = "IMPXF1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5402 + { + title = "Golem Spawner"; + sprite = "MUMMA1"; + width = 22; + height = 62; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5403 + { + title = "Nitrogolem Spawner"; + sprite = "MUMMY1"; + width = 22; + height = 62; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5404 + { + title = "Golem Ghost Spawner"; + sprite = "MUMMA1"; + width = 22; + height = 62; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5405 + { + title = "Nitrogolem Ghost Spawner"; + sprite = "MUMMY1"; + width = 22; + height = 62; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5406 + { + title = "Weredragon Spawner"; + sprite = "BEASA1"; + width = 32; + height = 74; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5407 + { + title = "Chicken Spawner"; + sprite = "CHKNA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5408 + { + title = "Sabreclaw Spawner"; + sprite = "CLNKA1"; + width = 20; + height = 64; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5409 + { + title = "Iron Lich Spawner"; + sprite = "HEADA1"; + width = 40; + height = 72; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5410 + { + title = "Undead Warrior Spawner"; + sprite = "KNIGA1"; + width = 24; + height = 48; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5411 + { + title = "Undead Warrior Ghost Spawner"; + sprite = "KNIGA1"; + width = 24; + height = 78; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5412 + { + title = "Maulotaur Spawner"; + sprite = "MNTRA1"; + width = 28; + height = 100; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5413 + { + title = "Ophidian Spawner"; + sprite = "SNKEA1"; + width = 22; + height = 70; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5414 + { + title = "D'Sparil on Serpent Spawner"; + sprite = "SRCRA1"; + width = 28; + height = 100; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5415 + { + title = "D'Sparil alone Spawner"; + sprite = "SOR2P1"; + width = 28; + height = 100; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5416 + { + title = "Disciple Of D'Sparil Spawner"; + sprite = "WZRDA1"; + height = 68; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invweapons + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Weapon Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5417 + { + title = "Dragon Claw Spawner"; + sprite = "WBLSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5418 + { + title = "Ethereal Crossbow Spawner"; + sprite = "WBOWA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5419 + { + title = "Gauntlets Of The Necromancer Spawner"; + sprite = "WGNTA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5420 + { + title = "Firemace Spawner"; + sprite = "WMCEA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5421 + { + title = "Phoenix Rod Spawner"; + sprite = "WPHXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5422 + { + title = "Hellstaff Spawner"; + sprite = "WSKLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invammunition + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Ammunition Spawners"; + width = 16; + sort = 1; + height = 20; + blocking = 0; + hangs = 0; + + 5423 + { + title = "Claw Orb Spawner"; + sprite = "AMB1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5424 + { + title = "Energy Orb Spawner"; + sprite = "AMB2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5425 + { + title = "Ethereal Arrows Spawner"; + sprite = "AMC1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5426 + { + title = "Quiver Of Ethereal Arrows Spawner"; + sprite = "AMC2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5427 + { + title = "Mace Spheres Spawner"; + sprite = "AMM1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5428 + { + title = "Pile Of Mace Spheres Spawner"; + sprite = "AMM2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5429 + { + title = "Flame Orb Spawner"; + sprite = "AMP1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5430 + { + title = "Inferno Orb Spawner"; + sprite = "AMP2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5431 + { + title = "Lesser Runes Spawner"; + sprite = "AMS1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5432 + { + title = "Greater Runes Spawner"; + sprite = "AMS2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5433 + { + title = "Wand Crystal Spawner"; + sprite = "AMG1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5434 + { + title = "Crystal Geode Spawner"; + sprite = "AMG2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5435 + { + title = "Bag Of Holding Spawner"; + sprite = "BAGHA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5437 + { + title = "Silver Shield Spawner"; + sprite = "SHLDA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5438 + { + title = "Enchanted Shield Spawner"; + sprite = "SHD2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5436 + { + title = "Map Scroll Spawner"; + sprite = "SPMPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5440 + { + title = "Morph Ovum Spawner"; + sprite = "ARTIEGGC"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5443 + { + title = "Shadowsphere Spawner"; + sprite = "ARTIINVS"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5444 + { + title = "Ring of Invulnerability Spawner"; + sprite = "ARTIINVU"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5447 + { + title = "Time Bomb Of The Ancients Spawner"; + sprite = "ARTIFBMB"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5448 + { + title = "Tome of Power Spawner"; + sprite = "ARTIPWBK"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invrandom + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Random Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5450 + { + title = "Random Artifact Spawner"; + sprite = "ARTIATLP"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5451 + { + title = "Weak Monster Spawner"; + sprite = "IMPXA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5452 + { + title = "Tough Monster Spawner"; + sprite = "HEADA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5453 + { + title = "Random Monster Spawner"; + sprite = "MUMMY1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5454 + { + title = "Ghost Monster Spawner"; + sprite = "KNIGA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} + +// New things available only in Hexen +hexen +{ + // All the invasion spawners + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5501 + { + title = "Ettin Spawner"; + sprite = "ETTNA1"; + width = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5502 + { + title = "Phantasmal Ettin Spawner"; + sprite = "ETTNA1"; + width = 25; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5503 + { + title = "Centaur Spawner"; + sprite = "CENTA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5504 + { + title = "Phantasmal Centaur Spawner"; + sprite = "CENTA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5505 + { + title = "Slaughtaur Spawner"; + sprite = "CENTF1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5506 + { + title = "Affrit Spawner"; + sprite = "FDMNA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5507 + { + title = "Dark Bishop Spawner"; + sprite = "BISHA1"; + width = 22; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5508 + { + title = "Green Chaos Serpent Spawner"; + sprite = "DEMNA1"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5509 + { + title = "Phantasmal Green Chaos Serpent Spawner"; + sprite = "DEMNA1"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5510 + { + title = "Brown Chaos Serpent Spawner"; + sprite = "DEM2A1"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5511 + { + title = "Phantasmal Brown Chaos Serpent Spawner"; + sprite = "DEM2A1"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5512 + { + title = "Wendigo Spawner"; + sprite = "ICEYA1"; + width = 22; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5513 + { + title = "Stalker Spawner"; + sprite = "SSPTB0"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5514 + { + title = "Stalker Boss Spawner"; + sprite = "SSPTD0"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5515 + { + title = "Reiver Spawner"; + sprite = "WRTHA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5516 + { + title = "Traductus (cleric boss) Spawner"; + sprite = "CLERE8"; + width = 16; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5517 + { + title = "Zedek (fighter boss) Spawner"; + sprite = "PLAYE8"; + width = 16; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5518 + { + title = "Menelkir (mage boss) Spawner"; + sprite = "MAGEE8"; + width = 16; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5520 + { + title = "Heresiarch Spawner Spawner"; + sprite = "SORCA1"; + width = 40; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5521 + { + title = "Korax Spawner Spawner"; + sprite = "KORXA1"; + width = 65; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5522 + { + title = "Pig Spawner Spawner"; + sprite = "PIGA2A8"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invweapons + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Weapon Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5530 + { + title = "Firestorm Spawner"; + sprite = "WCFMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5531 + { + title = "Serpent Staff Spawner"; + sprite = "WCSSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5532 + { + title = "Timon's Axe Spawner"; + sprite = "WFAXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5533 + { + title = "Hammer Of Retribution Spawner"; + sprite = "WFHMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5534 + { + title = "Frost Shards Spawner"; + sprite = "WMCSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5535 + { + title = "Arc Of Death Spawner"; + sprite = "WMLGG0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5554 + { + title = "Wraithverge Piece 1 Spawner"; + sprite = "WCH1A0"; + } + 5555 + { + title = "Wraithverge Piece 2 Spawner"; + sprite = "WCH2A0"; + } + 5556 + { + title = "Wraithverge Piece 3 Spawner"; + sprite = "WCH3A0"; + } + 5557 + { + title = "Quietus Piece 1 Spawner"; + sprite = "WFR1A0"; + } + 5558 + { + title = "Quietus Piece 2 Spawner"; + sprite = "WFR2A0"; + } + 5559 + { + title = "Quietus Piece 3 Spawner"; + sprite = "WFR3A0"; + } + 5560 + { + title = "BloodScourge Piece 1 Spawner"; + sprite = "WMS1A0"; + } + 5561 + { + title = "BloodScourge Piece 2 Spawner"; + sprite = "WMS2A0"; + } + 5562 + { + title = "BloodScourge Piece 3 Spawner"; + sprite = "WMS3A0"; + } + } + + invammunition + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Ammunition Spawners"; + width = 16; + sort = 1; + height = 20; + blocking = 0; + hangs = 0; + + 5523 + { + title = "Blue Mana Spawner"; + sprite = "MAN1H0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5524 + { + title = "Green Mana Spawner"; + sprite = "MAN2H0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5525 + { + title = "Combined Mana Spawner"; + sprite = "MAN3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5549 + { + title = "Amulet Of Warding Spawner"; + sprite = "ARM4A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5550 + { + title = "Falcon Shield Spawner"; + sprite = "ARM2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5551 + { + title = "Mesh Armor Spawner"; + sprite = "ARM1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5552 + { + title = "Platinum Helm Spawner"; + sprite = "ARM3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5444 + { + title = "Icon Of The Defender Spawner"; + sprite = "ARTIINVU"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5536 + { + title = "Disc Of Repulsion Spawner"; + sprite = "ARTIBLST"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5537 + { + title = "Dragonskin Bracers Spawner"; + sprite = "ARTIBRAC"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5538 + { + title = "Krater Of Might Spawner"; + sprite = "ARTIBMAN"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5539 + { + title = "Dark Servant Spawner"; + sprite = "ARTISUMN"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5540 + { + title = "Mystic Ambit Incant Spawner"; + sprite = "ARTIHRAD"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5541 + { + title = "Flechette Spawner"; + sprite = "ARTIPSBG"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5542 + { + title = "Poison Cloud Flechette Spawner"; + sprite = "ARTIPSBG"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5543 + { + title = "Delayed Blast Flechette Spawner"; + sprite = "ARTIPSBG"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5544 + { + title = "Bouncing Grenade Flechette Spawner"; + sprite = "ARTIPSBG"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5545 + { + title = "Porkelator Spawner"; + sprite = "ARTIPORK"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5546 + { + title = "Boots Of Speed Spawner"; + sprite = "ARTISPED"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5547 + { + title = "Banishment Device Spawner"; + sprite = "ARTITELO"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + + invrandom + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Random Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5519 + { + title = "Random Deathking Spawner"; + sprite = "CLERE8"; + width = 16; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5526 + { + title = "Random Weapon Piece Spawner"; + sprite = "WFR2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5527 + { + title = "Random Wraithverge Piece Spawner"; + sprite = "WCH3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5528 + { + title = "Random Quietus Piece Spawner"; + sprite = "WFR3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5529 + { + title = "Random BloodScourge Piece Spawner"; + sprite = "WMS3A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5548 + { + title = "Random Artifact Spawner"; + sprite = "ARTIATLP"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5553 + { + title = "Random Flechette Spawner"; + sprite = "ARTIPSBG"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5563 + { + title = "Cleric Weapon Spawner"; + sprite = "WCSSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5564 + { + title = "Fighter Weapon Spawner"; + sprite = "WFAXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5565 + { + title = "Mage Weapon Spawner"; + sprite = "WMCSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5566 + { + title = "Blue Mana Weapon Spawner"; + sprite = "WCSSA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5567 + { + title = "Green Mana Weapon Spawner"; + sprite = "WFHMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5568 + { + title = "Weak Monster Spawner"; + sprite = "FDMNA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5569 + { + title = "Tough Monster Spawner"; + sprite = "BISHA1"; + width = 22; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5570 + { + title = "Random Monster Spawner"; + sprite = "DEMNA1"; + width = 32; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5571 + { + title = "Phantasmal Monster Spawner"; + sprite = "CENTA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} + +// New things available in both Raven Software games +raven +{ + // The stalagmite is only defined for Doom in ZDoom, but it + // is also defined for Heretic and Hexen in Zandronum. + obstacles + { + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 5050 // Stalagmite + { + title = "Stalagmite"; + sprite = "SMT2A0"; + width = 16; + height = 48; + } + } + + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5500 + { + title = "Friendly Allied Minotaur Spawner"; + sprite = "MNTRA1"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5439 + { + title = "Crystal Vial Spawner"; + sprite = "PTN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5441 + { + title = "Wings Of Wrath Spawner"; + sprite = "ARTISOAR"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5442 + { + title = "Quartz Flask Spawner"; + sprite = "ARTIPTN2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5445 + { + title = "Mystic Urn Spawner"; + sprite = "ARTISPHL"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5446 + { + title = "Chaos Device Spawner"; + sprite = "ARTIATLP"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5449 + { + title = "Torch Spawner"; + sprite = "ARTITRCH"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} + +// New things available only in Strife +strife +{ + // All the invasion spawners + invmonsters + { + color = 14; // Yellow + arrow = 1; + title = "Invasion Monster Spawners"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5600 + { + title="Acolyte spawner"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5601 + { + title="Acolyte spawner (tan)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5602 + { + title="Acolyte spawner (red)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5603 + { + title="Acolyte spawner (rust)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5604 + { + title="Acolyte spawner (gray)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5605 + { + title="Acolyte spawner (dark green)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5606 + { + title="Acolyte spawner (gold)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5607 + { + title="Acolyte spawner (light green)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5608 + { + title="Acolyte spawner (blue)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5609 + { + title="Acolyte spawner (shadow)"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5610 + { + title="Random Acolyte spawner"; + sprite= "AGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5611 + { + title="Sentinel Spawner"; + sprite= "SEWRA8A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 23; + } + 5612 + { + title="Crusader Spawner"; + sprite= "ROB2A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5613 + { + title="Inquisitor Spawner"; + sprite= "ROB3A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 40; + } + 5614 + { + title="Stalker Spawner"; + sprite= "SPIDJ2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 31; + } + 5615 + { + title="Ceiling Turret Spawner"; + sprite= "TURTA8A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 20; + } + 5616 + { + title="Templar Spawner"; + sprite= "PGRDA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5617 + { + title="Reaver Spawner"; + sprite= "ROB1A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 20; + } + 5618 + { + title="Random Small Robot Spawner"; + sprite= "SEWRA8A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 31; + } + 5619 + { + title="Random Medium Robot Spawner"; + sprite= "ROB2A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 40; + } + 5620 + { + title="Random Robot Spawner"; + sprite= "ROB3A2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 40; + } + 5621 + { + title="Bishop Spawner"; + sprite= "MLDRA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 40; + } + 5622 + { + title="Programmer Spawner"; + sprite= "PRGRD0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 45; + } + 5623 + { + title="Loremaster Spawner"; + sprite= "PRSTA2"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 15; + } + 5624 + { + title="Entity Spawner"; + sprite= "MNALA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 130; + } + 5625 + { + title="Sub-Entity Spawner"; + sprite= "MNALA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 130; + } + 5626 + { + title="Spectre 1 Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + 5627 + { + title="Spectre 2 Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + 5628 + { + title="Spectre 3 Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + 5629 + { + title="Spectre 4 Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + 5630 + { + title="Spectre 5 Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + 5631 + { + title="Random Spectre Spawner"; + sprite= "ALN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + width = 64; + } + } + + invweapons + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Weapon Spawners"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 5632 + { + title="Crossbow Spawner"; + sprite= "CBOWA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5633 + { + title="Assault Gun Spawner"; + sprite= "RIFLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5634 + { + title="Assault Gun (Standing) Spawner"; + sprite= "RIFLB0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5635 + { + title="Random Assault Gun Spawner"; + sprite= "RIFLB0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5636 + { + title="Mini-Missile Launcher Spawner"; + sprite= "MMSLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5637 + { + title="Flame Thrower Spawner"; + sprite= "FLAMA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5638 + { + title="Mauler Spawner"; + sprite= "TRPDA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5639 + { + title="Grenade Launcher Spawner"; + sprite= "GRNDA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5640 + { + title="Sigil 1 Spawner"; + sprite= "SIGLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5641 + { + title="Sigil 2 Spawner"; + sprite= "SIGLB0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5642 + { + title="Sigil 3 Spawner"; + sprite= "SIGLC0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5643 + { + title="Sigil 4 Spawner"; + sprite= "SIGLD0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5644 + { + title="Sigil 5 Spawner"; + sprite= "SIGLE0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5645 + { + title="Random Sigil Spawner"; + sprite= "SIGLE0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invammunition + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Ammunition Spawners"; + width = 16; + sort = 1; + height = 20; + blocking = 0; + hangs = 0; + + 5646 + { + title="High Explosive Grenade Rounds Spawner"; + sprite= "GRN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5647 + { + title="Phosphorous Grenade Rounds Spawner"; + sprite= "GRN2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5648 + { + title="Random Grenade Rounds Spawner"; + sprite= "GRN1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5649 + { + title="Bullet Clip Spawner"; + sprite= "BLITA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5650 + { + title="Bullet Box Spawner"; + sprite= "BBOXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5651 + { + title="Bullet Spawner"; + sprite= "BBOXA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5652 + { + title="Mini Missiles Spawner"; + sprite= "MSSLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5653 + { + title="Missile Crate Spawner"; + sprite= "ROKTA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5654 + { + title="Random Missiles Spawner"; + sprite= "MSSLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5655 + { + title="Energy Pod Spawner"; + sprite= "BRY1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5656 + { + title="Energy Pack Spawner"; + sprite= "CPACA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5657 + { + title="Random Energy Spawner"; + sprite= "BRY1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5658 + { + title="Poison Bolts Spawner"; + sprite= "PQRLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5659 + { + title="Electric Bolts Spawner"; + sprite= "XQRLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5660 + { + title="Random Bolts Spawner"; + sprite= "XQRLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5661 + { + title="Ammo Satchel Spawner"; + sprite= "BKPKA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5662 + { + title="Large or Rare Ammo Spawner"; + sprite= "PQRLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5663 + { + title="Small or Common Ammo Spawner"; + sprite= "BLITA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invhealth + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Health and Armor Spawners"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5664 + { + title="Metal Armor Spawner"; + sprite= "ARM1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5665 + { + title="Leather Armor Spawner"; + sprite= "ARM2A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5667 + { + title="Med Patch Spawner"; + sprite= "STMPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5668 + { + title="Medkit Spawner"; + sprite= "MDKTA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5669 + { + title="Surgery Kit Spawner"; + sprite= "FULLA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5675 + { + title="Random Health Spawner"; + sprite= "MDKTA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5676 + { + title="Random Armor Spawner"; + sprite= "ARM1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } + + invpowerups + { + color = 14; // Yellow + arrow = 0; + title = "Invasion Powerup Spawners"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5666 + { + title="Teleport Beacon Spawner"; + sprite= "BEACA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5670 + { + title="Map Spawner"; + sprite= "PMAPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5671 + { + title="Shadow Armor Spawner"; + sprite= "SHD1A0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5672 + { + title="Environmental Suit Spawner"; + sprite= "MASKA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5673 + { + title="Targeter Spawner"; + sprite= "TARGA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + 5674 + { + title="Scanner Spawner"; + sprite= "PMUPA0"; + include("Zandronum_misc.cfg", "invasionspawnerargs"); + } + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Strife_common.cfg b/Build/Configurations/Includes/Strife_common.cfg new file mode 100644 index 0000000..650cc23 --- /dev/null +++ b/Build/Configurations/Includes/Strife_common.cfg @@ -0,0 +1,93 @@ +//mxd. These settings are used only in Vanilla Strife configuration. +mapformat_doom +{ + // The format interface handles the map data format + formatinterface = "DoomMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "doommaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = true; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("Strife_misc.cfg", "mapformat_doom.defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_doom"); + + // Generalized actions + generalizedlinedefs = false; + generalizedsectors = false; + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("Doom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Strife_misc.cfg", "mapformat_doom.sectortypes"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + include("Strife_misc.cfg", "mapformat_doom.linedefflags"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Strife_misc.cfg", "mapformat_doom.linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Strife_linedefs.cfg"); + } + + // THING FLAGS + thingflags + { + include("Strife_misc.cfg", "mapformat_doom.thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Strife_misc.cfg", "mapformat_doom.thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Doom_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Strife_misc.cfg", "mapformat_doom.thingflagsmasks"); + +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Strife_linedefs.cfg b/Build/Configurations/Includes/Strife_linedefs.cfg new file mode 100644 index 0000000..b50a06e --- /dev/null +++ b/Build/Configurations/Includes/Strife_linedefs.cfg @@ -0,0 +1,1477 @@ + +misc +{ + + 0 + { + title = "None"; + prefix = ""; + } + + title = "Misc"; + + 165 + { + title = "Misc That Doesn't Seem to Work"; + prefix = "DR"; + } + + 182 + { + title = "Misc Break Screen"; + prefix = "G1"; + } + + 205 + { + title = "Misc Area Only in Retail Version"; + prefix = "DR"; + } + + 218 + { + title = "Misc Clear NonBlock Quest?"; + prefix = "W1"; + } + + 666 + { + title = "Misc Push Wall (may not work right)"; + prefix = "SR"; + } +} + + +door +{ + title = "Door"; + + 1 + { + title = "Door Open Wait Close (also monsters)"; + prefix = "DR"; + } + + 2 + { + title = "Door Open Stay"; + prefix = "W1"; + } + + 3 + { + title = "Door Close Stay"; + prefix = "W1"; + } + + 4 + { + title = "Door Open Wait Close"; + prefix = "W1"; + } + + 16 + { + title = "Door Close Wait Open"; + prefix = "W1"; + } + + 26 + { + title = "Door Open Blue ID Badge, Wait 4, Close"; + prefix = "DR"; + } + + 27 + { + title = "Door Open Pass Card, Wait 4, Close"; + prefix = "DR"; + } + + 28 + { + title = "Door Open Gold ID Card, Wait 4, Close"; + prefix = "DR"; + } + + 29 + { + title = "Door Open Wait Close"; + prefix = "S1"; + } + + 31 + { + title = "Door Open Stay"; + prefix = "D1"; + } + + 32 + { + title = "Door Open Blue ID Badge, Stay Open"; + prefix = "D1"; + } + + 33 + { + title = "Door Open Gold ID Card, Stay Open"; + prefix = "D1"; + } + + 34 + { + title = "Door Open Pass Card, Stay Open"; + prefix = "D1"; + } + + 40 + { + title = "Door Open Split, floor down, ceiling up"; + prefix = "S1"; + } + + 42 + { + title = "Door Close Stay"; + prefix = "SR"; + } + + 46 + { + title = "Door Open Stay"; + prefix = "GR"; + } + + 50 + { + title = "Door Close Stay"; + prefix = "S1"; + } + + 61 + { + title = "Door Open Stay"; + prefix = "SR"; + } + + 63 + { + title = "Door Open Wait Close"; + prefix = "SR"; + } + + 75 + { + title = "Door Close Stay"; + prefix = "WR"; + } + + 76 + { + title = "Door Close Stay Open"; + prefix = "WR"; + } + + 86 + { + title = "Door Open Stay"; + prefix = "WR"; + } + + 90 + { + title = "Door Open Wait Close"; + prefix = "WR"; + } + + 99 + { + title = "Door Open Blue ID Badge Fast, Stay Open"; + prefix = "SR"; + } + + 103 + { + title = "Door Open Stay"; + prefix = "S1"; + } + + 105 + { + title = "Door Open Wait Close (fast)"; + prefix = "WR"; + } + + 106 + { + title = "Door Open Stay (fast)"; + prefix = "WR"; + } + + 107 + { + title = "Door Close Stay (fast)"; + prefix = "WR"; + } + + 108 + { + title = "Door Open Wait Close (fast)"; + prefix = "W1"; + } + + 109 + { + title = "Door Open Stay (fast)"; + prefix = "W1"; + } + + 110 + { + title = "Door Close (fast)"; + prefix = "W1"; + } + + 111 + { + title = "Door Open Wait Close (fast)"; + prefix = "S1"; + } + + 112 + { + title = "Door Open Stay (fast)"; + prefix = "S1"; + } + + 113 + { + title = "Door Close Stay (fast)"; + prefix = "S1"; + } + + 114 + { + title = "Door Open Wait Close (fast)"; + prefix = "SR"; + } + + 115 + { + title = "Door Open Stay (fast)"; + prefix = "SR"; + } + + 116 + { + title = "Door Close Stay (fast)"; + prefix = "SR"; + } + + 117 + { + title = "Door Open Wait Close (fast)"; + prefix = "DR"; + } + + 118 + { + title = "Door Open Stay (fast)"; + prefix = "D1"; + } + + 133 + { + title = "Door Open Blue ID Badge Fast, Stay Open"; + prefix = "S1"; + } + + 134 + { + title = "Door Open Gold ID Card Fast, Stay Open"; + prefix = "SR"; + } + + 135 + { + title = "Door Open Gold ID Card Fast, Stay Open"; + prefix = "S1"; + } + + 136 + { + title = "Door Open Pass Card Fast, Stay Open"; + prefix = "SR"; + } + + 137 + { + title = "Door Open Pass Card Fast, Stay Open"; + prefix = "S1"; + } + + 144 + { + title = "Door Open Sliding (special texture)"; + prefix = "DR"; + } + + 151 + { + title = "Door Open Gold Key Fast, Stay Open"; + prefix = "SR"; + } + + 152 + { + title = "Door Open Brass Key Fast, Stay Open"; + prefix = "SR"; + } + + 153 + { + title = "Door Open Silver Key Fast, Stay Open"; + prefix = "SR"; + } + + 156 + { + title = "Door Open Brass Key, Stay Open"; + prefix = "D1"; + } + + 157 + { + title = "Door Open Silver Key, Stay Open"; + prefix = "D1"; + } + + 158 + { + title = "Door Open Gold Key, Stay Open"; + prefix = "D1"; + } + + 159 + { + title = "Door Open Gold Key, Wait 4, Close"; + prefix = "DR"; + } + + 160 + { + title = "Door Open Silver Key, Wait 4, Close"; + prefix = "DR"; + } + + 161 + { + title = "Door Open Brass Key, Wait, Close"; + prefix = "DR"; + } + + 162 + { + title = "Door Open Brass Key Fast, Stay Open"; + prefix = "S1"; + } + + 163 + { + title = "Door Open Silver Key Fast, Stay Open"; + prefix = "S1"; + } + + 164 + { + title = "Door Open Gold Key Fast, Stay Open"; + prefix = "S1"; + } + + 166 + { + title = "Door Open Severed Hand, Wait 4, Close"; + prefix = "DR"; + } + + 167 + { + title = "Door Open Severed Hand Fast, Stay Open"; + prefix = "S1"; + } + + 168 + { + title = "Door Open Severed Hand Fast, Stay Open"; + prefix = "SR"; + } + + 169 + { + title = "Door Open Front Base Key, Wait, Close"; + prefix = "DR"; + } + + 170 + { + title = "Door Open Govs Key, Wait, Close"; + prefix = "DR"; + } + + 171 + { + title = "Door Open Prison Key & Stay"; + prefix = "S1"; + } + + 172 + { + title = "Door Open Power 1 Key, Wait, Close"; + prefix = "SR"; + } + + 173 + { + title = "Door Open Power 2 Key, Wait, Close"; + prefix = "SR"; + } + + 174 + { + title = "Door Open Split, floor down, ceiling up"; + prefix = "W1"; + } + + 176 + { + title = "Door Open Power 3 Key, Wait, Close"; + prefix = "SR"; + } + + 188 + { + title = "Door Open if Piston destroyed/DM"; + prefix = "W1"; + } + + 189 + { + title = "Door Open Split Oracle Key"; + prefix = "S1"; + } + + 190 + { + title = "Door Open Order Key, Wait 4, Close"; + prefix = "DR"; + } + + 191 + { + title = "Door Open Military ID, Wait, Close"; + prefix = "SR"; + } + + 192 + { + title = "Door Open WareHouse Key, Wait, Close"; + prefix = "SR"; + } + + 194 + { + title = "Door Open Give QT1, Freed Prisoners"; + prefix = "S1"; + } + + 197 + { + title = "Door Close Fast Sigil B"; + prefix = "W1"; + } + + 200 + { + title = "Door Open Sigil A"; + prefix = "W1"; + } + + 207 + { + title = "Door Open Sliding (special texture)"; + prefix = "SR"; + } + + 213 + { + title = "Door Open Chalice, Wait 4, Close"; + prefix = "DR"; + } + + 216 + { + title = "Door Open Quest, Wait 4, Close?"; + prefix = "WR"; + } + + 217 + { + title = "Door Open Core Key, Wait 4, Close"; + prefix = "DR"; + } + + 221 + { + title = "Door Open Mauler Key, Wait 4, Close"; + prefix = "DR"; + } + + 222 + { + title = "Door Open Factory Key, Wait, Close"; + prefix = "SR"; + } + + 223 + { + title = "Door Open Mine Key, Wait, Close"; + prefix = "SR"; + } + + 224 + { + title = "Door Open Chapel Key, Wait, Close"; + prefix = "DR"; + } + + 225 + { + title = "Door Open Catabomb Key, Wait, Close"; + prefix = "DR"; + } + + 227 + { + title = "Door Close Quest"; + prefix = "W1"; + } + + 229 + { + title = "Door Open Sliding SigilE (special texture)"; + prefix = "SR"; + } + + 230 + { + title = "Door Open Quest? WRONG"; + prefix = "W1"; + } + + 232 + { + title = "Door Open Oracle Pass, Wait 4, Close"; + prefix = "DR"; + } + + 233 + { + title = "Door Open Split, Blackbird Message"; + prefix = "S1"; + } + + 234 + { + title = "Door Open Quest/DM"; + prefix = "SR"; + } + + 235 + { + title = "Door Open Split Sigil E"; + prefix = "S1"; + } +} + + +floor +{ + title = "Floor"; + + 5 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "W1"; + } + + 9 + { + title = "Floor Raise Donut (changes texture)"; + prefix = "S1"; + } + + 14 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "S1"; + } + + 15 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "S1"; + } + + 18 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "S1"; + } + + 19 + { + title = "Floor Lower to Highest Floor"; + prefix = "W1"; + } + + 20 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "S1"; + } + + 22 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "W1"; + } + + 23 + { + title = "Floor Lower to Lowest Floor"; + prefix = "S1"; + } + + 24 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "G1"; + } + + 30 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "W1"; + } + + 36 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "W1"; + } + + 37 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "W1"; + } + + 38 + { + title = "Floor Lower to Lowest Floor"; + prefix = "W1"; + } + + 45 + { + title = "Floor Lower to Highest Floor"; + prefix = "SR"; + } + + 47 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "G1"; + } + + 53 + { + title = "Floor Start Moving Up and Down"; + prefix = "W1"; + } + + 54 + { + title = "Floor Stop Moving"; + prefix = "W1"; + } + + 55 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "S1"; + } + + 56 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "W1"; + } + + 58 + { + title = "Floor Raise by 24"; + prefix = "W1"; + } + + 59 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "W1"; + } + + 60 + { + title = "Floor Lower to Lowest Floor"; + prefix = "SR"; + } + + 64 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "SR"; + } + + 65 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "SR"; + } + + 66 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "SR"; + } + + 67 + { + title = "Floor Raise by 32 (changes texture)"; + prefix = "SR"; + } + + 68 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "SR"; + } + + 69 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "SR"; + } + + 70 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "SR"; + } + + 71 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "S1"; + } + + 82 + { + title = "Floor Lower to Lowest Floor"; + prefix = "WR"; + } + + 83 + { + title = "Floor Lower to Highest Floor"; + prefix = "WR"; + } + + 84 + { + title = "Floor Lower to Lowest Floor (changes texture)"; + prefix = "WR"; + } + + 87 + { + title = "Floor Start Moving Up and Down"; + prefix = "WR"; + } + + 89 + { + title = "Floor Stop Moving"; + prefix = "WR"; + } + + 91 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "WR"; + } + + 92 + { + title = "Floor Raise by 24"; + prefix = "WR"; + } + + 93 + { + title = "Floor Raise by 24 (changes texture)"; + prefix = "WR"; + } + + 94 + { + title = "Floor Raise to 8 below Lowest Ceiling (crushes)"; + prefix = "WR"; + } + + 95 + { + title = "Floor Raise to Next Higher Floor (changes texture)"; + prefix = "WR"; + } + + 96 + { + title = "Floor Raise by Shortest Lower Texture"; + prefix = "WR"; + } + + 98 + { + title = "Floor Lower to 8 above Highest Floor"; + prefix = "WR"; + } + + 101 + { + title = "Floor Raise to Lowest Ceiling"; + prefix = "S1"; + } + + 102 + { + title = "Floor Lower to Highest Floor"; + prefix = "S1"; + } + + 119 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "W1"; + } + + 128 + { + title = "Floor Raise to Next Higher Floor"; + prefix = "WR"; + } + + 129 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "WR"; + } + + 130 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "W1"; + } + + 131 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "S1"; + } + + 132 + { + title = "Floor Raise to Next Higher Floor (fast)"; + prefix = "SR"; + } + + 140 + { + title = "Floor Raise by 512"; + prefix = "S1"; + } + + 180 + { + title = "Floor Raise 512 match adjacent text/type"; + prefix = "G1"; + } + + 181 + { + title = "Floor Raise 512 match adjacent text/type"; + prefix = "S1"; + } + + 183 + { + title = "Floor Raise High Lower Ceiling Low Adj Instant"; + prefix = "W1"; + } + + 193 + { + title = "Floor Lower Quest/DM"; + prefix = "W1"; + } + + 212 + { + title = "Floor Lower to nearest Comm Unit?"; + prefix = "S1"; + } + + 214 + { + title = "Floor Lower for 30 sec, raise back up"; + prefix = "SR"; + } + + 219 + { + title = "Floor Lower Red Crystal"; + prefix = "S1"; + } + + 220 + { + title = "Floor Lower Blue Crystal"; + prefix = "S1"; + } + + 226 + { + title = "Floor Lower to low adj, give Stat Bonus"; + prefix = "S1"; + } +} + + +crusher +{ + title = "Crusher"; + + 6 + { + title = "Crusher Start with Fast Damage"; + prefix = "W1"; + } + + 25 + { + title = "Crusher Start with Slow Damage"; + prefix = "W1"; + } + + 57 + { + title = "Crusher Stop"; + prefix = "W1"; + } + + 73 + { + title = "Crusher Start with Slow Damage"; + prefix = "WR"; + } + + 74 + { + title = "Crusher Stop"; + prefix = "WR"; + } + + 77 + { + title = "Crusher Start with Fast Damage"; + prefix = "WR"; + } + + 141 + { + title = "Crusher Start with Slow Damage (silent)"; + prefix = "W1"; + } +} + + +stairs +{ + title = "Stairs"; + + 7 + { + title = "Stairs Raise by 8"; + prefix = "S1"; + } + + 8 + { + title = "Stairs Raise by 8"; + prefix = "W1"; + } + + 127 + { + title = "Stairs Raise by 16 (fast)"; + prefix = "S1"; + } + + 146 + { + title = "Stairs Lower"; + prefix = "S1"; + } + + 178 + { + title = "Stairs Lower"; + prefix = "W1"; + } + + 209 + { + title = "Stairs Lower Chalice"; + prefix = "S1"; + } +} + + +lift +{ + title = "Lift"; + + 10 + { + title = "Lift Lower Wait Raise"; + prefix = "W1"; + } + + 21 + { + title = "Lift Lower Wait Raise"; + prefix = "S1"; + } + + 62 + { + title = "Lift Lower Wait Raise"; + prefix = "SR"; + } + + 88 + { + title = "Lift Lower Wait Raise"; + prefix = "WR"; + } + + 120 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "WR"; + } + + 121 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "W1"; + } + + 122 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "S1"; + } + + 123 + { + title = "Lift Lower Wait Raise (fast)"; + prefix = "SR"; + } + + 154 + { + title = "Lift Lower Gold Key, Wait, Raise"; + prefix = "SR"; + } + + 155 + { + title = "Lift Raise, Wait, Lower"; + prefix = "SR"; + } + + 177 + { + title = "Lift Lower Power 3 Key, Wait, Up"; + prefix = "SR"; + } + + 184 + { + title = "Lift Raise, Wait, Lower"; + prefix = "WR"; + } +} + + +exit +{ + title = "Exit"; + + 11 + { + title = "Exit Level (tag = map to go to)"; + prefix = "S1"; + } + + 51 + { + title = "Exit Level (secret exit)"; + prefix = "S1"; + } + + 52 + { + title = "Exit Level (go to next map)"; + prefix = "W1"; + } + + 124 + { + title = "Exit Level (secret exit)"; + prefix = "W1"; + } + + 145 + { + title = "Exit Teleport to New Map Thing, tag=map&spot"; + prefix = "WR"; + } + + 186 + { + title = "Exit Teleport to New Map Thing 1-Way, tag=map&spot"; + prefix = "WR"; + } +} + + +light +{ + title = "Light"; + + 12 + { + title = "Light Change to Brightest Adjacent"; + prefix = "W1"; + } + + 13 + { + title = "Light Change to Brightest"; + prefix = "W1"; + } + + 17 + { + title = "Light Start Blinking"; + prefix = "W1"; + } + + 35 + { + title = "Light Change to Darkest"; + prefix = "W1"; + } + + 79 + { + title = "Light Change to Darkest"; + prefix = "WR"; + } + + 80 + { + title = "Light Change to Brightest Adjacent"; + prefix = "WR"; + } + + 81 + { + title = "Light Change to Brightest"; + prefix = "WR"; + } + + 104 + { + title = "Light Change to Darkest Adjacent"; + prefix = "W1"; + } + + 138 + { + title = "Light Change to Brightest"; + prefix = "SR"; + } + + 139 + { + title = "Light Change to Darkest"; + prefix = "SR"; + } +} + + +ceiling +{ + title = "Ceiling"; + + 41 + { + title = "Ceiling Lower to Floor"; + prefix = "S1"; + } + + 43 + { + title = "Ceiling Lower to Floor"; + prefix = "SR"; + } + + 44 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "W1"; + } + + 49 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "S1"; + } + + 72 + { + title = "Ceiling Lower to 8 above Floor"; + prefix = "WR"; + } + + 179 + { + title = "Ceiling Lower to floor"; + prefix = "W1"; + } + + 199 + { + title = "Ceiling Crush Quest Factory, give Stats"; + prefix = "S1"; + } +} + + +scroll +{ + title = "Scroll"; + + 48 + { + title = "Scroll Texture Left"; + prefix = ""; + } + + 142 + { + title = "Scroll Texture Up"; + prefix = ""; + } + + 143 + { + title = "Scroll Texture Down Fast"; + prefix = ""; + } + + 149 + { + title = "Scroll Texture Right"; + prefix = ""; + } +} + + +teleport +{ + title = "Teleport"; + + 97 + { + title = "Teleport"; + prefix = "WR"; + } + + 39 + { + title = "Teleport"; + prefix = "W1"; + } + + 125 + { + title = "Teleport (monsters only)"; + prefix = "W1"; + } + + 126 + { + title = "Teleport (monsters only)"; + prefix = "WR"; + } + + 185 + { + title = "Teleport Target Silent"; + prefix = "WR"; + } + + 195 + { + title = "Teleport Silent, Change Zombie"; + prefix = "MR"; + } + + 231 + { + title = "Teleport Target InSou"; + prefix = "WR"; + } +} + + +forcefield +{ + title = "ForceField"; + + 147 + { + title = "ForceField Remove Around Tagged Sector"; + prefix = "SR"; + } + + 148 + { + title = "ForceField (remove with 147)"; + prefix = ""; + } + + 187 + { + title = "ForceField Clear CrystalDestroyed/DM"; + prefix = "W1"; + } +} + + +sound +{ + title = "Sound"; + + 150 + { + title = "Sound Alarm Claxon"; + prefix = "WR"; + } + + 175 + { + title = "Sound Alarm below 16"; + prefix = "W1"; + } + + 198 + { + title = "Sound Alarm without Guard Uniform"; + prefix = "WR"; + } + + 201 + { + title = "Sound Play Sound?"; + prefix = "SR"; + } + + 202 + { + title = "Sound Activate Comm Unit+tag=VOC#"; + prefix = "W1"; + } + + 203 + { + title = "Sound Play Music+tag=mus#"; + prefix = "WR"; + } + + 204 + { + title = "Sound Play Music+tag=mus#"; + prefix = "W1"; + } + + 206 + { + title = "Sound Alarm Chalice"; + prefix = "W1"; + } + + 208 + { + title = "Sound Trigger Alarm Comm?"; + prefix = "W1"; + } + + 210 + { + title = "Sound Activate Comm Unit+tag=????"; + prefix = "W1"; + } + + 211 + { + title = "Sound Play Sound?"; + prefix = "S1"; + } + + 215 + { + title = "Sound Play Quest Sound?"; + prefix = "W1"; + } + + 228 + { + title = "Sound Play Entity Voice"; + prefix = "W1"; + } +} + diff --git a/Build/Configurations/Includes/Strife_misc.cfg b/Build/Configurations/Includes/Strife_misc.cfg new file mode 100644 index 0000000..a2f4310 --- /dev/null +++ b/Build/Configurations/Includes/Strife_misc.cfg @@ -0,0 +1,142 @@ + +// Basic Strife stuff. + +skills +{ + 1 = "Training"; + 2 = "Rookie"; + 3 = "Veteran"; + 4 = "Elite"; + 5 = "Bloodbath"; +} + +//mxd. These are Strife-specific settings only. +//mxd. These settings are valid only in native Strife map format. +mapformat_doom +{ + sectortypes + { + include("Strife_sectors.cfg"); + } + + linedefflags + { + 512 = "Jump over railing"; + 1024 = "Block floating monsters"; + 2048 = "Translucent (75% opacity)"; + 4096 = "Translucent (25% opacity)"; + } + + linedefflagstranslation + { + 512 = "jumpover"; + 1024 = "blockfloating"; + 2048 = "translucent"; + 4096 = "transparent"; + } + + thingflags + { + 1 = "Easy"; + 2 = "Medium"; + 4 = "Hard"; + 8 = "Stand still"; + 16 = "Multiplayer only"; + 32 = "Ambush players"; + 64 = "Friendly (Strife logic)"; + 256 = "Translucent (25%)"; + 512 = "Invisible"; + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + 1 = "skill1,skill2"; + 2 = "skill3"; + 4 = "skill4,skill5"; + 8 = "standing"; + 16 = "!single"; + 32 = "ambush"; + 64 = "strifeally"; + 256 = "translucent"; + 512 = "invisible"; + } + + // Mask for the thing flags which indicates the options + // that make the same thing appear in the same modes + thingflagsmasks + { + thingflagsmask1 = 7; // 1 + 2 + 4 + thingflagsmask2 = 0; + } + + // Default flags for first new thing + defaultthingflags + { + 1; + 2; + 4; + } +} + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + filter0 + { + name = "Easy skill"; + category = ""; + type = -1; + + fields + { + 1 = true; + } + } + + filter1 + { + name = "Medium skill"; + category = ""; + type = -1; + + fields + { + 2 = true; + } + } + + filter2 + { + name = "Hard skill"; + category = ""; + type = -1; + + fields + { + 4 = true; + } + } + + filter3 + { + name = "Keys only"; + category = "keys"; + type = -1; + } + + filter4 + { + name = "Multiplayer"; + category = ""; + type = -1; + + fields + { + 16 = true; + } + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Strife_sectors.cfg b/Build/Configurations/Includes/Strife_sectors.cfg new file mode 100644 index 0000000..11ad650 --- /dev/null +++ b/Build/Configurations/Includes/Strife_sectors.cfg @@ -0,0 +1,18 @@ +0 = "None"; +1 = "Light blink random"; +2 = "Light blink 0.5 second"; +3 = "Light blink 1 second"; +4 = "5% damage every 32 tics + light blink 0.5 sec."; +5 = "Damage: +2 to nukagecount"; +7 = "Damage 5% every 32 tics"; +8 = "Light oscillate"; +9 = "Secret"; +10 = "Ceiling closes 30 seconds after level start"; +11 = "20% dmg. per sec. When player dies, level ends"; +12 = "Light blink 0.5 second, synchronized"; +13 = "Light blink 1 second, synchronized"; +14 = "Ceiling opens 5 minutes after level start"; +15 = "Instant death: 999% damage every tic"; +16 = "Damage: +4 to nukagecount"; +17 = "Light flicker random"; +18 = "Water current, tag controls angle and strength"; \ No newline at end of file diff --git a/Build/Configurations/Includes/Strife_texturesets.cfg b/Build/Configurations/Includes/Strife_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Includes/Strife_things.cfg b/Build/Configurations/Includes/Strife_things.cfg new file mode 100644 index 0000000..03bef75 --- /dev/null +++ b/Build/Configurations/Includes/Strife_things.cfg @@ -0,0 +1,1664 @@ +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + sprite = "PLAYA2"; + width = 18; + height = 56; + sort = 1; + + 1 = "Player 1 start"; + 2 = "Player 2 start"; + 3 = "Player 3 start"; + 4 = "Player 4 start"; + 5 = "Player 5 start"; + 6 = "Player 6 start"; + 7 = "Player 7 start"; + 8 = "Player 8 start"; + + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYF1"; + } +} + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + sprite = "internal:Teleport"; + width = 18; + sort = 1; + + 14 = "Teleport Destination"; + 23 + { + title = "Teleport Swirl"; + width = 20; + } + 118 = "Teleport New Map Spot 1"; + 119 = "Teleport New Map Spot 2"; + 120 = "Teleport New Map Spot 3"; + 121 = "Teleport New Map Spot 4"; + 122 = "Teleport New Map Spot 5"; + 123 = "Teleport New Map Spot 6"; + 124 = "Teleport New Map Spot 7"; + 125 = "Teleport New Map Spot 8"; + 126 = "Teleport New Map Spot 9"; + 127 = "Teleport New Map Spot 10"; +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 24; + sort = 1; + + 3002 + { + title = "Acolyte (tan)"; + sprite = "AGRDA2"; + height = 64; + } + + 142 + { + title = "Acolyte (red)"; + sprite = "AGRDA2"; + height = 64; + } + + 143 + { + title = "Acolyte (rust)"; + sprite = "AGRDA2"; + height = 64; + } + + 146 + { + title = "Acolyte (gray)"; + sprite = "AGRDA2"; + height = 64; + } + + 147 + { + title = "Acolyte (dark green)"; + sprite = "AGRDA2"; + height = 64; + } + + 148 + { + title = "Acolyte (gold)"; + sprite = "AGRDA2"; + height = 64; + } + + 232 + { + title = "Acolyte (bright green)"; + sprite = "AGRDA2"; + height = 64; + } + + 231 + { + title = "Acolyte (blue)"; + sprite = "AGRDA2"; + height = 64; + } + + 58 + { + title = "Acolyte (shadow armor)"; + sprite = "AGRDA2"; + height = 64; + } + + 3006 + { + title = "Sentinel"; + sprite = "SEWRA8A2"; + width = 23; + height = 53; + } + + 186 + { + title = "Stalker"; + sprite = "SPIDJ2"; + width = 31; + height = 25; + } + + 27 + { + title = "Ceiling Turret"; + sprite = "TURTA8A2"; + width = 20; + height = 20; + hangs = 1; + blocking = 0; + } + + 3001 + { + title = "Reaver"; + sprite = "ROB1C2"; + width = 20; + height = 60; + } + + 3005 + { + title = "Crusader"; + sprite = "ROB2A2"; + width = 40; + height = 56; + } + + 3003 + { + title = "Templar"; + sprite = "PGRDE2"; + width = 20; + height = 60; + } + + 16 + { + title = "Inquisitor"; + sprite = "ROB3A2"; + width = 40; + height = 110; + } + + 71 + { + title = "Programmer"; + sprite = "PRGRD0"; + width = 45; + height = 60; + } + + 187 + { + title = "Bishop"; + sprite = "MLDRF2"; + width = 40; + height = 56; + } + + 12 + { + title = "Loremaster"; + sprite = "PRSTB2"; + width = 15; + height = 56; + } + + 129 + { + title = "Specter A"; + sprite = "ALN1K0"; + width = 64; + height = 64; + } + + 75 + { + title = "Specter B"; + sprite = "ALN1J0"; + width = 24; + height = 64; + } + + 76 + { + title = "Specter C - put with Oracle"; + sprite = "ALN1I0"; + width = 24; + height = 64; + hangs = 1; + } + + 167 + { + title = "Specter D"; + sprite = "ALN1H0"; + width = 24; + height = 64; + } + + 168 + { + title = "Specter E"; + sprite = "ALN1G0"; + width = 24; + height = 64; + } + + 128 + { + title = "Entity"; + sprite = "MNALH0"; + width = 130; + height = 200; + } + + 85 + { + title = "Rat Buddy"; + sprite = "RATTA2A8"; + width = 10; + height = 16; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + + 2001 + { + title = "Crossbow"; + sprite = "CBOWA0"; + } + + 2002 + { + title = "Assault Gun"; + sprite = "RIFLA0"; + } + + 2006 + { + title = "Assault Gun (standing)"; + sprite = "RIFLB0"; + } + + 2003 + { + title = "Mini-Missile Launcher"; + sprite = "MMSLA0"; + } + + 154 + { + title = "Grenade Launcher"; + sprite = "GRNDA0"; + } + + 2005 + { + title = "Flame Thrower"; + sprite = "FLAMA0"; + } + + 2004 + { + title = "Mauler"; + sprite = "TRPDA0"; + } + + 77 + { + title = "Sigil A (lightning strike)"; + sprite = "SIGLA0"; + } + + 78 + { + title = "Sigil B (rail lightning shot)"; + sprite = "SIGLB0"; + } + + 79 + { + title = "Sigil C (spread shot)"; + sprite = "SIGLC0"; + } + + 80 + { + title = "Sigil D (column shot)"; + sprite = "SIGLD0"; + } + + 81 + { + title = "Sigil E (big blast)"; + sprite = "SIGLE0"; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + + 183 + { + title = "Ammo Satchel"; + sprite = "BKPKA0"; + } + + 114 + { + title = "Electric Bolts"; + sprite = "XQRLA0"; + } + + 115 + { + title = "Poison Arrows"; + sprite = "PQRLA0"; + } + + 2007 + { + title = "Bullet Clip"; + sprite = "BLITA0"; + } + + 2048 + { + title = "Box of Bullets"; + sprite = "BBOXA0"; + } + + 2010 + { + title = "Mini Missiles"; + sprite = "MSSLA0"; + } + + 2046 + { + title = "Crate of Missiles"; + sprite = "ROKTA0"; + } + + 152 + { + title = "HE-Grenade Rounds"; + sprite = "GRN1A0"; + } + + 153 + { + title = "Phoshorus-Grenade Rounds"; + sprite = "GRN2A0"; + } + + 84 = "Gas-Grenade Rounds (demo only)"; + + 2047 + { + title = "Energy Pod"; + sprite = "BRY1A0"; + } + + 17 + { + title = "Energy Pack"; + sprite = "CPACA0"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 20; + sort = 1; + + 2011 + { + title = "Med Patch"; + sprite = "STMPA0"; + } + + 2012 + { + title = "Medical Kit"; + sprite = "MDKTA0"; + } + + 2018 + { + title = "Leather Armor"; + sprite = "ARM2A0"; + } + + 2019 + { + title = "Metal Armor"; + sprite = "ARM1A0"; + } + + 83 + { + title = "Surgery Kit"; + sprite = "FULLA0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + height = 20; + sort = 1; + + 2024 + { + title = "Shadow Armor"; + sprite = "SHD1A0"; + } + + 2025 + { + title = "Environmental Suit"; + sprite = "MASKA0"; + } + + 207 + { + title = "Targeter"; + sprite = "TARGA0"; + } + + 2026 + { + title = "Map"; + sprite = "PMAPA0"; + } + + 2027 + { + title = "Scanner/Map-Radar"; + sprite = "PMUPA0"; + } + + 10 + { + title = "Teleport Beacon"; + sprite = "BEACA0"; + width = 16; + height = 16; + } +} + +quests +{ + color = 13; // Light Magenta + arrow = 0; + title = "Quest things"; + width = 20; + sort = 1; + + 45 + { + title = "Gates (Piston)"; + sprite = "PSTNA0"; + height = 76; + } + + 182 + { + title = "Computer"; + sprite = "SECRA0"; + width = 26; + height = 128; + } + + 220 + { + title = "Power Coupling (Only 1)"; + sprite = "COUPA0"; + width = 17; + height = 64; + } + + 226 + { + title = "Broken Power Coupling (Only 1)"; + sprite = "COUPC0"; + width = 16; + height = 16; + } + + 205 + { + title = "Offering Chalice"; + sprite = "RELCA0"; + width = 10; + height = 16; + } + + 90 + { + title = "Guard Uniform (gives token)"; + sprite = "UNIFA0"; + } + + 52 + { + title = "Officer's Uniform (no alarm)"; + sprite = "OFICA0"; + } + + 206 + { + title = "Communicator"; + sprite = "COMMA0"; + } + + 93 + { + title = "Coin"; + sprite = "COINA0"; + } + + 138 + { + title = "10 Gold"; + sprite = "CREDA0"; + } + + 139 + { + title = "25 Gold"; + sprite = "SACKA0"; + } + + 140 + { + title = "50 Gold"; + sprite = "CHSTA0"; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 20; + sort = 1; + + 13 + { + title = "ID Card"; + sprite = "CRD2A0"; + } + + 184 + { + title = "ID Badge"; + sprite = "CRD1A0"; + } + + 185 + { + title = "Passcard"; + sprite = "TPASA0"; + } + + 39 + { + title = "Brass Key"; + sprite = "KY3BA0"; + } + + 38 + { + title = "Silver Key"; + sprite = "KY2SA0"; + } + + 40 + { + title = "Gold Key"; + sprite = "KY1GA0"; + } + + 195 + { + title = "Chapel Key"; + sprite = "CHAPA0"; + } + + 230 + { + title = "Base Key (Front)"; + sprite = "FUSLA0"; + } + + 233 + { + title = "Mauler Key"; + sprite = "BLTKA0"; + } + + 234 + { + title = "Factory Key"; + sprite = "PROCA0"; + } + + 236 + { + title = "Core Key"; + sprite = "GOIDA0"; + } + + 235 + { + title = "Mine Key"; + sprite = "MINEA0"; + } + + 86 + { + title = "Order Key"; + sprite = "FUBRA0"; + } + + 166 + { + title = "Warehouse Key"; + sprite = "WAREA0"; + } + + 91 + { + title = "Severed Hand"; + sprite = "HANDA0"; + } + + 61 + { + title = "Oracle Key"; + sprite = "ORACA0"; + } + + 192 + { + title = "Red Crystal Key"; + sprite = "RCRYA0"; + } + + 193 + { + title = "Blue Crystal Key"; + sprite = "BCRYA0"; + } +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 20; + sort = 1; + + 24 + { + title = "Claxon warning light"; + sprite = "KLAXA0"; + width = 5; + hangs = 1; + } + + 70 + { + title = "Burning Barrel"; + sprite = "BARLA0"; + width = 16; + height = 48; + } + + 28 + { + title = "Cage Light"; + sprite = "CAGEA0"; + height = 3; + hangs = 1; + } + + 34 + { + title = "Candle"; + sprite = "CNDLA0"; + } + + 35 + { + title = "Candelabra"; + sprite = "CLBRA0"; + width = 16; + height = 40; + } + + 43 + { + title = "Outside Lamp"; + sprite = "LAMPA0"; + width = 3; + height = 80; + } + + 46 + { + title = "Pole Lantern"; + sprite = "LANTA0"; + width = 3; + height = 80; + } + + 107 + { + title = "Small Burning Torch"; + sprite = "TRCHA0"; + width = 3; + height = 16; + } + + 108 + { + title = "Small Unlit Torch"; + sprite = "TRHOA0"; + width = 3; + height = 16; + } + + 111 + { + title = "Medium Torch"; + sprite = "LTRHA0"; + width = 4; + height = 72; + } + + 47 + { + title = "Large Torch"; + sprite = "LMPCA0"; + width = 10; + height = 72; + } + + 50 + { + title = "Huge Torch"; + sprite = "LOGSA0"; + width = 10; + height = 80; + } + + 95 + { + title = "Silver Flourescent Light"; + sprite = "LITSA0"; + width = 3; + height = 16; + } + + 96 + { + title = "Brass Flourescent Light"; + sprite = "LITBA0"; + width = 3; + height = 16; + } + + 97 + { + title = "Gold Flourescent Light"; + sprite = "LITGA0"; + width = 3; + height = 16; + } + + 105 + { + title = "Burning Bowl"; + sprite = "BOWLA0"; + width = 16; + height = 16; + } + + 106 + { + title = "Burning Brazier"; + sprite = "BRAZA0"; + width = 10; + height = 32; + } + + 196 + { + title = "Silver Tech Lamp"; + sprite = "TLMPA0"; + width = 11; + height = 64; + } + + 197 + { + title = "Brass Tech Lamp"; + sprite = "TLMPB0"; + width = 8; + height = 64; + } + + 2028 + { + title = "Light Globe"; + sprite = "LITEA0"; + width = 16; + height = 16; + } + + 225 + { + title = "Alien Spider Light"; + sprite = "SPDLA0"; + width = 32; + height = 56; + } +} + +decoration +{ + color = 11; // light cyan + arrow = 0; + title = "Decorations"; + width = 20; + sort = 1; + + 216 + { + title = "Sigil Banner"; + sprite = "SBANA1"; + width = 24; + height = 96; + } + + 82 + { + title = "Wooden Barrel"; + sprite = "BARWA0"; + width = 10; + height = 32; + } + + 117 + { + title = "Surgery Crab"; + sprite = "CRABA0"; + height = 16; + } + + 68 + { + title = "Tray"; + sprite = "TRAYA0"; + width = 24; + height = 40; + } + + 217 + { + title = "Rebel Boots"; + sprite = "BOTRA0"; + } + + 218 + { + title = "Rebel Helmet"; + sprite = "HATRA0"; + } + + 219 + { + title = "Rebel Shirt"; + sprite = "TOPRA0"; + } + + 208 + { + title = "Practice Target"; + sprite = "HOGNA0"; + width = 10; + height = 72; + } + + 194 + { + title = "Anvil"; + sprite = "ANVLA0"; + width = 16; + height = 32; + } + + 228 + { + title = "Ammo Filler"; + sprite = "AFEDA0"; + width = 12; + height = 24; + } + + 109 + { + title = "Ceiling Chain"; + sprite = "CHANA0"; + height = 93; + hangs = 1; + } + + 112 + { + title = "Fountain"; + sprite = "WTFTA0"; + } + + 53 + { + title = "Ceiling Water Drip"; + sprite = "CDRPA0"; + hangs = 1; + } + + 103 + { + title = "Floor Water Drip"; + sprite = "DRIPA0"; + } + + 104 + { + title = "Waterfall Splash"; + sprite = "SPLHA0"; + } + + 164 + { + title = "Mug"; + sprite = "MUGGA0"; + } + + 2014 + { + title = "Water Bottle"; + sprite = "WATRA0"; + } + + 165 + { + title = "Pot"; + sprite = "VASEA0"; + width = 12; + height = 24; + } + + 190 + { + title = "Metal Pot"; + sprite = "POT1A0"; + } + + 188 + { + title = "Pitcher"; + sprite = "VASEB0"; + width = 12; + height = 32; + } + + 189 + { + title = "Stool"; + sprite = "STOLA0"; + width = 6; + height = 24; + } + + 191 + { + title = "Tub"; + sprite = "TUB1A0"; + } + + 26 + { + title = "Entity Nest"; + sprite = "NESTA1"; + width = 84; + height = 47; + } + + 198 + { + title = "Entity Pod"; + sprite = "PODDA0"; + width = 25; + height = 91; + } +} + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Trees and Rocks"; + width = 16; + sort = 1; + + 33 + { + title = "Tree Stub"; + sprite = "TRE1A0"; + width = 15; + height = 80; + } + + 51 + { + title = "Palm Tree"; + sprite = "TREEA0"; + width = 15; + height = 109; + } + + 202 + { + title = "Big Tree"; + sprite = "TREEB0"; + width = 15; + height = 109; + } + + 203 + { + title = "Potted Tree"; + sprite = "TREEC0"; + width = 15; + height = 64; + } + + 60 + { + title = "Short Bush"; + sprite = "BUSHA0"; + width = 15; + height = 40; + } + + 62 + { + title = "Tall Bush"; + sprite = "SHRBA0"; + width = 20; + height = 64; + } + + 215 + { + title = "Stick in Water"; + sprite = "LOGGA0"; + width = 20; + } + + 98 + { + title = "Stalactite"; + sprite = "STLGC0"; + height = 64; + hangs = 1; + } + + 161 + { + title = "Small Stalactite"; + sprite = "STLGA0"; + height = 40; + hangs = 1; + } + + 160 + { + title = "Stalagmite"; + sprite = "STLGB0"; + height = 40; + } + + 163 + { + title = "Small Stalagmite"; + sprite = "STLGF0"; + height = 25; + } + + 159 + { + title = "Cave Pillar Top"; + sprite = "STLGD0"; + height = 128; + hangs = 1; + } + + 162 + { + title = "Cave Pillar Bottom"; + sprite = "STLGE0"; + height = 128; + } + + 99 + { + title = "Rock 1"; + sprite = "ROK1A0"; + width = 20; + } + + 100 + { + title = "Rock 2"; + sprite = "ROK2A0"; + width = 20; + } + + 101 + { + title = "Rock 3"; + sprite = "ROK3A0"; + width = 20; + } + + 102 + { + title = "Rock 4"; + sprite = "ROK4A0"; + width = 20; + } + + 29 + { + title = "Rubble 1"; + sprite = "RUB1A0"; + width = 20; + } + + 30 + { + title = "Rubble 2"; + sprite = "RUB2A0"; + width = 20; + } + + 31 + { + title = "Rubble 3"; + sprite = "RUB3A0"; + width = 20; + } + 32 + { + title = "Rubble 4"; + sprite = "RUB4A0"; + width = 20; + } + + 36 + { + title = "Rubble 5"; + sprite = "RUB5A0"; + width = 20; + } + + 37 + { + title = "Rubble 6"; + sprite = "RUB6A0"; + width = 20; + } + + 41 + { + title = "Rubble 7"; + sprite = "RUB7A0"; + width = 20; + } + + 42 + { + title = "Rubble 8"; + sprite = "RUB8A0"; + width = 20; + } +} + +pillars +{ + color = 3; // Cyan + arrow = 0; + title = "Pillars"; + width = 20; + sort = 1; + + 69 + { + title = "Barricade Column"; + sprite = "BAR1A0"; + width = 16; + height = 128; + } + + 63 + { + title = "Chimneystack"; + sprite = "STAKA0"; + height = 64; + } + + 48 + { + title = "Techno Pillar"; + sprite = "MONIA0"; + height = 128; + } + + 54 + { + title = "Aztec Pillar"; + sprite = "STELA0"; + width = 16; + height = 128; + } + + 55 + { + title = "Damaged Aztec Pillar"; + sprite = "STLAA0"; + width = 16; + height = 80; + } + + 56 + { + title = "Ruined Aztec Pillar"; + sprite = "STLEA0"; + width = 16; + height = 40; + } + + 57 + { + title = "Huge Tech Pillar"; + sprite = "HUGEA0"; + width = 24; + height = 192; + } + + 227 + { + title = "Huge Alien Pillar"; + sprite = "APOWA0"; + width = 24; + height = 192; + } + + 110 + { + title = "Statue"; + sprite = "STATA0"; + height = 64; + } + + 44 + { + title = "Ruined Statue"; + sprite = "DSTAA0"; + height = 56; + } + + 221 + { + title = "Alien Bubble Column"; + sprite = "BUBBA0"; + width = 16; + height = 128; + } + + 222 + { + title = "Alien Floor Bubble"; + sprite = "BUBFA0"; + width = 16; + height = 72; + } + + 223 + { + title = "Alien Ceiling Bubble"; + sprite = "BUBCA0"; + width = 16; + height = 72; + hangs = 1; + } + + 224 + { + title = "Alien Asp Climber"; + sprite = "ASPRA0"; + width = 16; + height = 128; + } +} + +corpses +{ + color = 4; // Red + arrow = 0; + title = "Corpses"; + width = 16; + sort = 1; + + 15 + { + title = "Dead Player, disappears"; + sprite = "PLAYP0"; + width = 20; + } + + 18 + { + title = "Dead Peasant"; + sprite = "PEASN0"; + width = 20; + } + + 19 + { + title = "Dead Rebel"; + sprite = "HMN1N0"; + width = 20; + } + + 20 + { + title = "Dead Reaver"; + sprite = "ROB1R0"; + width = 20; + } + + 21 + { + title = "Dead Acolyte"; + sprite = "AGRDN0"; + width = 20; + } + + 22 + { + title = "Dead Crusader"; + sprite = "ROB2P0"; + width = 20; + } + + 212 + { + title = "Sacrificed Guy"; + sprite = "SACRA0"; + width = 20; + } + + 113 + { + title = "Hearts in Tank"; + sprite = "HERTA0"; + height = 56; + } + + 209 + { + title = "Huge Tank 1 (has skeleton)"; + sprite = "TNK1A0"; + height = 192; + } + + 210 + { + title = "Huge Tank 2"; + sprite = "TNK2A0"; + height = 192; + } + + 211 + { + title = "Huge Tank 3"; + sprite = "TNK3A0"; + height = 192; + } + + 213 + { + title = "Tank 4 (spine with organs)"; + sprite = "TNK4A0"; + height = 56; + } + + 214 + { + title = "Tank 5 (acolyte)"; + sprite = "TNK5A0"; + height = 56; + } + + 229 + { + title = "Tank 6 (spectre)"; + sprite = "TNK6A0"; + height = 56; + } +} + +rebels +{ + color = 4; // Red + arrow = 0; + title = "Rebels"; + width = 20; + height = 56; + sprite = "HMN1A2"; + sort = 1; + + 9 = "Rebel 1 (summoned by beacon)"; + 144 = "Rebel 2"; + 145 = "Rebel 3"; + 149 = "Rebel 4"; + 150 = "Rebel 5"; + 151 = "Rebel 6"; + + 64 + { + title = "Macil 1 Invincible (Map03,34)"; + sprite = "LEADA2"; + } + + 200 + { + title = "Macil 2 Spectral (Map10)"; + sprite = "LEADA2"; + } +} + +peasants +{ + color = 4; // Red + arrow = 0; + title = "Peasants"; + width = 20; + height = 56; + sprite = "PEASA1"; + sort = 1; + + 3004 = "Peasant Tan 1"; + 130 = "Peasant Tan 2"; + 131 = "Peasant Tan 3"; + 65 = "Peasant Red 1 (2,33 Harris/23 Tevick)"; + 132 = "Peasant Red 2 (4 Derwin/33 Harris)"; + 133 = "Peasant Red 3 (4 Worner)"; + 67 = "Peasant Rust 1 (2 Rowan)"; + 136 = "Peasant Rust 2 (2 Geoff)"; + 137 = "Peasant Rust 3 (4 Technician)"; + 66 = "Peasant Gray 1 (4 Ketrick/5 Warden/17 Medic)"; + 134 = "Peasant Gray 2 (4 Sammis/5 Judge)"; + 135 = "Peasant Gray 3 (1 Beldin)"; + 172 = "Peasant DGreen 1 (2 Irale/23 Richter)"; + 173 = "Peasant DGreen 2 (6 Weran the Rat King)"; + 174 = "Peasant DGreen 3 (4 Computer Tech)"; + 178 = "Peasant Gold 1 (11 Key Master/31 False Prg)"; + 179 = "Peasant Gold 2"; + 180 = "Peasant Gold 3"; + 175 = "Peasant BGreen 1 (7 False Programmer)"; + 176 = "Peasant BGreen 2"; + 177 = "Peasant BGreen 3"; + 181 = "Peasant Blue (2,33 Governor/8 False Prgr)"; +} + +npcs +{ + color = 4; // Red + arrow = 0; + title = "Other NPCs"; + width = 20; + height = 56; + sprite = "BEGRA1"; + sort = 1; + + 141 = "Beggar 1 (Map01 MacGuffin/32 Prisoner)"; + 155 = "Beggar 2"; + 156 = "Beggar 3"; + 157 = "Beggar 4"; + 158 = "Beggar 5"; + + 204 + { + title = "Kneeling Guy"; + sprite = "NEALA2A8"; + width = 6; + height = 17; + } + + 169 + { + title = "Zombie"; + sprite = "PEASA2"; + } + + 170 + { + title = "Zombie Spawner"; + sprite = "internal:Actor"; + } + + 201 + { + title = "Becoming Acolyte"; + sprite = "ARMRA0"; + } + + 72 + { + title = "Bar Keep 1 Gold (Map02,23,33)"; + sprite = "MRSTA0"; + } + + 73 + { + title = "Armorer 2 Bright Green (Map02,23,33/10)"; + sprite = "MRSTA0"; + } + + 74 + { + title = "Medic 3 Blue (Map02,23,33/03,10/17)"; + sprite = "MRSTA0"; + } + + 116 + { + title = "Weapon Smith 4 Tan (Map02,23,33/03,10)"; + sprite = "MRSTA0"; + } + + 199 + { + title = "Oracle (Map12)"; + sprite = "ORCLA0"; + width = 15; + } +} + +hints +{ + color = 13; // Light Magenta + arrow = 0; + title = "Explosives and Hints"; + width = 20; + sort = 1; + + 94 + { + title = "Explosive Barrel"; + sprite = "BARTA0"; + width = 10; + height = 32; + } + + 92 + { + title = "Power Crystal"; + sprite = "CRYSA0"; + height = 32; + } + + 59 + { + title = "Degnin Ore - for FFG"; + sprite = "XPRKA0"; + width = 16; + height = 16; + } + + 25 + { + title = "Force Field Guard - use ore"; + sprite = "internal:Actor"; + width = 2; + height = 1; + } +} diff --git a/Build/Configurations/Includes/Test_params.cfg b/Build/Configurations/Includes/Test_params.cfg new file mode 100644 index 0000000..a008350 --- /dev/null +++ b/Build/Configurations/Includes/Test_params.cfg @@ -0,0 +1,15 @@ +//Testing parameters for all engines +vanilla_mapxx +{ + testparameters = "-iwad \"%WP\" -skill \"%S\" -file \"%AP\" \"%F\" -warp %L1%L2 %NM"; +} + +vanilla_exmx +{ + testparameters = "-iwad \"%WP\" -skill \"%S\" -file \"%AP\" \"%F\" -warp %L1 %L2 %NM"; +} + +modern +{ + testparameters = "-iwad \"%WP\" -skill \"%S\" -file \"%AP\" \"%F\" +map %L %NM"; +} \ No newline at end of file diff --git a/Build/Configurations/Includes/UDMF_misc.cfg b/Build/Configurations/Includes/UDMF_misc.cfg new file mode 100644 index 0000000..e827d8b --- /dev/null +++ b/Build/Configurations/Includes/UDMF_misc.cfg @@ -0,0 +1,191 @@ + +// Basic UDMF stuff. +thingflags +{ + skill1 = "Skill 1"; + skill2 = "Skill 2"; + skill3 = "Skill 3"; + skill4 = "Skill 4"; + skill5 = "Skill 5"; + skill6 = "Skill 6"; + skill7 = "Skill 7"; + skill8 = "Skill 8"; + single = "Singleplayer"; + coop = "Cooperative"; + dm = "Deathmatch"; + friend = "Friendly (MBF logic)"; + strifeally = "Friendly (Strife logic)"; + ambush = "Ambush players"; + standing = "Stand still"; + dormant = "Dormant"; + translucent = "Translucent (25%)"; + invisible = "Invisible"; +} + + +// Default flags for first new thing +defaultthingflags +{ + skill1; + skill2; + skill3; + skill4; + skill5; + skill6; + skill7; + skill8; + single; + coop; + dm; +} + + +// How thing flags should be compared (for the stuck thing error check) +thingflagscompare +{ + skills + { + skill1; + skill2; + skill3; + skill4; + skill5; + skill6; + skill7; + skill8; + } + + gamemodes + { + single { requiredgroups = "skills"; } + coop { requiredgroups = "skills"; } + dm { ignoredgroups = "skills"; } + } + + classes + { + class1; + class2; + class3; + class4; + class5; + } +} + +sectorflags +{ + silent = "Silent"; + hidden = "Not shown on automap"; + nofallingdamage = "No falling damage"; + waterzone = "Sector is under water and swimmable"; + norespawn = "Players can't respawn in this sector"; + dropactors = "Actors drop with instantly moving floors"; +} + +linedefflags +{ + blocking = "Impassable"; + blockmonsters = "Block monsters"; + twosided = "Doublesided"; + dontpegtop = "Upper unpegged"; + dontpegbottom = "Lower unpegged"; + secret = "Shown as 1-sided on automap"; + blocksound = "Block sound"; + dontdraw = "Not shown on automap"; + transparent = "Transparent (25% opacity)"; + mapped = "Initially shown on automap"; +} + + +linedefactivations +{ + playercross = "When player walks over"; + playeruse = "When player presses use"; + monstercross = "When monster walks over"; + monsteruse = "When monster presses use"; + impact = "On projectile impact"; + playerpush = "When player bumps"; + monsterpush = "When monsters bumps"; + missilecross = "When projectile crosses"; + repeatspecial = "Repeatable action"; + passuse = "Pass use on"; +} + +sidedefflags +{ + clipmidtex = "Clip middle texture"; + wrapmidtex = "Wrap middle texture"; + smoothlighting = "Smooth lighting"; + nofakecontrast = "Even lighting"; + nodecals = "No decals"; + lightfog = "Use sidedef brightness on fogged walls"; +} + +//RENDER STYLES +thingrenderstyles +{ + normal = "Normal"; + translucent = "Translucent"; + soultrans = "Translucent (Lost Soul)"; + translucentstencil = "Translucent (stencil)"; + add = "Additive"; + subtract = "Subtractive"; + stencil = "Stencil"; + fuzzy = "Fuzzy"; + optfuzzy = "Fuzzy/Shadow (uses r_drawfuzz CVAR)"; + none = "None"; +} + +linedefrenderstyles +{ + translucent = "Translucent"; + add = "Additive"; +} + +sectorrenderstyles +{ + translucent = "Translucent"; + add = "Additive"; +} + +/* +MAP LUMP NAMES +Map lumps are loaded with the map as long as they are right after each other. When the editor +meets a lump which is not defined in this list it will ignore the map if not satisfied. +The order of items defines the order in which lumps will be written to WAD file on save. +To indicate the map header lump, use ~MAP + +Legenda: +required = Lump is required to exist. +blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use) +nodebuild = The nodebuilder generates this lump. +allowempty = The nodebuilder is allowed to leave this lump empty. +script = This lump is a text-based script. Specify the filename of the script configuration to use. +*/ + +udmfmaplumpnames_begin +{ + ~MAP + { + required = true; + blindcopy = true; + nodebuild = false; + } + + TEXTMAP + { + required = true; + nodebuild = true; + allowempty = true; + } +} + +udmfmaplumpnames_end +{ + ENDMAP + { + required = true; + nodebuild = false; + allowempty = true; + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/ZDoom_common.cfg b/Build/Configurations/Includes/ZDoom_common.cfg new file mode 100644 index 0000000..40d67a7 --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_common.cfg @@ -0,0 +1,464 @@ +// *********************************************************** +// * * +// * These values are the same for Doom format, Hexen format * +// * and UDMF; as well as for ZDoom, GZDoom and Zandronum * +// * * +// *********************************************************** + +common +{ + // Some common settings + include("Common.cfg"); + + // Default testing parameters + include("Test_params.cfg", "modern"); + + // Action special help (mxd) + actionspecialhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; + + // Thing class help (mxd) + thingclasshelp = "http://www.zdoom.org/wiki/Classes:%K"; + + // Default nodebuilder configurations + defaultsavecompiler = "zdbsp_normal"; + defaulttestcompiler = "zdbsp_fast"; + + // Generalized actions + // generalizedlinedefs is true for Doom format and false for + // the other two, so it's not here. + generalizedsectors = true; + + // Texture loading options + mixtexturesflats = true; + defaulttexturescale = 1.0f; + defaultflatscale = 1.0f; + scaledtextureoffsets = true; + + // Texture sources + textures + { + include("Doom_misc.cfg", "textures"); + include("ZDoom_misc.cfg", "textures"); + } + + // Patch sources + patches + { + include("Doom_misc.cfg", "patches"); + } + + // Sprite sources + sprites + { + include("Doom_misc.cfg", "sprites"); + } + + // Flat sources + flats + { + include("Doom_misc.cfg", "flats"); + } + + // Colormap sources + colormaps + { + include("Boom_misc.cfg", "colormaps"); + } + + //mxd. Voxel sources + voxels + { + include("ZDoom_misc.cfg", "voxels"); + } + + // Generalized sector types + gen_sectortypes + { + include("ZDoom_generalized.cfg", "gen_sectortypes"); + } +} + +// *********************************************************** +// * * +// * Doom map format * +// * * +// *********************************************************** + +mapformat_doom +{ + // The format interface handles the map data format + formatinterface = "DoomMapSetIO"; + + maplumpnames + { + include("Doom_misc.cfg", "doommaplumpnames"); + include("ZDoom_misc.cfg", "doommaplumpnames"); + include("ZDoom_misc.cfg", "glmaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = true; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("Doom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_doom"); + + // Generalized actions + generalizedlinedefs = true; + + // GENERALIZED LINEDEF TYPES + gen_linedeftypes + { + include("Boom_generalized.cfg", "gen_linedeftypes"); + } + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("Doom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("Doom_sectors.cfg"); + include("ZDoom_sectors.cfg", "doom"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + include("Boom_misc.cfg", "linedefflags"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Boom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Doom_linedefs.cfg"); + include("Boom_linedefs.cfg"); + include("ZDoom_linedefs.cfg", "doom"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + include("Boom_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + include("Boom_misc.cfg", "thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Doom_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Doom_misc.cfg", "thingflagsmasks"); + +} + +// *********************************************************** +// * * +// * Hexen map format * +// * * +// *********************************************************** + +mapformat_hexen +{ + // The format interface handles the map data format + formatinterface = "HexenMapSetIO"; + + //mxd. The default script compiler to use + defaultscriptcompiler = "zdoom_acs.cfg"; + + maplumpnames + { + include("Doom_misc.cfg", "hexenmaplumpnames"); + include("ZDoom_misc.cfg", "hexenmaplumpnames"); + include("ZDoom_misc.cfg", "glmaplumpnames"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = false; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_doomhexen"); + + // Default flags for first new thing + defaultthingflags + { + include("ZDoom_misc.cfg", "defaultthingflags"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_hexen"); + + // Generalized actions + generalizedlinedefs = false; + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("ZDoom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("ZDoom_sectors.cfg", "zdoom"); + } + + // LINEDEF FLAGS + linedefflags + { + include("Doom_misc.cfg", "linedefflags"); + include("Hexen_misc.cfg", "linedefflags"); + include("ZDoom_misc.cfg", "linedefflags"); + } + + // Activations filter for Hexen type activations + // This filters the activation bits from the flags + include("Hexen_misc.cfg", "linedefactivationsfilter"); + + // LINEDEF ACTIVATIONS + // Make sure these are in order from lowest value to highest value + linedefactivations + { + include("Hexen_misc.cfg", "linedefactivations"); + include("ZDoom_misc.cfg", "linedefactivations"); + } + + // Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Hexen_misc.cfg", "linedefflagstranslation"); + include("ZDoom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF TYPES + linedeftypes + { + include("Hexen_linedefs.cfg"); + include("ZDoom_linedefs.cfg", "zdoom"); + include("ZDoom_linedefs.cfg", "hexen"); + } + + // THING FLAGS + thingflags + { + include("Doom_misc.cfg", "thingflags"); + include("Hexen_misc.cfg", "thingflags"); + include("ZDoom_misc.cfg", "thingflags"); + } + + // Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + include("Hexen_misc.cfg", "thingflagstranslation"); + include("ZDoom_misc.cfg", "thingflagstranslation"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("Hexen_misc.cfg", "thingflagscompare"); + } + + // Things flags masks + include("Hexen_misc.cfg", "thingflagsmasks"); + +} + +// *********************************************************** +// * * +// * Text map format * +// * * +// *********************************************************** + +mapformat_udmf +{ + // The format interface handles the map data format + formatinterface = "UniversalMapSetIO"; + + //mxd. The default script compiler to use + defaultscriptcompiler = "zdoom_acs.cfg"; + + // Enables support for long (> 8 chars) texture names + // WARNING: this should only be enabled for UDMF game configurations! + // WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! + longtexturenames = true; + + // Default nodebuilder configurations + defaultsavecompiler = "zdbsp_udmf_normal"; + defaulttestcompiler = "zdbsp_udmf_fast"; + + engine = "zdoom"; // override that so that DB2 uses the correct namespace + + maplumpnames + { + include("UDMF_misc.cfg", "udmfmaplumpnames_begin"); + include("ZDoom_misc.cfg", "udmfmaplumpnames"); + include("UDMF_misc.cfg", "udmfmaplumpnames_end"); + } + + universalfields + { + include("ZDoom_misc.cfg", "universalfields"); + } + + // When this is set to true, sectors with the same tag will light up when a line is highlighted + linetagindicatesectors = false; + + // Special linedefs + include("ZDoom_misc.cfg", "speciallinedefs_udmf"); + + // Default flags for first new thing + defaultthingflags + { + include("ZDoom_misc.cfg", "defaultthingflags_udmf"); + } + + // Door making + include("ZDoom_misc.cfg", "doormaking_udmf"); + + // Generalized actions + generalizedlinedefs = false; + + // SECTOR FLAGS + sectorflags + { + include("UDMF_misc.cfg", "sectorflags"); + } + + // DEFAULT SECTOR BRIGHTNESS LEVELS + sectorbrightness + { + include("ZDoom_misc.cfg", "sectorbrightness"); + } + + // SECTOR TYPES + sectortypes + { + include("ZDoom_sectors.cfg", "zdoom"); + } + + // SECTOR RENSERSTYLES + sectorrenderstyles + { + include("UDMF_misc.cfg", "sectorrenderstyles"); + } + + // LINEDEF FLAGS + linedefflags + { + include("ZDoom_misc.cfg", "linedefflags_udmf"); + } + + // LINEDEF ACTIVATIONS + linedefactivations + { + include("ZDoom_misc.cfg", "linedefactivations_udmf"); + } + + //mxd. Linedef flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + linedefflagstranslation + { + include("Doom_misc.cfg", "linedefflagstranslation"); + include("Hexen_misc.cfg", "linedefflagstranslation"); + include("ZDoom_misc.cfg", "linedefflagstranslation"); + } + + // LINEDEF RENSERSTYLES + linedefrenderstyles + { + include("UDMF_misc.cfg", "linedefrenderstyles"); + } + + //SIDEDEF FLAGS + sidedefflags + { + include("UDMF_misc.cfg", "sidedefflags"); + } + + // THING FLAGS + thingflags + { + include("UDMF_misc.cfg", "thingflags"); + include("ZDoom_misc.cfg", "thingflags_udmf"); + } + + // THING RENSERSTYLES + thingrenderstyles + { + include("UDMF_misc.cfg", "thingrenderstyles"); + } + + // How to compare thing flags (for the stuck things error checker) + thingflagscompare + { + include("UDMF_misc.cfg", "thingflagscompare"); + include("ZDoom_misc.cfg", "thingflagscompare_udmf"); + } + + //mxd. Thing flags UDMF translation table + // This is needed for copy/paste and prefabs to work properly + // When the UDMF field name is prefixed with ! it is inverted + thingflagstranslation + { + include("Doom_misc.cfg", "thingflagstranslation"); + include("Hexen_misc.cfg", "thingflagstranslation"); + include("ZDoom_misc.cfg", "thingflagstranslation"); + } + + // Things flags masks + include("Hexen_misc.cfg", "thingflagsmasks"); + + // LINEDEF TYPES + linedeftypes + { + include("Hexen_linedefs.cfg"); + include("ZDoom_linedefs.cfg", "zdoom"); + include("ZDoom_linedefs.cfg", "udmf"); + } + +} \ No newline at end of file diff --git a/Build/Configurations/Includes/ZDoom_generalized.cfg b/Build/Configurations/Includes/ZDoom_generalized.cfg new file mode 100644 index 0000000..f9f67c0 --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_generalized.cfg @@ -0,0 +1,129 @@ + +// Generalized sector types +gen_sectortypes +{ + effect + { + 0 = "Normal"; + 1 = "Light Phased"; + 2 = "Light Sequence Start"; + 3 = "Light Sequence Special 1"; + 4 = "Light Sequence Special 2"; + 21 = "Light Phased"; + 22 = "Light Sequence Start"; + 23 = "Light Sequence Special 1"; + 24 = "Light Sequence Special 2"; + 26 = "Stairs Special 1"; + 27 = "Stairs Special 2"; + 65 = "Light Flicker"; + 66 = "Light Strobe Fast"; + 67 = "Light Strobe Slow"; + 68 = "Light Strobe Hurt"; + 69 = "Damage Hellslime"; + 71 = "Damage Nukage"; + 72 = "Light Glow"; + 74 = "Sector Door Close (30 sec)"; + 75 = "Damage End Level"; + 76 = "Light StrobeSlowSync"; + 77 = "Light StrobeFastSync"; + 78 = "Sector Door Raise (5 min)"; + 79 = "Low Friction"; + 80 = "Damage Super Hellslime"; + 81 = "Light Fire Flicker"; + 82 = "Damage -2 or -5% health (no protection)"; + 83 = "Damage -4 or -8% health (no protection)"; + 84 = "Scroll east + -2 or -5% health (no protection)"; + 87 = "Sector uses outside fog"; + 105 = "Delayed damage weak"; + 115 = "Instant death"; + 116 = "Delayed damage strong"; + 118 = "Carry player by tag"; + 196 = "Healing Sector"; + 197 = "Lightning Outdoor"; + 198 = "Lightning Indoor 2"; + 199 = "Lightning Indoor 1"; + 200 = "Sky 2 (MAPINFO)"; + 201 = "Scroll North (slow)"; + 202 = "Scroll North (medium)"; + 203 = "Scroll North (fast)"; + 204 = "Scroll East (slow)"; + 205 = "Scroll East (medium)"; + 206 = "Scroll East (fast)"; + 207 = "Scroll South (slow)"; + 208 = "Scroll South (medium)"; + 209 = "Scroll South (fast)"; + 210 = "Scroll West (slow)"; + 211 = "Scroll West (medium)"; + 212 = "Scroll West (fast)"; + 213 = "Scroll NorthWest (slow)"; + 214 = "Scroll NorthWest (medium)"; + 215 = "Scroll NorthWest (fast)"; + 216 = "Scroll NorthEast (slow)"; + 217 = "Scroll NorthEast (medium)"; + 218 = "Scroll NorthEast (fast)"; + 219 = "Scroll SouthEast (slow)"; + 220 = "Scroll SouthEast (medium)"; + 221 = "Scroll SouthEast (fast)"; + 222 = "Scroll SouthWest (slow)"; + 223 = "Scroll SouthWest (medium)"; + 224 = "Scroll SouthWest (fast)"; + 40 = "Wind East weak"; + 41 = "Wind East medium"; + 42 = "Wind East strong"; + 43 = "Wind North weak"; + 44 = "Wind North medium"; + 45 = "Wind North strong"; + 46 = "Wind South weak"; + 47 = "Wind South medium"; + 48 = "Wind South strong"; + 49 = "Wind West weak"; + 50 = "Wind West medium"; + 51 = "Wind West strong"; + 225 = "Carry East Slow"; + 226 = "Carry East Med.Slow"; + 227 = "Carry East Medium"; + 228 = "Carry East Med.Fast"; + 229 = "Carry East Fast"; + 230 = "Carry North Slow"; + 231 = "Carry North Med.Slow"; + 232 = "Carry North Medium"; + 233 = "Carry North Med.Fast"; + 234 = "Carry North Fast"; + 235 = "Carry South Slow"; + 236 = "Carry South Med.Slow"; + 237 = "Carry South Medium"; + 238 = "Carry South Med.Fast"; + 239 = "Carry South Fast"; + 240 = "Carry West Slow"; + 241 = "Carry West Med.Slow"; + 242 = "Carry West Medium"; + 243 = "Carry West Med.Fast"; + 244 = "Carry West Fast"; + } + + damage + { + 0 = "None"; + 256 = "Damage 5 per second"; + 512 = "Damage 10 per second"; + 768 = "Damage 20 per second"; + } + + secret + { + 0 = "No"; + 1024 = "Yes"; + } + + friction + { + 0 = "Disabled"; + 2048 = "Enabled"; + } + + pusher + { + 0 = "Disabled"; + 4096 = "Enabled"; + } +} diff --git a/Build/Configurations/Includes/ZDoom_linedefs.cfg b/Build/Configurations/Includes/ZDoom_linedefs.cfg new file mode 100644 index 0000000..0361ccd --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_linedefs.cfg @@ -0,0 +1,4244 @@ + +// NOTE: This config contains four structures for different linedefs systems: Doom, Hexen and UDMF. +// The ZDoom structure is common to Hexen and UDMF and contains the bulk of the definitions. +// The Hexen and UDMF structures contain only the little tweaks needed for these formats. + +doom +{ + script + { + title = "Script"; + + 270 + { + title = "FraggleScript Execute"; + prefix = "WR"; + } + 273 + { + title = "FraggleScript Execute one-way"; + prefix = "WR"; + } + 274 + { + title = "FraggleScript Execute"; + prefix = "W1"; + } + 275 + { + title = "FraggleScript Execute one-way"; + prefix = "W1"; + } + 276 + { + title = "FraggleScript Execute"; + prefix = "SR"; + } + 277 + { + title = "FraggleScript Execute"; + prefix = "S1"; + } + 278 + { + title = "FraggleScript Execute"; + prefix = "GR"; + } + 279 + { + title = "FraggleScript Execute"; + prefix = "G1"; + } + } + sector + { + title = "Sector"; + + 280 + { + title = "Transfer height: swimmable water (Legacy compat)"; + prefix = ""; + } + 281 + { + title = "3D floor, Solid (Legacy compat)"; + prefix = ""; + } + 289 + { + title = "3D floor, no light (Legacy compat)"; + prefix = ""; + } + 300 + { + title = "3D floor, no light, half-translucent (Legacy compat)"; + prefix = ""; + } + 301 + { + title = "3D floor, Swimmable water, half-translucent (Legacy compat)"; + prefix = ""; + } + 302 + { + title = "3D floor, Fog zone, half-translucent (Legacy compat)"; + prefix = ""; + } + 303 + { + title = "3D floor, Fog zone, translucent (Legacy compat)"; + prefix = ""; + } + 304 + { + title = "3D floor, Swimmable water, opaque (Legacy compat)"; + prefix = ""; + } + 305 + { + title = "3D floor, light zone (Legacy compat)"; + prefix = ""; + } + 306 + { + title = "3D floor, Solid, translucent (Legacy compat)"; + prefix = ""; + } + 332 + { + title = "3D floor, Vavoom-style"; + prefix = ""; + } + 400 + { + title = "3D floor, Thick, dummy texture (EDGE compat)"; + prefix = ""; + } + 401 + { + title = "3D floor, Thick, master upper texture (EDGE compat)"; + prefix = ""; + } + 402 + { + title = "3D floor, Thick, master lower texture (EDGE compat)"; + prefix = ""; + } + 403 + { + title = "3D floor, Liquid, solid (EDGE compat)"; + prefix = ""; + } + 404 + { + title = "3D floor, Liquid, 20% translucent (EDGE compat)"; + prefix = ""; + } + 405 + { + title = "3D floor, Liquid, 40% translucent (EDGE compat)"; + prefix = ""; + } + 406 + { + title = "3D floor, Liquid, 60% translucent (EDGE compat)"; + prefix = ""; + } + 407 + { + title = "3D floor, Liquid, 80% translucent (EDGE compat)"; + prefix = ""; + } + 408 + { + title = "3D floor, Liquid, invisible (EDGE compat)"; + prefix = ""; + } + 413 + { + title = "3D floor, Thin, opaque (EDGE compat)"; + prefix = ""; + } + 414 + { + title = "3D floor, Thin, 20% translucent (EDGE compat)"; + prefix = ""; + } + 415 + { + title = "3D floor, Thin, 40% translucent (EDGE compat)"; + prefix = ""; + } + 416 + { + title = "3D floor, Thin, 60% translucent (EDGE compat)"; + prefix = ""; + } + 417 + { + title = "3D floor, Thin, 80% translucent (EDGE compat)"; + prefix = ""; + } + } + + scroll + { + 422 + { + title = "Scroll Right (EDGE compat)"; + prefix = ""; + } + 423 + { + title = "Scroll Up (EDGE compat)"; + prefix = ""; + } + 424 + { + title = "Scroll Down (EDGE compat)"; + prefix = ""; + } + 425 + { + title = "Scroll Left And Up (EDGE compat)"; + prefix = ""; + } + 426 + { + title = "Scroll Left And Down (EDGE compat)"; + prefix = ""; + } + 427 + { + title = "Scroll Right And Up (EDGE compat)"; + prefix = ""; + } + 428 + { + title = "Scroll Right And Down (EDGE compat)"; + prefix = ""; + } + } + + floor + { + 434 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "S1"; + } + 435 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "SR"; + } + 436 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "W1"; + } + 437 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "WR"; + } + 438 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "G1"; + } + 439 + { + title = "Floor Raise by 2 Units (EDGE compat)"; + prefix = "GR"; + } + } + translucent + { + title = "Translucent"; + + 284 + { + title = "Translucent line (50% opaque)"; + prefix = ""; + } + 285 + { + title = "Translucent line (75% opaque)"; + prefix = ""; + } + 286 + { + title = "Translucent line (25% opaque)"; + prefix = ""; + } + 287 + { + title = "Translucent line (additive)"; + prefix = ""; + } + 288 + { + title = "Translucent line (100% opaque)"; + prefix = ""; + } + 409 + { + title = "Translucent line (20% opaque)"; + prefix = ""; + } + 410 + { + title = "Translucent line (40% opaque)"; + prefix = ""; + } + 411 + { + title = "Translucent line (60% opaque)"; + prefix = ""; + } + 412 + { + title = "Translucent line (80% opaque)"; + prefix = ""; + } + } + init + { + title = "Init"; + + 282 + { + title = "Init Color (Legacy compat)"; + prefix = ""; + } + 333 + { + title = "Init Gravity"; + prefix = ""; + } + 334 + { + title = "Init Color"; + prefix = ""; + } + 335 + { + title = "Init Damage"; + prefix = ""; + } + } + line + { + title = "Line"; + + 336 + { + title = "Line Mirror"; + prefix = ""; + } + 337 + { + title = "Line Horizon"; + prefix = ""; + } + } + + floor + { + 338 + { + title = "Floor Waggle 24"; + prefix = "W1"; + } + 339 + { + title = "Floor Waggle 12"; + prefix = "W1"; + } + } + + plane + { + title = "Plane"; + + 340 + { + title = "Plane Align Floor at front"; + prefix = ""; + } + 341 + { + title = "Plane Align Ceiling at front"; + prefix = ""; + } + 342 + { + title = "Plane Align Floor and Ceiling at front"; + prefix = ""; + } + 343 + { + title = "Plane Align Floor at back"; + prefix = ""; + } + 344 + { + title = "Plane Align Ceiling at back"; + prefix = ""; + } + 345 + { + title = "Plane Align Floor and Ceiling at back"; + prefix = ""; + } + 346 + { + title = "Plane Align Floor at back and Ceiling at front"; + prefix = ""; + } + 347 + { + title = "Plane Align Floor at front and Ceiling at back"; + prefix = ""; + } + } + + autosave + { + title = "Autosave"; + + 348 + { + title = "Autosave"; + prefix = "W1"; + } + 349 + { + title = "Autosave"; + prefix = "S1"; + } + } + + transfer + { + title = "Transfer"; + + 350 + { + title = "Transfer height fake floor"; + prefix = ""; + } + 351 + { + title = "Transfer height fake floor clip"; + prefix = ""; + } + } + + scroll + { + 352 + { + title = "Copy ceiling scroller"; + prefix = ""; + } + 353 + { + title = "Copy floor scroller"; + prefix = ""; + } + 354 + { + title = "Copy carrying floor scroller"; + prefix = ""; + } + } +} + +zdoom +{ + polyobj + { + title = "Polyobject"; + + 59 + { + title = "Polyobj Move to Spot (override)"; + id = "Polyobj_OR_MoveToSpot"; + arg0 + { + title = "Polyobj Number"; + } + arg1 + { + title = "Speed (mu. per octic)"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + arg2 + { + title = "Target MapSpot Tag"; + type = 14; + } + } + 86 + { + title = "Polyobj Move to Spot"; + id = "Polyobj_MoveToSpot"; + arg0 + { + title = "Polyobj Number"; + } + arg1 + { + title = "Speed (mu. per octic)"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + arg2 + { + title = "Target MapSpot Tag"; + type = 14; + } + } + 87 + { + title = "Polyobj Stop"; + id = "Polyobj_Stop"; + arg0 + { + title = "Polyobj Number"; + } + } + 88 + { + title = "Polyobj Move to"; + id = "Polyobj_MoveTo"; + arg0 + { + title = "Polyobj Number"; + } + arg1 + { + title = "Speed (mu. per octic)"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + arg2 + { + title = "Target X Pos"; + } + arg3 + { + title = "Target Y Pos"; + } + } + 89 + { + title = "Polyobj Move to (override)"; + id = "Polyobj_OR_MoveTo"; + arg0 + { + title = "Polyobj Number"; + } + arg1 + { + title = "Speed (mu. per octic)"; + type = 11; + enum = "stair_speeds"; + default = 16; + } + arg2 + { + title = "Target X Pos"; + } + arg3 + { + title = "Target Y Pos"; + } + } + } + + line + { + title = "Line"; + + 9 + { + title = "Line Horizon"; + id = "Line_Horizon"; + requiresactivation = false; + } + 121 // Line Identification + { + arg1 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Sound zone boundary"; + 2 = "Jump-over railing"; + 4 = "Block floating monsters"; + 8 = "Clip middle texture"; + 16 = "Wrap middle texture"; + 32 = "Walkable middle texture"; + 64 = "Switch height check"; + 128 = "Front side only"; + } + } + arg4 + { + title = "Line ID High"; + } + } + 182 + { + title = "Line Mirror"; + id = "Line_Mirror"; + requiresactivation = false; + } + } + + door + { + 14 + { + title = "Door Animated"; + id = "Door_Animated"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Animation Speed"; + type = 11; + enum = "door_speeds"; + default = 32; + } + arg2 + { + title = "Close Delay"; + type = 11; + enum = "reset_tics"; + default = 140; + } + arg3 + { + title = "Lock"; + type = 11; + enum = "keys"; + } + } + 202 + { + title = "Door Generic"; + id = "Generic_Door"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + arg2 + { + title = "Type"; + type = 11; + enum = "generic_door_types"; + } + arg3 + { + title = "Delay"; + type = 11; + enum = "generic_door_delays"; + default = 34; + } + arg4 + { + title = "Lock"; + type = 11; + enum = "keys"; + } + } + + 249 + { + title = "Door Close Wait Open"; + id = "Door_CloseWaitOpen"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "flat_speeds"; + default = 16; + } + arg2 + { + title = "Delay"; + type = 11; + enum = "generic_door_delays"; + default = 34; + } + arg3 + { + title = "Light Tag"; + type = 13; + } + } + } + + autosave + { + title = "Autosave"; + + 15 + { + title = "Autosave"; + id = "Autosave"; + } + } + + floor + { + 28 // Floor Crusher Start + { + arg3 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + 37 + { + title = "Floor Move to Value"; + id = "Floor_MoveToValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Target Height"; + } + arg3 + { + title = "Negative Height"; + type = 11; + enum = "noyes"; + } + } + + 138 + { + title = "Floor Waggle"; + id = "Floor_Waggle"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Amplitude"; + } + arg2 + { + title = "Frequency"; + } + arg3 + { + title = "Phase Offset (0-63)"; + } + arg4 + { + title = "Duration"; + type = 11; + enum = "delay_seconds"; + default = 5; + } + } + + 200 + { + title = "Floor Generic Change"; + id = "Generic_Floor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Movement Amount"; + } + arg3 + { + title = "Target"; + type = 11; + enum = "generic_floor_target"; + } + arg4 + { + title = "Options"; + type = 12; + enum + { + 0 = "No change"; + 1 = "Zero sector's special"; + 2 = "Change sector's floor texture"; + 3 = "Change sector's special"; + 4 = "Use numeric model if set, trigger model if not"; + 8 = "Raise floor if set, lower it if not"; + 16 = "Cause crushing damage"; + } + } + } + + 235 + { + title = "Transfer Floor Texture and Special form Back Side"; + id = "Floor_TransferTrigger"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 236 + { + title = "Transfer Floor Texture and Special using Numeric Change Model"; + id = "Floor_TransferNumeric"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 238 + { + title = "Floor Raise to Lowest Ceiling"; + id = "Floor_RaiseToLowestCeiling"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 239 + { + title = "Floor Raise by TxTy"; + id = "Floor_RaiseByValueTxTy"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise by"; + } + } + + 240 + { + title = "Floor Raise by Texture"; + id = "Floor_RaiseByTexture"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + + 241 + { + title = "Floor Lower to Lowest TxTy"; + id = "Floor_LowerToLowestTxTy"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + + 242 + { + title = "Floor Lower to Highest Floor"; + id = "Floor_LowerToHighest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Adjust Target Height"; + } + arg3 + { + title = "Force Adjust"; + type = 11; + enum = "noyes"; + } + } + 250 + { + title = "Floor Donut"; + id = "Floor_Donut"; + + arg0 + { + title = "Center Sector Tag"; + type = 13; + } + arg1 + { + title = "Pillar Lower Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Stairs Raise Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + } + + 251 + { + title = "Floor and Ceiling Lower and Raise"; + id = "FloorAndCeiling_LowerRaise"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Floor Lowering Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Ceiling Raising Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Emulate Boom Bug"; + type = 11; + enum + { + 0 = "No"; + 1998 = "Yes"; + } + } + } + } + + stairs + { + 204 + { + title = "Stairs Generic Build"; + id = "Generic_Stairs"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + arg2 + { + title = "Step Height"; + } + arg3 + { + title = "Options"; + type = 12; + enum + { + 1 = "Upwards"; + 2 = "Ignore Floor Texture"; + } + } + arg4 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } + + 217 + { + title = "Stairs Build up (Doom mode)"; + id = "Stairs_BuildUpDoom"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "stair_speeds"; + default = 4; + } + arg2 + { + title = "Step Height"; + } + arg3 + { + title = "Build Step Delay"; + type = 11; + enum = "delay_tics"; + default = 35; + } + arg4 + { + title = "Reset Delay"; + type = 11; + enum = "reset_tics"; + } + } + } + + + pillar + { + 94 // Pillar_BuildAndCrush + { + arg3 + { + title = "Crush Damage"; + default = 100; + } + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + } + + + forcefield + { + title = "Forcefield"; + + 33 + { + title = "Forcefield Set"; + id = "ForceField"; + requiresactivation = false; + } + 34 + { + title = "Forcefield Remove"; + id = "ClearForceField"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + } + + + ceiling + { + title = "Ceiling"; + + 38 + { + title = "Ceiling Waggle"; + id = "Ceiling_Waggle"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Amplitude (in 1/8 mu.)"; + default = 128; + } + arg2 + { + title = "Frequency"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Phase Offset (0-63)"; + } + arg4 + { + title = "Duration"; + type = 11; + enum = "delay_seconds"; + default = 5; + } + } + 42 // Ceiling Crusher Start + { + arg3 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + 43 // Ceiling Crush Once + { + arg3 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + + } + + 97 + { + title = "Ceiling Lower And Crush Dist"; + id = "Ceiling_LowerAndCrushDist"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + + } + + arg2 + { + title = "Crush Damage"; + default = 100; + } + + arg3 + { + title = "Lip"; + } + + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + + 104 + { + title = "Ceiling Crush And Raise Dist"; + id = "Ceiling_CrushAndRaiseSilentDist"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + + arg1 + { + title = "Lip"; + } + + arg2 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + + arg3 + { + title = "Crush Damage"; + default = 100; + } + + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + + 45 // Ceiling Crush Once and Open + { + arg3 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + + } + 47 + { + title = "Ceiling Move to Value"; + id = "Ceiling_MoveToValue"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Target Height"; + } + arg3 + { + title = "Negative Height"; + type = 11; + enum = "noyes"; + } + } + 169 + { + title = "Ceiling Generic Crush (Hexen mode)"; + id = "Generic_Crusher2"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lower Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Silent"; + type = 11; + enum = "noyes"; + } + arg4 + { + title = "Crush Damage"; + default = 100; + } + } + 192 + { + title = "Ceiling Lower to Highest Floor"; + id = "Ceiling_LowerToHighestFloor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 193 + { + title = "Ceiling Lower Instantly by Value * 8"; + id = "Ceiling_LowerInstant"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg2 + { + title = "Lower by (* 8)"; + } + } + 194 + { + title = "Ceiling Raise Instantly by Value * 8"; + id = "Ceiling_RaiseInstant"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg2 + { + title = "Raise by (* 8)"; + } + } + 195 + { + title = "Ceiling Crush Once and Open A"; + id = "Ceiling_CrushRaiseAndStayA"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lower Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Crush Damage"; + default = 100; + } + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + + } + 196 + { + title = "Ceiling Crush Start A"; + id = "Ceiling_CrushAndRaiseA"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lower Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Crush Damage"; + default = 100; + } + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + + } + 197 + { + title = "Ceiling Crush Start A (silent)"; + id = "Ceiling_CrushAndRaiseSilentA"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lower Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Crush Damage"; + default = 100; + } + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + + } + 198 + { + title = "Ceiling Raise by Value * 8"; + id = "Ceiling_RaiseByValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise by (* 8)"; + } + } + 199 + { + title = "Ceiling Lower by Value * 8"; + id = "Ceiling_LowerByValueTimes8"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Lower by (* 8)"; + } + } + + 201 + { + title = "Ceiling Generic Change"; + id = "Generic_Ceiling"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Movement Amount"; + } + arg3 + { + title = "Target"; + type = 11; + enum = "generic_ceiling_target"; + } + arg4 + { + title = "Options"; + type = 12; + enum + { + 0 = "No change"; + 1 = "Zero sector's special"; + 2 = "Change sector's ceiling texture"; + 3 = "Change sector's special"; + 4 = "Use numeric model if set, trigger model if not"; + 8 = "Raise ceiling if set, lower it if not"; + 16 = "Cause crushing damage"; + } + } + } + 205 + { + title = "Ceiling Generic Crush (Doom mode)"; + id = "Generic_Crusher"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lowering Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raising Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Silent"; + type = 11; + enum = "noyes"; + } + arg4 + { + title = "Crush Damage"; + default = 100; + } + } + 252 + { + title = "Ceiling Raise to Nearest Ceiling"; + id = "Ceiling_RaiseToNearest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 253 + { + title = "Ceiling Lower to Lowest Ceiling"; + id = "Ceiling_LowerToLowest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 254 + { + title = "Ceiling Lower to Floor"; + id = "Ceiling_LowerToFloor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 255 + { + title = "Ceiling Crush Once and Open A (silent)"; + id = "Ceiling_CrushRaiseAndStaySilA"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Lowering Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raising Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg3 + { + title = "Crush Damage"; + default = 100; + } + arg4 + { + title = "Crush Mode"; + type = 11; + enum = "crush_mode"; + } + } + } + + breakable + { + title = "Breakable"; + + 49 + { + title = "Breakable Glass"; + id = "GlassBreak"; + + arg0 + { + title = "Spawn Glass Shards"; + type = 11; + enum = "yesno"; + } + } + } + + transfer + { + title = "Transfer"; + + 50 + { + title = "Transfer Brightness Level"; + id = "ExtraFloor_LightOnly"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Options"; + type = 11; + enum + { + 0 = "From control sector's ceiling down to the top of another type 0 light"; + 1 = "From control sector's ceiling down to control sector's floor"; + 2 = "From control sector's ceiling down to the top of another extra light"; + } + } + } + 209 + { + title = "Transfer Heights"; + id = "Transfer_Heights"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Options"; + type = 12; + enum + { + 0 = "Boom mode"; + 1 = "Use fake ceiling/floor"; + 2 = "Draw fake floor only"; + 4 = "Inside sector only"; + 8 = "Swimmable below fake"; + 16 = "Do not draw"; + 32 = "Keep lighting"; + } + } + } + + 210 + { + title = "Transfer Floor Brightness"; + id = "Transfer_FloorLight"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 211 + { + title = "Transfer Ceiling Brightness"; + id = "Transfer_CeilingLight"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 16 + { + title = "Transfer Wall Brightness"; + id = "Transfer_WallLight"; + requiresactivation = false; + + arg0 + { + title = "Line Tag"; + type = 15; + } + arg1 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Transfer light level to front side"; + 2 = "Transfer light level to back side"; + 4 = "Ignore fake contrast"; + } + } + } + + } + + platform + { + 172 + { + title = "Platform Raise to Nearest Wait Lower"; + id = "Plat_UpNearestWaitDownStay"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + } + 203 + { + title = "Platform Generic Change"; + id = "Generic_Lift"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + arg3 + { + title = "Type"; + type = 11; + enum = "generic_lift_types"; + } + arg4 + { + title = "Movement Amount"; + } + } + 206 + { + title = "Platform Lower Wait Raise (lip)"; + id = "Plat_DownWaitUpStayLip"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + arg3 + { + title = "Lip Amount"; + } + arg4 + { + title = "Sound Type"; + type = 11; + enum = "plat_sound"; + } + } + 207 + { + title = "Platform Perpetual Move (lip)"; + id = "Plat_PerpetualRaiseLip"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Reverse Delay (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + arg3 + { + title = "Lip Amount"; + } + } + 228 + { + title = "Platform Raise Tx0"; + id = "Plat_RaiseAndStayTx0"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Lockout Mode"; + type = 11; + enum + { + 0 = "Lockout in Heretic only"; + 1 = "Don't lockout"; + 2 = "Lockout in all games"; + } + } + } + 230 + { + title = "Platform Raise by Value Tx (* 8)"; + id = "Plat_UpByValueStayTx"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + arg2 + { + title = "Raise by (* 8)"; + } + } + 231 + { + title = "Platform Toggle Ceiling"; + id = "Plat_ToggleCeiling"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + } + + teleport + { + title = "Teleport"; + + 39 + { + title = "Teleport to Pain State (silent)"; + id = "Teleport_ZombieChanger"; + + arg0 + { + title = "Target MapSpot Tag"; + type = 14; + } + arg1 + { + title = "Target Sector Tag"; + type = 13; + } + } + 70 // Teleport + { + arg2 + { + title = "Source Fog"; + type = 11; + enum = "yesno"; + } + } + 71 // Teleport_NoFog + { + arg3 + { + title = "Keep rel. Height"; + type = 11; + enum = "noyes"; + } + } + 74 // Teleport_NewMap + { + arg2 + { + title = "Keep Orientation"; + type = 11; + enum = "noyes"; + } + } + 76 + { + title = "Teleport Other"; + id = "TeleportOther"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Target MapSpot Tag"; + type = 14; + } + arg2 + { + title = "Fog"; + type = 11; + enum = "noyes"; + } + } + 77 + { + title = "Teleport Group"; + id = "TeleportGroup"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Source Teleport Dest. Tag"; + type = 14; + } + arg2 + { + title = "Target Teleport Dest. Tag"; + type = 14; + } + arg3 + { + title = "Move Source"; + type = 11; + enum = "noyes"; + } + arg4 + { + title = "Fog"; + type = 11; + enum = "noyes"; + } + } + 78 + { + title = "Teleport in Sector"; + id = "TeleportInSector"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Source MapSpot Tag"; + type = 14; + } + arg2 + { + title = "Target MapSpot Tag"; + type = 14; + } + arg3 + { + title = "Fog"; + type = 11; + enum = "noyes"; + } + arg4 + { + title = "Group Thing Tag"; + type = 14; + } + } + 154 + { + title = "Teleport (no Stop)"; + id = "Teleport_NoStop"; + + arg0 + { + title = "Target MapSpot Tag"; + type = 14; + } + arg1 + { + title = "Target Sector Tag"; + type = 13; + } + arg2 + { + title = "Fog"; + type = 11; + enum = "yesno"; + } + } + 215 + { + title = "Teleport to Line"; + id = "Teleport_Line"; + + arg1 + { + title = "Target Line Tag"; + type = 15; + } + arg2 + { + title = "Reverse Angle"; + type = 11; + enum = "noyes"; + } + } + } + + thing + { + 17 + { + title = "Thing Raise"; + id = "Thing_Raise"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + } + 18 + { + title = "Start Conversation"; + id = "StartConversation"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Face Talker"; + type = 11; + enum = "noyes"; + default = 1; + } + } + 19 + { + title = "Thing Stop"; + id = "Thing_Stop"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + } + 72 // ThrustThing + { + arg2 + { + title = "No Limit"; + type = 11; + enum = "noyes"; + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + } + 73 // DamageThing + { + arg1 + { + title = "Death"; + type = 11; + enum = "death_types"; + } + } + 79 + { + title = "Set Conversation"; + id = "Thing_SetConversation"; + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Conversation ID"; + } + } + 119 + { + title = "Damage Thing by Tag"; + id = "Thing_Damage"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Damage"; + default = 100; + } + arg2 + { + title = "Death"; + type = 11; + enum = "death_types"; + } + } + 125 + { + title = "Move Thing"; + id = "Thing_Move"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Target Thing Tag"; + type = 14; + } + arg2 + { + title = "Fog"; + type = 11; + enum = "yesno"; + } + } + 127 + { + title = "Thing Set Special"; + id = "Thing_SetSpecial"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Special"; + type = 4; + } + arg2 + { + title = "Arg 1"; + } + arg3 + { + title = "Arg 2"; + } + arg4 + { + title = "Arg 3"; + } + } + 128 + { + title = "Thing Thrust Z"; + id = "ThrustThingZ"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Force"; + } + arg2 + { + title = "Down/Up"; + type = 11; + enum = "updown"; + } + arg3 + { + title = "Set/Add"; + type = 11; + enum = "setadd"; + } + } + 135 // Thing_Spawn + { + arg3 + { + title = "New Thing Tag"; + type = 14; + } + } + 137 // Thing_SpawnNoFog + { + arg3 + { + title = "New Thing Tag"; + type = 14; + } + } + 139 + { + title = "Spawn Thing Facing"; + id = "Thing_SpawnFacing"; + + arg0 + { + title = "Mapspot Tag"; + type = 14; + } + arg1 + { + title = "Spawn Thing"; + type = 11; + enum = "spawnthing"; + } + arg2 + { + title = "Fog"; + type = 11; + enum = "yesno"; + } + arg3 + { + title = "New Thing Tag"; + type = 14; + } + } + 175 + { + title = "Spawn Projectile (Intercept)"; + id = "Thing_ProjectileIntercept"; + + arg0 + { + title = "Mapspot Tag"; + type = 14; + } + arg1 + { + title = "Projectile Type"; + type = 11; + enum = "spawn_projectile"; + } + arg2 + { + title = "Speed"; + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + arg4 + { + title = "New Thing Tag"; + type = 14; + } + } + 176 + { + title = "Change Thing Tag"; + id = "Thing_ChangeTID"; + + arg0 + { + title = "Old Thing Tag"; + type = 14; + } + arg1 + { + title = "New Thing Tag"; + type = 14; + } + } + 177 + { + title = "Thing Hate"; + id = "Thing_Hate"; + + arg0 + { + title = "Hater Tag"; + type = 14; + } + arg1 + { + title = "Hatee Tag"; + type = 14; + } + arg2 + { + title = "Hate"; + type = 11; + enum + { + 0 = "Target only"; + 1 = "Target and Player"; + 2 = "Forced Target and Player"; + 3 = "Hunt Target and Player"; + 4 = "Forced Hunt Target and Player"; + 5 = "Target, Ignore Player"; + 6 = "Forced Target, Ignore Player"; + } + } + } + 178 + { + title = "Spawn Aimed Projectile"; + id = "Thing_ProjectileAimed"; + + arg0 + { + title = "Mapspot Tag"; + type = 14; + } + arg1 + { + title = "Projectile Type"; + type = 11; + enum = "spawn_projectile"; + } + arg2 + { + title = "Speed"; + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + arg4 + { + title = "New Thing Tag"; + type = 14; + } + } + 180 + { + title = "Set Thing Translation"; + id = "Thing_SetTranslation"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Translation Index"; + } + } + 229 + { + title = "Thing Set Goal"; + id = "Thing_SetGoal"; + + arg0 + { + title = "Monster Thing Tag"; + type = 14; + } + arg1 + { + title = "Target Thing Tag"; + type = 14; + } + arg2 + { + title = "Delay"; + type = 11; + enum + { + 0 = "No Delay"; + 1 = "1 Second"; + 2 = "2 Seconds"; + 3 = "3 Seconds"; + 5 = "5 Seconds"; + 10 = "10 Seconds"; + 15 = "15 Seconds"; + 20 = "20 Seconds"; + 25 = "25 Seconds"; + 30 = "30 Seconds"; + 60 = "1 Minute"; + } + } + arg3 + { + title = "Don't Chase Target"; + type = 11; + enum = "falsetrue"; + } + } + 248 + { + title = "Heal Thing"; + id = "HealThing"; + + arg0 + { + title = "Heal Amount"; + } + } + + } + + script + { + title = "Script"; + + 83 // Script Locked Execute + { + arg4 // Key Number + { + type = 11; + enum = "keys"; + } + } + 84 + { + title = "Script Execute with Result"; + id = "ACS_ExecuteWithResult"; + + arg0 + { + title = "Script Number"; + } + arg1 + { + title = "Script Argument 1"; + } + arg2 + { + title = "Script Argument 2"; + } + arg3 + { + title = "Script Argument 3"; + } + arg4 + { + title = "Script Argument 4"; + } + } + 85 + { + title = "Script Locked Execute (Door message)"; + id = "ACS_LockedExecuteDoor"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + + arg2 + { + title = "Script Argument 1"; + } + + arg3 + { + title = "Script Argument 2"; + } + + arg4 + { + title = "Key Number"; + type = 11; + enum = "keys"; + } + } + 158 + { + title = "FraggleScript Execute"; + id = "FS_Execute"; + + arg0 + { + title = "Script Number"; + } + arg1 + { + title = "Side"; + type = 11; + enum + { + 0 = "Both"; + 1 = "Front"; + } + } + arg2 + { + title = "Key"; + type = 11; + enum = "keys"; + } + arg3 + { + title = "Message"; + type = 11; + enum + { + 0 = "Open door"; + 1 = "Activate object"; + } + } + } + 226 + { + title = "Script Execute Always"; + id = "ACS_ExecuteAlways"; + + arg0 + { + title = "Script Number"; + } + + arg1 + { + title = "Map Number"; + } + + arg2 + { + title = "Script Argument 1"; + } + + arg3 + { + title = "Script Argument 2"; + } + + arg4 + { + title = "Script Argument 3"; + } + } + } + + end + { + 243 + { + title = "End Normal"; + id = "Exit_Normal"; + + arg0 + { + title = "Position"; + } + } + 244 + { + title = "End Secret"; + id = "Exit_Secret"; + + arg0 + { + title = "Position"; + } + } + } + + scroll + { + title = "Scroll"; + + 52 + { + title = "Scroll Wall"; + id = "Scroll_Wall"; + requiresactivation = false; + + arg0 + { + title = "Line Tag"; + type = 15; + } + arg1 + { + title = "Horizontal speed"; + } + arg2 + { + title = "Vertical speed"; + } + arg3 + { + title = "Side"; + type = 11; + enum = "frontback"; + } + arg4 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Scroll upper"; + 2 = "Scroll middle"; + 4 = "Scroll lower"; + } + } + } + + 100 //Scroll_Texture_Left + { + arg1 + { + title = "Sidedef Part"; + type = 12; + enum = "sidedef_part"; + } + } + + 101 //Scroll_Texture_Right + { + arg1 + { + title = "Sidedef Part"; + type = 12; + enum = "sidedef_part"; + } + } + + 102 //Scroll_Texture_Up + { + arg1 + { + title = "Sidedef Part"; + type = 12; + enum = "sidedef_part"; + } + } + + 103 //Scroll_Texture_Down + { + arg1 + { + title = "Sidedef Part"; + type = 12; + enum = "sidedef_part"; + } + } + + 221 + { + title = "Scroll Texture Both"; + id = "Scroll_Texture_Both"; + requiresactivation = false; + + arg0 + { + title = "Line Tag"; + type = 15; + } + arg1 + { + title = "Left Speed"; + type = 11; + enum = "scroll_speeds"; + } + arg2 + { + title = "Right Speed"; + type = 11; + enum = "scroll_speeds"; + } + arg3 + { + title = "Down Speed"; + type = 11; + enum = "scroll_speeds"; + } + arg4 + { + title = "Up Speed"; + type = 11; + enum = "scroll_speeds"; + } + } + 222 + { + title = "Scroll Texture Model"; + id = "Scroll_Texture_Model"; + requiresactivation = false; + + arg1 + { + title = "Options"; + type = 12; + enum + { + 1 = "Displacement"; + 2 = "Accelerative"; + } + } + } + + 223 + { + title = "Scroll Floor"; + id = "Scroll_Floor"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Options"; + type = 12; + enum + { + 1 = "Displacement"; + 2 = "Accelerative"; + 4 = "Scroll by linedef dx/dy"; + } + } + arg2 + { + title = "Scroll"; + type = 11; + enum + { + 1 = "Texture only"; + 2 = "Things only"; + 4 = "Both"; + } + } + arg3 + { + title = "Horizontal Speed"; + type = 11; + enum = "scroll_speeds"; + } + arg4 + { + title = "Vertical Speed"; + type = 11; + enum = "scroll_speeds"; + } + } + 224 + { + title = "Scroll Ceiling"; + id = "Scroll_Ceiling"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Options"; + type = 12; + enum + { + 1 = "Displacement"; + 2 = "Accelerative"; + 4 = "Scroll by linedef dx/dy"; + } + } + arg3 + { + title = "Horizontal Speed"; + type = 11; + enum = "scroll_speeds"; + } + arg4 + { + title = "Vertical Speed"; + type = 11; + enum = "scroll_speeds"; + } + } + 225 + { + title = "Scroll Texture by Offsets"; + id = "Scroll_Texture_Offsets"; + requiresactivation = false; + + arg0 + { + title = "Sidedef Part"; + type = 12; + enum = "sidedef_part"; + } + } + } + + + light + { + 109 + { + title = "Lightning Control"; + id = "Light_ForceLightning"; + + arg0 + { + title = "Mode"; + type = 11; + enum + { + 0 = "Enable Lightning Mode"; + 1 = "Flash Once"; + 2 = "Terminate Lightning Mode"; + } + } + } + 117 + { + title = "Light Stop"; + id = "Light_Stop"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 232 + { + title = "Light Strobe (Doom mode)"; + id = "Light_StrobeDoom"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Brightest Duration (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + arg2 + { + title = "Darkest Duration (tics)"; + type = 11; + enum = "delay_tics"; + default = 35; + } + } + 233 + { + title = "Light Change to Darkest Neightbour"; + id = "Light_MinNeighbor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + 234 + { + title = "Light Change to Brightest Neightbour"; + id = "Light_MaxNeighbor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + } + + sector + { + title = "Sector"; + + 48 + { + title = "Sector Attach 3D Midtex"; + id = "Sector_Attach3dMidtex"; + requiresactivation = false; + + arg0 + { + title = "Line Tag"; + type = 15; + } + arg1 + { + title = "Sector Tag"; + type = 13; + } + arg2 + { + title = "Floor / Ceiling"; + type = 11; + enum = "floorceiling"; + } + } + 51 + { + title = "Sector Set Link"; + id = "Sector_SetLink"; + + arg0 + { + title = "Control Sector Tag"; + type = 13; + } + arg1 + { + title = "Target Sector Tag"; + type = 13; + } + arg2 + { + title = "Floor / Ceiling"; + type = 11; + enum = "floorceiling"; + } + arg3 + { + title = "Move Type"; + type = 12; + enum + { + 0 = "Unlink target sector(s) from the control sector"; + 1 = "Link target sector's floor to the specified surface of the control sector"; + 2 = "Link target sector's ceiling to the specified surface of the control sector"; + 4 = "Target floor movement is the opposite direction as the control sector's surface (requires bit 1)"; + 8 = "Target ceiling movement is the opposite direction as the control sector's surface (requires bit 2)"; + } + } + } + + 98 + { + title = "Sector Set Translucent"; + id = "Sector_SetTranslucent"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Floor / Ceiling"; + type = 11; + enum = "floorceiling"; + } + arg2 + { + title = "Opacity"; + } + arg3 + { + title = "Translucency Type"; + type = 11; + enum + { + 0 = "Normal"; + 1 = "Additive"; + } + } + } + + 54 + { + title = "Sector Change Flags"; + id = "Sector_ChangeFlags"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Set Flags"; + type = 12; + enum = "sector_flags"; + } + arg2 + { + title = "Clear Flags"; + type = 12; + enum = "sector_flags"; + } + } + 57 + { + title = "Sector Set Portal"; + id = "Sector_SetPortal"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Portal Type"; + type = 11; + enum + { + 0 = "Link to portal with same tag"; + 1 = "Copy portal from second tag"; + 2 = "Eternity-style skybox portal"; + } + } + arg2 + { + title = "Floor / Ceiling"; + type = 11; + enum = "floorceilingboth"; + } + arg3 + { + title = "Misc"; + } + arg4 + { + title = "Opacity"; + } + } + 58 + { + title = "Sector Copy Scroller"; + id = "Sector_CopyScroller"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Scroller Type"; + type = 12; + enum + { + 1 = "Copy ceiling scroller"; + 2 = "Copy floor scroller"; + 4 = "Copy carrying effect"; + } + } + } + 160 + { + title = "Sector 3D Floor (OpenGL only)"; + id = "Sector_Set3dFloor"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Type"; + type = 12; + enum + { + 0 = "Vavoom-Style"; + 1 = "Solid"; + 2 = "Swimmable"; + 3 = "Non-Solid"; + 4 = "Render-Inside"; + 16 = "Invert Visibility Rules"; + 32 = "Invert Shootability Rules"; + } + default = 1; + } + arg2 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Disable light effects"; + 2 = "Restrict light inside"; + 4 = "Fog effect"; + 8 = "Ignore bottom height"; + 16 = "Use upper texture"; + 32 = "Use lower texture"; + 64 = "Additive transluency"; + } + } + arg3 + { + title = "Alpha"; + default = 255; + } + } + 161 + { + title = "Sector Set Contents (Vavoom compatibility)"; + id = "Sector_SetContents"; + + arg0 + { + title = "Type"; + type = 11; + enum + { + 0 = "Empty"; + 1 = "Water"; + 2 = "Lava"; + 3 = "Nukage"; + 4 = "Slime"; + 5 = "Hellslime"; + 6 = "Blood"; + 7 = "Sludge"; + 8 = "Hazard"; + 9 = "Boom-style water"; + } + } + arg1 + { + title = "Translucency Percent"; + } + arg2 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Don't block movement"; + 2 = "Don't block sight"; + 4 = "Don't block shooting"; + 8 = "Additive translucency"; + } + } + } + 185 + { + title = "Sector Rotate Flat"; + id = "Sector_SetRotation"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Floor Angle"; + type = 8; + } + arg2 + { + title = "Ceiling Angle"; + type = 8; + } + } + 186 + { + title = "Sector Ceiling Panning"; + id = "Sector_SetCeilingPanning"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Horizontal Integral"; + } + arg2 + { + title = "Horizontal Fractional"; + } + arg3 + { + title = "Vertical Integral"; + } + arg4 + { + title = "Vertical Fractional"; + } + } + 187 + { + title = "Sector Floor Panning"; + id = "Sector_SetFloorPanning"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Horizontal Integral"; + } + arg2 + { + title = "Horizontal Fractional"; + } + arg3 + { + title = "Vertical Integral"; + } + arg4 + { + title = "Vertical Fractional"; + } + } + 188 + { + title = "Sector Ceiling Scale"; + id = "Sector_SetCeilingScale"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Horizontal Integral"; + } + arg2 + { + title = "Horizontal Fractional"; + } + arg3 + { + title = "Vertical Integral"; + } + arg4 + { + title = "Vertical Fractional"; + } + } + 189 + { + title = "Sector Floor Scale"; + id = "Sector_SetFloorScale"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Horizontal Integral"; + } + arg2 + { + title = "Horizontal Fractional"; + } + arg3 + { + title = "Vertical Integral"; + } + arg4 + { + title = "Vertical Fractional"; + } + } + 212 + { + title = "Sector Color"; + id = "Sector_SetColor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Red"; + } + arg2 + { + title = "Green"; + } + arg3 + { + title = "Blue"; + } + arg4 + { + title = "Desaturation"; + } + } + 213 + { + title = "Sector Fade"; + id = "Sector_SetFade"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Red"; + } + arg2 + { + title = "Green"; + } + arg3 + { + title = "Blue"; + } + } + 214 + { + title = "Sector Damage"; + id = "Sector_SetDamage"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Damage Amount"; + default = 15; + } + arg2 + { + title = "Death"; + type = 11; + enum = "death_types"; + } + } + 216 + { + title = "Sector Gravity"; + id = "Sector_SetGravity"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Gravity Integral"; + } + arg2 + { + title = "Gravity Fractional"; + } + } + + 218 + { + title = "Sector Wind"; + id = "Sector_SetWind"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Wind Strength"; + } + arg2 + { + title = "Wind Angle"; + type = 22; + } + arg3 + { + title = "Use Line Vector"; + type = 11; + enum = "noyes"; + } + } + 219 + { + title = "Sector Friction"; + id = "Sector_SetFriction"; + requiresactivation = false; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Friction Amount"; + type = 11; + enum + { + 0 = "Use Line Length"; + 1 = "Very Sludgy"; + 50 = "Sludgy"; + 100 = "Normal"; + 200 = "Icy"; + 255 = "Very Icy"; + } + } + } + + 220 + { + title = "Sector Current"; + id = "Sector_SetCurrent"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Current Strength"; + } + arg2 + { + title = "Current Angle"; + type = 22; + } + arg3 + { + title = "Use Line Vector"; + type = 11; + enum = "noyes"; + } + } + } + + alert + { + title = "Alert"; + + 173 + { + title = "Alert monsters"; + id = "NoiseAlert"; + + arg0 + { + title = "Target Tag"; + type = 14; + } + arg1 + { + title = "Emitter Tag"; + type = 14; + } + } + } + + communicator + { + title = "Communicator"; + + 174 + { + title = "Communicator Message"; + id = "SendToCommunicator"; + + arg0 + { + title = "Message ID"; + } + arg1 + { + title = "Front Side Only"; + type = 11; + enum = "noyes"; + } + arg2 + { + title = "Print Activator Name"; + type = 11; + enum = "noyes"; + } + arg3 + { + title = "Add to Log"; + type = 11; + enum = "yesno"; + } + } + } + + change + { + title = "Change"; + + 157 + { + title = "Set Global Fog Parameter (GZDoom only)"; + id = "SetGlobalFogParameter"; + + arg0 + { + title = "Property"; + type = 11; + enum + { + 0 = "Density"; + 1 = "Outside density"; + 2 = "Skyfog"; + } + } + arg1 + { + title = "Value"; + } + } + 179 + { + title = "Change Skill"; + id = "ChangeSkill"; + + arg0 + { + title = "New Skill Level"; + type = 11; + enum + { + 0 = "Very Easy"; + 1 = "Easy"; + 2 = "Normal"; + 3 = "Hard"; + 4 = "Nightmare!"; + } + } + } + } + + plane + { + title = "Plane"; + + 118 + { + title = "Plane Copy (slope)"; + id = "Plane_Copy"; + requiresactivation = false; + + arg0 + { + title = "Front Floor Tag"; + type = 13; + } + arg1 + { + title = "Front Ceiling Tag"; + type = 13; + } + arg2 + { + title = "Back Floor Tag"; + type = 13; + } + arg3 + { + title = "Back Ceiling Tag"; + type = 13; + } + arg4 + { + title = "Share Slope"; + type = 12; + enum + { + 1 = "Front floor to back sector"; + 2 = "Back floor to front sector"; + 4 = "Front ceiling to back sector"; + 8 = "Back ceiling to front sector"; + } + } + } + 159 + { + title = "Plane Reflection (OpenGL only)"; + id = "Sector_SetPlaneReflection"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Floor Reflectiveness"; + } + arg2 + { + title = "Ceiling Reflectiveness"; + } + } + 181 + { + title = "Plane Align (slope)"; + id = "Plane_Align"; + requiresactivation = false; + + arg0 + { + title = "Align Floor"; + type = 11; + enum + { + 0 = "None"; + 1 = "Front"; + 2 = "Back"; + } + } + arg1 + { + title = "Align Ceiling"; + type = 11; + enum + { + 0 = "None"; + 1 = "Front"; + 2 = "Back"; + } + } + } + } + + static + { + title = "Static"; + + 190 + { + title = "Static Init"; + id = "Static_Init"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Property"; + type = 11; + enum + { + 0 = "Set the gravity to the length of the linedef"; + 1 = "Set the light or fog color in a sector"; + 2 = "Set damage to the length of the linedef"; + 3 = "Define a sector link"; + 255 = "Use the line's upper texture as the sky in any tagged sectors"; + } + } + arg2 + { + title = "Flip Sky / Ceiling"; + } + arg3 + { + title = "Movement Type"; + } + } + } + + player + { + title = "Player"; + + 191 + { + title = "Set Player Property"; + id = "SetPlayerProperty"; + + arg0 + { + title = "Target"; + type = 11; + enum + { + 0 = "Activator"; + 1 = "Everyone"; + } + } + arg1 + { + title = "Enable"; + type = 11; + enum = "noyes"; + } + arg2 + { + title = "Property"; + type = 11; + enum + { + 0 = "PROP_FROZEN"; + 1 = "PROP_NOTARGET"; + 2 = "PROP_INSTANTWEAPONSWITCH"; + 3 = "PROP_FLY"; + 4 = "PROP_TOTALLYFROZEN"; + 16 = "PROP_BUDDHA"; + } + } + } + } + + translucent + { + title = "Translucent"; + + 208 + { + title = "Translucent Line"; + id = "TranslucentLine"; + requiresactivation = false; + + arg1 + { + title = "Translucency Amount"; + } + arg2 + { + title = "Additive"; + type = 11; + enum = "noyes"; + } + } + } + + point + { + title = "Point"; + + 227 + { + title = "Point Pusher/Puller Set Force"; + id = "PointPush_SetForce"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Thing Tag"; + type = 14; + } + arg2 + { + title = "Strength"; + } + arg3 + { + title = "Use Line Vector"; + type = 11; + enum = "noyes"; + } + } + } + + camera + { + title = "Camera"; + + 237 + { + title = "Change Camera"; + id = "ChangeCamera"; + + arg0 + { + title = "Thing Tag"; + type = 14; + } + arg1 + { + title = "Target"; + type = 11; + enum + { + 0 = "Activator"; + 1 = "Everyone"; + } + } + arg2 + { + title = "Movement Cancels"; + type = 11; + enum = "noyes"; + } + } + } + + elevator + { + title = "Elevator"; + + 245 + { + title = "Elevator Raise to Nearest Floor"; + id = "Elevator_RaiseToNearest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 246 + { + title = "Elevator Move to Activated Floor"; + id = "Elevator_MoveToFloor"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + 247 + { + title = "Elevator Lower to Nearest Floor"; + id = "Elevator_LowerToNearest"; + + arg0 + { + title = "Sector Tag"; + type = 13; + } + arg1 + { + title = "Movement Speed"; + type = 11; + enum = "plat_speeds"; + default = 16; + } + } + } +} + +hexen +{ + polyobj + { + 1 // Polyobj Start Line + { + arg3 + { + title = "Set Line ID"; + type = 0; + } + } + 5 // Polyobj Explicit Line + { + arg4 + { + title = "Set Line ID"; + type = 0; + } + } + } + plane + { + 181 //Plane_Align + { + arg2 + { + title = "Set Line ID"; + type = 0; + } + } + } + scroll + { + 52 //Scroll_Wall + { + arg0 + { + title = "Set Line ID"; + type = 0; + } + } + 221 //Scroll_Texture_Both + { + arg0 + { + title = "Line ID"; + type = 0; + } + } + 222 //Scroll_Texture_Model + { + arg0 + { + title = "Set Line ID"; + type = 0; + } + } + } + sector + { + 48 //Sector_Attach3dMidtex + { + arg0 + { + title = "Line ID"; + type = 0; + } + } + 160 //Sector_Set3dFloor + { + arg1 + { + title = "Type"; + type = 12; + enum + { + 0 = "Vavoom-Style"; + 1 = "Solid"; + 2 = "Swimmable"; + 3 = "Non-Solid"; + 4 = "Render-Inside"; + 8 = "Use Arg5 as Line ID"; + 16 = "Invert Visibility Rules"; + 32 = "Invert Shootability Rules"; + } + default = 1; + } + arg4 + { + title = "Line ID / Hi-Tag"; + } + } + } + teleport + { + 215 //Teleport_Line + { + arg0 + { + title = "Line ID"; + type = 0; + } + arg1 + { + title = "Target Line ID"; + type = 0; + } + } + } + transfer + { + 16 //Transfer_WallLight + { + arg0 + { + title = "Line ID"; + type = 0; + } + } + } + translucent + { + 208 //TranslucentLine + { + arg0 + { + title = "Set Line ID"; + type = 0; + } + arg3 + { + title = "Flags"; + type = 12; + enum + { + 1 = "Sound boundary"; + 2 = "Railing"; + 4 = "Block floating monsters"; + 8 = "Clip mid texture"; + 16 = "Wrap mid texture"; + 32 = "3D mid texture"; + 64 = "Check switch height"; + } + } + } + } +} + +udmf +{ + // No Line_SetIdentification in UDMF! + line + { + 121 = NULL; + } +} diff --git a/Build/Configurations/Includes/ZDoom_misc.cfg b/Build/Configurations/Includes/ZDoom_misc.cfg new file mode 100644 index 0000000..9b1b52c --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_misc.cfg @@ -0,0 +1,1909 @@ + +linedefflags +{ + 16384 = "Block Players"; +} + + +// LINEDEF ACTIVATIONS +// Make sure these are in order from lowest value to highest value +linedefactivations +{ + 7168 = "Projectile hits or crosses"; +} + + +// Linedef flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +linedefflagstranslation +{ + 6144 = "playeruse,passuse"; //mxd + 7168 = "impact,missilecross"; //mxd + 16384 = "blockplayers"; +} + + +linedefflags_udmf +{ + twosided = "Doublesided"; + dontpegtop = "Upper unpegged"; + dontpegbottom = "Lower unpegged"; + blocking = "Impassable"; + blockeverything = "Block everything"; + blockplayers = "Block players"; + blockmonsters = "Block monsters"; + blockfloaters = "Block floating monsters"; + blocksound = "Block sound"; + blockprojectiles = "Block projectiles"; + blockhitscan = "Block hitscans"; + blockuse = "Block use actions"; + blocksight = "Block monster line of sight"; + jumpover = "Jump-over railing"; + clipmidtex = "Clip middle texture"; + wrapmidtex = "Wrap middle texture"; + midtex3d = "Walkable middle texture"; + midtex3dimpassible = "Projectile shoot-through middle texture"; + mapped = "Initially shown on map"; + secret = "Shown as 1-sided on map"; + dontdraw = "Not shown on map"; + transparent = "Transparent (25% opacity)"; + translucent = "Translucent (obsolete)"; + monsteractivate = "Monster activates"; + zoneboundary = "Sound zone boundary"; +} + + +linedefactivations_udmf +{ + repeatspecial = "Repeatable action"; + playeruse = "When player presses use"; + playercross = "When player walks over"; + playerpush = "When player bumps"; + monsteruse = "When monster presses use"; + monstercross = "When monster walks over"; + monsterpush = "When monsters bumps"; + anycross = "Any crossing non-missile activates"; + missilecross = "When projectile crosses"; + impact = "On projectile impact"; + checkswitchrange = "Switch height check"; + passuse = "Pass use on"; + firstsideonly = "Front side only"; + playeruseback = "Player can use from back side"; +} + + +thingflags +{ + 2048 = "Translucent (25%)"; + 4096 = "Invisible"; + 8192 = "Friendly (Strife logic)"; + 16384 = "Stand still"; +} + + +thingflags_udmf +{ + countsecret = "Count as secret"; + class1 = "Class 1"; + class2 = "Class 2"; + class3 = "Class 3"; + class4 = "Class 4"; + class5 = "Class 5"; +} + + +// Thing flags UDMF translation table +// This is needed for copy/paste and prefabs to work properly +// When the UDMF field name is prefixed with ! it is inverted +thingflagstranslation +{ + 256 = "single"; + 512 = "coop"; + 1024 = "dm"; + 2048 = "translucent"; + 4096 = "invisible"; + 8192 = "friend"; + 16384 = "standing"; +} + + +defaultthingflags +{ + 1; + 2; + 4; + 32; + 64; + 128; + 256; + 512; + 1024; +} + + +defaultthingflags_udmf +{ + skill1; + skill2; + skill3; + skill4; + skill5; + skill6; + skill7; + skill8; + single; + coop; + dm; + class1; + class2; + class3; + class4; + class5; +} + +// How thing flags should be compared (for the stuck thing error check) +thingflagscompare_udmf +{ + skills + { + skill9; + skill10; + skill11; + skill12; + skill13; + skill14; + skill15; + skill16; + } + + classes + { + class4; + class5; + class6; + class7; + class8; + class9; + class10; + class11; + class12; + class13; + class14; + class15; + class16; + } +} + +// Default sector brightness levels +sectorbrightness +{ + 256; 248; 240; 232; 224; 216; 208; 200; 192; 184; 176; 168; 160; 152; 144; 136; + 128; 120; 112; 104; 96; 88; 80; 72; 64; 56; 48; 40; 32; 24; 16; 8; 0; +} + + +/* +TEXTURES AND FLAT SOURCES +This tells Doom Builder where to find the information for textures +and flats in the IWAD file, Addition WAD file and Map WAD file. + +Start and end lumps must be given in a structure (of which the +key name doesnt matter) and any textures or flats in between them +are loaded in either the textures category or flats category. + +For textures: PNAMES, TEXTURE1 and TEXTURE2 are loaded by default. +*/ +textures +{ + zdoom1 + { + start = "TX_START"; + end = "TX_END"; + } +} + +voxels //mxd +{ + zdoom1 + { + start = "VX_START"; + end = "VX_END"; + } +} + +/* +ADDITIONAL UNIVERSAL DOOM MAP FORMAT FIELD DEFINITIONS +Only add fields here that Doom Builder does not edit with its own user-interface! +The "default" field must match the UDMF specifications! + +Field data types: +0 = integer * +1 = float +2 = string +3 = bool +4 = linedef action (integer) * +5 = sector effect (integer) * +6 = texture (string) +7 = flat (string) +8 = angle in degrees (integer) +9 = angle in radians (float) +10 = XXRRGGBB color (integer) +11 = enum option (integer) * +12 = enum bits (integer) * +13 = sector tag (integer) * +14 = thing tag (integer) * +15 = linedef tag (integer) * +16 = enum option (string) +17 = angle in degrees (float) +22 = byte angle (integer) +*/ +universalfields +{ + linedef + { + comment + { + type = 2; + default = ""; + } + } + + sidedef + { + comment + { + type = 2; + default = ""; + } + } + + thing + { + comment + { + type = 2; + default = ""; + } + + skill6 + { + type = 3; + default = false; + } + + skill7 + { + type = 3; + default = false; + } + + skill8 + { + type = 3; + default = false; + } + + skill9 + { + type = 3; + default = false; + } + + skill10 + { + type = 3; + default = false; + } + + skill11 + { + type = 3; + default = false; + } + + skill12 + { + type = 3; + default = false; + } + + skill13 + { + type = 3; + default = false; + } + + skill14 + { + type = 3; + default = false; + } + + skill15 + { + type = 3; + default = false; + } + + skill16 + { + type = 3; + default = false; + } + + class6 + { + type = 3; + default = false; + } + + class7 + { + type = 3; + default = false; + } + + class8 + { + type = 3; + default = false; + } + + class9 + { + type = 3; + default = false; + } + + class10 + { + type = 3; + default = false; + } + + class11 + { + type = 3; + default = false; + } + + class12 + { + type = 3; + default = false; + } + + class13 + { + type = 3; + default = false; + } + + class14 + { + type = 3; + default = false; + } + + class15 + { + type = 3; + default = false; + } + class16 + { + type = 3; + default = false; + } + } + + sector + { + comment + { + type = 2; + default = ""; + } + } +} + + +/* +MAP LUMP NAMES +Map lumps are loaded with the map as long as they are right after each other. When the editor +meets a lump which is not defined in this list it will ignore the map if not satisfied. +The order of items defines the order in which lumps will be written to WAD file on save. +To indicate the map header lump, use ~MAP + +Legenda: +required = Lump is required to exist. +blindcopy = Lump will be copied along with the map blindly. (useful for lumps Doom Builder doesn't use) +nodebuild = The nodebuilder generates this lump. +allowempty = The nodebuilder is allowed to leave this lump empty. +scriptbuild = This lump is a text-based script, which should be compiled using current script compiler; +script = This lump is a text-based script. Specify the filename of the script configuration to use. +*/ + +// GL nodebuilders generate this stuff +glmaplumpnames +{ + GL_~MAP + { + required = false; + nodebuild = true; + allowempty = true; + } + + GL_VERT + { + required = false; + nodebuild = true; + allowempty = false; + } + + GL_SEGS + { + required = false; + nodebuild = true; + allowempty = false; + } + + GL_SSECT + { + required = false; + nodebuild = true; + allowempty = false; + } + + GL_NODES + { + required = false; + nodebuild = true; + allowempty = false; + } + + GL_PVS + { + required = false; + nodebuild = true; + allowempty = true; + } +} + +doommaplumpnames +{ + REJECT + { + allowempty = true; + } +} + + +hexenmaplumpnames +{ + REJECT + { + allowempty = true; + } + + BEHAVIOR + { + required = true; + nodebuild = false; + blindcopy = true; + } + + SCRIPTS + { + required = false; + nodebuild = false; + scriptbuild = true; + } +} + + +udmfmaplumpnames +{ + BEHAVIOR + { + required = false; + nodebuild = false; + blindcopy = true; + } + + DIALOGUE + { + required = false; + nodebuild = false; + script = "ZDoom_USDF.cfg"; + } + + ZNODES + { + required = false; + nodebuild = true; + allowempty = false; + } + + BLOCKMAP + { + required = false; + nodebuild = true; + allowempty = true; + } + + REJECT + { + required = false; + nodebuild = true; + allowempty = true; + } + + SCRIPTS + { + required = false; + nodebuild = false; + scriptbuild = true; + } +} + +enums +{ + angles + { + 0 = "0: East"; + 32 = "32: Northeast"; + 64 = "64: North"; + 96 = "96: Northwest"; + 128 = "128: West"; + 160 = "160: Southwest"; + 192 = "192: South"; + 224 = "224: Southeast"; + } + + polyobj_angles + { + 0 = "0: East"; + 32 = "32: Northeast"; + 64 = "64: North"; + 96 = "96: Northwest"; + 128 = "128: West"; + 160 = "160: Southwest"; + 192 = "192: South"; + 224 = "224: Southeast"; + 255 = "255: Constant Rotation"; + } + + frontback + { + 0 = "Front"; + 1 = "Back"; + } + + backfront + { + 1 = "Front"; + 0 = "Back"; + } + + floorceiling + { + 0 = "Floor"; + 1 = "Ceiling"; + } + + ceilingfloor + { + 0 = "Ceiling"; + 1 = "Floor"; + } + + floorceilingboth + { + 0 = "Floor"; + 1 = "Ceiling"; + 2 = "Both"; + } + + sector_flags + { + 1 = "Silent"; + 2 = "No falling damage"; + 4 = "Actors drop with floor"; + 8 = "No respawn"; + } + + delays + { + 105 = "105: Lift wait"; + 150 = "150: Door Wait"; + } + + generic_door_delays + { + 8 = "8: 1 second"; + 34 = "34: 4 seconds"; + 69 = "69: 9 seconds"; + 240 = "240: 30 seconds"; + } + + donut + { + 4 = "4: Normal"; + } + + door_speeds + { + 4 = "4: Animated"; + 16 = "16: Slow"; + 32 = "32: Normal"; + 64 = "64: Fast"; + 128 = "128: Turbo"; + } + + flat_speeds + { + 8 = "8: Slow"; + 16 = "16: Normal"; + 32 = "32: Fast"; + 64 = "64: Turbo"; + } + + plat_speeds + { + 8 = "8: Slow"; + 16 = "16: Normal"; + 32 = "32: Lift/Fast"; + 64 = "64: Turbo"; + } + + scroll_speeds + { + 0 = "0: Don't scroll"; + 16 = "16: Very slow"; + 32 = "32: Slow"; + 64 = "64: Normal"; + 96 = "96: Fast"; + 128 = "128: Very fast"; + } + + stair_speeds + { + 2 = "2: Slow"; + 4 = "4: Normal"; + 16 = "16: Fast"; + 32 = "32: Turbo"; + } + + polyobj_speeds + { + -32 = "-32: Turbo, CW"; + -16 = "-16: Fast, CW"; + -4 = "-4: Normal, CW"; + -2 = "-2: Slow, CW"; + 2 = "2: Slow, CCW"; + 4 = "4: Normal, CCW"; + 16 = "16: Fast, CCW"; + 32 = "32: Turbo, CCW"; + } + + crush_mode + { + 0 = "0: Compatibility"; + 1 = "1: Doom mode"; + 2 = "2: Hexen mode"; + } + + plat_sound + { + 0 = "Platform"; + 1 = "Moving Floor"; + } + + sidedef_part + { + 0 = "All"; + 1 = "Upper"; + 2 = "Middle"; + 4 = "Lower"; + } + + generic_floor_target + { + 0 = "Relative offset"; + 1 = "Highest neighbor"; + 2 = "Lowest neighbor"; + 3 = "Nearest neighbor"; + 4 = "Lowest neighbor"; + 5 = "Ceiling"; + 6 = "Shortest lower texture"; + } + + generic_ceiling_target + { + 0 = "Relative offset"; + 1 = "Highest neighbor"; + 2 = "Lowest neighbor"; + 3 = "Nearest neighbor"; + 4 = "Highest neighbor"; + 5 = "Floor"; + 6 = "Shortest lower texture"; + } + + generic_door_types + { + 0 = "Open Close"; + 1 = "Open Stay"; + 2 = "Close Open"; + 3 = "Close Stay"; + 64 = "Open Close (no retrigger)"; + 65 = "Open Stay (no retrigger)"; + 66 = "Close Open (no retrigger)"; + 67 = "Close Stay (no retrigger)"; + 128 = "Open Close (tag is light tag)"; + 129 = "Open Stay (tag is light tag)"; + 130 = "Close Open (tag is light tag)"; + 131 = "Close Stay (tag is light tag)"; + 192 = "Open Close (no retrigger, tag is light tag)"; + 193 = "Open Stay (no retrigger, tag is light tag)"; + 194 = "Close Open (no retrigger, tag is light tag)"; + 195 = "Close Stay (no retrigger, tag is light tag)"; + } + + generic_lift_types + { + 0 = "Up by Value, Stay"; + 1 = "Down, Wait, Up, Stay"; + 2 = "Down to Nearest Floor"; + 3 = "Down to Lowest Ceiling"; + 4 = "Perpetual Raise"; + } + + death_types + { + 0 = "Unknown"; + 5 = "Rocket impact"; + 6 = "Rocket explosion"; + 7 = "Plasma rifle"; + 8 = "BFG impact"; + 9 = "BFG explosion"; + 10 = "Chainsaw"; + 11 = "Shotgun"; + 12 = "Water"; + 13 = "Slime"; + 14 = "Lava"; + 15 = "Crush"; + 16 = "Telefrag"; + 17 = "Falling"; + 18 = "Suicide"; + 19 = "Barrel"; + 20 = "Exit"; + 21 = "Splash"; + 22 = "Melee hit"; + 23 = "Railgun"; + 24 = "Frost"; + 25 = "Disintegration"; + 26 = "Poison"; + 27 = "Electricity"; + 1000 = "Massacre!"; + } + + teams + { + 0 = "0: Blue Team"; + 1 = "1: Red Team"; + 2 = "2: Green Team"; + 3 = "3: Gold Team"; + 4 = "4: Black Team"; + 5 = "5: White Team"; + 6 = "6: Orange Team"; + 7 = "7: Purple Team"; + } + + delay_tics + { + 0 = "0: No delay"; + 35 = "35: 1 Second"; + 70 = "70: 2 Seconds"; + 105 = "105: 3 Seconds"; + 140 = "140: 4 Seconds"; + 175 = "175: 5 Seconds"; + 210 = "210: 6 Seconds"; + 245 = "245: 7 Seconds"; + 280 = "280: 8 Seconds"; + 315 = "315: 9 Seconds"; + 350 = "350: 10 Seconds"; + } + + delay_seconds + { + 0 = "Forever"; + 1 = "1 Second"; + 2 = "2 Seconds"; + 3 = "3 Seconds"; + 5 = "5 Seconds"; + 10 = "10 Seconds"; + 15 = "15 Seconds"; + 20 = "20 Seconds"; + 25 = "25 Seconds"; + 30 = "30 Seconds"; + 60 = "1 Minute"; + } + + delay_seconds_0nodelay + { + 0 = "No delay"; + 1 = "1 Second"; + 2 = "2 Seconds"; + 3 = "3 Seconds"; + 5 = "5 Seconds"; + 10 = "10 Seconds"; + 15 = "15 Seconds"; + 20 = "20 Seconds"; + 25 = "25 Seconds"; + 30 = "30 Seconds"; + 60 = "1 Minute"; + } + + reset_tics + { + 0 = "0: Never"; + 35 = "35: 1 Second"; + 70 = "70: 2 Seconds"; + 105 = "105: 3 Seconds"; + 140 = "140: 4 Seconds"; + 175 = "175: 5 Seconds"; + 210 = "210: 6 Seconds"; + 245 = "245: 7 Seconds"; + 280 = "280: 8 Seconds"; + 315 = "315: 9 Seconds"; + 350 = "350: 10 Seconds"; + } + + sound_volume + { + 0 = "Default"; + 10 = "10%"; + 25 = "25%"; + 50 = "50%"; + 75 = "75%"; + 100 = "100%"; + } + + setadd + { + 0 = "Set"; + 1 = "Add"; + } + + puzzle_items + { + 0 = "None"; + } + + spawn_projectile + { + 0 = "None"; + } +} + +enums_doom +{ + keys + { + 0 = "None"; + 1 = "Red key card"; + 2 = "Blue key card"; + 3 = "Yellow key card"; + 4 = "Red skull key"; + 5 = "Blue skull key"; + 6 = "Yellow skull key"; + 100 = "Any key"; + 101 = "All keys"; + 102 = "Impossible"; + 129 = "Any red key"; + 130 = "Any blue key"; + 131 = "Any yellow key"; + 229 = "One of each color"; + } + + spawnthing + { + 0 = "None"; + 1 = "Shotgun Guy"; + 2 = "Chaingun Guy"; + 3 = "Baron Of Hell"; + 4 = "Zombieman"; + 5 = "Imp"; + 6 = "Arachnotron"; + 7 = "Spider Mastermind"; + 8 = "Demon"; + 9 = "Spectre"; + 10 = "Imp Fireball"; + 11 = "Clip"; + 12 = "Shells"; + 19 = "Cacodemon"; + 20 = "Revenant"; + 21 = "Bridge"; + 22 = "Armor Bonus"; + 23 = "Stimpack"; + 24 = "Medkit"; + 25 = "Soul Sphere"; + 27 = "Shotgun"; + 28 = "Chaingun"; + 29 = "Rocket Launcher"; + 30 = "Plasma Gun"; + 31 = "BFG"; + 32 = "Chainsaw"; + 33 = "Super Shotgun"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 51 = "Plasma Bolt"; + 53 = "Tracer"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 68 = "Green Armor"; + 69 = "Blue Armor"; + 75 = "Energy Cell"; + 85 = "Blue Keycard"; + 86 = "Red Keycard"; + 87 = "Yellow Keycard"; + 88 = "Yellow Skullkey"; + 89 = "Red Skullkey"; + 90 = "Blue Skullkey"; + 98 = "Temp Large Flame"; + 100 = "Stealth Baron"; + 101 = "Stealth Hell Knight"; + 102 = "Stealth Zombieman"; + 103 = "Stealth Shotgun Guy"; + 110 = "Lost Soul"; + 111 = "Arch-Vile"; + 112 = "Mancubus"; + 113 = "Hell Knight"; + 114 = "Cyberdemon"; + 115 = "Pain Elemental"; + 116 = "Wolf SS Soldier"; + 117 = "Stealth Arachnotron"; + 118 = "Stealth Arch-Vile"; + 119 = "Stealth Cacodemon"; + 120 = "Stealth Chaingun Guy"; + 121 = "Stealth Demon"; + 122 = "Stealth Imp"; + 123 = "Stealth Mancubus"; + 124 = "Stealth Revenant"; + 125 = "Barrel"; + 126 = "Cacodemon Shot"; + 127 = "Rocket (Projectile)"; + 128 = "BFG Shot"; + 129 = "Arachnotron Plasma Bolt"; + 130 = "Blood"; + 131 = "Bullet Puff"; + 132 = "Megasphere"; + 133 = "Invulnerability Sphere"; + 134 = "Berserk Pack"; + 135 = "Invisibility Sphere"; + 136 = "Radiation Suit"; + 137 = "Computer Map"; + 138 = "Light-Amp Goggles"; + 139 = "Box Of Ammo"; + 140 = "Rocket (Ammo)"; + 141 = "Box Of Rockets"; + 142 = "Energy Cell Pack"; + 143 = "Box Of Shells"; + 144 = "Backpack"; + 145 = "Guts"; + 146 = "Blood Pool 1"; + 147 = "Blood Pool 2"; + 148 = "Blood Pool 3"; + 149 = "Flaming Barrel"; + 150 = "Brains"; + 151 = "Scripted Marine"; + 152 = "Health Bonus"; + 153 = "Mancubus Shot"; + 154 = "Baron Fireball"; + //216 = "Grenade"; + } + + spawn_projectile + { + 0 = "None"; + 10 = "Imp Fireball"; + 33 = "Super Shotgun"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 51 = "Plasma Bolt"; + 53 = "Tracer"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 110 = "Lost Soul"; + 126 = "Cacodemon Shot"; + 127 = "Rocket (Projectile)"; + 128 = "BFG Shot"; + 129 = "Arachnotron Plasma Bolt"; + 131 = "Bullet Puff"; + 153 = "Mancubus Shot"; + 154 = "Baron Fireball"; + } +} + +enums_heretic +{ + keys + { + 0 = "None"; + 1 = "Green key"; + 2 = "Blue key"; + 3 = "Yellow key"; + 129 = "Green key"; + 130 = "Blue key"; + 131 = "Yellow key"; + 100 = "Any key"; + 101 = "All keys"; + 229 = "All keys"; + } + + spawnthing + { + 1 = "Sabreclaw"; + 2 = "Nitrogolem"; + 3 = "Weredragon"; + 4 = "Golem"; + 5 = "Gargoyle"; + 6 = "Undead Warrior"; + 7 = "Fire Gargoyle"; + 8 = "Ghost Golem"; + 9 = "Ghost Nitrogolem"; + 10 = "Gargoyle Shot"; + 11 = "Wand Crystal"; + 12 = "Wand Geode"; + 14 = "Morph Ovum"; + 15 = "Wings of Wrath"; + 19 = "Disciple of D'Sparil"; + 20 = "Iron Lich"; + 21 = "Bridge"; + 23 = "Crystal Vial"; + 24 = "Quartz Flask"; + 25 = "Mystic Urb"; + 27 = "Ethereal Crossbow"; + 28 = "Dragon Claw"; + 29 = "Phoenix Rod"; + 30 = "Hell Staff"; + 31 = "Fire Mace"; + 32 = "Gauntlets of the Necromancer"; + 33 = "Ethereal Arrows"; + 34 = "Ethereal Quiver"; + 35 = "Mace Sphere"; + 36 = "Mace Sphere Pile"; + 37 = "Claw Orb"; + 38 = "Energy Orb"; + 40 = "Morph Ovum Shot"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 68 = "Silver Shield"; + 69 = "Enchanted Shield"; + 72 = "Time Bomb of the Ancients"; + 73 = "Torch"; + 85 = "Blue Key"; + 86 = "Green Key"; + 87 = "Yellow Key"; + 110 = "Wind Sound"; + 111 = "Waterfall Sound"; + 120 = "Weredragon Shot"; + 121 = "Feather"; + 122 = "Chicken"; + 123 = "Volcano Blast"; + 124 = "Tiny Volcano Blast"; + 125 = "Pod"; + 126 = "Pod Generator"; + 127 = "Ethereal Axe"; + 128 = "Bloody Axe"; + 129 = "Ghost Warrior"; + 130 = "Blood"; + 131 = "Golem Shot"; + 132 = "Ophidian"; + 133 = "Ring of Invincibility"; + 134 = "Tome of Power"; + 135 = "Shadow Sphere"; + 136 = "Bag of Holding"; + 137 = "Map Scroll"; + 138 = "Ophidian Blue Shot"; + 139 = "Ophidian Yellow Shot"; + 140 = "Disciple Shot"; + 141 = "D'Sparil Teleportation Spot"; + 142 = "D'Sparil on Chaos Serpent"; + 143 = "D'Sparil alone"; + 144 = "Chaos Serpent Shot"; + 145 = "D'Sparil Shot"; + 146 = "Disciple Summon"; + 147 = "Main Crossbow Shot"; + 148 = "Tomed Crossbow Shot"; + 149 = "Secondary Crossbow Shot"; + 150 = "Volcano"; + 151 = "Small Goldwand Shot"; + 152 = "Tomed Goldwand Shot"; + 153 = "Crushing Firemace Sphere"; + 154 = "Firemace Sphere"; + 155 = "Small Firemace Sphere"; + 156 = "Large Firemace Sphere"; + 157 = "Dragonclaw Ripper"; + 158 = "SkullRodAmmo"; + 159 = "SkullRodHefty"; + 160 = "HornRodFX1"; + 161 = "PhoenixRodAmmo"; + 162 = "PhoenixRodHefty"; + 163 = "PhoenixFX1"; + 164 = "Iron Lich Ice Shot"; + 165 = "Iron Lich Whirlwind"; + 166 = "Red Glitter Generator"; + 167 = "Blue Glitter Generator"; + } + + spawn_projectile + { + 10 = "Gargoyle Shot"; + 40 = "Morph Ovum Shot"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 120 = "Weredragon Shot"; + 123 = "Volcano Blast"; + 124 = "Tiny Volcano Blast"; + 131 = "Golem Shot"; + 138 = "Ophidian Blue Shot"; + 139 = "Ophidian Yellow Shot"; + 140 = "Disciple Shot"; + 141 = "D'Sparil Teleportation Spot"; + 144 = "Chaos Serpent Shot"; + 145 = "D'Sparil Shot"; + 147 = "Main Crossbow Shot"; + 148 = "Tomed Crossbow Shot"; + 149 = "Secondary Crossbow Shot"; + 151 = "Small Goldwand Shot"; + 152 = "Tomed Goldwand Shot"; + 164 = "Iron Lich Ice Shot"; + 165 = "Iron Lich Whirlwind"; + } +} + +enums_hexen +{ + keys + { + 0 = "None"; + 1 = "Steel key"; + 2 = "Cave key"; + 3 = "Axe key"; + 4 = "Fire key"; + 5 = "Emerald key"; + 6 = "Dungeon key"; + 7 = "Silver key"; + 8 = "Rusted key"; + 9 = "Horn key"; + 10 = "Swamp key"; + 11 = "Castle key"; + 101 = "All keys"; + 229 = "All keys"; + } + + spawnthing + { + 1 = "Centaur"; + 2 = "Slaughtaur"; + 3 = "Green Chaos Serpent"; + 4 = "Ettin"; + 5 = "Affrit"; + 6 = "Swamp Stalker"; + 7 = "Swamp Stalker Boss"; + 8 = "Reiver"; + 9 = "Buried Reiver"; + 10 = "Fireball"; + 11 = "Blue Mana"; + 12 = "Green Mana"; + 13 = "Boots of Speed"; + 14 = "Porkalator"; + 15 = "Wings of Wrath"; + 16 = "Dark Servant"; + 17 = "Banishment Device"; + 19 = "Dark Bishop"; + 20 = "Wendigo"; + 21 = "Glitter Bridge"; + 22 = "Dragonskin Bracers"; + 23 = "Crystal Vial"; + 24 = "Quartz Flask"; + 25 = "Mystic Urn"; + 26 = "Krater of Might"; + 27 = "Timon's Axe"; + 28 = "Hammer of Retribution"; + 29 = "Quietus Hilt"; + 30 = "Quietus Crossguard"; + 31 = "Quietus Blade"; + 32 = "Serpent Staff"; + 33 = "Wraithverge Crescent"; + 34 = "Wraithverge Cross"; + 35 = "Wraithverge Handle"; + 36 = "Ice Shards Spell"; + 37 = "Bloodscourge Grip"; + 38 = "Bloodscourge Haft"; + 39 = "Bloodscourge Jewel"; + 40 = "Porkalator Shot"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 50 = "Arrow"; + 51 = "Dart"; + 52 = "Poison Dart"; + 53 = "Ripper Ball"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 64 = "Blade"; + 65 = "Ice Shard"; + 66 = "Small Flame"; + 67 = "Large Flame"; + 68 = "Mesh Armor"; + 69 = "Falcon Shield"; + 70 = "Platinum Helm"; + 71 = "Amulet Of Warding"; + 72 = "Flechette"; + 73 = "Torch"; + 74 = "Disc of Repulsion"; + 75 = "Combined Mana"; + 76 = "Yorick's skull"; + 77 = "Heart of D'Sparil"; + 78 = "Ruby planet"; + 79 = "Emerald planet #1"; + 80 = "Emerald planet #2"; + 81 = "Sapphire planet #1"; + 82 = "Sapphire planet #2"; + 83 = "Daemon Codex"; + 84 = "Liber Obscura"; + 85 = "Steel key"; + 86 = "Cave key"; + 87 = "Axe key"; + 88 = "Fire key"; + 89 = "Emerald key"; + 90 = "Dungeon key"; + 91 = "Silver key"; + 92 = "Rusted key"; + 93 = "Horn key"; + 94 = "Swamp key"; + 95 = "Water drip"; + 96 = "Small temporary flame"; + 97 = "Small Flame"; + 98 = "Large temporary flame"; + 99 = "Large Flame"; + 100 = "Phantasmal green chaos serpent"; + 101 = "Phantasmal brown chaos serpent"; + 102 = "Phantasmal ettin"; + 103 = "Phantasmal centaur"; + 104 = "Raised spike"; + 105 = "Burried spike"; + 106 = "Dripping flesh"; + 107 = "Dripping flesh"; + 108 = "Reiver fireball sparks"; + 110 = "Wind Sound"; + 130 = "Blood"; + 133 = "Icon of the Defender"; + } + + spawn_projectile + { + 10 = "Fireball"; + 40 = "Porkalator Shot"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 50 = "Arrow"; + 51 = "Dart"; + 52 = "Poison Dart"; + 53 = "Ripper Ball"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 65 = "Ice Shard"; + } + + puzzle_items + { + 0 = "Yorick's skull"; + 1 = "Heart of D'Sparil"; + 2 = "Ruby Planet"; + 3 = "Emerald Planet (1)"; + 4 = "Emerald Planet (2)"; + 5 = "Sapphire Planet (1)"; + 6 = "Sapphire Planet (2)"; + 7 = "Daemon Codex"; + 8 = "Liber Obscura"; + 9 = "Flame Mask"; + 10 = "Glaive Seal"; + 11 = "Holy Relic"; + 12 = "Sigil of the Magus"; + 13 = "Iron gear"; + 14 = "Brass gear"; + 15 = "Brass and iron gear"; + 16 = "Silver and brass gear"; + } +} + +enums_strife +{ + keys + { + 0 = "None"; + 1 = "Base Key (Front)"; + 2 = "Governor's Key"; + 3 = "Travel Passcard"; + 4 = "Blue ID Badge"; + 5 = "Prison Key"; + 6 = "Severed Hand"; + 7 = "Power Key 1"; + 8 = "Power Key 2"; + 9 = "Power Key 3"; + 10 = "Gold Key"; + 11 = "Gold ID Badge"; + 12 = "Silver Key"; + 13 = "Oracle Key"; + 14 = "Military ID"; + 15 = "Order Key"; + 16 = "Warehouse Key"; + 17 = "Brass Key"; + 18 = "Red Crystal Key"; + 19 = "Blue Crystal Key"; + 20 = "Chapel Key"; + 21 = "Catacomb Key"; + 22 = "Security Key"; + 23 = "Core Key"; + 24 = "Mauler Key"; + 25 = "Factory Key"; + 26 = "Mine Key"; + 27 = "New Key 5"; + 50 = "Prison Pass"; + 51 = "Oracle Pass"; + 103 = "Retail Version Only"; // this was used in shareware Strife + } + + spawnthing + { + 11 = "Clip Of Bullets"; + 68 = "Leather Armor"; + 69 = "Metal Armor"; + 75 = "Energy Pod"; + 135 = "Shadow Armor"; + 136 = "Environmental Suit"; + 137 = "Computer Map"; + 139 = "Box Of Bullets"; + 140 = "Mini-Missiles"; + 141 = "Crate of Missiles"; + 142 = "Energy Pack"; + 144 = "Ammo Satchel"; + } +} + +enums_chex +{ + keys + { + 0 = "None"; + 1 = "Red key card"; + 2 = "Blue key card"; + 3 = "Yellow key card"; + 4 = "Red Flem key"; + 5 = "Blue Flem key"; + 6 = "Yellow Flem key"; + 100 = "Any key"; + 101 = "All keys"; + 102 = "Impossible"; + 129 = "Any red key"; + 130 = "Any blue key"; + 131 = "Any yellow key"; + 229 = "One of each color"; + } + + spawnthing + { + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 130 = "Blood"; + 142 = "Phasing Zorcher Pack"; + } +} + +enums_chex3 +{ + keys + { + 0 = "None"; + 1 = "Red key card"; + 2 = "Blue key card"; + 3 = "Yellow key card"; + 4 = "Red Flem key"; + 5 = "Blue Flem key"; + 6 = "Yellow Flem key"; + 100 = "Any key"; + 101 = "All keys"; + 102 = "Impossible"; + 129 = "Any red key"; + 130 = "Any blue key"; + 131 = "Any yellow key"; + 229 = "One of each color"; + } + + spawnthing + { + 1 = "Flemoidus Bipedicus"; + 3 = "Flemoidus Maximus"; + 4 = "Flemoidus Commonus"; + 5 = "Armored Flemoidus"; + 7 = "Flembomination"; + 8 = "Stridicus"; + 9 = "Cycloptis Commonus"; + 10 = "Bipedicus Shot"; + 19 = "Super Cycloptis"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 100 = "Statue of the Thinker"; + 101 = "Orange tree"; + 110 = "Flem mine"; + 113 = "Flembrane"; + 114 = "Lord Snotfolus"; + 117 = "Flemoid Larva"; + 118 = "Statue of David"; + 119 = "Statue of Ramses"; + 120 = "Statue of King Tut"; + 121 = "Statue of the Chex Warrior"; + 122 = "Quadrumpus"; + 125 = "Flemoid power strand"; + 126 = "Cycloptis shot"; + 130 = "Blood"; + 138 = "Ultra goggles"; + 142 = "Phasing Zorcher Pack"; + 147 = "Flower"; + 148 = "Beaker"; + 150 = "Small bush"; + 154 = "Maximus shot"; + } +} + +enums_harmony +{ + keys + { + 0 = "None"; + 1 = "Purple key card"; + 2 = "Green key card"; + 3 = "Yellow key card"; + 4 = "Purple Pax Pox key"; + 5 = "Green Pax Pox key"; + 6 = "Yellow Pax Pox key"; + 100 = "Any key"; + 101 = "All keys"; + 102 = "Impossible"; + 129 = "Any Purple key"; + 130 = "Any Green key"; + 131 = "Any yellow key"; + 229 = "One of each color"; + } + + spawnthing + { + 0 = "None"; + 1 = "Follower"; + 2 = "Mutant Soldier"; + 3 = "Critter"; + 4 = "Beastling"; + 6 = "Phage"; + 7 = "Echidna"; + 8 = "Breaking grid"; + 11 = "Flies"; + 20 = "Predator"; + 21 = "Hack Bridge"; + 23 = "Healing Mushroom"; + 24 = "First Aid Kit"; + 25 = "Huge healing mushroom"; + 27 = "Shotgun"; + 28 = "Minigun"; + 29 = "Grenade Launcher"; + 30 = "Entropy Thrower"; + 31 = "Hand Grenade"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 51 = "Plasma Bolt"; + 53 = "Predator Shot"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 68 = "Amazon Armor"; + 69 = "NDF Armor"; + 85 = "Green Keycard"; + 86 = "Purple Keycard"; + 87 = "Yellow Keycard"; + 88 = "Yellow key"; + 89 = "Purple key"; + 90 = "Green key"; + 110 = "Mine"; + 111 = "Falling Follower"; + 112 = "Grid obstacle"; + 114 = "Centaur"; + 125 = "Explosive Barrel"; + 127 = "Launched Grenade"; + 128 = "Thrown Grenade"; + 129 = "Phage Shot"; + 130 = "Blood"; + 131 = "Bullet Puff"; + 137 = "Computer Map"; + 139 = "Box Of Ammo"; + 140 = "Grenade"; + 141 = "Grenade Belt"; + 142 = "Energy Cell Pack"; + 143 = "Box Of Shells"; + 144 = "Backpack"; + 147 = "Grenade Blast"; + } +} + + +enums_action2 +{ + keys + { + 0 = "None"; + } + + spawnthing + { + 21 = "Hack Bridge"; + 41 = "Rock debris #1"; + 42 = "Rock debris #2"; + 43 = "Rock debris #3"; + 44 = "Dirt #1"; + 45 = "Dirt #2"; + 46 = "Dirt #3"; + 47 = "Dirt #4"; + 48 = "Dirt #5"; + 49 = "Dirt #6"; + 54 = "Glass shard #1"; + 55 = "Glass shard #2"; + 56 = "Glass shard #3"; + 57 = "Glass shard #4"; + 58 = "Glass shard #5"; + 59 = "Glass shard #6"; + 60 = "Glass shard #7"; + 61 = "Glass shard #8"; + 62 = "Glass shard #9"; + 63 = "Glass shard #10"; + 244 = "Wood shard"; + 245 = "Glass shard"; + 246 = "Tire"; + 247 = "Paint chip"; + 248 = "Car hood"; + 249 = "Car door"; + 250 = "Soda #3"; + 251 = "Soda #2"; + 252 = "Soda #1"; + 253 = "Candy #3"; + 254 = "Candy #2"; + 255 = "Candy #1"; + } +} + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters_udmf +{ + + filter0 + { + name = "Keys only"; + category = "keys"; + type = -1; + } + + filter1 + { + name = "Deathmatch"; + category = ""; + type = -1; + + fields + { + dm = true; + } + } + + filter2 + { + name = "Cooperative"; + category = ""; + type = -1; + + fields + { + coop = true; + } + } + + filter3 + { + name = "Skill 1"; + category = ""; + type = -1; + + fields + { + skill1 = true; + } + } + + filter4 + { + name = "Skill 2"; + category = ""; + type = -1; + + fields + { + skill2 = true; + } + } + + filter5 + { + name = "Skill 3"; + category = ""; + type = -1; + + fields + { + skill3 = true; + } + } + + filter6 + { + name = "Skill 4"; + category = ""; + type = -1; + + fields + { + skill4 = true; + } + } + + filter7 + { + name = "Skill 5"; + category = ""; + type = -1; + + fields + { + skill5 = true; + } + } + + filter8 + { + name = "Skill 6"; + category = ""; + type = -1; + + fields + { + skill6 = true; + } + } + + filter9 + { + name = "Skill 7"; + category = ""; + type = -1; + + fields + { + skill7 = true; + } + } + + filter10 + { + name = "Skill 8"; + category = ""; + type = -1; + + fields + { + skill8 = true; + } + } +} + +// Special linedefs +speciallinedefs_doomhexen +{ + singlesidedflag = 1; // See linedefflags + doublesidedflag = 4; // See linedefflags + impassableflag = 1; + upperunpeggedflag = 8; + lowerunpeggedflag = 16; +} + +speciallinedefs_udmf +{ + singlesidedflag = "blocking"; + doublesidedflag = "twosided"; + impassableflag = "blocking"; + upperunpeggedflag = "dontpegtop"; + lowerunpeggedflag = "dontpegbottom"; + defaultlinedefactivation = "playercross"; //mxd. Used when translating a map to UDMF +} + +// Door making +// makedoortrack is not given here because it depends on available textures +doormaking_doom +{ + makedooraction = 1; // See linedeftypes +} + +doormaking_hexen +{ + makedooraction = 202; // See linedeftypes + makedooractivate = 1024; + makedoorflags { 512; } + makedoorarg0 = 0; + makedoorarg1 = 16; + makedoorarg2 = 0; + makedoorarg3 = 34; + makedoorarg4 = 0; +} + +doormaking_udmf +{ + makedooraction = 202; // See linedeftypes + makedoorflags { playeruse; repeatspecial; } + makedoorarg0 = 0; + makedoorarg1 = 16; + makedoorarg2 = 0; + makedoorarg3 = 34; + makedoorarg4 = 0; +} + diff --git a/Build/Configurations/Includes/ZDoom_sectors.cfg b/Build/Configurations/Includes/ZDoom_sectors.cfg new file mode 100644 index 0000000..e2fad79 --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_sectors.cfg @@ -0,0 +1,108 @@ + +// NOTE: This config contains two structures for different conventions: Doom and Hexen/UDMF + +// These are in addition to the standard Doom sector types and generalized Boom sector types +doom +{ + 21 = "Light Phased"; + 22 = "Light Sequence Start"; + 23 = "Light Sequence Special 1"; + 24 = "Light Sequence Special 2"; +} + +// These are instead of Doom sector types in UDMF and Hexen format +zdoom +{ + 0 = "None"; + 1 = "Light Phased"; + 2 = "Light Sequence Start"; + 3 = "Light Sequence Special 1"; + 4 = "Light Sequence Special 2"; + 26 = "Stairs Special 1"; + 27 = "Stairs Special 2"; + 40 = "Wind East weak"; + 41 = "Wind East medium"; + 42 = "Wind East strong"; + 43 = "Wind North weak"; + 44 = "Wind North medium"; + 45 = "Wind North strong"; + 46 = "Wind South weak"; + 47 = "Wind South medium"; + 48 = "Wind South strong"; + 49 = "Wind West weak"; + 50 = "Wind West medium"; + 51 = "Wind West strong"; + 65 = "Light Flicker"; + 66 = "Light Strobe Fast"; + 67 = "Light Strobe Slow"; + 68 = "Light Strobe Hurt -20% health"; + 69 = "Damage Hellslime -10% health"; + 71 = "Damage Nukage -5% health"; + 72 = "Light Glow"; + 74 = "Sector Door Close (30 sec)"; + 75 = "Damage End Level -20% health"; + 76 = "Light StrobeSlowSync"; + 77 = "Light StrobeFastSync"; + 78 = "Sector Door Raise (5 min)"; + 79 = "Low Friction"; + 80 = "Damage Super Hellslime -20% health"; + 81 = "Light Fire Flicker"; + 82 = "Damage -5% health (no protection)"; + 83 = "Damage -8% health (no protection)"; + 84 = "Scroll east + -2 or -5% health (no protection)"; + 85 = "Damage Sludge -4% health"; + 87 = "Sector uses outside fog"; + 105 = "Delayed damage weak (hazardcount +2/16 per second)"; + 115 = "Instant death"; + 116 = "Delayed damage strong (hazardcount +4/16 per second)"; + 118 = "Carry player by tag"; + 196 = "Healing Sector"; + 197 = "Lightning Outdoor"; + 198 = "Lightning Indoor 2"; + 199 = "Lightning Indoor 1"; + 200 = "Sky 2 (MAPINFO)"; + 201 = "Scroll North (slow)"; + 202 = "Scroll North (medium)"; + 203 = "Scroll North (fast)"; + 204 = "Scroll East (slow)"; + 205 = "Scroll East (medium)"; + 206 = "Scroll East (fast)"; + 207 = "Scroll South (slow)"; + 208 = "Scroll South (medium)"; + 209 = "Scroll South (fast)"; + 210 = "Scroll West (slow)"; + 211 = "Scroll West (medium)"; + 212 = "Scroll West (fast)"; + 213 = "Scroll NorthWest (slow)"; + 214 = "Scroll NorthWest (medium)"; + 215 = "Scroll NorthWest (fast)"; + 216 = "Scroll NorthEast (slow)"; + 217 = "Scroll NorthEast (medium)"; + 218 = "Scroll NorthEast (fast)"; + 219 = "Scroll SouthEast (slow)"; + 220 = "Scroll SouthEast (medium)"; + 221 = "Scroll SouthEast (fast)"; + 222 = "Scroll SouthWest (slow)"; + 223 = "Scroll SouthWest (medium)"; + 224 = "Scroll SouthWest (fast)"; + 225 = "Carry East Slow"; + 226 = "Carry East Med.Slow"; + 227 = "Carry East Medium"; + 228 = "Carry East Med.Fast"; + 229 = "Carry East Fast"; + 230 = "Carry North Slow"; + 231 = "Carry North Med.Slow"; + 232 = "Carry North Medium"; + 233 = "Carry North Med.Fast"; + 234 = "Carry North Fast"; + 235 = "Carry South Slow"; + 236 = "Carry South Med.Slow"; + 237 = "Carry South Medium"; + 238 = "Carry South Med.Fast"; + 239 = "Carry South Fast"; + 240 = "Carry West Slow"; + 241 = "Carry West Med.Slow"; + 242 = "Carry West Medium"; + 243 = "Carry West Med.Fast"; + 244 = "Carry West Fast"; +} diff --git a/Build/Configurations/Includes/ZDoom_things.cfg b/Build/Configurations/Includes/ZDoom_things.cfg new file mode 100644 index 0000000..c0920ed --- /dev/null +++ b/Build/Configurations/Includes/ZDoom_things.cfg @@ -0,0 +1,1740 @@ + +// NOTE: This config contains multiple structures for different games. +// Note that since the extra player starts are a GameInfo setting to +// use the games' own ednums when available, they have been moved +// out of the main branch and into Doom, Heretic, and Default. +// +// ZDoom: standard actors +// Doom: additional actors available only in Doom game mode +// Heretic: one additional actor available in Heretic game mode +// Hexen: some redefinitions to avoid conflict +// Strife: some redefinitions to avoid conflict +// Default: for other games (Harmony, Chex Quest, etc.) + +zdoom +{ + include("Boom_things.cfg"); + + teleports + { + 9043 + { + title = "Teleport (Z Height and Gravity)"; + sprite = "internal:teleport"; + class = "TeleportDest3"; + } + + 9044 + { + title = "Teleport (Z Height)"; + sprite = "internal:teleport"; + class = "TeleportDest2"; + } + } + + obstacles + { + blocking = 2; + + 5050 + { + title = "Stalagmite"; + sprite = "SMT2A0"; + class = "Stalagmite"; + width = 16; + height = 48; + } + } + + lights + { + blocking = 2; + } + + decoration + { + 9027 + { + title = "Red Particle Fountain"; + class = "RedParticleFountain"; + } + + 9028 + { + title = "Green Particle Fountain"; + class = "GreenParticleFountain"; + } + + 9029 + { + title = "Blue Particle Fountain"; + class = "BlueParticleFountain"; + } + + 9030 + { + title = "Yellow Particle Fountain"; + class = "YellowParticleFountain"; + } + + 9031 + { + title = "Purple Particle Fountain"; + class = "PurpleParticleFountain"; + } + + 9032 + { + title = "Black Particle Fountain"; + class = "BlackParticleFountain"; + } + + 9033 + { + title = "White Particle Fountain"; + class = "WhiteParticleFountain"; + } + } + + sounds + { + color = 7; + arrow = 0; + title = "Sounds"; + width = 10; + height = 20; + sort = 1; + blocking = 0; + hangs = 0; + fixedsize = true; + sprite = "internal:sound"; + + 1400 = "Sound Sequence 0"; + 1401 = "Sound Sequence 1"; + 1402 = "Sound Sequence 2"; + 1403 = "Sound Sequence 3"; + 1404 = "Sound Sequence 4"; + 1405 = "Sound Sequence 5"; + 1406 = "Sound Sequence 6"; + 1407 = "Sound Sequence 7"; + 1408 = "Sound Sequence 8"; + 1409 = "Sound Sequence 9"; + + 1411 + { + title = "Sector Sound Sequence Override"; + class = "$SSeqOverride"; + arg0 + { + title = "Sound Sequence Index"; + type = 11; + enum + { + 255 = "Default"; + } + } + } + + 14001 = "Ambient Sound 01"; + 14002 = "Ambient Sound 02"; + 14003 = "Ambient Sound 03"; + 14004 = "Ambient Sound 04"; + 14005 = "Ambient Sound 05"; + 14006 = "Ambient Sound 06"; + 14007 = "Ambient Sound 07"; + 14008 = "Ambient Sound 08"; + 14009 = "Ambient Sound 09"; + 14010 = "Ambient Sound 10"; + 14011 = "Ambient Sound 11"; + 14012 = "Ambient Sound 12"; + 14013 = "Ambient Sound 13"; + 14014 = "Ambient Sound 14"; + 14015 = "Ambient Sound 15"; + 14016 = "Ambient Sound 16"; + 14017 = "Ambient Sound 17"; + 14018 = "Ambient Sound 18"; + 14019 = "Ambient Sound 19"; + 14020 = "Ambient Sound 20"; + 14021 = "Ambient Sound 21"; + 14022 = "Ambient Sound 22"; + 14023 = "Ambient Sound 23"; + 14024 = "Ambient Sound 24"; + 14025 = "Ambient Sound 25"; + 14026 = "Ambient Sound 26"; + 14027 = "Ambient Sound 27"; + 14028 = "Ambient Sound 28"; + 14029 = "Ambient Sound 29"; + 14030 = "Ambient Sound 30"; + 14031 = "Ambient Sound 31"; + 14032 = "Ambient Sound 32"; + 14033 = "Ambient Sound 33"; + 14034 = "Ambient Sound 34"; + 14035 = "Ambient Sound 35"; + 14036 = "Ambient Sound 36"; + 14037 = "Ambient Sound 37"; + 14038 = "Ambient Sound 38"; + 14039 = "Ambient Sound 39"; + 14040 = "Ambient Sound 40"; + 14041 = "Ambient Sound 41"; + 14042 = "Ambient Sound 42"; + 14043 = "Ambient Sound 43"; + 14044 = "Ambient Sound 44"; + 14045 = "Ambient Sound 45"; + 14046 = "Ambient Sound 46"; + 14047 = "Ambient Sound 47"; + 14048 = "Ambient Sound 48"; + 14049 = "Ambient Sound 49"; + 14050 = "Ambient Sound 50"; + 14051 = "Ambient Sound 51"; + 14052 = "Ambient Sound 52"; + 14053 = "Ambient Sound 53"; + 14054 = "Ambient Sound 54"; + 14055 = "Ambient Sound 55"; + 14056 = "Ambient Sound 56"; + 14057 = "Ambient Sound 57"; + 14058 = "Ambient Sound 58"; + 14059 = "Ambient Sound 59"; + 14060 = "Ambient Sound 60"; + 14061 = "Ambient Sound 61"; + 14062 = "Ambient Sound 62"; + 14063 = "Ambient Sound 63"; + 14064 = "Ambient Sound 64"; + + 14065 + { + title = "Custom Ambient Sound"; + class = "AmbientSound"; + arg0 + { + title = "Ambient Sound Index"; + } + arg1 + { + title = "Volume"; + type = 11; + enum = "sound_volume"; + } + arg2 + { + title = "Min. Fading Distance"; + } + arg3 + { + title = "Max. Heard Distance"; + } + arg4 + { + title = "Distance Multiplier"; + } + } + + 14066 + { + title = "Sound Sequence"; + class = "SoundSequence"; + arg0 + { + title = "Sound Sequence Index"; + } + arg1 + { + title = "Choice"; + } + } + + 14067 + { + title = "Custom Ambient Sound (no gravity)"; + class = "AmbientSoundNoGravity"; + arg0 + { + title = "Ambient Sound Index"; + } + arg1 + { + title = "Volume"; + type = 11; + enum = "sound_volume"; + } + arg2 + { + title = "Min. Fading Distance"; + } + arg3 + { + title = "Max. Heard Distance"; + } + arg4 + { + title = "Distance Multiplier"; + } + } + + 14101 = "Music Changer 01"; + 14102 = "Music Changer 02"; + 14103 = "Music Changer 03"; + 14104 = "Music Changer 04"; + 14105 = "Music Changer 05"; + 14106 = "Music Changer 06"; + 14107 = "Music Changer 07"; + 14108 = "Music Changer 08"; + 14109 = "Music Changer 09"; + 14110 = "Music Changer 10"; + 14111 = "Music Changer 11"; + 14112 = "Music Changer 12"; + 14113 = "Music Changer 13"; + 14114 = "Music Changer 14"; + 14115 = "Music Changer 15"; + 14116 = "Music Changer 16"; + 14117 = "Music Changer 17"; + 14118 = "Music Changer 18"; + 14119 = "Music Changer 19"; + 14120 = "Music Changer 20"; + 14121 = "Music Changer 21"; + 14122 = "Music Changer 22"; + 14123 = "Music Changer 23"; + 14124 = "Music Changer 24"; + 14125 = "Music Changer 25"; + 14126 = "Music Changer 26"; + 14127 = "Music Changer 27"; + 14128 = "Music Changer 28"; + 14129 = "Music Changer 29"; + 14130 = "Music Changer 30"; + 14131 = "Music Changer 31"; + 14132 = "Music Changer 32"; + 14133 = "Music Changer 33"; + 14134 = "Music Changer 34"; + 14135 = "Music Changer 35"; + 14136 = "Music Changer 36"; + 14137 = "Music Changer 37"; + 14138 = "Music Changer 38"; + 14139 = "Music Changer 39"; + 14140 = "Music Changer 40"; + 14141 = "Music Changer 41"; + 14142 = "Music Changer 42"; + 14143 = "Music Changer 43"; + 14144 = "Music Changer 44"; + 14145 = "Music Changer 45"; + 14146 = "Music Changer 46"; + 14147 = "Music Changer 47"; + 14148 = "Music Changer 48"; + 14149 = "Music Changer 49"; + 14150 = "Music Changer 50"; + 14151 = "Music Changer 51"; + 14152 = "Music Changer 52"; + 14153 = "Music Changer 53"; + 14154 = "Music Changer 54"; + 14155 = "Music Changer 55"; + 14156 = "Music Changer 56"; + 14157 = "Music Changer 57"; + 14158 = "Music Changer 58"; + 14159 = "Music Changer 59"; + 14160 = "Music Changer 60"; + 14161 = "Music Changer 61"; + 14162 = "Music Changer 62"; + 14163 = "Music Changer 63"; + 14164 = "Music Changer 64"; + + 14165 + { + title = "Custom Music Changer"; + class = "MusicChanger"; + arg0 + { + title = "MUSINFO Track Index"; + } + arg1 + { + title = "MOD Track Order"; + } + } + + 9048 + { + title = "Sound Environment (reverbs)"; + class = "SoundEnvironment"; + arg0 + { + title = "ID (first part)"; + } + arg1 + { + title = "ID (second part)"; + } + } + } + + monsters + { + 888 + { + title = "MBF Helper dog"; + width = 12; + height = 28; + sprite = "internal:dog"; + class = "MBFHelperDog"; + } + } + + bridges + { + color = 8; // Grey + arrow = 0; + title = "Bridges"; + width = 32; + sort = 1; + height = 8; + hangs = 0; + blocking = 0; + error = 1; + sprite = "internal:bridge"; + + 5065 + { + title = "Invisible Bridge, radius 8"; + class = "InvisibleBridge8"; + width = 8; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + } + + 5064 + { + title = "Invisible Bridge, radius 16"; + class = "InvisibleBridge16"; + width = 16; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + } + + 5061 + { + title = "Invisible Bridge, radius 32"; + class = "InvisibleBridge32"; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + } + + 9990 + { + title = "Custom Invisible Bridge"; + class = "InvisibleBridge"; + height = 4; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + } + + 9991 + { + title = "Bridge Custom"; + class = "CustomBridge"; + height = 2; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + arg2 + { + title = "Orbs Amount"; + } + arg3 + { + title = "Rotation Speed and Direction"; + type = 11; + enum + { + 0 = "0: Hexen default"; + 11 = "11: 15 deg. per second"; + 21 = "21: 30 deg. per second"; + 32 = "32: 45 deg. per second"; + 64 = "64: 90 deg. per second"; + 128 = "128: 180 deg. per second"; + 192 = "192: -90 deg. per second"; + 223 = "223: -45 deg. per second"; + 233 = "233: -30 deg. per second"; + 244 = "244: -15 deg. per second"; + } + } + arg4 + { + title = "Rotation Radius"; + type = 11; + enum + { + 0 = "0: Hexen default"; + } + } + } + } + + cameras + { + color = 7; // Light Grey + arrow = 1; + title = "Cameras and Interpolation"; + width = 0; + height = 0; + sort = 1; + hangs = 0; + blocking = 0; + error = 1; + fixedsize = true; + sprite = "internal:camera"; + + 9025 + { + title = "Security Camera"; + class = "SecurityCamera"; + arg0 + { + title = "Pitch"; + } + arg1 + { + title = "Maximum Yaw"; + } + arg2 + { + title = "Cycle Time (octics)"; + type = 11; + enum = "generic_door_delays"; + } + } + + 9073 + { + title = "Aiming Camera"; + class = "AimingCamera"; + arg0 + { + title = "Pitch"; + } + arg1 + { + title = "Max. yaw per second"; + } + arg2 + { + title = "Max. pitch per second"; + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + } + + 9080 + { + title = "Skybox Viewpoint"; + sprite = "internal:SkyboxViewpoint"; + class = "SkyViewpoint"; + arg0 + { + title = "Visibility / 4"; + } + } + + 9081 + { + title = "Skybox Picker"; + sprite = "internal:SkyboxPicker"; + class = "SkyPicker"; + arg0 + { + title = "Skybox Viewpoint Tag"; + type = 14; + } + arg1 + { + title = "Apply to"; + type = 11; + enum + { + 0 = "Floor and Ceiling"; + 1 = "Ceiling"; + 2 = "Floor"; + } + } + } + + 9083 + { + title = "Eternity Skybox Viewpoint"; + sprite = "internal:SkyboxViewpoint"; + class = "SkyCamCompat"; + } + + 9074 + { + title = "Actor Mover"; + sprite = "internal:actormover"; + class = "ActorMover"; + arg0 + { + title = "Interpolation Point Tag"; + type = 14; + } + arg1 + { + title = "Interpolation Point HiTag"; + } + arg2 + { + title = "Options"; + type = 12; + enum + { + 1 = "Linear path"; + 2 = "Use point angle"; + 4 = "Use point pitch"; + 8 = "Face thing / movement direction"; + 128 = "Nonsolid"; + } + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + } + + 9070 + { + title = "Interpolation Point"; + sprite = "internal:InterpolationPoint"; + class = "InterpolationPoint"; + arg0 + { + title = "Pitch"; + } + arg1 + { + title = "Travel Time (otics)"; + type = 11; + enum = "generic_door_delays"; + } + arg2 + { + title = "Hold Time (otics)"; + type = 11; + enum = "generic_door_delays"; + } + arg3 + { + title = "Next Point Tag"; + type = 14; + } + arg4 + { + title = "Next Point HiTag"; + } + } + + 9075 + { + title = "Interpolation Special"; + sprite = "internal:InterpolationSpecial"; + class = "InterpolationSpecial"; + } + + 9072 + { + title = "Moving Camera"; + class = "MovingCamera"; + arg0 + { + title = "Interpolation Point Tag"; + type = 14; + } + arg1 + { + title = "Interpolation Point HiTag"; + } + arg2 + { + title = "Options"; + type = 12; + enum + { + 1 = "Linear path"; + 2 = "Use point angle"; + 4 = "Use point pitch"; + 8 = "Face movement direction"; + 128 = "Show to everyone"; + } + } + arg3 + { + title = "Target Thing Tag"; + type = 14; + } + } + + 9071 + { + title = "Path Follower"; + sprite = "internal:PathFollower"; + class = "PathFollower"; + arg0 + { + title = "Interpolation Point Tag"; + type = 14; + } + arg1 + { + title = "Interpolation Point HiTag"; + } + arg2 + { + title = "Options"; + type = 12; + enum + { + 1 = "Linear path"; + 2 = "Use point angle"; + 4 = "Use point pitch"; + 8 = "Face movement direction"; + } + } + } + + 9047 + { + title = "Patrol Special"; + class = "PatrolSpecial"; + } + } + + sectors + { + color = 7; + arrow = 0; + title = "Sector Actions"; + sort = 1; + width = 10; + height = 20; + hangs = 0; + blocking = 0; + fixedsize = true; + sprite = "internal:action"; + + 9082 + { + title = "Silent Sector"; + sprite = "internal:SilentSector"; + class = "SectorSilencer"; + } + + 9998 + { + title = "Actor enters sector"; + class = "SecActEnter"; + } + + 9989 + { + title = "Actor hits fake floor"; + class = "SecActHitFakeFloor"; + } + + 9996 + { + title = "Actor hits ceiling"; + class = "SecActHitCeil"; + } + + 9999 + { + title = "Actor hits floor"; + class = "SecActHitFloor"; + } + + 9997 + { + title = "Actor leaves sector"; + class = "SecActExit"; + } + + 9982 + { + title = "Eyes above fake ceiling"; + class = "SecActEyesAboveC"; + } + + 9992 + { + title = "Eyes above fake floor"; + class = "SecActEyesSurface"; + } + + 9983 + { + title = "Eyes below fake ceiling"; + class = "SecActEyesBelowC"; + } + + 9993 + { + title = "Eyes below fake floor"; + class = "SecActEyesDive"; + } + + 9995 + { + title = "Player uses sector"; + class = "SecActUse"; + } + + 9994 + { + title = "Player uses sector"; + class = "SecActUseWall"; + } + + 9038 + { + title = "Color Setter"; + class = "ColorSetter"; + arg0 + { + title = "Red"; + default = 255; + } + arg1 + { + title = "Green"; + default = 255; + } + arg2 + { + title = "Blue"; + default = 255; + } + arg3 + { + title = "Desaturation"; + } + } + + 9039 + { + title = "Fade Setter"; + class = "FadeSetter"; + arg0 + { + title = "Red"; + default = 128; + } + arg1 + { + title = "Green"; + default = 128; + } + arg2 + { + title = "Blue"; + default = 128; + } + } + + 9041 + { + title = "Sector Flag Setter"; + class = "SectorFlagSetter"; + arg0 + { + title = "Set Flags"; + type = 12; + enum = "sector_flags"; + } + } + } + + slopes + { + color = 8; // Grey + arrow = 0; + title = "Slopes"; + width = 0; + sort = 1; + height = 0; + hangs = 0; + blocking = 0; + fixedsize = true; + sprite = "internal:slope"; + + 9511 + { + title = "Copy ceiling plane"; + class = "$CopyCeilingPlane"; + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + + 9510 + { + title = "Copy floor plane"; + class = "$CopyFloorPlane"; + arg0 + { + title = "Sector Tag"; + type = 13; + } + } + + 9503 + { + title = "Set ceiling slope"; + class = "$SetCeilingSlope"; + arrow = 1; + arg0 + { + title = "Z-Angle"; + default = 90; + } + } + + 9502 + { + title = "Set floor slope"; + class = "$SetFloorSlope"; + arrow = 1; + arg0 + { + title = "Z-Angle"; + default = 90; + } + } + + 9501 + { + title = "Slope ceiling to here"; + class = "$SlopeCeilingPointLine"; + height = 8; + arg0 + { + title = "Line"; + type = 15; + } + } + + 9500 + { + title = "Slope floor to here"; + class = "$SlopeFloorPointLine"; + height = 4; + arg0 + { + title = "Line"; + type = 15; + } + } + + 1500 + { + title = "Line slope floor"; + class = "$VavoomFloor"; + height = 8; + } + + 1501 + { + title = "Line slope ceiling"; + class = "$VavoomCeiling"; + height = 8; + } + + 1504 + { + title = "Vertex slope floor"; + class = "$VertexFloorZ"; + height = 8; + absolutez = true; + } + + 1505 + { + title = "Vertex slope ceiling"; + class = "$VertexCeilingZ"; + height = 8; + absolutez = true; + } + } + + zdoom + { + color = 7; // Light Grey + arrow = 1; + title = "ZDoom"; + sort = 1; + width = 10; + height = 20; + hangs = 0; + blocking = 0; + fixedsize = true; + sprite = "internal:arrow"; + + 9200 + { + title = "Decal"; + sprite = "internal:Decal"; + class = "Decal"; + arg0 + { + title = "Decal ID"; + } + } + + 9024 + { + title = "Patrol Point"; + sprite = "internal:PathFollower"; + class = "PatrolPoint"; + arg0 + { + title = "Next Patrol Point Tag"; + type = 14; + } + arg1 + { + title = "Delay"; + type = 11; + enum = "delay_seconds_0nodelay"; + } + } + + 9026 + { + title = "Spark"; + sprite = "internal:Sparkle"; + class = "Spark"; + arg0 + { + title = "Particles Amount"; + } + } + + 9040 + { + title = "Map Marker"; + class = "MapMarker"; + arg0 + { + title = "Follow Target Tag"; + type = 14; + } + arg1 + { + title = "Don't Show Until Sector Seen"; + type = 11; + enum = "noyes"; + } + } + + 9045 + { + title = "Water Zone"; + sprite = "internal:DeepWater"; + class = "Waterzone"; + } + + 9046 + { + title = "Secret"; + sprite = "internal:Secret"; + class = "SecretTrigger"; + arg0 + { + title = "Notification Type"; + type = 11; + enum + { + 0 = "Message And Sound"; + 1 = "Message Only"; + 2 = "Sound Only"; + 3 = "None"; + } + } + } + + 9300 + { + title = "Polyobject Anchor"; + sprite = "internal:anchor"; + class = "$PolyAnchor"; + fixedrotation = true; + } + + 9301 + { + title = "Polyobject Start Spot"; + sprite = "internal:anchor"; + class = "$PolySpawn"; + fixedrotation = true; + } + + 9302 + { + title = "Polyobject Start Spot (crush)"; + sprite = "internal:anchor"; + class = "$PolySpawnCrush"; + fixedrotation = true; + } + + 9303 + { + title = "Polyobject Start Spot (hurts to touch)"; + sprite = "internal:anchor"; + class = "$PolySpawnHurt"; + fixedrotation = true; + } + + 9001 + { + title = "Map Spot"; + sprite = "internal:MapSpot"; + class = "MapSpot"; + } + + 9013 + { + title = "Map Spot (gravity)"; + sprite = "internal:MapSpotGravity"; + class = "MapSpotGravity"; + } + + 9076 + { + title = "Hate target"; + sprite = "internal:Target"; + class = "HateTarget"; + } + + 9988 + { + title = "Custom Sprite"; + class = "CustomSprite"; + arg0 + { + title = "BTILxxxx"; + } + arg1 + { + title = "BTILxxxx"; + } + arg2 + { + title = "X Scale (64=100%)"; + default = 64; + } + arg3 + { + title = "Y Scale (64=100%) "; + default = 64; + } + arg4 + { + title = "Flags"; + type = 11; + enum + { + 0 = "Opaque"; + 2 = "Alpha 33%"; + 3 = "Alpha 66%"; + 4 = "Flip horizontally"; + 5 = "Flip vertically"; + } + } + } + } + + portals + { + color = 7; + arrow = 0; + title = "Portals"; + width = 0; + sort = 1; + height = 0; + hangs = 0; + blocking = 0; + fixedsize = true; + + 9077 + { + title = "Upper Sector"; + sprite = "internal:portal_upper"; + class = "UpperStackLookOnly"; + arg0 + { + title = "Flat Opacity"; + default = 128; + } + } + + 9078 + { + title = "Lower Sector"; + sprite = "internal:portal_lower"; + class = "LowerStackLookOnly"; + arg0 + { + title = "Flat Opacity"; + default = 128; + } + } + } +} + + +doom +{ + players + { + blocking = 2; + + 4001 + { + title = "Player 5 start"; + sprite = "PLAYA2A8"; + class = "$Player5Start"; + } + + 4002 + { + title = "Player 6 start"; + sprite = "PLAYA2A8"; + class = "$Player6Start"; + } + + 4003 + { + title = "Player 7 start"; + sprite = "PLAYA2A8"; + class = "$Player7Start"; + } + + 4004 + { + title = "Player 8 start"; + sprite = "PLAYA2A8"; + class = "$Player8Start"; + } + } + + monsters + { + blocking = 2; + + 9037 + { + title = "PR Lost Soul (BETA)"; + width = "16"; + height = "56"; + sprite = "SKULA1"; + class = "BetaSkull"; + } + + 9050 + { + title = "Arachnotron (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 64; + height = 64; + sprite = "BSPIA2A8"; + class = "StealthArachnotron"; + } + + 9051 + { + title = "Archvile (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 20; + sprite = "VILEA2D8"; + class = "StealthArchvile"; + } + + 9052 + { + title = "Baron of Hell (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 24; + height = 64; + sprite = "BOSSA2A8"; + class = "StealthBaron"; + } + + 9053 + { + title = "Cacodemon (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 31; + sprite = "HEADA2A8"; + class = "StealthCacodemon"; + } + + 9054 + { + title = "Chaingunner (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + sprite = "CPOSA2"; + class = "StealthChaingunGuy"; + } + + 9055 + { + title = "Demon (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 30; + sprite = "SARGA2A8"; + class = "StealthDemon"; + } + + 9056 + { + title = "Hell Knight (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 24; + height = 64; + sprite = "BOS2A2C8"; + class = "StealthHellKnight"; + } + + 9057 + { + title = "Imp (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + sprite = "TROOA2A8"; + class = "StealthDoomImp"; + } + + 9058 + { + title = "Mancubus (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + width = 48; + height = 64; + sprite = "FATTC2C8"; + class = "StealthFatso"; + } + + 9059 + { + title = "Revenant (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + sprite = "SKELA2D8"; + class = "StealthRevenant"; + } + + 9060 + { + title = "Former Sergeant (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + sprite = "SPOSA2A8"; + class = "StealthShotgunGuy"; + } + + 9061 + { + title = "Former Human (stealth)"; + renderstyle = "translucent"; + alpha = 0.25f; + sprite = "POSSA2A8"; + class = "StealthZombieMan"; + } + } + + decoration + { + 49 // Hanging victim, twitching (blocking) + { + blocking = 2; + } + + 50 // Hanging victim, arms out (blocking) + { + blocking = 2; + } + + 51 // Hanging victim, 1-legged (blocking) + { + blocking = 2; + } + + 52 // Hanging pair of legs (blocking) + { + blocking = 2; + } + + 53 // Hanging leg (blocking) + { + blocking = 2; + } + + 25 // Impaled human + { + blocking = 2; + } + + 26 // Twitching impaled human + { + blocking = 2; + } + + 27 // Skull on a pole + { + blocking = 2; + } + + 28 // 5 skulls shish kebob + { + blocking = 2; + } + + 29 // Pile of skulls and candles + { + blocking = 2; + } + + 73 // Hanging victim, guts removed + { + blocking = 2; + } + + 74 // Hanging victim, guts and brain removed + { + blocking = 2; + } + + 75 // Hanging torso, looking down + { + blocking = 2; + } + + 76 // Hanging torso, open skull + { + blocking = 2; + } + + 77 // Hanging torso, looking up + { + blocking = 2; + } + + 78 // Hanging torso, brain removed + { + blocking = 2; + } + } + + weapons + { + 5010 + { + title = "Pistol"; + sprite = "internal:ZDoomPistol"; + class = "Pistol"; + } + } + + powerups + { + 2016 + { + title = "Evil Sceptre (BETA)"; + class = "EvilSceptre"; + } + + 2017 + { + title = "Unholy Bible (BETA)"; + class = "UnholyBible"; + } + } + + bridges + { + 118 + { + title = "Hack Bridge"; + class = "ZBridge"; + width = 36; + height = 4; + arg0 + { + title = "Radius"; + type = 23; + } + arg1 + { + title = "Height"; + type = 24; + } + } + } + + marine + { + color = 15; + arrow = 1; + title = "Marines"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + sprite = "PLAYA2A8"; + + 9100 + { + title = "Scripted Marine"; + class = "ScriptedMarine"; + } + + 9101 + { + title = "Marine (fist)"; + class = "MarineFist"; + } + + 9102 + { + title = "Marine (berserk)"; + class = "MarineBerserk"; + } + + 9103 + { + title = "Marine (chainsaw)"; + class = "MarineChainsaw"; + } + + 9104 + { + title = "Marine (pistol)"; + class = "MarinePistol"; + } + + 9105 + { + title = "Marine (shotgun)"; + class = "MarineShotgun"; + } + + 9106 + { + title = "Marine (SSG)"; + class = "MarineSSG"; + } + + 9107 + { + title = "Marine (chaingun)"; + class = "MarineChaingun"; + } + + 9108 + { + title = "Marine (rocket launcher)"; + class = "MarineRocket"; + } + + 9109 + { + title = "Marine (plasma rifle)"; + class = "MarinePlasma"; + } + + 9110 + { + title = "Marine (Railgun)"; + class = "MarineRailgun"; + } + + 9111 + { + title = "Marine (BFG9000)"; + class = "MarineBFG"; + } + } +} + +heretic +{ + players + { + blocking = 2; + + 4001 + { + title = "Player 5 start"; + sprite = "PLAYA2A8"; + class = "$Player5Start"; + } + + 4002 + { + title = "Player 6 start"; + sprite = "PLAYA2A8"; + class = "$Player6Start"; + } + + 4003 + { + title = "Player 7 start"; + sprite = "PLAYA2A8"; + class = "$Player7Start"; + } + + 4004 + { + title = "Player 8 start"; + sprite = "PLAYA2A8"; + class = "$Player8Start"; + } + } + + weapons + { + 9042 + { + title = "Gold Wand"; + sprite = "internal:ZDoomGoldWand"; + class = "GoldWand"; + } + } + + bridges + { + 118 + { + title = "Glitter Bridge"; + class = "Bridge"; + width = "32"; + height = "2"; + } + } +} + +hexen +{ + other + { + // This solves conflict + 9001 = null; // Map Spot + 9013 = null; // Map Spot (Gravity) + // We'll want to use ZDoom's own polyobject numbers + 3000 = null; // Polyobject Anchor + 3001 = null; // Polyobject Start Spot + 3002 = null; // Polyobject Start Spot (crush) + } +} + +strife +{ + // These are useless and not supported in ZDoom + hints + { + title = "Explosives"; + 9001 = null; // Label Hint 1 + 9002 = null; // Label Hint 2 + 9003 = null; // Label Hint 3 + 9004 = null; // Label Hint 4 + 9005 = null; // Label Hint 5 + 9006 = null; // Label Hint 6 + } + + pillars + { + blocking = 2; + } +} + +default +{ + players + { + blocking = 2; + + 4001 + { + title = "Player 5 start"; + sprite = "PLAYA2A8"; + class = "$Player5Start"; + } + + 4002 + { + title = "Player 6 start"; + sprite = "PLAYA2A8"; + class = "$Player6Start"; + } + + 4003 + { + title = "Player 7 start"; + sprite = "PLAYA2A8"; + class = "$Player7Start"; + } + + 4004 + { + title = "Player 8 start"; + sprite = "PLAYA2A8"; + class = "$Player8Start"; + } + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Zandronum_common.cfg b/Build/Configurations/Includes/Zandronum_common.cfg new file mode 100644 index 0000000..b44bb58 --- /dev/null +++ b/Build/Configurations/Includes/Zandronum_common.cfg @@ -0,0 +1,170 @@ +// New things available in all games +zandronum +{ + //dynamic lights + include("GZDoom_things.cfg", "gzdoom_lights") + + // Team player starts + players + { + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 2; + error = 2; + + 5080 + { + title = "Player Blue start (team start)"; + sprite = "PLAYE2E8"; + } + 5081 + { + title = "Player Red start (team start)"; + sprite = "PLAYF2F8"; + } + 5082 + { + title = "Player Temporary start (team start)"; + sprite = "PLAYF1"; + } + } + + flags + { + color = 13; // Light Magenta + arrow = 0; + title = "Flags"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5130 + { + title = "Blue flag"; + sprite = "internal:ZandFlagBlue"; + } + 5131 + { + title = "Red flag"; + sprite = "internal:ZandFlagRed"; + } + 5132 + { + title = "White flag"; + sprite = "internal:ZandFlagWhite"; + } + 5133 + { + title = "Green flag"; + sprite = "internal:ZandFlagGreen"; + } + 5134 + { + title = "Gold flag"; + sprite = "internal:ZandFlagGold"; + } + } +} + +// New things available in Doom, Heretic, Hexen and Strife but not Chex Quest +doomheretichexenstrife +{ + flags + { + color = 13; // Light Magenta + arrow = 0; + title = "Flags"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5025 + { + title = "Red skull"; + sprite = "RSKUB0"; + } + 5026 + { + title = "Blue skull"; + sprite = "BSKUB0"; + } + } +} + + +// New things available in Doom, Heretic and Hexen; but not in Chex or Strife +doomheretichexen +{ + // Zandronum runes + runes + { + color = 9; // Light Blue + arrow = 0; + title = "Runes"; + width = 20; + sort = 1; + height = 45; + hangs = 0; + blocking = 0; + + 5100 + { + title = "Strength"; + sprite = "internal:ZandRuneStrength"; + } + 5101 + { + title = "Rage"; + sprite = "internal:ZandRuneRage"; + } + 5102 + { + title = "Drain"; + sprite = "internal:ZandRuneDrain"; + } + 5103 + { + title = "Spread"; + sprite = "internal:ZandRuneSpread"; + } + 5104 + { + title = "Resistance"; + sprite = "internal:ZandRuneResistance"; + } + 5105 + { + title = "Regeneration"; + sprite = "internal:ZandRuneRegeneration"; + } + 5106 + { + title = "Prosperity"; + sprite = "internal:ZandRuneProsperity"; + } + 5107 + { + title = "Reflection"; + sprite = "internal:ZandRuneReflection"; + } + 5108 + { + title = "High Jumper"; + sprite = "internal:ZandRuneHighJump"; + } + 5109 + { + title = "Haste"; + sprite = "internal:ZandRuneHaste"; + } + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Zandronum_linedefs.cfg b/Build/Configurations/Includes/Zandronum_linedefs.cfg new file mode 100644 index 0000000..1a42e65 --- /dev/null +++ b/Build/Configurations/Includes/Zandronum_linedefs.cfg @@ -0,0 +1,72 @@ +linedeftypes +{ + player + { + title = "Player"; + + 145 + { + title = "Player Set Team"; + id = "Player_SetTeam"; + + arg0 + { + title = "Team"; + type = 11; + enum = "teams"; + } + } + } + + team + { + title = "Team"; + + 152 + { + title = "Player Team Score"; + id = "Team_Score"; + + arg0 + { + title = "Points"; + } + + arg1 + { + title = "Grin"; + type = 11; + enum = "yesno"; + } + } + + 153 + { + title = "Team Give Points"; + id = "Team_GivePoints"; + + arg0 + { + title = "Team"; + type = 11; + enum + { + 0 = "Blue Team"; + 1 = "Red Team"; + } + } + + arg1 + { + title = "Points"; + } + + arg2 + { + title = "Announcer"; + type = 11; + enum = "noyes"; + } + } + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Zandronum_misc.cfg b/Build/Configurations/Includes/Zandronum_misc.cfg new file mode 100644 index 0000000..f829cb9 --- /dev/null +++ b/Build/Configurations/Includes/Zandronum_misc.cfg @@ -0,0 +1,121 @@ +// Miscellaneous Zandronum settings. +// Only contains ST-exclusive stuff, imports the rest from ZDoom configuration. + +enums_doom +{ + spawnthing + { + 155 = "Dark Imp"; + 156 = "Blood Demon"; + 157 = "SSG Guy"; + 158 = "Hectebus"; + 159 = "Cacolantern"; + 163 = "Grenade Launcher"; + 164 = "Railgun"; + 165 = "BFG 10K"; + 166 = "Max Health Bonus"; + 167 = "Max Armor Bonus"; + 168 = "Red Armor"; + 169 = "Turbo Sphere"; + 171 = "Time Freeze Sphere"; + 174 = "Invisibility Sphere"; + 175 = "Doom Sphere"; + 176 = "Random Powerup"; + 177 = "Blue Flag"; + 178 = "Red Flag"; + 179 = "White Flag"; + 180 = "Strength Rune"; + 181 = "Rage Rune"; + 182 = "Drain Rune"; + 183 = "Spread Rune"; + 184 = "Resistance Rune"; + 185 = "Regeneration Rune"; + 186 = "Prosperity Rune"; + 187 = "Reflection Rune"; + 188 = "High Jump Rune"; + 189 = "Haste Rune"; + 214 = "Minigun"; + 215 = "Belphegor"; + 217 = "BFG 10K Shot"; + 218 = "Dark Imp Shot"; + 219 = "Cacolantern Shot"; + 220 = "Abaddon"; + 221 = "Abaddon Shot"; + 222 = "Belphegor Shot"; + } +} + +enums_notdoom +{ + spawnthing + { + 169 = "Turbo Sphere"; + 171 = "Time Freeze Sphere"; + 174 = "Invisibility Sphere"; + 175 = "Doom Sphere"; + 177 = "Blue Flag"; + 178 = "Red Flag"; + 179 = "White Flag"; + 180 = "Strength Rune"; + 181 = "Rage Rune"; + 182 = "Drain Rune"; + 183 = "Spread Rune"; + 184 = "Resistance Rune"; + 185 = "Regeneration Rune"; + 186 = "Prosperity Rune"; + 187 = "Reflection Rune"; + 188 = "High Jump Rune"; + 189 = "Haste Rune"; + 214 = "Minigun"; + 215 = "Belphegor"; + 219 = "Cacolantern Shot"; + 220 = "Abaddon"; + 221 = "Abaddon Shot"; + 222 = "Belphegor Shot"; + } +} + + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + + filter1 + { + name = "Multiplayer"; + category = ""; + type = -1; + fields + { + 512 = true; + 1024 = true; + } + } + +} + +// These things are just way too repetitive +invasionspawnerargs +{ + arg0 + { + title = "Start Spawn Number"; + } + arg1 + { + title = "Spawn Delay"; + } + arg2 + { + title = "Round Spawn Delay"; + } + arg3 + { + title = "First Appear Wave"; + } + arg4 + { + title = "Max Spawn"; + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Zandronum_texturesets.cfg b/Build/Configurations/Includes/Zandronum_texturesets.cfg new file mode 100644 index 0000000..0a4b453 --- /dev/null +++ b/Build/Configurations/Includes/Zandronum_texturesets.cfg @@ -0,0 +1,620 @@ +// Default texture sets for Zandronum +// (these are not required, but useful for new users) +texturesets +{ + + set0 + { + name = "Rock"; + filter0 = "ASHWALL*"; + filter1 = "BSTONE*"; + filter2 = "FLAT1_1"; + filter3 = "FLAT1_2"; + filter4 = "FLAT1_3"; + filter5 = "FLAT10"; + filter6 = "FLAT5_7"; + filter7 = "FLAT5_8"; + filter8 = "FLOOR6_1"; + filter9 = "FLOOR6_2"; + filter10 = "GRNROCK"; + filter11 = "MFLR8_2"; + filter12 = "MFLR8_3"; + filter13 = "MFLR8_4"; + filter14 = "ROCK*"; + filter15 = "SLIME09"; + filter16 = "SLIME10"; + filter17 = "SLIME11"; + filter18 = "SLIME12"; + filter19 = "SP_ROCK1"; + filter20 = "STONE4"; + filter21 = "STONE5"; + filter22 = "STONE6"; + filter23 = "STONE7"; + filter24 = "SW1ROCK"; + filter25 = "SW1STON6"; + filter26 = "SW2ROCK"; + filter27 = "SW2STON6"; + filter28 = "TANROCK*"; + filter29 = "RROCK*"; + } + + + set1 + { + name = "Brick"; + filter0 = "BIGBRIK*"; + filter1 = "BRICK*"; + filter2 = "FLOOR5_4"; + filter3 = "FLAT8"; + filter4 = "GSTFONT1"; + filter5 = "GSTFONT2"; + filter6 = "GSTFONT3"; + filter7 = "GSTGARG"; + filter8 = "GSTLION"; + filter9 = "GSTONE1"; + filter10 = "GSTONE2"; + filter11 = "GSTSATYR"; + filter12 = "GSTVINE1"; + filter13 = "GSTVINE2"; + filter14 = "MFLR8_1"; + filter15 = "RROCK10"; + filter16 = "RROCK14"; + filter17 = "SLIME13"; + filter18 = "SP_DUDE1"; + filter19 = "SP_DUDE2"; + filter20 = "SP_DUDE4"; + filter21 = "SP_DUDE5"; + filter22 = "SP_DUDE7"; + filter23 = "SP_DUDE8"; + filter24 = "SP_HOT1"; + filter25 = "STONE2"; + filter26 = "STONE3"; + filter27 = "SW1GSTON"; + filter28 = "SW1HOT"; + filter29 = "SW2GSTON"; + filter30 = "SW2HOT"; + } + + + set2 + { + name = "Liquids"; + filter0 = "BFALL*"; + filter1 = "BLOOD*"; + filter2 = "DBRAIN*"; + filter3 = "FWATER*"; + filter4 = "LAVA*"; + filter5 = "NUKAGE*"; + filter6 = "SFALL*"; + filter7 = "SLIME01"; + filter8 = "SLIME02"; + filter9 = "SLIME03"; + filter10 = "SLIME04"; + filter11 = "SLIME05"; + filter12 = "SLIME06"; + filter13 = "SLIME07"; + filter14 = "SLIME08"; + } + + + set3 + { + name = "Doors"; + filter0 = "BIGDOOR*"; + filter1 = "DOOR*"; + filter2 = "EXITDOOR"; + filter3 = "SPCDOOR*"; + filter4 = "TEKBRON1"; + filter5 = "TEKBRON2"; + } + + + set4 + { + name = "Steps"; + filter0 = "STEP*"; + } + + + set5 + { + name = "Wood"; + filter0 = "BIGDOOR5"; + filter1 = "BIGDOOR6"; + filter2 = "BIGDOOR7"; + filter3 = "CEIL1_1"; + filter4 = "CEIL1_3"; + filter5 = "FLAT5_1"; + filter6 = "FLAT5_2"; + filter7 = "PAN*"; + filter8 = "SW1PANEL"; + filter9 = "SW1WDMET"; + filter10 = "SW1WOOD"; + filter11 = "SW2PANEL"; + filter12 = "SW2WDMET"; + filter13 = "SW2WOOD"; + filter14 = "WOOD*"; + } + + + set6 + { + name = "Flesh"; + filter0 = "AASHITTY"; + filter1 = "FLAT5_6"; + filter2 = "SFLR6_1"; + filter3 = "SFLR6_4"; + filter4 = "SFLR7_1"; + filter5 = "SFLR7_4"; + filter6 = "SK_LEFT"; + filter7 = "SK_RIGHT"; + filter8 = "SKIN*"; + filter9 = "SKSNAKE1"; + filter10 = "SKSNAKE2"; + filter11 = "SKSPINE1"; + filter12 = "SKSPINE2"; + filter13 = "SLOPPY1"; + filter14 = "SLOPPY2"; + filter15 = "SP_DUDE1"; + filter16 = "SP_DUDE2"; + filter17 = "SP_DUDE4"; + filter18 = "SP_DUDE5"; + filter19 = "SP_DUDE7"; + filter20 = "SP_DUDE8"; + filter21 = "SP_FACE1"; + filter22 = "SP_FACE2"; + filter23 = "SW1SKIN"; + filter24 = "SW1SKULL"; + filter25 = "SW2SKIN"; + filter26 = "SW2SKULL"; + } + + + set7 + { + name = "Switches"; + filter0 = "SW1*"; + filter1 = "SW2*"; + } + + + set8 + { + name = "Marble"; + filter0 = "DEM1_*"; + filter1 = "FLOOR7_2"; + filter2 = "GST*"; + filter3 = "MARB*"; + filter4 = "SP_DUDE1"; + filter5 = "SP_DUDE2"; + filter6 = "SP_DUDE4"; + filter7 = "SP_DUDE5"; + filter8 = "SP_HOT1"; + filter9 = "SW1GSTON"; + filter10 = "SW1MARB"; + filter11 = "SW2GSTON"; + filter12 = "SW2MARB"; + } + + + set9 + { + name = "Lights"; + filter0 = "BRICKLIT"; + filter1 = "BSTONE3"; + filter2 = "CEIL1_2"; + filter3 = "CEIL1_3"; + filter4 = "CEIL3_4"; + filter5 = "CEIL3_6"; + filter6 = "CEIL4_3"; + filter7 = "FLAT17"; + filter8 = "FLAT2"; + filter9 = "FLAT22"; + filter10 = "FLOOR1_7"; + filter11 = "GRNLITE1"; + filter12 = "LITE3"; + filter13 = "LITE5"; + filter14 = "LITEBLU1"; + filter15 = "LITEBLU4"; + filter16 = "TLITE6_1"; + filter17 = "TLITE6_4"; + filter18 = "TLITE6_5"; + filter19 = "TLITE6_6"; + } + + + set10 + { + name = "Metal"; + filter0 = "CEIL1_2"; + filter1 = "METAL*"; + filter2 = "METAL"; + filter3 = "MIDBRN1"; + filter4 = "MIDGRATE"; + filter5 = "SW1GARG"; + filter6 = "SW1LION"; + filter7 = "SW1SATYR"; + filter8 = "SW2GARG"; + filter9 = "SW2LION"; + filter10 = "SW2MET2"; + filter11 = "SW2METAL"; + filter12 = "SW1METAL"; + filter13 = "SW1MET2"; + filter14 = "SW2SATYR"; + filter15 = "WOODMET1"; + filter16 = "WOODMET2"; + filter17 = "WOODMET3"; + filter18 = "WOODMET4"; + filter19 = "SW2WDMET"; + filter20 = "SW1WDMET"; + filter21 = "SUPPORT*"; + } + + + set11 + { + name = "Silver"; + filter0 = "BIGDOOR1"; + filter1 = "DOORSTOP"; + filter2 = "LITEBLU1"; + filter3 = "SHAWN*"; + filter4 = "SILVER*"; + filter5 = "SPCDOOR3"; + filter6 = "STEP4"; + filter7 = "SUPPORT2"; + filter8 = "SW1COMM"; + filter9 = "SW2COMM"; + } + + + set12 + { + name = "Base"; + filter0 = "BIGBRIK*"; + filter1 = "BIGDOOR1"; + filter2 = "BIGDOOR2"; + filter3 = "BIGDOOR3"; + filter4 = "BIGDOOR4"; + filter5 = "BLAKWAL*"; + filter6 = "BRN*"; + filter7 = "BRONZE*"; + filter8 = "BROWN*"; + filter9 = "BROVINE2"; + filter10 = "CEIL3_1"; + filter11 = "CEIL3_2"; + filter12 = "CEIL3_3"; + filter13 = "CEIL3_4"; + filter14 = "CEIL3_5"; + filter15 = "CEIL3_6"; + filter16 = "CEIL4_1"; + filter17 = "CEIL4_2"; + filter18 = "CEIL4_3"; + filter19 = "CEIL5_1"; + filter20 = "CEIL5_2"; + filter21 = "CEMENT*"; + filter22 = "COMP*"; + filter23 = "CONS*"; + filter24 = "CRAT*"; + filter25 = "DOOR1"; + filter26 = "DOOR3"; + filter27 = "DOORBLU"; + filter28 = "DOORRED"; + filter29 = "DOORSTOP"; + filter30 = "DOORTRAK"; + filter31 = "DOORYEL"; + filter32 = "EXITDOOR"; + filter33 = "EXITSIGN"; + filter34 = "EXITSTON"; + filter35 = "FLAT1"; + filter36 = "FLAT1_1"; + filter37 = "FLAT1_2"; + filter38 = "FLAT1_3"; + filter39 = "FLAT14"; + filter40 = "FLAT17"; + filter41 = "FLAT18"; + filter42 = "FLAT19"; + filter43 = "FLAT2"; + filter44 = "FLAT20"; + filter45 = "FLAT22"; + filter46 = "FLAT23"; + filter47 = "FLAT3"; + filter48 = "FLAT4"; + filter49 = "FLAT5"; + filter50 = "FLAT5_4"; + filter51 = "FLAT5_5"; + filter52 = "FLAT8"; + filter53 = "FLAT9"; + filter54 = "FLOOR0_1"; + filter55 = "FLOOR0_2"; + filter56 = "FLOOR0_3"; + filter57 = "FLOOR0_5"; + filter58 = "FLOOR0_6"; + filter59 = "FLOOR0_7"; + filter60 = "FLOOR1_1"; + filter61 = "FLOOR1_6"; + filter62 = "FLOOR1_7"; + filter63 = "FLOOR3_3"; + filter64 = "FLOOR4_1"; + filter65 = "FLOOR4_5"; + filter66 = "FLOOR4_6"; + filter67 = "FLOOR4_8"; + filter68 = "FLOOR5_1"; + filter69 = "FLOOR5_2"; + filter70 = "FLOOR5_3"; + filter71 = "FLOOR5_4"; + filter72 = "FLOOR7_1"; + filter73 = "GRAY*"; + filter74 = "ICKWALL*"; + filter75 = "LITE*"; + filter76 = "METAL"; + filter77 = "METAL1"; + filter78 = "METAL2"; + filter79 = "METAL3"; + filter80 = "METAL4"; + filter81 = "METAL5"; + filter82 = "METAL6"; + filter83 = "METAL7"; + filter84 = "MFLR8_1"; + filter85 = "MIDBARS1"; + filter86 = "MIDBARS3"; + filter87 = "MIDBRONZ"; + filter88 = "MIDSPACE"; + filter89 = "MODWALL*"; + filter90 = "NUKE*"; + filter91 = "PIPES"; + filter92 = "PIPEWAL1"; + filter93 = "PIPEWAL2"; + filter94 = "PLAT1"; + filter95 = "RROCK14"; + filter96 = "SHAWN*"; + filter97 = "SILVER*"; + filter98 = "SLAD*"; + filter99 = "SLIME13"; + filter100 = "SLIME14"; + filter101 = "SLIME15"; + filter102 = "SLIME16"; + filter103 = "SPACE*"; + filter104 = "SPCDOOR*"; + filter105 = "STAR*"; + filter106 = "STEP*"; + filter107 = "STONE"; + filter108 = "STONE2"; + filter109 = "STONE3"; + filter110 = "SUPPORT2"; + filter111 = "SUPPORT3"; + filter112 = "SW1BLUE"; + filter113 = "SW1BRCOM"; + filter114 = "SW1BRIK"; + filter115 = "SW1BRN1"; + filter116 = "SW1BRN2"; + filter117 = "SW1BRNGN"; + filter118 = "SW1BROWN"; + filter119 = "SW1CMT"; + filter120 = "SW1COMM"; + filter121 = "SW1COMP"; + filter122 = "SW1DIRT"; + filter123 = "SW1EXIT"; + filter124 = "SW1GRAY"; + filter125 = "SW1GRAY1"; + filter126 = "SW1MET2"; + filter127 = "SW1METAL"; + filter128 = "SW1MOD1"; + filter129 = "SW1SLAD"; + filter130 = "SW1STARG"; + filter131 = "SW1STON1"; + filter132 = "SW1STON2"; + filter133 = "SW1STONE"; + filter134 = "SW1STRTN"; + filter135 = "SW1TEK"; + filter136 = "SW1VINE"; + filter137 = "SW2BLUE"; + filter138 = "SW2BRCOM"; + filter139 = "SW2BRIK"; + filter140 = "SW2BRN1"; + filter141 = "SW2BRN2"; + filter142 = "SW2BRNGN"; + filter143 = "SW2BROWN"; + filter144 = "SW2CMT"; + filter145 = "SW2COMM"; + filter146 = "SW2COMP"; + filter147 = "SW2DIRT"; + filter148 = "SW2EXIT"; + filter149 = "SW2GRAY"; + filter150 = "SW2GRAY1"; + filter151 = "SW2MET2"; + filter152 = "SW2METAL"; + filter153 = "SW2MOD1"; + filter154 = "SW2SLAD"; + filter155 = "SW2STARG"; + filter156 = "SW2STON1"; + filter157 = "SW2STON2"; + filter158 = "SW2STONE"; + filter159 = "SW2STRTN"; + filter160 = "SW2TEK"; + filter161 = "SW2VINE"; + filter162 = "TEK*"; + filter163 = "TLITE*"; + filter164 = "PIPE1"; + filter165 = "PIPE2"; + filter166 = "PIPE4"; + filter167 = "PIPE6"; + filter168 = "STUCCO*"; + filter169 = "STUCCO"; + } + + + set13 + { + name = "Hell"; + filter0 = "BFALL*"; + filter1 = "BIGDOOR5"; + filter2 = "BIGDOOR6"; + filter3 = "BIGDOOR7"; + filter4 = "BLODRIP*"; + filter5 = "BLOOD1"; + filter6 = "BLOOD2"; + filter7 = "BLOOD3"; + filter8 = "CEIL1_2"; + filter9 = "CEIL1_3"; + filter10 = "CEIL1_1"; + filter11 = "BSTONE1"; + filter12 = "BSTONE2"; + filter13 = "BSTONE3"; + filter14 = "CRACKLE2"; + filter15 = "CRACKLE4"; + filter16 = "DOORBLU2"; + filter17 = "DOORRED2"; + filter18 = "DOORYEL2"; + filter19 = "FIRE*"; + filter20 = "FLAT1_1"; + filter21 = "FLAT1_2"; + filter22 = "FLAT1_3"; + filter23 = "FLAT5_1"; + filter24 = "FLAT5_2"; + filter25 = "FLAT5_3"; + filter26 = "FLAT5_6"; + filter27 = "FLAT5_7"; + filter28 = "FLAT5_8"; + filter29 = "FLOOR1_6"; + filter30 = "FLOOR1_7"; + filter31 = "FLOOR6_1"; + filter32 = "FLOOR6_2"; + filter33 = "GATE*"; + filter34 = "GST*"; + filter35 = "LAVA*"; + filter36 = "MARB*"; + filter37 = "METAL"; + filter38 = "MFLR8_2"; + filter39 = "MFLR8_3"; + filter40 = "MIDBRN1"; + filter41 = "MIDGRATE"; + filter42 = "REDWALL"; + filter43 = "ROCKRED1"; + filter44 = "ROCKRED2"; + filter45 = "ROCKRED3"; + filter46 = "RROCK01"; + filter47 = "RROCK02"; + filter48 = "RROCK03"; + filter49 = "RROCK04"; + filter50 = "RROCK05"; + filter51 = "RROCK06"; + filter52 = "RROCK07"; + filter53 = "RROCK08"; + filter54 = "RROCK09"; + filter55 = "RROCK10"; + filter56 = "RROCK11"; + filter57 = "RROCK12"; + filter58 = "RROCK15"; + filter59 = "SFLR6_1"; + filter60 = "SFLR6_4"; + filter61 = "SFLR7_1"; + filter62 = "SFLR7_4"; + filter63 = "SK_LEFT"; + filter64 = "SK_RIGHT"; + filter65 = "SKIN*"; + filter66 = "SKSNAKE1"; + filter67 = "SKSNAKE2"; + filter68 = "SKSPINE1"; + filter69 = "SKSPINE2"; + filter70 = "SLIME09"; + filter71 = "SLIME10"; + filter72 = "SLIME11"; + filter73 = "SLIME12"; + filter74 = "SLOPPY1"; + filter75 = "SLOPPY2"; + filter76 = "SP_*"; + filter77 = "SUPPORT3"; + filter78 = "SW1GARG"; + filter79 = "SW1GSTON"; + filter80 = "SW1HOT"; + filter81 = "SW1LION"; + filter82 = "SW1MARB"; + filter83 = "SW1SATYR"; + filter84 = "SW1SKIN"; + filter85 = "SW1SKULL"; + filter86 = "SW1WDMET"; + filter87 = "SW1WOOD"; + filter88 = "SW2GARG"; + filter89 = "SW2GSTON"; + filter90 = "SW2HOT"; + filter91 = "SW2LION"; + filter92 = "SW2MARB"; + filter93 = "SW2SATYR"; + filter94 = "SW2SKIN"; + filter95 = "SW2SKULL"; + filter96 = "SW2WDMET"; + filter97 = "SW2WOOD"; + filter98 = "WOOD*"; + } + + + set14 + { + name = "Outdoors"; + filter0 = "ASHWALL*"; + filter1 = "BFALL*"; + filter2 = "FLAT10"; + filter3 = "FLAT5_7"; + filter4 = "FLAT5_8"; + filter5 = "FLOOR6_1"; + filter6 = "FLOOR6_2"; + filter7 = "FWATER*"; + filter8 = "GRASS*"; + filter9 = "LAVA*"; + filter10 = "MFLR8_2"; + filter11 = "MFLR8_3"; + filter12 = "MFLR8_4"; + filter13 = "NUKAGE*"; + filter14 = "ROCK4"; + filter15 = "ROCK5"; + filter16 = "ROCKRED1"; + filter17 = "ROCKRED2"; + filter18 = "ROCKRED3"; + filter19 = "RROCK01"; + filter20 = "RROCK02"; + filter21 = "RROCK03"; + filter22 = "RROCK04"; + filter23 = "RROCK05"; + filter24 = "RROCK06"; + filter25 = "RROCK07"; + filter26 = "RROCK08"; + filter27 = "RROCK16"; + filter28 = "RROCK17"; + filter29 = "RROCK18"; + filter30 = "RROCK19"; + filter31 = "RROCK20"; + filter32 = "SFALL*"; + filter33 = "SLIME01"; + filter34 = "SLIME02"; + filter35 = "SLIME03"; + filter36 = "SLIME04"; + filter37 = "SLIME05"; + filter38 = "SLIME06"; + filter39 = "SLIME07"; + filter40 = "SLIME08"; + filter41 = "SLIME09"; + filter42 = "SLIME10"; + filter43 = "SLIME11"; + filter44 = "SLIME12"; + filter45 = "SP_ROCK1"; + filter46 = "STONE4"; + filter47 = "STONE5"; + filter48 = "STONE6"; + filter49 = "STONE7"; + filter50 = "TANROCK5"; + filter51 = "TANROCK8"; + filter52 = "ZIMMER*"; + } + + + set15 + { + name = "Computer"; + filter0 = "COMP*"; + filter1 = "CONS*"; + filter2 = "SILVER3"; + filter3 = "SPACEW3"; + filter4 = "SW1COMP"; + filter5 = "SW2COMP"; + } +} \ No newline at end of file diff --git a/Build/Configurations/Includes/Zandronum_things.cfg b/Build/Configurations/Includes/Zandronum_things.cfg new file mode 100644 index 0000000..223ebfa --- /dev/null +++ b/Build/Configurations/Includes/Zandronum_things.cfg @@ -0,0 +1,47 @@ +// Zandronum things that aren't found in ZDoom. +// Simple interface file to access the listing easily. +// The things themselves are actually listed in Zandronum_common.cfg. +// Uncomment "Skulltag_things.cfg" lines if you want to use stuff from Skulltag_data.pk3 + +doom +{ + include("Zandronum_common.cfg", "zandronum") + include("Zandronum_common.cfg", "doomheretichexenstrife") + include("Zandronum_common.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "doom") +} + +heretic +{ + include("Zandronum_common.cfg", "zandronum") + include("Zandronum_common.cfg", "doomheretichexenstrife") + include("Zandronum_common.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "raven") + //include("Skulltag_things.cfg", "heretic") +} + +hexen +{ + include("Zandronum_common.cfg", "zandronum") + include("Zandronum_common.cfg", "doomheretichexenstrife") + include("Zandronum_common.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "doomheretichexen") + //include("Skulltag_things.cfg", "raven") + //include("Skulltag_things.cfg", "hexen") +} + +strife +{ + include("Zandronum_common.cfg", "zandronum") + include("Zandronum_common.cfg", "doomheretichexenstrife") + //include("Skulltag_things.cfg", "strife") +} + +default +{ + include("Zandronum_common.cfg", "zandronum") + //include("Skulltag_things.cfg", "skulltag") +} + diff --git a/Build/Configurations/Other Games/Action Doom/GZDoom_Action2Hexen.cfg b/Build/Configurations/Other Games/Action Doom/GZDoom_Action2Hexen.cfg new file mode 100644 index 0000000..1a2d263 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/GZDoom_Action2Hexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Urban Brawl (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); +} diff --git a/Build/Configurations/Other Games/Action Doom/GZDoom_Action2UDMF.cfg b/Build/Configurations/Other Games/Action Doom/GZDoom_Action2UDMF.cfg new file mode 100644 index 0000000..0e0473c --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/GZDoom_Action2UDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Urban Brawl (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); +} diff --git a/Build/Configurations/Other Games/Action Doom/Includes/Action2_misc.cfg b/Build/Configurations/Other Games/Action Doom/Includes/Action2_misc.cfg new file mode 100644 index 0000000..ac67217 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/Includes/Action2_misc.cfg @@ -0,0 +1,13 @@ + +// Basic Doom and Vanilla engine stuff. + +include("Doom_Misc.cfg"); + +// The only difference with Doom +skills +{ + 1 = "Punkass Bitch"; + 2 = "Petty Thug"; + 3 = "Hot Shit"; + 4 = "Badass Mother Fucker"; +} \ No newline at end of file diff --git a/Build/Configurations/Other Games/Action Doom/Includes/Action2_texturesets.cfg b/Build/Configurations/Other Games/Action Doom/Includes/Action2_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Other Games/Action Doom/Includes/Action2_things.cfg b/Build/Configurations/Other Games/Action Doom/Includes/Action2_things.cfg new file mode 100644 index 0000000..fc19a89 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/Includes/Action2_things.cfg @@ -0,0 +1,1224 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 1 + { + title = "Player 1 start"; + sprite = "AVYOU"; + } + 2 + { + title = "Player 2 start"; + sprite = "AVYOU"; + } + 3 + { + title = "Player 3 start"; + sprite = "AVYOU"; + } + 4 + { + title = "Player 4 start"; + sprite = "AVYOU"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "AVDEAD"; + } +} + +bridges +{ + 118 + { + title = "Hack Bridge"; + width = "36"; + height = "4"; + } +} + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + error = 0; + + 14 + { + title = "Teleport Destination"; + sprite = "TFOGB0"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 13379 + { + title = "Leather Jacket Punk Spawner"; + sprite = "AVPUNK4"; + } + 13401 + { + title = "Flynn Haggar (ally)"; + sprite = "AVJESSE"; + } + 13403 + { + title = "Village Randy"; + sprite = "AVVIL1"; + } + 13404 + { + title = "Village Glenn"; + sprite = "AVVIL3"; + } + 13405 + { + title = "Village Felipe"; + sprite = "AVVIL4"; + } + 13406 + { + title = "Village David"; + sprite = "AVVIL2"; + } + 13407 + { + title = "Village Victor"; + sprite = "AVVIL5"; + } + 13408 + { + title = "Village Alex"; + sprite = "AVVIL6"; + } + 13428 + { + title = "Fat Construction Guy"; + sprite = "AVFAT1"; + } + 13429 + { + title = "Purple Jacket Punk Spawner"; + sprite = "AVPUNK1"; + } + 13430 + { + title = "Goth Chick"; + sprite = "AVGOTH1"; + } + 13431 + { + title = "Green Jacket Punk Spawner"; + sprite = "AVPUNK2"; + } + 13432 + { + title = "Yellow Jacket Punk Spawner"; + sprite = "AVPUNK3"; + } + 13439 + { + title = "Tattooed martial artist"; + sprite = "AVTHUG1"; + } + 13442 + { + title = "Redneck"; + sprite = "AVREDNCK"; + } + 13444 + { + title = "Redhead Kylie"; + sprite = "AVCHICK1"; + } + 13446 + { + title = "Afro thug with knife"; + sprite = "AVKTHUG1"; + } + 13447 + { + title = "Bald black thug throwing knives"; + sprite = "AVKTHUG2"; + } + 13459 + { + title = "Darkhead Tina"; + sprite = "AVCHICK2"; + } + 13466 + { + title = "Kickboxing martial artist"; + sprite = "AVBOXER"; + } + 13487 + { + title = "Hugo the Butcher"; + sprite = "AVHUGO"; + } + 13495 + { + title = "Ninja chick"; + sprite = "AVNINJA"; + } + 13498 + { + title = "Blue suit guy"; + sprite = "AVSUIT1"; + } + 13499 + { + title = "Red suit guy"; + sprite = "AVSUIT2"; + } + 13500 + { + title = "Green suit guy"; + sprite = "AVSUIT3"; + } + 13504 + { + title = "Gary Johnson (ally)"; + sprite = "AVGARY"; + } + 13514 + { + title = "Tommy LaCoata"; + sprite = "AVTOMMY"; + } + 13519 + { + title = "Bebop"; + sprite = "AVBEBOP"; + } + 13520 + { + title = "Rocksteady"; + sprite = "AVROCKY"; + } + 13522 + { + title = "Uzi guy"; + sprite = "AVSUIT4"; + } + 13531 + { + title = "Scuba Steve"; + sprite = "AVSCUBA"; + } + 13537 + { + title = "Purple Jacket Punk With Pipe"; + sprite = "AVPUNK1"; + } + 13538 + { + title = "Green Jacket Punk With Pipe"; + sprite = "AVPUNK2"; + } + 13539 + { + title = "Yellow Jacket Punk With Pipe"; + sprite = "AVPUNK3"; + } + 13540 + { + title = "Purple Jacket Punk With Board"; + sprite = "AVPUNK1"; + } + 13541 + { + title = "Green Jacket Punk With Board"; + sprite = "AVPUNK2"; + } + 13542 + { + title = "Yellow Jacket Punk With Board"; + sprite = "AVPUNK3"; + } + 13543 + { + title = "Leather Jacket Punk With Chain"; + sprite = "AVPUNK4"; + } + 13554 + { + title = "Suit Guy Drops Gun"; + sprite = "AVSUIT4"; + } + 13555 + { + title = "Leather Jacket Punk"; + sprite = "AVPUNK4"; + } + 13556 + { + title = "PurpleJacketPunk"; + sprite = "AVPUNK1"; + } + 13557 + { + title = "Green Jacket Punk"; + sprite = "AVPUNK2"; + } + 13558 + { + title = "Yellow Jacket Punk"; + sprite = "AVPUNK3"; + } + 13559 + { + title = "Wolf"; + sprite = "AVWOLF"; + } + 13560 + { + title = "Tree Sniper"; + sprite = "SNPRA0"; + } + + + 13568 + { + title = "Maggie (ally)"; + width = 40; + sprite = "AVWOLF"; + height = 110; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 13371 + { + title = "Green bottle"; + sprite = "AVBOTLE1"; + } + 13433 + { + title = "Sarah (Pistol)"; + sprite = "APISJ0"; + } + 13435 + { + title = "Hefty 2x4"; + sprite = "AVBOARD"; + } + 13436 + { + title = "Rusty old pipe"; + sprite = "AVPIPE"; + } + 13437 + { + title = "Brown bottle"; + sprite = "AVBOTLE3"; + } + 13438 + { + title = "Broken green bottle (invisible)"; + sprite = "AVBOTLE2"; + } + 13440 + { + title = "Chain"; + sprite = "AVCHAIN"; + } + 13441 + { + title = "Switchblade knife"; + sprite = "AVKNIFE"; + } + 13443 + { + title = "Baseball bat"; + sprite = "AVBAT"; + } + 13445 + { + title = "Wrench"; + sprite = "AVWRENCH"; + } + 13460 + { + title = "Broken brown bottle (invisible)"; + sprite = "AVBOTLE4"; + } + 13461 + { + title = "Fire extinguisher"; + sprite = "FEXTA0"; + } + 13467 + { + title = "Katana"; + sprite = "AVSWORD"; + } + 13470 + { + title = "Chainsaw"; + sprite = "JONZH0"; + } + 13494 + { + title = "Shovel"; + sprite = "AVSHOVEL"; + } + 13496 + { + title = "Shurikens"; + sprite = "AVSTAR3"; + } + 13497 + { + title = "Sledge hammer"; + sprite = "AVSLEDGE"; + } + 13503 + { + title = "Cardboard tube"; + sprite = "AVTUBE"; + } + 13521 + { + title = "Bottle of Jack Daniel's"; + sprite = "AVBOTLE5"; + } + 13523 + { + title = "Uzi"; + sprite = "AVUZI"; + } + 13533 + { + title = "Etruscan statue"; + sprite = "ROMNS0"; + } + 13535 + { + title = "Taser"; + sprite = "AVTASER"; + } + 13536 + { + title = "Pool cue"; + sprite = "AVPOOL"; + } + 13547 + { + title = "Blunderbuss"; + sprite = "AVBUSS"; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + height = 16; + blocking = 0; + hangs = 0; + + 13434 + { + title = "Clip of ammo"; + sprite = "AVBUL6"; + } + 13488 + { + title = "Can of gasoline"; + sprite = "GASCA0"; + } + 13489 + { + title = "Small can of gasoline"; + sprite = "SGASA0"; + } + 13567 + { + title = "Cannon ball"; + sprite = "AVBUSS2"; + } + +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Food and drinks"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 13382 + { + title = "Apple"; + sprite = "APLEA0"; + } + 13383 + { + title = "Six-pack of cola"; + sprite = "ESPIA0"; + } + 13384 + { + title = "Turkey dinner"; + sprite = "TRKYA0"; + } + 13411 + { + title = "Hershey bar"; + sprite = "CDY1A0"; + } + 13412 + { + title = "Heath bar"; + sprite = "CDY2A0"; + } + 13413 + { + title = "Fritos"; + sprite = "CDY3A0"; + } + 13414 + { + title = "Can of coke"; + sprite = "POP1A0"; + } + 13415 + { + title = "Can of pepsi"; + sprite = "POP2A0"; + } + 13416 + { + title = "Can of 7up"; + sprite = "POP3A0"; + } + 13448 + { + title = "Hamburger"; + sprite = "BRGRA0"; + } + 13449 + { + title = "Taco"; + sprite = "TACOA0"; + } + 13450 + { + title = "Sandwich"; + sprite = "SWCHA0"; + } + 13451 + { + title = "Pizza pie"; + sprite = "PZA2A0"; + } + +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Loot"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 13385 + { + title = "Bag of cash"; + sprite = "SACKA0"; + } + 13386 + { + title = "Gold ingots"; + sprite = "GOLDA0"; + } + 13452 + { + title = "Rolex"; + sprite = "ROLXA0"; + } + 13453 + { + title = "Necklace"; + sprite = "NECKA0"; + } + 13454 + { + title = "Ring"; + sprite = "RINGA0"; + } + 13455 + { + title = "Silver ingots"; + sprite = "SLVRA0"; + } + 13456 + { + title = "Sunglasses"; + sprite = "RAYBA0"; + } + 13457 + { + title = "Banknotes"; + sprite = "MONYA0"; + } + 13458 + { + title = "Action Comic"; + sprite = "ACMCA0"; + } + 13468 + { + title = "Diamond"; + sprite = "DIMDA0"; + } + 13491 + { + title = "TV"; + sprite = "LOT1A0"; + } + 13492 + { + title = "Stereo"; + sprite = "LOT2A0"; + } + 13493 + { + title = "Radio"; + sprite = "BARTA0"; + } + 13502 + { + title = "River City Ransom coins"; + sprite = "RCR2A0"; + } + 13505 + { + title = "ActionDoom"; + sprite = "ACTNA0"; + } + 13506 + { + title = "Pitfall Gold"; + sprite = "PITFA0"; + } + 13507 + { + title = "Daikatana"; + sprite = "DAIKA0"; + } + 13527 + { + title = "Stapler"; + sprite = "OFS2A0"; + } + 13534 + { + title = "Necronomicon"; + sprite = "NECRA0"; + } + 13550 + { + title = "Romero BobbleHead"; + sprite = "BOBLA0"; + } + 13551 + { + title = "Mordeth's computer"; + sprite = "MORDA0"; + } + 13553 + { + title = "Windows source code"; + sprite = "XPCDA0"; + } + +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Interactive items"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 2; + error = 2; + + 13370 + { + title = "Trash can"; + sprite = "TRASA0"; + height = 48; + } + 13374 + { + title = "Basket ball"; + sprite = "BBALA0"; + width = 12; + height = 24; + } + 13377 + { + title = "Tire stack"; + sprite = "TIREB0"; + width = 12; + height = 56; + } + 13380 + { + title = "Fire hydrant"; + sprite = "HYDRA0"; + width = 12; + height = 42; + } + 13392 + { + title = "Cigarette trash can"; + sprite = "ASHCA0"; + height = 48; + } + 13395 + { + title = "Bad clipping sign"; + sprite = "SIGNA0"; + width = 12; + height = 32; + } + 13397 + { + title = "Chandelier"; + sprite = "CHNDA0"; + height = 70; + } + 13402 + { + title = "Disco ball"; + sprite = "GLOBA0"; + height = 70; + } + 13462 + { + title = "Trash bin"; + sprite = "TRASF0"; + } + 13516 + { + title = "Blue trash can"; + sprite = "TRASL0"; + } + 13552 + { + title = "Trash can with key"; + sprite = "TRASA0"; + } +} + +npcs +{ + color = 3; // Cyan + arrow = 0; + title = "Billboard NPCs"; + width = 12; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 13381 + { + title = "Jerry Marconi"; + sprite = "HOMOA0"; + } + 13394 + { + title = "Pigeon"; + sprite = "PIGNA0"; + } + 13399 + { + title = "Sir Elton John"; + sprite = "ELTNA0"; + } + 13400 + { + title = "RocketMan"; + sprite = "ELTNB0"; + } + 13410 + { + title = "Rasta man"; + sprite = "RASTA2A8"; + } + 13420 + { + title = "Bickle"; + sprite = "BICKA2A8"; + } + 13513 + { + title = "Peter Crisp with daughter"; + sprite = "DICKB0"; + } + 13515 + { + title = "Dead Gary Johnson"; + sprite = "GARYM0"; + } + 13546 + { + title = "Chopper gun"; + sprite = "ABULA0"; + } + 13548 + { + title = "Your daughter"; + sprite = "GIRLA0"; + } + 13549 + { + title = "Gary Johnson"; + sprite = "GARYO0"; + } + +} + +specialeffects +{ + color = 3; // Cyan + arrow = 0; + title = "Special effects"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 10102 + { + title = "Blood dropper"; + sprite = "BLD1Y0"; + } + 13524 + { + title = "Dojo debris spawner"; + sprite = "CHP8A0"; + } + 13532 + { + title = "Splash spawner"; + sprite = "SPLSA0"; + } +} + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 48; + hangs = 0; + blocking = 1; + error = 2; + + 13375 + { + title = "Traffic cone"; + sprite = "CONEA0"; + width = 12; + height = 32; + } + 13376 + { + title = "Tire"; + sprite = "TIREA0"; + width = 12; + height = 16; + } + 13378 + { + title = "Invisible wall"; + width = 16; + height = 48; + } + 13396 + { + title = "Leafy plant"; + sprite = "PLNTA0"; + width = 8; + height = 48; + } + 13409 + { + title = "Leafy plant (hang)"; + sprite = "PLNTA0"; + width = 8; + height = 48; + } + 13418 + { + title = "Birch tree"; + sprite = "ACTRA0"; + width = 24; + height = 72; + } + 13419 + { + title = "Parking meter"; + sprite = "PMTRA0"; + width = 8; + heigt = 56; + } + 13421 + { + title = "Umbrella"; + sprite = "UMBRA0"; + width = 8; + height = 56; + } + 13464 + { + title = "Water cooler tank"; + sprite = "COOLA0"; + width = 12; + height = 42; + } + 13465 + { + title = "Water cooler tank outline"; + sprite = "COOLB0"; + width = 12; + height = 42; + } + 13480 + { + title = "Large rock #1"; + sprite = "RCK1A0"; + width = 24; + height = 30; + } + 13481 + { + title = "Large rock #2"; + sprite = "RCK2A0"; + width = 24; + height = 30; + } + 13482 + { + title = "Large rock #3"; + sprite = "RCK3A0"; + width = 24; + height = 30; + } + 13525 + { + title = "Marble statue"; + sprite = "STATA0"; + width = 25; + height = 80; + } + 13544 + { + title = "Wine cooler tank"; + sprite = "WINEA0"; + width = 12; + height = 42; + } + +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 13389 + { + title = "Light post"; + sprite = "LITEA0"; + } + 13390 + { + title = "Light corona"; + sprite = "GLOWA0"; + } + 13398 + { + title = "Light bulb"; + sprite = "BULBA1"; + } + 13422 + { + title = "Chinese lantern (red)"; + sprite = "LMP1A0"; + } + 13423 + { + title = "Chinese lantern (blue)"; + sprite = "LMP2A0"; + } + 13424 + { + title = "Chinese lantern (green)"; + sprite = "LMP3A0"; + } + 13490 + { + title = "Swinging light bulb"; + sprite = "BULBE1"; + } + +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 13372 + { + title = "Cocktail glass"; + sprite = "DNR2A0"; + } + 13373 + { + title = "Mug of beer"; + sprite = "DNR3A0"; + } + 13387 + { + title = "Crumpled paper trash"; + sprite = "TRSHA0"; + } + 13388 + { + title = "Newspaper"; + sprite = "NEWSA0"; + } + 13391 + { + title = "Bust"; + sprite = "BUSTA0"; + } + 13393 + { + title = "Cigarette"; + sprite = "CIGGA0"; + } + 13417 + { + title = "Pot plant (tiny)"; + sprite = "PLNTA0"; + } + 13425 + { + title = "Fruit pile (white)"; + sprite = "FRT1A0"; + width = 8; + height = 56; + } + 13426 + { + title = "Fruit Pile (red)"; + sprite = "FRT2A0"; + width = 8; + height = 56; + } + 13427 + { + title = "Fruit Pile (green)"; + sprite = "FRT3A0"; + width = 8; + height = 56; + } + 13463 + { + title = "Empty fire extinguisher"; + sprite = ""; + } + 13469 + { + title = "Stone debris (temporary)"; + sprite = ""; + } + 13471 + { + title = "Leafy blue bush"; + sprite = "ATR2A0"; + } + 13472 + { + title = "Dead blue bush"; + sprite = "ATR2A0"; + } + 13473 + { + title = "Tuft of blue grass"; + sprite = "GRS1A0"; + } + 13474 + { + title = "Tuft of blue grass with red flower"; + sprite = "GRS2A0"; + } + 13475 + { + title = "Big mushroom"; + sprite = "MSH1A0"; + } + 13476 + { + title = "Small mushroom"; + sprite = "MSH2A0"; + } + 13477 + { + title = "Reeds"; + sprite = "GRS3A0"; + } + 13478 + { + title = "Tall grass"; + sprite = "GRS4A0"; + } + 13479 + { + title = "Big tuft of blue grass"; + sprite = "GRS5A0"; + } + 13483 + { + title = "Small rock #1"; + sprite = "RCK120"; + } + 13484 + { + title = "Small rock #2"; + sprite = "RCK230"; + } + 13501 + { + title = "River City Ransom Alex"; + sprite = "RCR1A0"; + } + 13508 + { + title = "Meathook"; + sprite = "HOOKA0"; + } + 13509 + { + title = "Leg on meathook"; + sprite = "BOD1A0"; + } + 13510 + { + title = "Body on meathook"; + sprite = "BOD2A0"; + } + 13511 + { + title = "Torso on meathook"; + sprite = "BOD3A0"; + } + 13517 + { + title = "Blue trash"; + sprite = "TRSHB0"; + } + 13518 + { + title = "Blue newspaper"; + sprite = "NEWSB0"; + } + 13526 + { + title = "Office chair"; + sprite = "OFS1A0"; + } + 13528 + { + title = "Cell phone"; + sprite = "OFS3A0"; + } + 13529 + { + title = "Microscope"; + sprite = "OFS4A0"; + } + 13530 + { + title = "Pencil"; + sprite = "OFS5A0"; + } +} diff --git a/Build/Configurations/Other Games/Action Doom/Includes/Game_Action2.cfg b/Build/Configurations/Other Games/Action Doom/Includes/Game_Action2.cfg new file mode 100644 index 0000000..0444ba6 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/Includes/Game_Action2.cfg @@ -0,0 +1,29 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + + // Decorate actors to include depending on actor game property + decorategames = "action2"; // Doesn't actually exist, but used to prevent loading Doom actors when loading zdoom.pk3 + + // Skill levels + skills + { + include("Action2_misc.cfg", "skills"); + } + + // Door making + makedoortrack = "BLACK"; + + // Default thing filters + // (these are not required, just useful for new users) + /*thingsfilters + { + include("Doom_misc.cfg", "thingsfilters"); + }*/ + + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Action2_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Other Games/Action Doom/ZDoom_Action2Hexen.cfg b/Build/Configurations/Other Games/Action Doom/ZDoom_Action2Hexen.cfg new file mode 100644 index 0000000..f9eae46 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/ZDoom_Action2Hexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Urban Brawl (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); +} diff --git a/Build/Configurations/Other Games/Action Doom/ZDoom_Action2UDMF.cfg b/Build/Configurations/Other Games/Action Doom/ZDoom_Action2UDMF.cfg new file mode 100644 index 0000000..d272802 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/ZDoom_Action2UDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Urban Brawl (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); +} diff --git a/Build/Configurations/Other Games/Action Doom/Zandronum_Action2Hexen.cfg b/Build/Configurations/Other Games/Action Doom/Zandronum_Action2Hexen.cfg new file mode 100644 index 0000000..5e58d87 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/Zandronum_Action2Hexen.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Urban Brawl (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Action Doom/Zandronum_Action2UDMF.cfg b/Build/Configurations/Other Games/Action Doom/Zandronum_Action2UDMF.cfg new file mode 100644 index 0000000..d2256f9 --- /dev/null +++ b/Build/Configurations/Other Games/Action Doom/Zandronum_Action2UDMF.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Urban Brawl (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Urban Brawl games +include("Includes\\Game_Action2.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Action2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_action2"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3Hexen.cfg b/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3Hexen.cfg new file mode 100644 index 0000000..f0f3b8c --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3Hexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Chex Quest 3 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3UDMF.cfg b/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3UDMF.cfg new file mode 100644 index 0000000..fdbc101 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/GZDoom_Chex3UDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Chex Quest 3 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/Includes/Chex3_texturesets.cfg b/Build/Configurations/Other Games/Chex Quest 3/Includes/Chex3_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Other Games/Chex Quest 3/Includes/Chex3_things.cfg b/Build/Configurations/Other Games/Chex Quest 3/Includes/Chex3_things.cfg new file mode 100644 index 0000000..7b3c008 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/Includes/Chex3_things.cfg @@ -0,0 +1,759 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 1 + { + title = "Player 1 start"; + sprite = "PLAYA2A8"; + } + 2 + { + title = "Player 2 start"; + sprite = "PLAYA2A8"; + } + 3 + { + title = "Player 3 start"; + sprite = "PLAYA2A8"; + } + 4 + { + title = "Player 4 start"; + sprite = "PLAYA2A8"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYF1"; + } +} + + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + error = 0; + + 14 + { + title = "Teleport Destination"; + sprite = "TFOGB0"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 3004 + { + title = "Flemoidus Commonus"; + sprite = "POSSA2A8"; + } + + + 9 + { + title = "Flemoidus Bipedicus"; + sprite = "SPOSA2A8"; + } + + + 3001 + { + title = "Armored Flemoidus Bipedicus"; + sprite = "TROOA2A8"; + } + + + 3002 + { + title = "Flemoidus Stridicus"; + sprite = "SARGA2A8"; + } + + 58 + { + title = "Flemoidus Cycloptis Commonus"; + sprite = "CYCLA2A8"; + } + + + 3006 + { + title = "Flem Mine"; + sprite = "SKULA8A2"; + } + + + 3003 + { + title = "Flemoidus Maximus"; + sprite = "BOSSA2A8"; + } + + 3005 + { + title = "Super Cycloptis"; + sprite = "HEADA2A8"; + } + + 69 + { + title = "The Flembrane"; + sprite = "FLMBA2A8"; + } + + 9050 + { + title = "Flemoidus Larva"; + sprite = "LRVAA2A8"; + } + + 9057 + { + title = "Quadrumpus"; + sprite = "QUADA2A8"; + } + + 16 + { + title = "Lord Snotfolus"; + sprite = "CYBRA2A8"; + } + + 7 + { + title = "Flembomination"; + sprite = "SPIDA2A8"; + } + + 2035 + { + title = "Flemoid power strand"; + sprite = "BAR2A0"; + } + +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 82 + { + title = "Super Large Zorcher"; + sprite = "SGN2A0"; + } + 2005 + { + title = "Super Bootspork"; + sprite = "CSAWA0"; + } + 2001 + { + title = "Large Zorcher"; + sprite = "SHOTA0"; + } + 2002 + { + title = "Rapid Zorcher"; + sprite = "MGUNA0"; + } + 2003 + { + title = "Zorch Propulsor"; + sprite = "LAUNA0"; + } + 2004 + { + title = "Phasing Zorcher"; + sprite = "PLASA0"; + } + 2006 + { + title = "LAZ Device"; + sprite = "BFUGA0"; + height = 30; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + height = 16; + blocking = 0; + hangs = 0; + + 2007 + { + title = "Mini Zorcher Recharge"; + sprite = "CLIPA0"; + } + 2008 + { + title = "Large Zorcher Recharge"; + sprite = "SHELA0"; + } + 2010 + { + title = "Zorch propulsor recharge"; + sprite = "ROCKA0"; + height = 25; + } + 2047 + { + title = "Phasing zorcher recharge"; + sprite = "CELLA0"; + } + 2048 + { + title = "Mini zorcher pack"; + sprite = "AMMOA0"; + } + 2049 + { + title = "Large zorcher pack"; + sprite = "SBOXA0"; + } + 2046 + { + title = "Zorch propulsor pack"; + sprite = "BROKA0"; + width = 30; + height = 25; + } + 17 + { + title = "Phasing zorcher pack"; + sprite = "CELPA0"; + height = 25; + } + 8 + { + title = "Zorchpack"; + sprite = "BPAKA0"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2011 + { + title = "Bowl of fruits"; + sprite = "STIMA0"; + } + 2012 + { + title = "Bowl of Vegetables"; + sprite = "MEDIA0"; + height = 25; + } + 2014 + { + title = "Glass of water"; + sprite = "BON1A0"; + } + 2015 + { + title = "Slime repellent"; + sprite = "BON2A0"; + } + 2018 + { + title = "Chex Armor"; + sprite = "ARM1A0"; + } + 2019 + { + title = "Super Chex Armor"; + sprite = "ARM2A0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2013 + { + title = "Supercharge Breakfast"; + sprite = "SOULA0"; + height = 45; + } + 2025 + { + title = "Slime-Proof Suit"; + sprite = "SUITA0"; + height = 60; + } + 2026 + { + title = "Computer map"; + sprite = "PMAPA0"; + height = 35; + } + 2045 + { + title = "Ultra goggles"; + sprite = "PVISA0"; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5 + { + title = "Blue keycard"; + sprite = "BKEYA0"; + } + 13 + { + title = "Red keycard"; + sprite = "RKEYA0"; + } + 6 + { + title = "Yellow keycard"; + sprite = "YKEYA0"; + } + 38 + { + title = "Red flemkey"; + sprite = "RSKUA0"; + } + 39 + { + title = "Yellow flemkey"; + sprite = "YSKUA0"; + } + 40 + { + title = "Blue flemkey"; + sprite = "BSKUA0"; + } +} + + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 47 + { + title = "Pine tree"; + sprite = "SMITA0"; + } + 54 + { + title = "Spaceship"; + sprite = "TRE2A0"; + } + 32 + { + title = "Barrel"; + sprite = "COL3A0"; + } + 30 + { + title = "Pine tree with slime"; + sprite = "COL1A0"; + } + 37 + { + title = "Flag on a pole"; + sprite = "COL6A0"; + height = 128; + } + 33 + { + title = "Mine cart"; + sprite = "COL4A0"; + height = 30; + } + 43 + { + title = "Flemoid pod"; + sprite = "TRE1A0"; + } + 44 + { + title = "Slime fountain"; + sprite = "TBLUA0"; + height = 48; + } + 48 + { + title = "Slimy statue"; + sprite = "ELECA0"; + height = 52; + } + 31 + { + title = "Grey rock"; + sprite = "COL2A0"; + } + 25 + { + title = "Globe stand"; + sprite = "POL1A0"; + } + 18 + { + title = "Model rocket"; + sprite = "MROCA0"; + } + 19 + { + title = "Radar dish"; + sprite = "RADAA0"; + } + 85 + { + title = "Map room point light"; + sprite = "TLMPA0"; + } + 86 + { + title = "Slimy urn"; + sprite = "TLP2A0"; + } + 36 + { + title = "Oxygen tank"; + sprite = "COL5A0"; + } + 42 + { + title = "Lab coil"; + sprite = "FSKUA0"; + } + 49 + { + title = "Stool"; + sprite = "GOR1A0"; + } + 50 + { + title = "Hydroponic plant"; + sprite = "GOR6A0"; + } + 51 + { + title = "Big bowl sculpture"; + sprite = "BOWLA0"; + } + 53 + { + title = "Bazoik cart"; + sprite = "COL7A0"; + } + 27 + { + title = "Slimy meteor"; + sprite = "POL4A0"; + } + 29 + { + title = "Computer monitor"; + sprite = "POL3A0"; + } + 73 + { + title = "Pillar"; + sprite = "HDB1A0"; + } + 74 + { + title = "Stalagmite"; + sprite = "HDB2A0"; + } + 76 + { + title = "Triceratops skeleton"; + sprite = "DINOA0"; + } + 77 + { + title = "T-rex skeleton"; + sprite = "DINOB0"; + } + 9051 + { + title = "Statue of David"; + sprite = "STTUA0"; + } + 9052 + { + title = "Statue of the Thinker"; + sprite = "STTUB0"; + } + 9053 + { + title = "Statue of Ramses"; + sprite = "STTUC0"; + } + 9054 + { + title = "Statue of King Tut"; + sprite = "STTUD0"; + } + 9055 + { + title = "Statue of the Chex Warrior"; + sprite = "STTUE0"; + } + 9056 + { + title = "Statue of a spoon"; + sprite = "STTUF0"; + } + 9058 + { + title = "Banana tree"; + sprite = "TRE3A0"; + } + 9059 + { + title = "Beech tree"; + sprite = "TRE4A0"; + } + 9060 + { + title = "Apple tree"; + sprite = "TRE5A0"; + } + 9061 + { + title = "Orange tree"; + sprite = "TRE6A0"; + } + 55 + { + title = "Holographic globe projector"; + sprite = "SMBTA0"; + } + +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 2028 + { + title = "Landing light"; + sprite = "COLUA0"; + height = 48; + } + 56 + { + title = "Flemoid glowing shroom #2"; + sprite = "SMGTA0"; + } + 45 + { + title = "Flemoid glowing shroom #1"; + sprite = "TGRNA0"; + } + 46 + { + title = "Chandelier"; + sprite = "TREDA0"; + } + 57 + { + title = "Brasero"; + sprite = "SMRTA0"; + } + 34 + { + title = "Short lamp"; + sprite = "CANDA0"; + } + 35 + { + title = "Street light"; + sprite = "CBRAA0"; + } +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 41 + { + title = "Chemical burner"; + sprite = "CEYEA0"; + height = 25; + } + 59 + { + title = "Hanging plant #1"; + sprite = "GOR2A0"; + } + 60 + { + title = "Ceiling slime"; + sprite = "GOR4A0"; + } + 61 + { + title = "Hanging plant #2"; + sprite = "GOR3A0"; + } + 62 + { + title = "Hanging pots"; + sprite = "GOR5A0"; + } + 63 + { + title = "Cave bat"; + sprite = "A0"; + } + 28 + { + title = "Phone"; + sprite = "POL2A0"; + } + 75 + { + title = "Stalactite"; + sprite = "HDB3A0"; + } + 78 + { + title = "Flower #1"; + sprite = "FLW1A0"; + } + 79 + { + title = "Flower #2"; + sprite = "FLW2A0"; + } + 80 + { + title = "Chemical Beaker"; + sprite = "POL5A0"; + } + 81 + { + title = "Small bush"; + sprite = "BRS1A0"; + } +} + +civilians +{ + color = 4; // Red + arrow = 0; + title = "Civilians"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 70 + { + title = "Captive #1"; + sprite = "FCANA0"; + } + 26 + { + title = "Captive #2"; + sprite = "POL6A0"; + } + 52 + { + title = "Captive #3"; + sprite = "POL7A0"; + } +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/Includes/Game_Chex3.cfg b/Build/Configurations/Other Games/Chex Quest 3/Includes/Game_Chex3.cfg new file mode 100644 index 0000000..ab06f56 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/Includes/Game_Chex3.cfg @@ -0,0 +1,28 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + + // Decorate actors to include depending on actor game property + decorategames = "chex"; + + // Skill levels + skills + { + include("Chex_misc.cfg", "skills"); + } + + // Door making + makedoortrack = "COMPSTA1"; + + // Default thing filters + // (these are not required, just useful for new users) + /*thingsfilters + { + include("Doom_misc.cfg", "thingsfilters"); + }*/ + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Chex3_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3Hexen.cfg b/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3Hexen.cfg new file mode 100644 index 0000000..e827f04 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3Hexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Chex Quest 3 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3UDMF.cfg b/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3UDMF.cfg new file mode 100644 index 0000000..53e5ac9 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/ZDoom_Chex3UDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Chex Quest 3 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3Hexen.cfg b/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3Hexen.cfg new file mode 100644 index 0000000..cdab348 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3Hexen.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Chex Quest 3 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3UDMF.cfg b/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3UDMF.cfg new file mode 100644 index 0000000..2a0672c --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest 3/Zandronum_Chex3UDMF.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Chex Quest 3 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex3_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexDoom.cfg b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexDoom.cfg new file mode 100644 index 0000000..6b4e4cd --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexDoom.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Chex Quest 1 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexHexen.cfg b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexHexen.cfg new file mode 100644 index 0000000..112b9da --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexHexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Chex Quest 1 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexUDMF.cfg b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexUDMF.cfg new file mode 100644 index 0000000..61c47c6 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/GZDoom_ChexUDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Chex Quest 1 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/Includes/Chex_misc.cfg b/Build/Configurations/Other Games/Chex Quest/Includes/Chex_misc.cfg new file mode 100644 index 0000000..2004114 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Includes/Chex_misc.cfg @@ -0,0 +1,14 @@ + +// Basic Doom and Vanilla engine stuff. + +include("Doom_Misc.cfg"); + +// The only difference with Doom +skills +{ + 1 = "Easy does it"; + 2 = "Not so sticky"; + 3 = "Gobs of goo"; + 4 = "Extreme ooze"; + 5 = "Super slimey!"; +} \ No newline at end of file diff --git a/Build/Configurations/Other Games/Chex Quest/Includes/Chex_texturesets.cfg b/Build/Configurations/Other Games/Chex Quest/Includes/Chex_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Other Games/Chex Quest/Includes/Chex_things.cfg b/Build/Configurations/Other Games/Chex Quest/Includes/Chex_things.cfg new file mode 100644 index 0000000..6046e2a --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Includes/Chex_things.cfg @@ -0,0 +1,507 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 1 + { + title = "Player 1 start"; + sprite = "PLAYA2A8"; + } + 2 + { + title = "Player 2 start"; + sprite = "PLAYA2A8"; + } + 3 + { + title = "Player 3 start"; + sprite = "PLAYA2A8"; + } + 4 + { + title = "Player 4 start"; + sprite = "PLAYA2A8"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYF1"; + } +} + + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + error = 0; + + 14 + { + title = "Teleport Destination"; + sprite = "TFOGB0"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 3004 + { + title = "Flemoidus Commonus"; + sprite = "POSSA2A8"; + } + + + 9 + { + title = "Flemoidus Bipedicus"; + sprite = "SPOSA2A8"; + } + + + 3001 + { + title = "Armored Flemoidus Bipedicus"; + sprite = "TROOA2A8"; + } + + + 3002 + { + title = "Flemoidus Cycloptis Commonus"; + width = 30; + sprite = "SARGA2A8"; + } + + + 3006 + { + title = "Chex Soul"; + width = 16; + sprite = "SKULA8A2"; + } + + + 3003 + { + title = "Flembrane"; + width = 24; + sprite = "BOSSA2A8"; + height = 64; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 82 + { + title = "Super Large Zorcher"; + sprite = "SGN2A0"; + } + 2005 + { + title = "Super Bootspork"; + sprite = "CSAWA0"; + } + 2001 + { + title = "Large Zorcher"; + sprite = "SHOTA0"; + } + 2002 + { + title = "Rapid Zorcher"; + sprite = "MGUNA0"; + } + 2003 + { + title = "Zorch Propulsor"; + sprite = "LAUNA0"; + } + 2004 + { + title = "Phasing Zorcher"; + sprite = "PLASA0"; + } + 2006 + { + title = "LAZ Device"; + sprite = "BFUGA0"; + height = 30; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + height = 16; + blocking = 0; + hangs = 0; + + 2007 + { + title = "Mini Zorcher Recharge"; + sprite = "CLIPA0"; + } + 2008 + { + title = "Large Zorcher Recharge"; + sprite = "SHELA0"; + } + 2010 + { + title = "Zorch propulsor recharge"; + sprite = "ROCKA0"; + height = 25; + } + 2047 + { + title = "Phasing zorcher recharge"; + sprite = "CELLA0"; + } + 2048 + { + title = "Mini zorcher pack"; + sprite = "AMMOA0"; + } + 2049 + { + title = "Large zorcher pack"; + sprite = "SBOXA0"; + } + 2046 + { + title = "Zorch propulsor pack"; + sprite = "BROKA0"; + width = 30; + height = 25; + } + 17 + { + title = "Phasing zorcher pack"; + sprite = "CELPA0"; + height = 25; + } + 8 + { + title = "Zorchpack"; + sprite = "BPAKA0"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2011 + { + title = "Bowl of fruits"; + sprite = "STIMA0"; + } + 2012 + { + title = "Bowl of Vegetables"; + sprite = "MEDIA0"; + height = 25; + } + 2014 + { + title = "Glass of water"; + sprite = "BON1A0"; + } + 2015 + { + title = "Slime repellent"; + sprite = "BON2A0"; + } + 2018 + { + title = "Chex Armor"; + sprite = "ARM1A0"; + } + 2019 + { + title = "Super Chex Armor"; + sprite = "ARM2A0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2013 + { + title = "Supercharge Breakfast"; + sprite = "SOULA0"; + height = 45; + } + 2025 + { + title = "Slime-Proof Suit"; + sprite = "SUITA0"; + height = 60; + } + 2026 + { + title = "Computer map"; + sprite = "PMAPA0"; + height = 35; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5 + { + title = "Blue keycard"; + sprite = "BKEYA0"; + } + 13 + { + title = "Red keycard"; + sprite = "RKEYA0"; + } + 6 + { + title = "Yellow keycard"; + sprite = "YKEYA0"; + } +} + + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 47 + { + title = "Apple tree"; + sprite = "SMITA0"; + height = 92; + } + 54 + { + title = "Banana tree"; + width = 32; + sprite = "TRE2A0"; + height = 108; + } + 32 + { + title = "Cavern column"; + sprite = "COL3A0"; + height = 128; + } + 30 + { + title = "Cavern stalagmite"; + sprite = "COL1A0"; + height = 60; + } + 37 + { + title = "Flag on a pole"; + sprite = "COL6A0"; + height = 128; + } + 35 + { + title = "Gas tank"; + sprite = "CBRAA0"; + height = 36; + } + 33 + { + title = "Bazoik cart"; + sprite = "COL4A0"; + height = 30; + } + 43 + { + title = "Orange tree"; + sprite = "TRE1A0"; + height = 92; + } + 44 + { + title = "Slime fountain"; + sprite = "TBLUA0"; + height = 48; + } + 48 + { + title = "Spaceship"; + sprite = "ELECA0"; + height = 52; + } + 31 + { + title = "Submerged plant"; + sprite = "COL2A0"; + height = 42; + } + 28 + { + title = "Tall flower #1"; + sprite = "POL2A0"; + height = 25; + } + 25 + { + title = "Tall flower #2"; + sprite = "POL1A0"; + height = 25; + } + 55 + { + title = "Lab coil"; + sprite = "SMBTA0"; + height = 86; + } +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 2028 + { + title = "Landing light"; + sprite = "COLUA0"; + height = 48; + } +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 41 + { + title = "Chemical burner"; + sprite = "CEYEA0"; + height = 25; + } + 34 + { + title = "Chemical beaker"; + sprite = "CANDA0"; + } +} + +civilians +{ + color = 4; // Red + arrow = 0; + title = "Civilians"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 45 + { + title = "Captive #1"; + sprite = "TGRNA0"; + height = 54; + } + 56 + { + title = "Captive #2"; + sprite = "SMGTA0"; + height = 54; + } + 57 + { + title = "Captive #3"; + sprite = "SMRTA0"; + height = 48; + } +} diff --git a/Build/Configurations/Other Games/Chex Quest/Includes/Game_Chex.cfg b/Build/Configurations/Other Games/Chex Quest/Includes/Game_Chex.cfg new file mode 100644 index 0000000..21f5b1e --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Includes/Game_Chex.cfg @@ -0,0 +1,28 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + + // Decorate actors to include depending on actor game property + decorategames = "chex"; + + // Skill levels + skills + { + include("Chex_misc.cfg", "skills"); + } + + // Door making + makedoortrack = "COMPSTA1"; + + // Default thing filters + // (these are not required, just useful for new users) + /*thingsfilters + { + include("Doom_misc.cfg", "thingsfilters"); + }*/ + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Chex_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexDoom.cfg b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexDoom.cfg new file mode 100644 index 0000000..e1bfa5e --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexDoom.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Chex Quest 1 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexHexen.cfg b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexHexen.cfg new file mode 100644 index 0000000..e0152b9 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexHexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Chex Quest 1 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexUDMF.cfg b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexUDMF.cfg new file mode 100644 index 0000000..17e7628 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/ZDoom_ChexUDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Chex Quest 1 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexDoom.cfg b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexDoom.cfg new file mode 100644 index 0000000..a68539a --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexDoom.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Chex Quest 1 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexHexen.cfg b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexHexen.cfg new file mode 100644 index 0000000..ec0f424 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexHexen.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Chex Quest 1 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexUDMF.cfg b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexUDMF.cfg new file mode 100644 index 0000000..f8c99f7 --- /dev/null +++ b/Build/Configurations/Other Games/Chex Quest/Zandronum_ChexUDMF.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Chex Quest 1 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Chex_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_chex"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyDoom.cfg b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyDoom.cfg new file mode 100644 index 0000000..9551873 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyDoom.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Harmony (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyHexen.cfg b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyHexen.cfg new file mode 100644 index 0000000..8eab665 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyHexen.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Harmony (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyUDMF.cfg b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyUDMF.cfg new file mode 100644 index 0000000..62ea4fc --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/GZDoom_HarmonyUDMF.cfg @@ -0,0 +1,66 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "GZDoom: Harmony (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "gzdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\GZDoom_things.cfg", "gzdoom_lights"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/Includes/Game_Harmony.cfg b/Build/Configurations/Other Games/Harmony/Includes/Game_Harmony.cfg new file mode 100644 index 0000000..ba8c7f2 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Includes/Game_Harmony.cfg @@ -0,0 +1,28 @@ +// Default lump name for new map + defaultlumpname = "MAP01"; + + // Decorate actors to include depending on actor game property + decorategames = "harmony"; // Doesn't actually exist, but used to prevent loading Doom actors when loading zdoom.pk3 + + // Skill levels + skills + { + include("Harmony_misc.cfg", "skills"); + } + + // Door making + makedoortrack = "DOORTRAK"; + + // Default thing filters + // (these are not required, just useful for new users) + /*thingsfilters + { + include("Doom_misc.cfg", "thingsfilters"); + }*/ + + // Default texture sets + // (these are not required, but useful for new users) + texturesets + { + include("Harmony_texturesets.cfg"); + } \ No newline at end of file diff --git a/Build/Configurations/Other Games/Harmony/Includes/Harmony_misc.cfg b/Build/Configurations/Other Games/Harmony/Includes/Harmony_misc.cfg new file mode 100644 index 0000000..e2fa425 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Includes/Harmony_misc.cfg @@ -0,0 +1,14 @@ + +// Basic Doom and Vanilla engine stuff. + +include("Doom_Misc.cfg"); + +// The only difference with Doom +skills +{ + 1 = "Very easy"; + 2 = "Easy"; + 3 = "Medium"; + 4 = "Hard"; + 5 = "Very hard"; +} \ No newline at end of file diff --git a/Build/Configurations/Other Games/Harmony/Includes/Harmony_texturesets.cfg b/Build/Configurations/Other Games/Harmony/Includes/Harmony_texturesets.cfg new file mode 100644 index 0000000..e69de29 diff --git a/Build/Configurations/Other Games/Harmony/Includes/Harmony_things.cfg b/Build/Configurations/Other Games/Harmony/Includes/Harmony_things.cfg new file mode 100644 index 0000000..ad64978 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Includes/Harmony_things.cfg @@ -0,0 +1,596 @@ + +players +{ + color = 10; // Light Green + arrow = 1; + title = "Player Starts"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 1 + { + title = "Player 1 start"; + sprite = "PLAYA2A8"; + } + 2 + { + title = "Player 2 start"; + sprite = "PLAYA2A8"; + } + 3 + { + title = "Player 3 start"; + sprite = "PLAYA2A8"; + } + 4 + { + title = "Player 4 start"; + sprite = "PLAYA2A8"; + } + 11 + { + title = "Player Deathmatch start"; + sprite = "PLAYF1"; + } +} + +bridges +{ + 118 + { + title = "Hack Bridge"; + width = "36"; + height = "4"; + } +} + +teleports +{ + color = 2; // Green + arrow = 1; + title = "Teleports"; + width = 16; + sort = 1; + height = 56; + hangs = 0; + blocking = 0; + error = 0; + + 14 + { + title = "Teleport Destination"; + sprite = "TFOGB0"; + } +} + +monsters +{ + color = 12; // Light Red + arrow = 1; + title = "Monsters"; + width = 20; + sort = 1; + height = 56; + hangs = 0; + blocking = 1; + error = 2; + + 3004 + { + title = "Beastling"; + sprite = "SARGB2B8"; + } + 9 + { + title = "Follower"; + sprite = "SPOSA2A8"; + } + 3003 + { + title = "Critter"; + width = 24; + sprite = "BOSSA2A8"; + height = 22; + } + 16 + { + title = "Centaur"; + width = 40; + sprite = "TROOA2A8"; + height = 110; + } + 7 + { + title = "Echidna"; + width = 128; + sprite = "SPIDG2G8"; + height = 110; + } + 65 + { + title = "Mutant soldier"; + sprite = "CPOSA2"; + } + 68 + { + title = "Phage"; + width = 48; + sprite = "SSWVA2"; + height = 64; + } + 66 + { + title = "Predator"; + sprite = "CYBRC2"; + } + 64 + { + title = "Falling follower"; + sprite = "BON1C0"; + } +} + +weapons +{ + color = 14; // Yellow + arrow = 0; + title = "Weapons"; + width = 20; + sort = 1; + height = 25; + hangs = 0; + blocking = 0; + + 2001 + { + title = "Shotgun"; + sprite = "SHOTA0"; + } + 2002 + { + title = "Minigun"; + sprite = "MGUNA0"; + } + 2003 + { + title = "Grenade launcher"; + sprite = "LAUNA0"; + } + 2004 + { + title = "Entropy thrower"; + sprite = "PLASA0"; + } + 2006 + { + title = "Hand Grenade"; + sprite = "BFUGA0"; + height = 30; + } +} + +ammunition +{ + color = 6; // Brown + arrow = 0; + title = "Ammunition"; + width = 20; + sort = 1; + height = 16; + blocking = 0; + hangs = 0; + + 2010 + { + title = "Grenade"; + sprite = "ROCKA0"; + height = 25; + } + 2048 + { + title = "Minigun ammo"; + sprite = "AMMOA0"; + } + 2049 + { + title = "Shotgun ammo"; + sprite = "SBOXA0"; + } + 2046 + { + title = "Grenade belts"; + sprite = "BROKA0"; + width = 30; + height = 25; + } + 17 + { + title = "Cell charge pack"; + sprite = "CELPA0"; + height = 25; + } + 8 + { + title = "Backpack"; + sprite = "BPAKA0"; + } +} + +health +{ + color = 1; // Blue + arrow = 0; + title = "Health and Armor"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2011 + { + title = "Healing mushroom"; + sprite = "STIMA0"; + } + 2012 + { + title = "First aid kit"; + sprite = "MEDIA0"; + height = 25; + } + 2018 + { + title = "Amazon armor"; + sprite = "ARM1A0"; + } + 2019 + { + title = "NDF armor"; + sprite = "ARM2A0"; + } +} + +powerups +{ + color = 9; // Light Blue + arrow = 0; + title = "Powerups"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 2013 + { + title = "Huge healing mushroom"; + sprite = "SOULA0"; + height = 45; + } + 2026 + { + title = "Computer map"; + sprite = "PMAPA0"; + height = 35; + } +} + +keys +{ + color = 13; // Light Magenta + arrow = 0; + title = "Keys"; + width = 16; + sort = 1; + height = 20; + hangs = 0; + blocking = 0; + + 5 + { + title = "Green keycard"; + sprite = "BKEYA0"; + } + 40 + { + title = "Green key"; + sprite = "BSKUB0"; + } + 13 + { + title = "Purple keycard"; + sprite = "RKEYA0"; + } + 38 + { + title = "Purple key"; + sprite = "RSKUB0"; + } + 6 + { + title = "Yellow keycard"; + sprite = "YKEYA0"; + } + 39 + { + title = "Yellow key"; + sprite = "YSKUB0"; + } +} + +specialeffects +{ + color = 3; // Cyan + arrow = 0; + title = "Special effects"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 47 + { + title = "Chair seat"; + sprite = "SMITA0"; + blocking = 0; + error = 0; + } + 3006 + { + title = "Mine"; + width = 16; + height = 8; + sprite = "PAINB1"; + } + 67 + { + title = "Grid obstacle"; + width = 30; + sprite = "HEADL0"; + height = 56; + } + 3002 + { + title = "Breaking grid"; + blocking = 0; + error = 0; + sprite = "HEADL0"; + } + 26 + { + title = "Crate target"; + sprite = "POL6A0"; + } + 79 + { + title = "Crate explosion"; + sprite = "POB1A0"; + } + 51 + { + title = "Attack blocker (invisible)"; + sprite = "GOR3A0"; + height = 84; + } +} + +obstacles +{ + color = 3; // Cyan + arrow = 0; + title = "Obstacles"; + width = 20; + sort = 1; + height = 20; + hangs = 0; + blocking = 1; + error = 2; + + 2035 + { + title = "Explosive barrel"; + width = 10; + sprite = "BAR1A0"; + height = 32; + } + 30 + { + title = "Big mushroom"; + sprite = "COL1A0"; + } + 32 + { + title = "Abducted Amira"; + sprite = "COL3A0"; + } + 31 + { + title = "Truck pipe"; + sprite = "COL2A0"; + } + 36 + { + title = "Gouts of flame"; + sprite = "MISLB0"; + } + 33 + { + title = "Sphere of heads sculpture"; + sprite = "COL4A0"; + } + 54 + { + title = "Dead tree"; + width = 32; + sprite = "TRE2A0"; + } + 42 + { + title = "Dripping water"; + sprite = "FSKUA0"; + } + 45 + { + title = "Dopefish"; + sprite = "TGRNA0"; + } +} + +lights +{ + color = 11; // Light Cyan + arrow = 0; + title = "Light sources"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 1; + error = 2; + + 48 + { + title = "Tall lamp statue"; + sprite = "ELECA0"; + } + 2028 + { + title = "Laser lamp"; + sprite = "COLUA0"; + } + 34 + { + title = "Candle"; + sprite = "CANDA0"; + blocking = 0; + error = 0; + } + 55 + { + title = "Fire"; + sprite = "SMBTA0"; + } + 57 + { + title = "Firebox"; + sprite = "SMRTA0"; + } +} + +decoration +{ + color = 4; // Red + arrow = 0; + title = "Decoration"; + width = 16; + sort = 1; + height = 16; + hangs = 0; + blocking = 0; + + 2007 + { + title = "Flies"; + sprite = "CEYEB0"; + } + + 46 + { + title = "Nukage splash"; + sprite = "TREDA0"; + } + + 56 + { + title = "Ceiling sparks"; + sprite = "SMGTA0"; + } + + 63 + { + title = "Hanging brazier"; + sprite = "GOR1A0"; + height = 68; + hangs = 1; + } + + 27 + { + title = "Missile (ready)"; + sprite = "SMT2A0"; + blocking = 1; + error = 2; + } + + + 28 + { + title = "Vine tentacle"; + sprite = "POL2A0"; + blocking = 1; + error = 2; + } + + + 29 + { + title = "Missile (launched)"; + sprite = "POL3A0"; + blocking = 1; + error = 2; + } + + 15 + { + title = "Dead amazon"; + sprite = "ARM2B0"; + } + + 19 + { + title = "Old skeleton"; + sprite = "ARM1B0"; + width = 20; + } + + 21 + { + title = "Dead beastling"; + sprite = "SARGN0"; + width = 30; + } + + 73 + { + title = "Large hanging chains"; + sprite = "HDB1A0"; + height = 88; + hangs = 1; + blocking = 1; + error = 2; + } + + 74 + { + title = "Stored miniguns"; + sprite = "HDB2A0"; + height = 88; + blocking = 1; + error = 2; + } + + 75 + { + title = "Stored shotguns"; + sprite = "HDB3A0"; + height = 64; + blocking = 1; + error = 2; + } +} diff --git a/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyDoom.cfg b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyDoom.cfg new file mode 100644 index 0000000..5fda7f2 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyDoom.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Harmony (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyHexen.cfg b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyHexen.cfg new file mode 100644 index 0000000..da9eba6 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyHexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Harmony (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyUDMF.cfg b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyUDMF.cfg new file mode 100644 index 0000000..7e923af --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/ZDoom_HarmonyUDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Harmony (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); +} diff --git a/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyDoom.cfg b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyDoom.cfg new file mode 100644 index 0000000..3613ae2 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyDoom.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Harmony (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyHexen.cfg b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyHexen.cfg new file mode 100644 index 0000000..d8aae1a --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyHexen.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Harmony (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyUDMF.cfg b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyUDMF.cfg new file mode 100644 index 0000000..652de75 --- /dev/null +++ b/Build/Configurations/Other Games/Harmony/Zandronum_HarmonyUDMF.cfg @@ -0,0 +1,67 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Harmony (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Harmony_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "default"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Other Games/Readme.txt b/Build/Configurations/Other Games/Readme.txt new file mode 100644 index 0000000..05effdc --- /dev/null +++ b/Build/Configurations/Other Games/Readme.txt @@ -0,0 +1 @@ +To enable these game configurations, move the contents of a game folder into the "Configurations" folder, and then enable a game configuration(s) in the GZDB's Preferences. \ No newline at end of file diff --git a/Build/Configurations/Strife_StrifeDoom.cfg b/Build/Configurations/Strife_StrifeDoom.cfg new file mode 100644 index 0000000..6bd73c9 --- /dev/null +++ b/Build/Configurations/Strife_StrifeDoom.cfg @@ -0,0 +1,49 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Strife: Strife (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "strife"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD DOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\Doom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\Strife_common.cfg", "mapformat_doom"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +//mxd. No DECORATE support in vanilla +decorategames = ""; + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); +} \ No newline at end of file diff --git a/Build/Configurations/ZDoomFamily_template.txt b/Build/Configurations/ZDoomFamily_template.txt new file mode 100644 index 0000000..7286915 --- /dev/null +++ b/Build/Configurations/ZDoomFamily_template.txt @@ -0,0 +1,138 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Game (map format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// Should this configuration be initially available? +enabledbydefault = true; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + // Keep only the one that's appropriate! + include("Includes\\Doom_misc.cfg", "thingsfilters"); // Thing filters for Doom/Hexen map formats + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); // Thing filters for UDMF map format +} + +// ---------------- MAP FORMAT STUFF ---------------- +// Keep only the one that's appropriate! +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); +// ---------------- MAP FORMAT STUFF ---------------- + + + +// ---------------- GAME STUFF ---------------- +//Keep only the one that's appropriate! +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Settings common to Chex Quest games +include("Includes\\Game_Chex.cfg"); + +// Settings common to Chex Quest 3 games +include("Includes\\Game_Chex3.cfg"); + +// Settings common to Harmony games +include("Includes\\Game_Harmony.cfg"); + +// Settings common to Action Doom 2 games +include("Includes\\Game_Action2.cfg"); +// ---------------- GAME STUFF ---------------- + + + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + include("Includes\\Heretic_things.cfg"); + include("Includes\\Hexen_things.cfg"); + include("Includes\\Strife_things.cfg"); + include("Includes\\Chex_things.cfg"); + include("Includes\\Chex3_things.cfg"); + include("Includes\\Harmony_things.cfg"); + + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + include("Includes\\ZDoom_things.cfg", "heretic"); + include("Includes\\ZDoom_things.cfg", "hexen"); + include("Includes\\ZDoom_things.cfg", "strife"); + include("Includes\\ZDoom_things.cfg", "default"); + + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + + // Additional actors from the engine + include("Includes\\GZDoom_things.cfg", "gzdoom"); + include("Includes\\Zandronum_things.cfg", "doom"); + include("Includes\\Zandronum_things.cfg", "heretic"); + include("Includes\\Zandronum_things.cfg", "hexen"); + include("Includes\\Zandronum_things.cfg", "strife"); + include("Includes\\Zandronum_things.cfg", "default"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); + include("Includes\\ZDoom_misc.cfg", "enums_strife"); + include("Includes\\ZDoom_misc.cfg", "enums_chex"); + include("Includes\\ZDoom_misc.cfg", "enums_chex3"); + include("Includes\\ZDoom_misc.cfg", "enums_harmony"); + + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_doom"); + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/ZDoom_DoomDoom.cfg b/Build/Configurations/ZDoom_DoomDoom.cfg new file mode 100644 index 0000000..384986e --- /dev/null +++ b/Build/Configurations/ZDoom_DoomDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Doom 2 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/ZDoom_DoomHexen.cfg b/Build/Configurations/ZDoom_DoomHexen.cfg new file mode 100644 index 0000000..d312e2f --- /dev/null +++ b/Build/Configurations/ZDoom_DoomHexen.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Doom 2 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/ZDoom_DoomUDMF.cfg b/Build/Configurations/ZDoom_DoomUDMF.cfg new file mode 100644 index 0000000..8564c44 --- /dev/null +++ b/Build/Configurations/ZDoom_DoomUDMF.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Doom 2 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/ZDoom_HereticDoom.cfg b/Build/Configurations/ZDoom_HereticDoom.cfg new file mode 100644 index 0000000..e646345 --- /dev/null +++ b/Build/Configurations/ZDoom_HereticDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Heretic (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Heretic_misc.cfg", "mapformat_doom"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/ZDoom_HereticHexen.cfg b/Build/Configurations/ZDoom_HereticHexen.cfg new file mode 100644 index 0000000..40f80b0 --- /dev/null +++ b/Build/Configurations/ZDoom_HereticHexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Heretic (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/ZDoom_HereticUDMF.cfg b/Build/Configurations/ZDoom_HereticUDMF.cfg new file mode 100644 index 0000000..ac2b27c --- /dev/null +++ b/Build/Configurations/ZDoom_HereticUDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Heretic (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); +} diff --git a/Build/Configurations/ZDoom_HexenHexen.cfg b/Build/Configurations/ZDoom_HexenHexen.cfg new file mode 100644 index 0000000..9bbcd29 --- /dev/null +++ b/Build/Configurations/ZDoom_HexenHexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Hexen (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Hexen_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); +} diff --git a/Build/Configurations/ZDoom_HexenUDMF.cfg b/Build/Configurations/ZDoom_HexenUDMF.cfg new file mode 100644 index 0000000..1655292 --- /dev/null +++ b/Build/Configurations/ZDoom_HexenUDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Hexen (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); +} diff --git a/Build/Configurations/ZDoom_StrifeDoom.cfg b/Build/Configurations/ZDoom_StrifeDoom.cfg new file mode 100644 index 0000000..9c511ca --- /dev/null +++ b/Build/Configurations/ZDoom_StrifeDoom.cfg @@ -0,0 +1,64 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Strife (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Strife_misc.cfg", "mapformat_doom"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/ZDoom_StrifeHexen.cfg b/Build/Configurations/ZDoom_StrifeHexen.cfg new file mode 100644 index 0000000..b2524e0 --- /dev/null +++ b/Build/Configurations/ZDoom_StrifeHexen.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Strife (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/ZDoom_StrifeUDMF.cfg b/Build/Configurations/ZDoom_StrifeUDMF.cfg new file mode 100644 index 0000000..8c58c86 --- /dev/null +++ b/Build/Configurations/ZDoom_StrifeUDMF.cfg @@ -0,0 +1,63 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "ZDoom: Strife (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zdoom"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); +} diff --git a/Build/Configurations/Zandronum_DoomDoom.cfg b/Build/Configurations/Zandronum_DoomDoom.cfg new file mode 100644 index 0000000..6637fab --- /dev/null +++ b/Build/Configurations/Zandronum_DoomDoom.cfg @@ -0,0 +1,69 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Doom 2 (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "doom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/Zandronum_DoomHexen.cfg b/Build/Configurations/Zandronum_DoomHexen.cfg new file mode 100644 index 0000000..560c3c3 --- /dev/null +++ b/Build/Configurations/Zandronum_DoomHexen.cfg @@ -0,0 +1,73 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Doom 2 (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); +include("Includes\\Zandronum_linedefs.cfg"); + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "doom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/Zandronum_DoomUDMF.cfg b/Build/Configurations/Zandronum_DoomUDMF.cfg new file mode 100644 index 0000000..b1374a9 --- /dev/null +++ b/Build/Configurations/Zandronum_DoomUDMF.cfg @@ -0,0 +1,78 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Doom 2 (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); +include("Includes\\Zandronum_linedefs.cfg"); + +// Enables support for long (> 8 chars) texture names +// WARNING: this should only be enabled for UDMF game configurations! +// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! +longtexturenames = false; + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Doom games +include("Includes\\Game_Doom.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Doom_things.cfg"); + include("Includes\\Doom2_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "doom"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "doom"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_doom"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_doom"); +} diff --git a/Build/Configurations/Zandronum_HereticDoom.cfg b/Build/Configurations/Zandronum_HereticDoom.cfg new file mode 100644 index 0000000..ee7b0af --- /dev/null +++ b/Build/Configurations/Zandronum_HereticDoom.cfg @@ -0,0 +1,69 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Heretic (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Heretic_misc.cfg", "mapformat_doom"); + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "heretic"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_HereticHexen.cfg b/Build/Configurations/Zandronum_HereticHexen.cfg new file mode 100644 index 0000000..a1701fb --- /dev/null +++ b/Build/Configurations/Zandronum_HereticHexen.cfg @@ -0,0 +1,72 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Heretic (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); +include("Includes\\Zandronum_linedefs.cfg"); + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Doom_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "heretic"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_HereticUDMF.cfg b/Build/Configurations/Zandronum_HereticUDMF.cfg new file mode 100644 index 0000000..178ac6a --- /dev/null +++ b/Build/Configurations/Zandronum_HereticUDMF.cfg @@ -0,0 +1,77 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Heretic (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); +include("Includes\\Zandronum_linedefs.cfg"); + +// Enables support for long (> 8 chars) texture names +// WARNING: this should only be enabled for UDMF game configurations! +// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! +longtexturenames = false; + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Heretic games +include("Includes\\Game_Heretic.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Heretic_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "heretic"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "heretic"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_heretic"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_HexenHexen.cfg b/Build/Configurations/Zandronum_HexenHexen.cfg new file mode 100644 index 0000000..ce71adf --- /dev/null +++ b/Build/Configurations/Zandronum_HexenHexen.cfg @@ -0,0 +1,72 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Hexen (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); +include("Includes\\Zandronum_linedefs.cfg"); + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Hexen_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "hexen"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_HexenUDMF.cfg b/Build/Configurations/Zandronum_HexenUDMF.cfg new file mode 100644 index 0000000..3122058 --- /dev/null +++ b/Build/Configurations/Zandronum_HexenUDMF.cfg @@ -0,0 +1,77 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Hexen (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); +include("Includes\\Zandronum_linedefs.cfg"); + +// Enables support for long (> 8 chars) texture names +// WARNING: this should only be enabled for UDMF game configurations! +// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! +longtexturenames = false; + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Hexen games +include("Includes\\Game_Hexen.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Hexen_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "hexen"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "hexen"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_hexen"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_StrifeDoom.cfg b/Build/Configurations/Zandronum_StrifeDoom.cfg new file mode 100644 index 0000000..ef8bbf4 --- /dev/null +++ b/Build/Configurations/Zandronum_StrifeDoom.cfg @@ -0,0 +1,69 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Strife (Doom format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Doom map format +include("Includes\\ZDoom_common.cfg", "mapformat_doom"); +include("Includes\\Strife_misc.cfg", "mapformat_doom"); + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "strife"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_StrifeHexen.cfg b/Build/Configurations/Zandronum_StrifeHexen.cfg new file mode 100644 index 0000000..13295ac --- /dev/null +++ b/Build/Configurations/Zandronum_StrifeHexen.cfg @@ -0,0 +1,72 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Strife (Hexen format)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to Hexen map format +include("Includes\\ZDoom_common.cfg", "mapformat_hexen"); +include("Includes\\Zandronum_linedefs.cfg"); + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\Strife_misc.cfg", "thingsfilters"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "strife"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/Configurations/Zandronum_StrifeUDMF.cfg b/Build/Configurations/Zandronum_StrifeUDMF.cfg new file mode 100644 index 0000000..842b65a --- /dev/null +++ b/Build/Configurations/Zandronum_StrifeUDMF.cfg @@ -0,0 +1,77 @@ +/*************************************************************\ + Doom Builder 2 Game Configuration for ZDoom-compatible port +\*************************************************************/ + +// This is required to prevent accidental use of a different configuration +type = "Doom Builder 2 Game Configuration"; + +// This is the title to show for this game +game = "Zandronum: Strife (UDMF)"; + +// This is the simplified game engine/sourceport name +engine = "zandronum"; + +// ******************************************************* +// * * +// * Note: all the elements that could be factorized * +// * because they were common to ZDoom, GZDoom and * +// * Zandronum have been moved to ZDoom_common.cfg. * +// * * +// ******************************************************* + +// STANDARD ZDOOM SETTINGS +// Settings common to all games and all map formats +include("Includes\\ZDoom_common.cfg", "common"); + +// Settings common to text map format +include("Includes\\ZDoom_common.cfg", "mapformat_udmf"); +include("Includes\\Zandronum_linedefs.cfg"); + +// Enables support for long (> 8 chars) texture names +// WARNING: this should only be enabled for UDMF game configurations! +// WARNING: enabling this will make maps incompatible with Doom Builder 2 and can lead to problems in Slade 3! +longtexturenames = false; + +// mxd. Default script compiler +defaultscriptcompiler = "zandronum_acs.cfg"; + +// Settings common to Strife games +include("Includes\\Game_Strife.cfg"); + +// Default thing filters +// (these are not required, just useful for new users) +thingsfilters +{ + include("Includes\\ZDoom_misc.cfg", "thingsfilters_udmf"); +} + +// THING TYPES +// Each engine has its own additional thing types +// Order should always be 1: Game; 2: ZDoom/game; 3: ZDoom/zdoom +thingtypes +{ + // Basic game actors + include("Includes\\Strife_things.cfg"); + // Additional ZDoom actors for that game + include("Includes\\ZDoom_things.cfg", "strife"); + // Standard ZDoom actors + include("Includes\\ZDoom_things.cfg", "zdoom"); + // Additional actors from the engine + include("Includes\\Zandronum_things.cfg", "default"); + include("Includes\\Zandronum_things.cfg", "strife"); +} + +// ENUMERATIONS +// Each engine has its own additional thing types +// These are enumerated lists for linedef types and UDMF fields. +enums +{ + // Basic game enums + include("Includes\\Doom_misc.cfg", "enums"); + // Standard ZDoom enums + include("Includes\\ZDoom_misc.cfg", "enums"); + // Additional ZDoom enums for that game + include("Includes\\ZDoom_misc.cfg", "enums_strife"); + // Additional enums from the engine + include("Includes\\Zandronum_misc.cfg", "enums_notdoom"); +} diff --git a/Build/DevIL.dll b/Build/DevIL.dll new file mode 100644 index 0000000..b7a4c09 Binary files /dev/null and b/Build/DevIL.dll differ diff --git a/Build/GPL.txt b/Build/GPL.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/Build/GPL.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/Build/GZBuilder.default.cfg b/Build/GZBuilder.default.cfg new file mode 100644 index 0000000..1db6d90 --- /dev/null +++ b/Build/GZBuilder.default.cfg @@ -0,0 +1,264 @@ + +// NOTE: These are the default program settings! +// GZDoom Builder will use this file to create the program settings for a new user. +// Your real settings are in the Local Application data directory +// Windows XP: C:\Documents and Settings\Username\Local Settings\Application Data\Doom Builder\GZBuilder.cfg +// Windows Vista or later: C:\Users\Username\AppData\Local\Doom Builder\GZBuilder.cfg + +shortcuts +{ + builder_closemap = 0; + builder_configuration = 117; + builder_newmap = 131150; + builder_openmap = 131151; + builder_scrolleast = 39; + builder_scrollnorth = 38; + builder_scrollsouth = 40; + builder_scrollwest = 37; + builder_zoomin = 65530; + builder_zoomout = 65531; + builder_preferences = 116; + builder_savemap = 131155; + builder_savemapas = 196691; + builder_savemapinto = 458835; + builder_mapoptions = 113; + builder_reloadresources = 119; + builder_cancelmode = 27; + builder_gridsetup = 0; + builder_undo = 131162; + builder_redo = 131161; + builder_togglesnap = 0; + builder_clearselection = 67; + builder_toggleautomerge = 0; + builder_centerinscreen = 36; + builder_moveleft = 83; + builder_moveright = 70; + builder_moveforward = 69; + builder_movebackward = 68; + buildermodes_thingsmode = 84; + buildermodes_linedefsmode = 76; + buildermodes_verticesmode = 86; + buildermodes_sectorsmode = 83; + builder_insertvertex = 65622; + builder_testmap = 120; + builder_acceptmode = 13; + builder_classicedit = 2; + builder_classicselect = 1; + builder_deleteitem = 46; + builder_dissolveitem = 8; + buildermodes_finishdraw = 2; + buildermodes_drawpoint = 1; + buildermodes_drawlinesmode = 131140; + buildermodes_flipsidedefs = 65606; + buildermodes_fliplinedefs = 70; + buildermodes_joinsectors = 74; + buildermodes_removepoint = 8; + buildermodes_mergesectors = 65610; + buildermodes_splitlinedefs = 0; + buildermodes_visualmode = 87; + buildermodes_curvelinesmode = 65603; + builder_thingsfilterssetup = 0; + builder_insertitem = 45; + builder_griddec = 219; + builder_gridinc = 221; + buildermodes_findmode = 114; + buildermodes_makesectormode = 77; + buildermodes_editselectionmode = 69; + builder_copyselection = 131139; + builder_pasteselection = 131158; + builder_cutselection = 131160; + buildermodes_gradientbrightness = 71; + builder_categories = 0; + builder_selectgroup6 = 54; + builder_selectgroup1 = 49; + builder_selectgroup10 = 48; + builder_selectgroup7 = 55; + builder_selectgroup2 = 50; + builder_selectgroup5 = 53; + builder_selectgroup8 = 56; + builder_selectgroup9 = 57; + builder_selectgroup3 = 51; + builder_selectgroup4 = 52; + builder_assigngroup1 = 131121; + builder_assigngroup6 = 131126; + builder_assigngroup9 = 131129; + builder_assigngroup2 = 131122; + builder_assigngroup4 = 131124; + builder_assigngroup10 = 131120; + builder_assigngroup8 = 131128; + builder_assigngroup7 = 131127; + builder_assigngroup3 = 131123; + builder_assigngroup5 = 131125; + buildermodes_makedoor = 65604; + builder_pan_view = 32; + builder_openscripteditor = 121; + builder_viewmodebrightness = 0; + builder_testaction = 0; + builder_viewmodefloors = 0; + builder_viewmodenormal = 0; + builder_viewmodeceilings = 0; + buildermodes_errorcheckmode = 115; + builder_movedoublespeed = 16; + builder_visualselect = 1; + builder_visualedit = 2; + builder_movethingleft = 37; + builder_movethingright = 39; + builder_movethingfwd = 38; + builder_movethingback = 40; + buildermodes_raisesector8 = 65530; + buildermodes_lowersector8 = 65531; + buildermodes_raisesector1 = 131066; + buildermodes_lowersector1 = 131067; + buildermodes_showvisualthings = 84; + buildermodes_movetextureright = 39; + buildermodes_movetextureleft = 37; + buildermodes_movetextureup = 38; + buildermodes_lowerbrightness8 = 196603; + buildermodes_raisebrightness8 = 196602; + buildermodes_movetexturedown = 40; + buildermodes_textureselect = 131074; + buildermodes_texturepaste = 4; + buildermodes_texturecopy = 131139; + buildermodes_visualautoalignx = 65; + buildermodes_visualautoaligny = 65601; + buildermodes_togglemiddletexture = 77; + buildermodes_togglelowerunpegged = 76; + buildermodes_toggleupperunpegged = 85; + buildermodes_togglegravity = 71; + builder_insertpreviousprefab = 80; + builder_createprefab = 0; + builder_insertprefabfile = 131152; + buildermodes_placevisualstart = 131159; + buildermodes_togglebrightness = 66; + builder_toggleinfopanel = 192; + buildermodes_resettexture = 65618; + builder_showerrors = 122; + buildermodes_pasteproperties = 393302; + buildermodes_pastepropertieswithoptions = 196694; + buildermodes_floodfilltextures = 65540; + buildermodes_copyproperties = 196675; + buildermodes_texturepasteoffsets = 65622; + buildermodes_movetextureleft8 = 65573; + buildermodes_movetextureright8 = 65575; + buildermodes_lowerfloor8 = 458747; + buildermodes_selectdoublesided = 65586; + buildermodes_raisefloor8 = 458746; + buildermodes_movetextureup8 = 65574; + buildermodes_texturecopyoffsets = 65603; + buildermodes_gradientfloors = 131143; + buildermodes_selectsinglesided = 65585; + buildermodes_gradientceilings = 65607; + buildermodes_flipselectionh = 0; + buildermodes_raiseceiling8 = 131066; + buildermodes_lowerceiling8 = 131067; + buildermodes_flipselectionv = 0; + buildermodes_movetexturedown8 = 65576; + buildermodes_classiccopyproperties = 196675; + buildermodes_togglehighlight = 72; + buildermodes_classicpasteproperties = 393302; + buildermodes_classicpastepropertieswithoptions = 196694; + buildermodes_drawrectanglemode = 196676; + buildermodes_drawellipsemode = 327748; + buildermodes_decreasebevel = 196603; + buildermodes_increasesubdivlevel = 131066; + buildermodes_increasebevel = 196602; + buildermodes_decreasesubdivlevel = 131067; + buildermodes_classicpaintselect = 4; + builder_movethingfwd = 38; + builder_movethingback = 40; + builder_movethingright = 39; + builder_movethingleft = 37; +} + + +colors +{ + color0 = -16777216; + color1 = -11425537; + color2 = -1; + color3 = -4259937; + color4 = -3750145; + color5 = -21504; + color6 = -49152; + color7 = -128; + color8 = -12171706; + color9 = -13018769; + color10 = -16711681; + color11 = -24576; + color12 = -49152; + color13 = -1; + color14 = -4144960; + color15 = -16777216; + color16 = -6908266; + color17 = -16753716; + color18 = -11366857; + color19 = -6671822; + color20 = -9868951; + color21 = -12490271; + color22 = -14513374; + color23 = -14634326; + color24 = -5103070; + color25 = -7077677; + color26 = -4684277; + color27 = -4144960; + color28 = -8355712; + color29 = -16728065; + color30 = -13447886; + color31 = -5247250; + color32 = -40121; + color33 = -1146130; + color34 = -256; + color35 = -657931; + color36 = -18751; + color37 = -29696; + color38 = -4343957; + color39 = -2448096; + color40 = -65536; +} + + +mainwindow +{ + positionx = 150; + sizeheight = 572; + positiony = 21; + windowstate = 2; + sizewidth = 739; +} + + +recentfiles +{ +} + + +configurations +{ +} + + +blackbrowsers = false; +visualfov = 90; +visualmousesensx = 4f; +visualmousesensy = 4f; +visualviewrange = 1000f; +imagebrightness = 2; +qualitydisplay = true; +squarethings = true; +testmonsters = true; +doublesidedalpha = 0.5f; +backgroundalpha = 1f; +defaultviewmode = 2; +classicbilinear = false; +visualbilinear = false; +mousespeed = 500; +movespeed = 600; +viewdistance = 3000f; +invertyaxis = false; +scriptfontname = "Lucida Console"; +scriptfontsize = 10; +scriptfontbold = false; +scriptontop = true; +previewimagesize = 1; +autoscrollspeed = 0; +showerrorswindow = true; diff --git a/Build/Plugins/Loadorder.cfg b/Build/Plugins/Loadorder.cfg new file mode 100644 index 0000000..1970eda --- /dev/null +++ b/Build/Plugins/Loadorder.cfg @@ -0,0 +1,24 @@ +// This file allows you to enforce the order in which plugins are loaded. +// This may be important for some plugins as they require their functions to +// be called before or after those of others. +// +// Simply list the filenames here in the order they should be loaded. Any files +// in this directory that are not on this list will be loaded last. +// +// Example: +// +// loadorder +// { +// BuilderModes.dll; +// ZDoomEditing.dll; +// FancyFlatFlipper.dll; +// } +// +// + + +loadorder +{ + BuilderModes.dll; +} + diff --git a/Build/Scintilla.dll b/Build/Scintilla.dll new file mode 100644 index 0000000..c5c6879 Binary files /dev/null and b/Build/Scintilla.dll differ diff --git a/Build/Scripting/BCS.cfg b/Build/Scripting/BCS.cfg new file mode 100644 index 0000000..f121a7f --- /dev/null +++ b/Build/Scripting/BCS.cfg @@ -0,0 +1,1176 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for BCS +\*******************************************************************/ + +// Compiler settings +compiler = "bcc"; +parameters = "-I \"%PT\" -I \"%PS\" %FI %FO"; +resultlump = "BEHAVIOR"; + +// Editor settings +description = "BCS script"; +codepage = 0; +extensions = "bcs"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; +snippetsdir = "acs"; +scripttype = 1; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + enum = "Enumeration"; + struct = "Structure"; + region = "A code region block"; + goto = "Goto statement"; + upmost = "The upmost region"; + #Define = "#Define identifier expression"; + #EncryptStrings = "#EncryptStrings"; + #Import = "#Import"; + #Include = "#Include"; + #LibDefine = "#LibDefine identifier expression"; + #Library = "#Library"; + #NoCompact = "#NoCompact"; + #NoWadAuthor = "#NoWadAuthor"; + #WadAuthor = "#WadAuthor"; + ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)"; + ACS_ExecuteAlways = "ACS_ExecuteAlways(script, map, arg1, arg2, arg3)"; + ACS_ExecuteWait = "void ACS_ExecuteWait(int script, int unused, int arg1, int arg2, int arg3)"; + ACS_ExecuteWithResult = "ACS_ExecuteWithResult(script, arg1, arg2, arg3)"; + ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)"; + ACS_LockedExecuteDoor = "ACS_LockedExecuteDoor(script, map, arg1, arg2, lock)"; + ACS_NamedExecute = "bool ACS_NamedExecute(str script, int map, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteAlways = "bool ACS_NamedExecuteAlways(str script, int map, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteWait = "void ACS_NamedExecuteWait(str script, int unused, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteWithResult = "int ACS_NamedExecuteWithResult(str script, int arg1, int arg2, int arg3, int arg4)"; + ACS_NamedLockedExecute = "bool ACS_NamedLockedExecute(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedLockedExecuteDoor = "bool ACS_NamedLockedExecuteDoor(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedSuspend = "bool ACS_NamedSuspend(str script, int map)"; + ACS_NamedTerminate = "bool ACS_NamedTerminate(str script, int map)"; + ACS_Suspend = "ACS_Suspend(script, map)"; + ACS_Terminate = "ACS_Terminate(script, map)"; + ActivatorSound = "void ActivatorSound(str sound, int volume)"; + ActivatorTID = "int ActivatorTID(void)"; + AmbientSound = "void AmbientSound(str sound, int volume)"; + AnnouncerSound = "void AnnouncerSound(str sound, int flags)"; + Autosave = "Autosave()"; + BlueCount = "BlueCount()"; + BlueReturn = "Script expression BlueReturn"; + BlueScore = "BlueScore()"; + BlueTeamCount = "BlueTeamCount()"; + BlueTeamScore = "BlueTeamScore()"; + Bool = "Bool expression"; + Break = "Break"; + CancelFade = "void CancelFade(void)\nIf either FadeTo or FadeRange is currently in progress,\nCancelFade stops it and turns off the palette flash."; + Case = "Case expression"; + Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush, crushmode)"; + Ceiling_CrushAndRaiseA = "Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushAndRaiseDist = "Ceiling_CrushAndRaiseDist(tag, dist, speed, damage, crushmode)"; + Ceiling_CrushAndRaiseSilentA = "Ceiling_CrushAndRaiseSilentA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush, crushmode)"; + Ceiling_CrushRaiseAndStayA = "Ceiling_CrushRaiseAndStayA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushRaiseAndStaySilA = "Ceiling_CrushRaiseAndStaySilA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushStop = "Ceiling_CrushStop(tag)"; + Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush, crushmode)"; + Ceiling_LowerAndCrushDist = "Ceiling_LowerAndCrushDist(tag, speed, crush, dist, crushmode)"; + Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)"; + Ceiling_LowerByValueTimes8 = "Ceiling_LowerByValueTimes8(tag, speed, height)"; + Ceiling_LowerInstant = "Ceiling_LowerInstant(tag, unused, height)"; + Ceiling_LowerToFloor = "Ceiling_LowerToFloor(tag, speed)"; + Ceiling_LowerToHighestFloor = "Ceiling_LowerToHighestFloor(tag, speed)"; + Ceiling_LowerToLowest = "Ceiling_LowerToLowest(tag, speed)"; + Ceiling_MoveToValue = "Ceiling_MoveToValue(tag, speed, height, neg)"; + Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)"; + Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)"; + Ceiling_RaiseByValueTimes8 = "Ceiling_RaiseByValueTimes8(tag, speed, height)"; + Ceiling_RaiseInstant = "Ceiling_RaiseInstant(tag, unused, height)"; + Ceiling_RaiseToNearest = "Ceiling_RaiseToNearest(tag, speed)"; + Ceiling_Waggle = "Ceiling_Waggle(tag, amp, freq, offset, time)"; + ChangeActorAngle = "ChangeActorAngle(int tid, fixed angle [, bool interpolate = false])\nSets the angle for the actors with the specified tid.\nIf tid is 0, it sets the angle for the activator of the script.\nangle: a fixed point angle in the range of 0.0 to 1.0 (N = 0.25, W = 0.5, S = 0.75, E = 1.0)."; + ChangeActorPitch = "ChangeActorPitch(int tid, fixed pitch [, bool interpolate = false])\nSets the pitch for the actors with the specified tid. If tid is 0, it sets the pitch for the activator of the script.\npitch: a fixed point angle in the range of 0.0 to 1.0."; + ChangeCamera = "ChangeCamera(tid, who, revert)"; + ChangeCeiling = "void ChangeCeiling(int tag, str flatname)"; + ChangeFloor = "void ChangeFloor(int tag, str flatname)"; + ChangeLevel = "void ChangeLevel(str mapname, int position, int flags [, int skill])\nChanges to a new map, places the player at the specified start spot, and optionally changes the skill level at the same time."; + ChangeSkill = "ChangeSkill(skill)"; + ChangeSky = "void ChangeSky(str sky1, str sky2)\nChanges the sky texture to sky1 and the second sky texture to sky2.\nBoth textures must be the same height if doublesky is enabled.\nYou may also use any flat, pname, sprite or internal graphic (such as TITLEPIC) in place of an actual texture.\nUseful in conjunction with SetSkyScrollSpeed."; + CheckActorCeilingTexture = "bool CheckActorCeilingTexture(int tid, str texture)"; + CheckActorClass = "bool CheckActorClass(int tid, str class)"; + CheckActorFloorTexture = "bool CheckActorFloorTexture(int tid, str texture)"; + CheckActorInventory = "int CheckActorInventory(int tid, str inventory_item)\nChecks the given actor's inventory for the item specified by inventory_item"; + CheckActorProperty = "bool CheckActorProperty(int tid, int property, [int|float|str] value)"; + CheckFlag = "bool CheckFlag(int tid, str flag)\nChecks to see if the actor with the matching tid has the specified actor flag set.\nIf tid is 0, the check is performed on the activator of the script."; + CheckFont = "bool CheckFont(str fontname)"; + CheckInventory = "int CheckInventory(str inventory_item)\nChecks the inventory of the actor who activated the script for the item specified by inventory_item"; + CheckPlayerCamera = "int CheckPlayerCamera(int player)"; + CheckSight = "bool CheckSight(int source, int dest, int flags)"; + CheckWeapon = "bool CheckWeapon(str weapon)\nChecks if player's active weapon is the weapon with specified class name."; + ClassifyActor = "int ClassifyActor(int tid)"; + ClearActorInventory = "void ClearActorInventory(int tid)\nThis function clears the specified actor's inventory."; + ClearForceField = "ClearForceField(tag)"; + ClearInventory = "void ClearInventory(void)\nClears the player's inventory of weapons, ammo, armor and usable items."; + ClearLineSpecial = "void ClearLineSpecial(void)\nClears the special of the line that activated the script."; + ConsoleCommand = "void ConsoleCommand (str command)"; + Const = "Const"; + Continue = "Continue"; + cos = "fixed Cos(int angle)"; + CreateTranslation = "void CreateTranslation(int transnumber, a:b=c:d, ...)"; + DamageThing = "DamageThing(amount, mod)"; + Death = "Script expression Death"; + Default = "Default:"; + Delay = "void Delay(int tics)"; + Disconnect = "Disconnect script expression"; + Do = "Do"; + Door_Animated = "Door_Animated(tag, speed, delay, lock)"; + Door_Close = "Door_Close(tag, speed, lighttag)"; + Door_CloseWaitOpen = "Door_CloseWaitOpen(tag, speed, delay, lighttag)"; + Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock, lighttag)"; + Door_Open = "Door_Open(tag, speed, lighttag)"; + Door_Raise = "Door_Raise(tag, speed, delay, lighttag)"; + DropItem = "int DropItem(int tid, str item [, int dropamount = -1 [, int chance = 256]])\nCauses actors with the matching tid to drop the specified item.\nIf tid is 0, the activator of the script is considered to be the dropper of the item.\nThis works in a similar way to the DropItem actor property.\nThe return value of the function is the number of dropped items."; + Elevator_LowerToNearest = "Elevator_LowerToNearest(tag, speed)"; + Elevator_MoveToFloor = "Elevator_MoveToFloor(tag, speed)"; + Elevator_RaiseToNearest = "Elevator_RaiseToNearest(tag, speed)"; + Else = "Else"; + Enter = "Script expression Enter"; + Exit_Normal = "Exit_Normal(pos)"; + Exit_Secret = "Exit_Secret(pos)"; + FadeRange = "void FadeRange (int red1, int green1, int blue1, fixed amount1, int red2, int green2, int blue2, fixed amount2, fixed seconds)\nSets the current flash to the first color set and then fades it to the second color set over the specified number of seconds."; + FadeTo = "void FadeTo (int red, int green, int blue, fixed amount, fixed seconds)\nFades the activator's view from the current palette flash to another one.\nThis will also work if the activator is looking through another viewpoint (using a camera, etc.)."; + FixedDiv = "fixed FixedDiv(int a, int b)"; + FixedMul = "fixed FixedMul(int a, int b)"; + FixedSqrt = "fixed FixedSqrt(fixed number)"; + Floor_CrushStop = "Floor_CrushStop(tag)"; + Floor_Donut = "Floor_Donut(ptag, pspeed, sspeed)"; + Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)"; + Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)"; + Floor_LowerInstant = "Floor_LowerInstant(tag, unused, height)"; + Floor_LowerToHighest = "Floor_LowerToHighest(tag, speed, adjust, force_adjust)"; + Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)"; + Floor_LowerToLowestTxTy = "Floor_LowerToLowestTxTy(tag, speed)"; + Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)"; + Floor_MoveToValue = "Floor_MoveToValue(tag, speed, height, neg)"; + Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)"; + Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush, crushmode)"; + Floor_RaiseAndCrushDoom = "Floor_RaiseAndCrushDoom(tag, speed, crush, crushmode)"; + Floor_RaiseByTexture = "Floor_RaiseByTexture(tag, speed)"; + Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)"; + Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)"; + Floor_RaiseByValueTxTy = "Floor_RaiseByValueTxTy(tag, speed, height)"; + Floor_RaiseInstant = "Floor_RaiseInstant(tag, unused, height)"; + Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)"; + Floor_RaiseToLowestCeiling = "Floor_RaiseToLowestCeiling(tag, speed)"; + Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)"; + Floor_TransferNumeric = "Floor_TransferNumeric(tag)"; + Floor_TransferTrigger = "Floor_TransferTrigger(tag)"; + Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)"; + FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)"; + FloorAndCeiling_LowerRaise = "FloorAndCeiling_LowerRaise(tag, fspeed, cspeed, boomemu)"; + FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)"; + For = "For(initialization, condition, iteration)"; + ForceField = "ForceField()"; + FS_Execute = "FS_Execute(script, side, keynum, message)"; + Function = "Function Void expression (Void)"; + GameSkill = "int GameSkill(void)"; + GameType = "int GameType(void)"; + Generic_Ceiling = "Generic_Ceiling(tag, speed, height, target, flag)"; + Generic_Crusher = "Generic_Crusher(tag, dspeed, uspeed, silent, crush)"; + Generic_Crusher2 = "Generic_Crusher2(tag, dspeed, uspeed, silent, crush)"; + Generic_Door = "Generic_Door(tag, speed, kind, delay, lock)"; + Generic_Floor = "Generic_Floor(tag, speed, height, target, flags)"; + Generic_Lift = "Generic_Lift(tag, speed, delay, type, height)"; + Generic_Stairs = "Generic_Stairs(tag, speed, height, flags, reset)"; + GetActorAngle = "fixed GetActorAngle(int tid)"; + GetActorCeilingZ = "fixed GetActorCeilingZ(int tid)"; + GetActorClass = "str GetActorClass(int tid)"; + GetActorFloorZ = "fixed GetActorFloorZ(int tid)"; + GetActorLightLevel = "int GetActorLightLevel(int tid)"; + GetActorPitch = "fixed GetActorPitch(int tid)"; + GetActorPowerupTics = "int GetActorPowerupTics(int tid, str powerup)"; + GetActorProperty = "int GetActorProperty(int tid, int property)"; + GetActorVelX = "fixed GetActorVelX(int tid)"; + GetActorVelY = "fixed GetActorVelY(int tid)"; + GetActorVelZ = "fixed GetActorVelZ(int tid)"; + GetActorViewHeight = "fixed GetActorViewHeight(int tid)"; + GetActorX = "fixed GetActorX(int tid)"; + GetActorY = "fixed GetActorY(int tid)"; + GetActorZ = "fixed GetActorZ(int tid)"; + GetAirSupply = "int GetAirSupply(int playernum)"; + GetAmmoCapacity = "int GetAmmoCapacity(str classname)"; + GetArmorType = "int GetArmorType(str armortype, int playernum)"; + GetChar = "int GetChar(str string, int index)"; + GetCVar = "int GetCVar(str cvar)"; + GetCVarString = "str GetCVarString(str cvar)"; + GetInvasionState = "GetInvasionState()"; + GetInvasionWave = "GetInvasionWave()"; + GetLevelInfo = "int GetLevelInfo(int levelinfo)"; + GetLineActivation = "int GetLineActivation(int lineid)\nlineid: The id of the line of which to get the activation flags.\nReturns SPAC flags as a bitfield"; + GetLineRowOffset = "int GetLineRowOffset(void)"; + GetLineUDMFFixed = "fixed GetLineUDMFFixed(int lineid, str key)"; + GetLineUDMFInt = "int GetLineUDMFInt(int lineid, str key)"; + GetPlayerInfo = "int GetPlayerInfo(int playernumber, int playerinfo)"; + GetPlayerInput = "int GetPlayerInput(int player, int input)"; + GetPolyobjX = "fixed GetPolyobjX(int polyid)"; + GetPolyobjY = "fixed GetPolyobjY(int polyid)"; + GetScreenHeight = "int GetScreenHeight(void)"; + GetScreenWidth = "int GetScreenWidth(void)"; + GetSectorCeilingZ = "int GetSectorCeilingZ(int tag, int x, int y)"; + GetSectorFloorZ = "fixed GetSectorFloorZ(int tag, int x, int y)"; + GetSectorLightLevel = "int GetSectorLightLevel(int tag)"; + GetSectorUDMFFixed = "fixed GetSectorUDMFFixed(int tag, str key)"; + GetSectorUDMFInt = "int GetSectorUDMFInt(int tag, str key)"; + GetSideUDMFFixed = "fixed GetSideUDMFFixed(int lineid, bool side, str key)"; + GetSideUDMFInt = "int GetSideUDMFInt(int lineid, bool side, str key)"; + GetSigilPieces = "int GetSigilPieces (void)\nReturns the number of Sigil pieces that are held by the player"; + GetThingUDMFFixed = "fixed GetThingUDMFFixed(int thingid, str key)"; + GetThingUDMFInt = "int GetThingUDMFInt(int thingid, str key)"; + GetUserArray = "void GetUserArray(int tid, str name, int pos)"; + GetUserCVar = "int GetUserCVar(int playernumber, str cvar)"; + GetUserCVarString = "str GetUserCVarString(int playernumber, str cvar)"; + GetUserVariable = "int GetUserVariable(int tid, str name)"; + GetWeapon = "str GetWeapon (void)\nReturns the class name of the weapon currently equipped by the player as a string"; + GiveActorInventory = "void GiveActorInventory(int tid, str inventory_item, int amount)\nThis function will give the amount of items to the specifed actor.\nThis function does not treat tid 0 as the activator of the script"; + GiveInventory = "void GiveInventory(str inventory_item, int amount)\nThis function will give the number of items specified to the activator."; + GlassBreak = "GlassBreak(dontspawnjunk)"; + Global = "Global Int expression:identifier"; + HealThing = "HealThing(amount)"; + HudMessage = "void hudmessage(text; int type, int id, int color, fixed x, fixed y, fixed holdTime)"; + HudMessageBold = "void HudMessageBold(text; int type, int id, int color, fixed x, fixed y, fixed holdTime)"; + If = "If(expression)"; + Int = "Int expression"; + IsMultiplayer = "int IsMultiplayer(void)"; + IsOneFlagCTF = "int IsOneFlagCTF(void)"; + IsTIDUsed = "bool IsTIDUsed (int tid)"; + Light_ChangeToValue = "Light_ChangeToValue(tag, value)"; + Light_Fade = "Light_Fade(tag, value, tics)"; + Light_Flicker = "Light_Flicker(tag, upper, lower)"; + Light_ForceLightning = "Light_ForceLightning(mode)"; + Light_Glow = "Light_Glow(tag, upper, lower, tics)"; + Light_LowerByValue = "Light_LowerByValue(tag, value)"; + Light_MaxNeighbor = "Light_MaxNeighbor(tag)"; + Light_MinNeighbor = "Light_MinNeighbor(tag)"; + Light_RaiseByValue = "Light_RaiseByValue(tag, value)"; + Light_Stop = "Light_Stop(tag)"; + Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)"; + Light_StrobeDoom = "Light_StrobeDoom(tag, u-tics, l-tics)"; + Lightning = "Script expression Lightning"; + LineAttack = "LineAttack(int tid, fixed angle, fixed pitch, int damage [, str pufftype = 'BulletPuff' [, str damagetype = 'None' [, fixed range = 2048 [, int flags = 0]]]])\nFires a hitscan attack. If tid is 0, the activator of the script is the source of the attack."; + Line_AlignCeiling = "Line_AlignCeiling(lineid, side)"; + Line_AlignFloor = "Line_AlignFloor(lineid, side)"; + Line_SetBlocking = "Line_SetBlocking(lineid, setflags, clearflags)"; + Line_SetTextureOffset = "Line_SetTextureOffset(lineid, x, y, side, flags)"; + Line_SetTextureScale = "Line_SetTextureScale(lineid, x, y, side, flags)"; + LineSide = "int LineSide(void)"; + LocalAmbientSound = "void LocalAmbientSound(str sound, int volume)"; + LocalSetMusic = "void LocalSetMusic (str song [, int order [, int unused]])"; + Log = "void Log(type:expression)\nLog will print something in the log area of the screen (top left), as well as logging it to the console.\nIt uses the same parameter format as the Print function."; + MorphActor = "int MorphActor(int tid, [str playerclass, [str monsterclass, [int duration, [int style, [str morphflash, [str unmorphflash]]]]]])"; + Music_Change = "void Music_Change(str music, int pattern)"; + NamedScriptWait = "void NamedScriptWait(str script)"; + Net = "Script expression Net"; + NoiseAlert = "NoiseAlert(target_tid, emiter_tid)"; + Open = "Script expression Open"; + Pickup = "Script expression Pickup"; + Pillar_Build = "Pillar_Build(tag, speed, height)"; + Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush, crushmode)"; + Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)"; + Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)"; + Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)"; + Plat_DownWaitUpStayLip = "Plat_DownWaitUpStayLip(tag, speed, delay, lip, sound)"; + Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)"; + Plat_PerpetualRaiseLip = "Plat_PerpetualRaiseLip(tag, speed, delay, lip)"; + Plat_RaiseAndStayTx0 = "Plat_RaiseAndStayTx0(tag, speed, lockout)"; + Plat_Stop = "Plat_Stop(tag)"; + Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)"; + Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)"; + Plat_UpByValueStayTx = "Plat_UpByValueStayTx(tag, speed, height)"; + Plat_UpNearestWaitDownStay = "Plat_UpNearestWaitDownStay(tag, speed, delay)"; + Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)"; + PlayActorSound = "void PlayActorSound(int tid, int sound, int channel, fixed volume, bool looping, fixed attenuation)"; + Player_SetTeam = "Player_SetTeam(team)"; + PlayerArmorpoints = "int PlayerArmorpoints(void)"; + PlayerClass = "int PlayerClass(int playernumber)"; + PlayerCount = "int PlayerCount(void)\nReturns the number of players currently in the game"; + PlayerFrags = "int PlayerFrags(void)"; + PlayerHealth = "int PlayerHealth(void)"; + PlayerInGame = "bool PlayerInGame(int playernumber)\nReturns true if the player [0..7] is in the game"; + PlayerIsBot = "bool PlayerIsBot(int playernumber)\nReturns TRUE if the player [0..7] is a bot and FALSE if not"; + PlayerNumber = "int PlayerNumber(void)\nReturns the player number for the player who activated the script, starting at 0.\nFor scripts that were not activated by a player, PlayerNumber will return -1."; + PlayerTeam = "int PlayerTeam(void)"; + PlayMovie = "PlayMovie(moviename)"; + PlaySound = "void PlaySound(int tid, str sound, int channel, fixed volume, bool looping, fixed attenuation)"; + Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)"; + Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)"; + Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)"; + Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)"; + Polyobj_MoveTo = "Polyobj_MoveTo(po, speed, pos_x, pos_y)"; + Polyobj_MoveToSpot = "Polyobj_MoveToSpot(po, speed, target)"; + Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)"; + Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)"; + Polyobj_OR_MoveTo = "Polyobj_OR_MoveTo(po, speed, pos_x, pos_y)"; + Polyobj_OR_MoveToSpot = "Polyobj_OR_MoveToSpot(po, speed, target)"; + Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed, angle)"; + Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)"; + Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)"; + Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)"; + Polyobj_Stop = "Polyobj_Stop(po)"; + PolyWait = "void PolyWait(int polyid)"; + Print = "void Print(type:expression)\nPrint will print something to the screen.\nPrint will only display for the activator of the script\nFor printing to all players, use PrintBold."; + PrintBold = "void PrintBold(type:expression)\nThis is exactly the same as Print, except all players will see the printed text\non the screen instead of just the activator of the script."; + Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)"; + Radius_Quake2 = "void Radius_Quake2(int tid, int intensity, int duration, int damrad, int tremrad, str sound)"; + Random = "int Random(int min, int max)"; + RedCount = "RedCount()"; + RedReturn = "Script expression RedReturn"; + RedScore = "RedScore()"; + RedTeamCount = "RedTeamCount()"; + RedTeamScore = "RedTeamScore()"; + ReplaceTextures = "void ReplaceTextures(str oldtexturename, str newtexturename [, int flags])\nReplaces all occurences of oldtexturename with newtexturename.\nNOT_ flags can be used."; + Respawn = "Script expression Respawn"; + Restart = "Restart"; + Return = "Return"; + Script = "Script expression"; + ScriptWait = "void ScriptWait(int script)"; + Scroll_Ceiling = "Scroll_Ceiling(tag, x-move, y-move, unused)"; + Scroll_Floor = "Scroll_Floor(tag, x-move, y-move, type)"; + Scroll_Texture_Both = "Scroll_Texture_Both(lineid, left, right, down, up)"; + Scroll_Wall = "Scroll_Wall(lineid, x, y, side, flags)"; + Sector_ChangeFlags = "Sector_ChangeFlags(tag, setflags, clearflags)"; + Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)"; + Sector_SetCeilingPanning = "Sector_SetCeilingPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetCeilingScale = "Sector_SetCeilingScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetCeilingScale2 = "Sector_SetCeilingScale2(tag, u-fixed, v-fixed)"; + Sector_SetColor = "Sector_SetColor(tag, red, green, blue, desaturation)"; + Sector_SetCurrent = "Sector_SetCurrent(tag, amount, angle, useline)"; + Sector_SetDamage = "Sector_SetDamage(tag, amount, mod)"; + Sector_SetFade = "Sector_SetFade(tag, red, green, blue)"; + Sector_SetFloorPanning = "Sector_SetFloorPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFloorScale = "Sector_SetFloorScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFloorScale2 = "Sector_SetFloorScale2(tag, u-fixed, v-fixed)"; + Sector_SetFriction = "Sector_SetFriction(tag, amount)"; + Sector_SetGravity = "Sector_SetGravity(tag, ipart, fpart)"; + Sector_SetLink = "Sector_SetLink(controltag, tag, surface, movetype)"; + Sector_SetPlaneReflection = "Sector_SetPlaneReflection(tag, floor, ceiling)"; + Sector_SetRotation = "Sector_SetRotation(tag, floor-angle, ceiling-angle)"; + Sector_SetTranslucent = "Sector_SetTranslucent(tag, plane, amount, type)"; + Sector_SetWind = "Sector_SetWind(tag, amount, angle, useline)"; + SectorDamage = "void SectorDamage(int tag, int amount, str type, str protection_item, int flags)\nDoes the damage only when the function is called,\nand damages everything in the tagged sector.\nUses DAMAGE_ flags."; + SectorSound = "void SectorSound(str sound, int volume)"; + SendToCommunicator = "SendToCommunicator(voc_id, front_only, indentify, nolog)"; + SetActivator = "int SetActivator(int tid[, int pointer_selector])\nThis changes the activator of the script to the first actor found with the specified tid.\ntid: TID of the new activator.\npointer_selector: the pointer of the TID to set as the new activator (use AAPTR_ flags)."; + SetActivatorToTarget = "bool SetActivatorToTarget(int tid)\nThis changes the activator of the script to the current target\nof the first actor found with the specified tid.\nUsing a tid of 0 uses the current activator's target."; + SetActorAngle = "void SetActorAngle(int tid, fixed angle)\nSets the actor's angle.\nangle: a fixed point angle in the range of 0.0 to 1.0 (N = 0.25, W = 0.5, S = 0.75, E = 1.0)."; + SetActorPitch = "void SetActorPitch(int tid, int pitch)\nSets the actor's Pitch.\npitch: a fixed point angle in the range of 0.0 to 1.0."; + SetActorPosition = "bool SetActorPosition(int tid, fixed x, fixed y, fixed z, bool fog)\nThis function sets the x, y, and z coordinates of the specified actor, with or without teleport fog.\nReturns TRUE if the actor position was changed successfully."; + SetActorProperty = "void SetActorProperty(int tid, int property, [int|float|str] value)\nproperty: one of the APROP_ properties."; + SetActorState = "int SetActorState(int tid, str statename [, bool exact])\nForces the actor(s) with the matching tid into the specified state, as defined in Decorate.\nIf tid is 0, the activator is affected.\nThe exact parameter specifies whether or not partial state name matches are accepted."; + SetActorVelocity = "bool SetActorVelocity(int tid, fixed velx, fixed vely, fixed velz, bool add, bool setbob)\nChanges actor velocity.\ntid: TID of things to affect. If 0, the activator is used.\nvelx, vely, velz: The desired velocity for the affected things.\nadd: If true, each affected actor's velocity is modified by the velx, vely\nand velz parameters, rather than replaced by them.\nsetbob: If true, the speed adjustment influences the bobbing of any concerned player actor."; + SetAirControl = "void SetAirControl(fixed amount)\nSets how well the player can move while in the air.\nThe default amount is 0.00390625."; + SetAirSupply = "bool SetAirSupply(int playernum, int tics)\nSets the amount of tics remaining in a player's air supply."; + SetAmmoCapacity = "void SetAmmoCapacity(str typename, int maxamount)\nSets the maximum amount of a type of ammo the player can carry."; + SetCameraToTexture = "void SetCameraToTexture(int cameratid, str texturename, int fov)\nBinds the named texture to the specified camera\n(which does not have to be an actual camera thing).\nThe texture used must be defined as a “cameratexture” in the ANIMDEFS lump."; + SetCeilingTrigger = "void SetCeilingTrigger(int tag, int height, int special [, int arg1 [, int arg2 [, int arg3 [, int arg4 [, int arg5]]]]])\nWhen the ceiling specified by tag moves the specified height,\nspecial(arg1, arg2, arg3, arg4, arg5) will be activated."; + SetCVar = "bool SetCVar(str cvar, int value)\nSets the value of a particular console variable.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, or it is not writable."; + SetCVarString = "bool SetCVarString(str cvar, str value)\nSets the value of a particular console variable.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, or it is not writable."; + SetFloorTrigger = "SetFloorTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)"; + SetFont = "void SetFont(str fontlump)\nSets the current font (only within the script) to fontlump"; + SetGlobalFogParameter = "SetGlobalFogParameter(property, value)"; + SetGravity = "void SetGravity(fixed amount)\nThis function sets the global gravity of an entire level.\nDefault is 800.0"; + SetHUDClipRect = "void SetHUDClipRect(int x, int y, int width, int height [, int wrapwidth])\nSets the clipping rectangle for future HUD messages."; + SetHudSize = "void SetHudSize(int width, int height, bool statusbar)\nCauses text messages to be stretched or shrunk to match the size\nthey would appear if the user's resolution was width by height."; + SetHUDWrapWidth = "void SetHudWrapWidth(int wrapwidth)\nSets the wrapping width for future HUD messages without altering the clipping rectangle.\nIf you set the wrapping width to 0, messages will wrap\nto the full width of the HUD, as normal."; + SetLineActivation = "void SetLineActivation(int lineid, int activation)\nSets the line activation flags of the line with the specified id.\nlineid: The id of the line of which to set the activation flags\nactivation: SPAC_ flags to set. Multiple flags can be set by using the pipe character | between the constant names."; + SetLineBlocking = "void SetLineBlocking (int lineid, int setting)\nDEPRECATED!\nUse Line_SetBlocking instead!"; + SetLineMonsterBlocking = "void SetLineMonsterBlocking(int lineid, int setting)\nDEPRECATED!\nUse Line_SetBlocking instead!"; + SetLineSpecial = "void SetLineSpecial(int lineid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])\nSetLineSpecial will change the special on all lines with the line id number specified."; + SetLineTexture = "void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename)\nSetLineTexture will change the specified texture on all lines with the line id number specified\nline_side: SIDE_ flags can be used.\nsidedef_texture: TEXTURE_ flags can be used.\ntexturename: the texture that will be set on the line. Use '-' to remove a texture."; + SetMarineSprite = "void SetMarineSprite(int tid, str actorclass)\nChanges a Scripted Marine's sprite to match the sprite\nused in the specified actor's spawn state."; + SetMarineWeapon = "void SetMarineWeapon(int tid, int weapon)\nSets a Scripted Marine's weapon on the fly.\nweapon: one of MARINEWEAPON_ flags"; + SetMugShotState = "void SetMugShotState(str state)\nSets the state of the mug shot in SBARINFO status bars.\nThe state you set will only be interrupted by damage or if the player\npicks up a weapon, provided the mugshot supports it."; + SetMusic = "void SetMusic(str song [, int order [, int unused]])"; + SetPlayerProperty = "SetPlayerProperty(who, set, which)"; + SetPointer = "bool SetPointer(int assign_slot, int tid[, int pointer_selector[, int flags]])\nSet the value of one of the caller's stored pointers."; + SetResultValue = "void SetResultValue(int value)"; + SetSkyScrollSpeed = "void SetSkyScrollSpeed(int sky, fixed skyspeed)\nChanges the scrolling speed of a sky.\nThis is useful in conjunction with ChangeSky.\nsky: either 1 or 2.\nskyspeed: the desired scrolling speed."; + SetThingSpecial = "void SetThingSpecial(int tid, int special [, int arg0 [, int arg1 [, int arg2 [, int arg3 [, int arg4]]]]])\nSets the special for any things with the same TID.\nThis is similar to Thing_SetSpecial, except it can only be used from ACS,\nand it can set all of a thing's special arguments.\nIf tid is 0, then the activator is used."; + SetUserArray = "void SetUserArray(int tid, str name, int pos, int value)\nSets one of the affected actor's user array-bound variables."; + SetUserCVar = "bool SetUserCVar(int playernumber, str cvar, int value)\nSets the console variable of a particular player.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, it is not writable, or the player doesn't exist."; + SetUserCVarString = "bool SetUserCVarString(int playernumber, str cvar, str value)\nSets the console variable of a particular player.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, it is not writable, or the player doesn't exist."; + SetUserVariable = "void SetUserVariable(int tid, str name, int value)\nSets one of the affected actor's user variables."; + SetWeapon = "bool SetWeapon(str weaponname)\nSets the player's current weapon to weaponname.\nReturns TRUE if the weapon was set successfully, and FALSE if not."; + sin = "fixed Sin(int angle)"; + SinglePlayer = "int SinglePlayer(void)"; + SoundSequence = "void SoundSequence(str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnActor = "void SoundSequenceOnActor(int tid, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnPolyObj = "void SoundSequenceOnPolyobj(int polynum, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnSector = "void SoundSequenceOnSector(int tag, str sndseq, int location)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundVolume = "void SoundVolume(int tid, int channel, fixed volume)\nChanges the volume of the currently playing sound by the actor(s) with the specified tid.\nIf tid is 0, the sound volume change is done to the sound being played by the activator of the script."; + Spawn = "int Spawn(str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])\nSpawns an actor at the given X, Y and Z coordinates.\nOptionally a TID and a byte angle can be specified."; + SpawnForced = "int SpawnForced(str classname, fixed x, fixed y, fixed z [, int tid [, int angle]])\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe return value is the number of things spawned."; + SpawnDecal = "int SpawnDecal(int tid, str decalname, int flags [, fixed angle = 0.0 [, fixed zoffset = 0.0 [, fixed distance = 64.0]]])\nCreates a decal on a wall by tracing a line from the actor with the\nspecified tid until hitting said wall, on which the decal is then created.\nIf tid is 0, the tracing is done from the activator of the script.\ndecalname: The name of the decal to create, as defined in DECALDEF.\nflags: use SDF_ flags\nThe return value of the function is the number of decals spawned."; + SpawnProjectile = "void SpawnProjectile(int tid, string type, int angle, int speed, int vspeed, int gravity, int newtid)"; + SpawnSpot = "int SpawnSpot(str classname, int spottid [, int tid [, int angle]])\nRequires a MapSpot at the location where you want the Actor to spawn.\nThe return value is the number of things spawned."; + SpawnSpotFacing = "int SpawnSpotFacing(str classname, int spottid [, int tid])\nRequires a MapSpot at the location where you want the Actor to spawn.\nThe thing will assume the angle of the mapspot it is spawned to.\nThe return value is the number of things spawned."; + SpawnSpotFacingForced = "int SpawnSpotFacingForced(str classname, int spottid [, int tid])\nRequires a MapSpot at the location where you want the Actor to spawn.\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe thing will assume the angle of the mapspot it is spawned to.\nThe return value is the number of things spawned."; + SpawnSpotForced = "int SpawnSpotForced(str classname, int spottid [, int tid [, int angle]])\nRequires a MapSpot at the location where you want the Actor to spawn.\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe return value is the number of things spawned."; + Special = "Special"; + Sqrt = "int Sqrt(int number)"; + Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)"; + Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)"; + Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)"; + Stairs_BuildUpDoom = "Stairs_BuildUpDoom(tag, speed, height, delay, reset)"; + Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)"; + StartConversation = "StartConversation(talker_tid, facetalker)"; + StopSound = "void StopSound(int tid, int channel)\nStops the sound currently playing on the specified channel for the actor with matching tid"; + str = "Str expression"; + StrCmp = "int StrCmp(str string1, str string2 [, int maxcomparenum])\nCompares the two strings passed in arguments string1 and string2 character by character.\nIf maxcomparenum is specified, it only compares up to maxcomparenum characters of each string."; + StrCpy = "bool StrCpy(a:destination, string source [, int source_index])\nCopy a source string to a destination array as a series of characters.\nOptionally, the copy can start from a given index in the source string.\nReturns TRUE if the entire string (or substring) was successfully copied to the array;\nFALSE if the copy ran out of room or if a negative source_index was given."; + StrIcmp = "int StrCmp(str string1, str string2 [, int maxcomparenum])\nStrIcmp is case-insensitive version of StrCmp"; + StrLeft = "str StrLeft(str string, int length)\nCreates a new string containing the length first characters of string.\nIf string does not exist, an empty string is returned.\nIf string is shorter than length characters, the entire string is returned."; + StrLen = "int StrLen(str string)"; + StrMid = "str StrMid(str string, int start, int length)\nCreates a new string containing the length characters of string starting from the one at position start.\nIf string does not exist or is shorter than start characters, an empty string is returned. \nIf string is shorter than start + length characters, the entire substring beginning at start is returned."; + StrParam = "int StrParam(type:expression)\nStrParam will create a new string formatted based upon the same method for Print or Log.\nThe return value is the string table index of the new string."; + StrRight = "str StrRight(str string, int length)\nCreates a new string containing the length last characters of string.\nIf string does not exist, an empty string is returned.\nIf string is shorter than length characters, the entire string is returned."; + Suspend = "Suspend"; + Switch = "Switch(expression)"; + TagWait = "void TagWait(int tag)"; + TakeActorInventory = "void TakeActorInventory(int tid, str inventory_item, int amount)\nThis function will take the amount of items from the specified actor.\nTakeActorInventory can remove items that are flagged as undroppable."; + TakeInventory = "void TakeInventory(str inventory_item, int amount)\nThis function will take the number of items specified from the activator.\nTakeInventory can remove items that are flagged as undroppable."; + Team_GivePoints = "Team_GivePoints(team, points, announce)"; + Team_Score = "Team_Score(points, nogrin)"; + Teleport = "Teleport(tid, tag, nosourcefog)"; + Teleport_EndGame = "Teleport_EndGame()"; + Teleport_NewMap = "Teleport_NewMap(map, pos, face)"; + Teleport_NoFog = "Teleport_NoFog(tid, useangle, tag)"; + Teleport_NoStop = "Teleport_NoStop(tid, tag, nofog)"; + Teleport_ZombieChanger = "Teleport_ZombieChanger(tid, tag)"; + TeleportGroup = "TeleportGroup(groupid, sourceid, destinationid, movesource, fog)"; + TeleportInSector = "TeleportInSector(tag, sourceid, destinationid, fog, groupid)"; + TeleportOther = "TeleportOther(tid, destinationid, fog)"; + Terminate = "Terminate"; + Thing_Activate = "Thing_Activate(tid)"; + Thing_ChangeTID = "Thing_ChangeTID(oldtid, newtid)"; + Thing_Damage = "Thing_Damage(tid, amount, mod)"; + Thing_Damage2 = "int Thing_Damage2 (int tid, int amount, str type)\nDamages the specified actor.\nDamage type is specified by name."; + Thing_Deactivate = "Thing_Deactivate(tid)"; + Thing_Destroy = "Thing_Destroy(tid, extreme, tag)"; + Thing_Hate = "Thing_Hate(hater, hatee, type)"; + Thing_Move = "Thing_Move(tid, destid, nofog)"; + Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)"; + Thing_Projectile2 = "void Thing_Projectile2(int tid, int type, int angle, int speed, int vspeed, int gravity, int newtid)"; + Thing_ProjectileAimed = "Thing_ProjectileAimed(tid, type, speed, target, newtid)"; + Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)"; + Thing_ProjectileIntercept = "Thing_ProjectileIntercept(tid, type, speed, target, newtid)"; + Thing_Raise = "Thing_Raise(tid)"; + Thing_Remove = "Thing_Remove(tid)"; + Thing_SetConversation = "Thing_SetConversation(tid, conversationid)"; + Thing_SetGoal = "Thing_SetGoal(tid, goal, delay, dontchasetarget)"; + Thing_SetSpecial = "Thing_SetSpecial(tid, special, arg1, arg2, arg3)"; + Thing_SetTranslation = "Thing_SetTranslation(tid, translation)"; + Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)"; + Thing_SpawnFacing = "Thing_SpawnFacing(tid, type, nofog, newtid)"; + Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)"; + Thing_Stop = "Thing_Stop(tid)"; + ThingCount = "int ThingCount(int type, int tid)"; + ThingCountName = "int ThingCountName(str classname, int tid)"; + ThingCountNameSector = "int ThingCountNameSector(str classname, int tid, int tag)"; + ThingCountSector = "int ThingCountSector(int type, int tid, int tag)"; + ThingSound = "void ThingSound(int tid, str sound, int volume)\nPlays a sound at a thing.\nThis is a point sound, so anyone far away will not hear it as loudly"; + ThrustThing = "ThrustThing(angle, force, nolimit, tid)"; + ThrustThingZ = "ThrustThingZ(tid, speed, up_or_down, add_or_set)"; + Timer = "int Timer(void)"; + TranslucentLine = "TranslucentLine(lineid, amount, additive, moreflags)"; + UniqueTID = "int UniqueTID([int tid [, int limit]])"; + Unloading = "Script expression Unloading"; + UnMorphActor = "int UnMorphActor (int tid[, bool force])"; + Until = "Until(expression)"; + UseActorInventory = "int UseActorInventory (int tid, str classname)\nForces the actor(s) with the specified tid to use an item from their inventory, if they have one.\nReturns TRUE if the item was used successfully."; + UseInventory = "int UseInventory (str classname)\nForces the activator to use the specified inventory item, if he has it.\nReturns TRUE if the item was used successfully."; + UsePuzzleItem = "UsePuzzleItem(item, script, arg1, arg2, arg3)"; + VectorAngle = "fixed VectorAngle(int x, int y)"; + VectorLength = "int VectorLength(int x, int y)"; + Void = "Void"; + While = "While(expression)"; + WhiteReturn = "Script expression WhiteReturn"; + World = "World Int expression:identifier"; +} + +constants +{ + AAPTR_DEFAULT; + AAPTR_FRIENDPLAYER; + AAPTR_MASTER; + AAPTR_NULL; + AAPTR_PLAYER_GETCONVERSATION; + AAPTR_PLAYER_GETTARGET; + AAPTR_PLAYER1; + AAPTR_PLAYER2; + AAPTR_PLAYER3; + AAPTR_PLAYER4; + AAPTR_PLAYER5; + AAPTR_PLAYER6; + AAPTR_PLAYER7; + AAPTR_PLAYER8; + AAPTR_TARGET; + AAPTR_TRACER; + ACTOR_ALIVE; + ACTOR_BOT; + ACTOR_DEAD; + ACTOR_GENERIC; + ACTOR_MISSILE; + ACTOR_MONSTER; + ACTOR_NONE; + ACTOR_PLAYER; + ACTOR_VOODOODOLL; + ACTOR_WORLD; + APROP_Accuracy; + APROP_ActiveSound; + APROP_Alpha; + APROP_Ambush; + APROP_AttackSound; + APROP_AttackZOffset; + APROP_ChaseGoal; + APROP_Damage; + APROP_DamageFactor; + APROP_DeathSound; + APROP_Dormant; + APROP_Dropped; + APROP_Friendly; + APROP_Frightened; + APROP_Gravity; + APROP_Health; + APROP_Height; + APROP_Invulnerable; + APROP_JumpZ; + APROP_Mass; + APROP_MasterTID; + APROP_MeleeRange; + APROP_NameTag; + APROP_NoTarget; + APROP_NoTrigger; + APROP_PainSound; + APROP_Radius; + APROP_RenderStyle; + APROP_ScaleX; + APROP_ScaleY; + APROP_Score; + APROP_SeeSound; + APROP_SpawnHealth; + APROP_Species; + APROP_Speed; + APROP_Stamina; + APROP_TargetTID; + APROP_TracerTID; + APROP_ViewHeight; + APROP_Waterlevel; + ATTN_IDLE; + ATTN_NONE; + ATTN_NORM; + ATTN_STATIC; + BLOCK_CREATURES; + BLOCK_EVERYTHING; + BLOCK_NOTHING; + BLOCK_PLAYERS; + BLOCK_RAILING; + BLOCKF_CREATURES; + BLOCKF_EVERYTHING; + BLOCKF_FLOATERS; + BLOCKF_HITSCAN; + BLOCKF_MONSTERS; + BLOCKF_PLAYERS; + BLOCKF_PROJECTILES; + BLOCKF_RAILING; + BLOCKF_SIGHT; + BLOCKF_USE; + BT_ALTATTACK; + BT_ATTACK; + BT_BACK; + BT_CROUCH; + BT_FORWARD; + BT_JUMP; + BT_LEFT; + BT_LOOKDOWN; + BT_LOOKUP; + BT_MOVEDOWN; + BT_MOVELEFT; + BT_MOVERIGHT; + BT_MOVEUP; + BT_RELOAD; + BT_RIGHT; + BT_SHOWSCORES; + BT_SPEED; + BT_STRAFE; + BT_TURN180; + BT_USE; + BT_USER1; + BT_USER2; + BT_USER3; + BT_USER4; + BT_ZOOM; + CARRY; + CHAN_AUTO; + CHAN_BODY; + CHAN_ITEM; + CHAN_LISTENERZ; + CHAN_MAYBE_LOCAL; + CHAN_NOPAUSE; + CHAN_UI; + CHAN_VOICE; + CHAN_WEAPON; + CHANGELEVEL_KEEPFACING; + CHANGELEVEL_NOINTERMISSION; + CHANGELEVEL_NOMONSTERS; + CHANGELEVEL_PRERAISEWEAPON; + CHANGELEVEL_RESETHEALTH; + CHANGELEVEL_RESETINVENTORY; + CLASS_CLERIC; + CLASS_FIGHTER; + CLASS_MAGE; + CR_BLACK; + CR_BLUE; + CR_BRICK; + CR_BROWN; + CR_CREAM; + CR_CYAN; + CR_DARKBROWN; + CR_DARKGRAY; + CR_DARKGREEN; + CR_DARKGREY; + CR_DARKRED; + CR_GOLD; + CR_GRAY; + CR_GREEN; + CR_GREY; + CR_LIGHTBLUE; + CR_OLIVE; + CR_ORANGE; + CR_PURPLE; + CR_RED; + CR_TAN; + CR_UNTRANSLATED; + CR_WHITE; + CR_YELLOW; + CSF_NOBLOCKALL; + CSF_NOFAKEFLOORS; + DAMAGE_IN_AIR; + DAMAGE_NONPLAYERS; + DAMAGE_PLAYERS; + DAMAGE_SUBCLASSES_PROTECT; + FALSE; + FHF_NORANDOMPUFFZ; + FOGP_DENSITY; + FOGP_OUTSIDEDENSITY; + FOGP_SKYFOG; + GAME_NET_COOPERATIVE; + GAME_NET_DEATHMATCH; + GAME_SINGLE_PLAYER; + GAME_TITLE_MAP; + HUDMSG_ADDBLEND; + HUDMSG_ALPHA; + HUDMSG_COLORSTRING; + HUDMSG_FADEINOUT; + HUDMSG_FADEOUT; + HUDMSG_LAYER_OVERHUD; + HUDMSG_LAYER_OVERMAP; + HUDMSG_LAYER_UNDERHUD; + HUDMSG_LOG; + HUDMSG_NOTWITH3DVIEW; + HUDMSG_NOTWITHFULLMAP; + HUDMSG_NOTWITHOVERLAYMAP; + HUDMSG_NOWRAP; + HUDMSG_PLAIN; + HUDMSG_TYPEON; + INPUT_BUTTONS; + INPUT_FORWARDMOVE; + INPUT_OLDBUTTONS; + INPUT_PITCH; + INPUT_ROLL; + INPUT_SIDEMOVE; + INPUT_UPMOVE; + INPUT_YAW; + IS_BOSSFIGHT; + IS_COUNTDOWN; + IS_FIRSTCOUNTDOWN; + IS_INPROGRESS; + IS_WAITINGFORPLAYERS; + IS_WAVECOMPLETE; + LEVELINFO_CLUSTERNUM; + LEVELINFO_FOUND_ITEMS; + LEVELINFO_FOUND_SECRETS; + LEVELINFO_KILLED_MONSTERS; + LEVELINFO_LEVELNUM; + LEVELINFO_PAR_TIME; + LEVELINFO_SUCK_TIME; + LEVELINFO_TOTAL_ITEMS; + LEVELINFO_TOTAL_MONSTERS; + LEVELINFO_TOTAL_SECRETS; + LINE_BACK; + LINE_FRONT; + MARINEWEAPON_BerserkFist; + MARINEWEAPON_BFG; + MARINEWEAPON_Chaingun; + MARINEWEAPON_Chainsaw; + MARINEWEAPON_Dummy; + MARINEWEAPON_Fist; + MARINEWEAPON_Pistol; + MARINEWEAPON_PlasmaRifle; + MARINEWEAPON_Railgun; + MARINEWEAPON_RocketLauncher; + MARINEWEAPON_Shotgun; + MARINEWEAPON_SuperShotgun; + MOD_BFG_SPLASH; + MOD_CRUSH; + MOD_DISINTEGRATE; + MOD_ELECTRIC; + MOD_EXIT; + MOD_FALLING; + MOD_HIT; + MOD_ICE; + MOD_LAVA; + MOD_POISON; + MOD_RAILGUN; + MOD_SLIME; + MOD_SUICIDE; + MOD_TELEFRAG; + MOD_UNKNOWN; + MOD_WATER; + MODINPUT_BUTTONS; + MODINPUT_FORWARDMOVE; + MODINPUT_OLDBUTTONS; + MODINPUT_PITCH; + MODINPUT_ROLL; + MODINPUT_SIDEMOVE; + MODINPUT_UPMOVE; + MODINPUT_YAW; + MOVIE_Failed; + MOVIE_Played; + MOVIE_Played_Aborted; + MOVIE_Played_NoVideo; + MRF_ADDSTAMINA; + MRF_FAILNOLAUGH; + MRF_FAILNOTELEFRAG; + MRF_FULLHEALTH; + MRF_LOSEACTUALWEAPON; + MRF_NEWTIDBEHAVIOUR; + MRF_OLDEFFECTS; + MRF_UNDOBYCHAOSDEVICE; + MRF_UNDOBYDEATH; + MRF_UNDOBYDEATHFORCED; + MRF_UNDOBYDEATHSAVES; + MRF_UNDOBYTOMEOFPOWER; + MRF_WHENINVULNERABLE; + NO; + NO_CHANGE; + NO_TEAM; + NOT_BOTTOM; + NOT_CEILING; + NOT_FLOOR; + NOT_MIDDLE; + NOT_TOP; + OFF; + ON; + PLAYERINFO_AIMDIST; + PLAYERINFO_COLOR; + PLAYERINFO_DESIREDFOV; + PLAYERINFO_FOV; + PLAYERINFO_GENDER; + PLAYERINFO_MOVEBOB; + PLAYERINFO_NEVERSWITCH; + PLAYERINFO_PLAYERCLASS; + PLAYERINFO_STILLBOB; + PLAYERINFO_TEAM; + PRINTNAME_LEVEL; + PRINTNAME_LEVELNAME; + PRINTNAME_SKILL; + PROP_ALLMAP; + PROP_BUDDHA; + PROP_FLIGHT; + PROP_FLY; + PROP_FROZEN; + PROP_INFRARED; + PROP_INSTANTWEAPONSWITCH; + PROP_INVISIBILITY; + PROP_INVULNERABILITY; + PROP_NOTARGET; + PROP_RADIATIONSUIT; + PROP_SPEED; + PROP_STRENGTH; + PROP_TOTALLYFROZEN; + PROP_WEAPONLEVEL2; + PTROP_NOSAFEGUARDS; + PTROP_UNSAFEMASTER; + PTROP_UNSAFETARGET; + SCROLL; + SCROLL_AND_CARRY; + SDF_ABSANGLE; + SDF_PERMANENT; + SECF_FLOORDROP; + SECF_NOFALLINGDAMAGE; + SECF_NORESPAWN; + SECF_SILENT; + SECSEQ_CEILING; + SECSEQ_FLOOR; + SECSEQ_FULLHEIGHT; + SECSEQ_INTERIOR; + SIDE_BACK; + SIDE_FRONT; + SKILL_EASY; + SKILL_HARD; + SKILL_NORMAL; + SKILL_VERY_EASY; + SKILL_VERY_HARD; + SPAC_None; + SPAC_Cross; + SPAC_Use; + SPAC_MCross; + SPAC_Impact; + SPAC_Push; + SPAC_PCross; + SPAC_UseThrough; + SPAC_AnyCross; + SPAC_MUse; + SPAC_MPush; + SPAC_UseBack; + STYLE_Add; + STYLE_Fuzzy; + STYLE_None; + STYLE_Normal; + STYLE_OptFuzzy; + STYLE_Shaded; + STYLE_SoulTrans; + STYLE_Stencil; + STYLE_Translucent; + STYLE_TranslucentStencil; + T_ABADDON; + T_ABADDONSHOT; + T_AMMOBOX; + T_AMULETOFWARDING; + T_ANTIGRAVBELT; + T_ARACHNOTRON; + T_ARACHNOTRONPLASMA; + T_ARMORBONUS; + T_ARROW; + T_AXEKEY; + T_BACKPACK; + T_BARON; + T_BARONBALL; + T_BARREL; + T_BATTERY; + T_BEAST; + T_BEASTBALL; + T_BELPHEGOR; + T_BERSERK; + T_BFG; + T_BFG10000; + T_BFG10KSHOT; + T_BFGSHOT; + T_BISHOP; + T_BLADE; + T_BLASTER; + T_BLOOD; + T_BLOODDEMON; + T_BLOODPOOL; + T_BLOODPOOL1; + T_BLOODPOOL2; + T_BLUEARMOR; + T_BLUEFLAG; + T_BLUEKEY; + T_BLUEKEYCARD; + T_BLUESKULLKEY; + T_BLUETELEGLITTER; + T_BOUNCYMACEBALL; + T_BRAINS; + T_BRIDGE; + T_CACODEMON; + T_CACODEMONSHOT; + T_CACOLANTERN; + T_CACOLANTERNSHOT; + T_CELL; + T_CENTAUR; + T_CENTAUR_MASH; + T_CENTAURLEADER; + T_CHAINGUN; + T_CHAINGUY; + T_CHAINSAW; + T_CHICKEN; + T_CLERICHOLY1; + T_CLERICHOLY2; + T_CLERICHOLY3; + T_CLERICSTAFF; + T_CLINK; + T_CLIP; + T_COMPUTERMAP; + T_CROSSBOW; + T_CROSSBOWMAINBLAST; + T_CROSSBOWMINIBLAST; + T_CROSSBOWPOWERBLAST; + T_CYBERDEMON; + T_DARKIMP; + T_DARKIMPFIREBALL; + T_DART; + T_DEATHBALL; + T_DEMON; + T_DEMON_MASH; + T_DEMON1; + T_DEMON2_MASH; + T_DIRT1; + T_DIRT2; + T_DIRT3; + T_DIRT4; + T_DIRT5; + T_DIRT6; + T_DOOMSPHERE; + T_DRAGONSKINBRACERS; + T_DRAIN; + T_DSPARILALONE; + T_DSPARILBLUESHOT; + T_DSPARILONSERPENT; + T_DSPARILTELEPORTDEST; + T_DSPARILWIZARDSPAWNER; + T_EMERALDKEY; + T_ETTIN; + T_ETTIN_MASH; + T_FALCONSHIELD; + T_FEATHER; + T_FIGHTERAXE; + T_FIGHTERHAMMER; + T_FIGHTERSWORD1; + T_FIGHTERSWORD2; + T_FIGHTERSWORD3; + T_FIREBALL1; + T_FIREGARGOYLE; + T_FIREKEY; + T_FLAME_LARGE; + T_FLAME_SMALL; + T_FLAMINGBARREL; + T_FLESH_DRIP1; + T_FLESH_DRIP2; + T_GAUNTLETS; + T_GREENARMOR; + T_GREENKEY; + T_GRENADE; + T_GRENADELAUNCHER; + T_GUTS; + T_HASTE; + T_HEALTHBONUS; + T_HEAVYMACEBALL; + T_HECTEBUS; + T_HEFTYBLASTERAMMO; + T_HEFTYCROSSBOWAMMO; + T_HEFTYMACEAMMO; + T_HEFTYPHOENIXRODAMMO; + T_HEFTYSKULLRODAMMO; + T_HEFTYWANDAMMO; + T_HELLKNIGHT; + T_HIGHJUMP; + T_HORNKEY; + T_ICEGOLEM; + T_ICESHARD; + T_IMP; + T_IMPFIREBALL; + T_IMPLEADER; + T_INFRAGOGGLES; + T_INFRATRACKER; + T_INVISIBILITY; + T_INVULNERABILITY; + T_IRONFEET; + T_IRONLICH; + T_IRONLICHBLUESHOT; + T_ITEMALLMAP; + T_ITEMBAGOFHOLDING; + T_ITEMBOOSTMANA; + T_ITEMBOOTS; + T_ITEMEGG; + T_ITEMFLECHETTE; + T_ITEMFLIGHT; + T_ITEMHEALTHFLASH; + T_ITEMHEALTHFLASK; + T_ITEMHEALTHFULL; + T_ITEMHEALTHPOTION; + T_ITEMINVISIBILITY; + T_ITEMINVULNERABILITY; + T_ITEMPORK; + T_ITEMREPULSION; + T_ITEMSUMMON; + T_ITEMTELEPORT; + T_ITEMTIMEBOMB; + T_ITEMTOME; + T_ITEMTORCH; + T_ITEMTPORTOTHER; + T_KNIGHT; + T_KNIGHTAXE; + T_KNIGHTBLOODAXE; + T_KNIGHTGHOST; + T_LIGHTAMP; + T_LOSTSOUL; + T_MACE; + T_MACEKEY; + T_MAGESHARDS; + T_MAGESTAFF1; + T_MAGESTAFF2; + T_MAGESTAFF3; + T_MANA1; + T_MANA2; + T_MANA3; + T_MANCUBUS; + T_MANCUBUSSHOT; + T_MAXARMORBONUS; + T_MAXHEALTHBONUS; + T_MEDKIT; + T_MEGASPHERE; + T_MESHARMOR; + T_METALKEY; + T_MINIGUN; + T_MORPHBLAST; + T_MUMMY; + T_MUMMYGHOST; + T_MUMMYHEAD; + T_MUMMYLEADER; + T_MUMMYLEADERGHOST; + T_NOGRAVITYMACEBALL; + T_NONE; + T_PAINELEMENTAL; + T_PERMLARGEFLAME; + T_PERMSMALLFLAME; + T_PHOENIXROD; + T_PHOENIXSHOT; + T_PISTOL; + T_PLASMABOLT; + T_PLASMAGUN; + T_PLATINUMHELM; + T_POD; + T_PODGENERATOR; + T_POISONDART; + T_POWERWANDBIGGERBLAST; + T_POWERWANDMINIBLAST; + T_PROSPERITY; + T_PUFF; + T_PUZZBOOK1; + T_PUZZBOOK2; + T_PUZZGEMBIG; + T_PUZZGEMBLUE1; + T_PUZZGEMBLUE2; + T_PUZZGEMGREEN1; + T_PUZZGEMGREEN2; + T_PUZZGEMRED; + T_PUZZSKULL; + T_RAGE; + T_RAILGUN; + T_RANDOMPOWERUP; + T_REDARMOR; + T_REDFLAG; + T_REDKEYCARD; + T_REDSKULLKEY; + T_REDTELEGLITTER; + T_REFLECTION; + T_REGENERATION; + T_RESISTANCE; + T_REVENANT; + T_RIPPER; + T_RIPPERBALL; + T_ROCK1; + T_ROCK2; + T_ROCK3; + T_ROCKET; + T_ROCKETAMMO; + T_ROCKETBOX; + T_ROCKETLAUNCHER; + T_RUSTYKEY; + T_SCRIPTEDMARINE; + T_SERPENTFIREBALL; + T_SERPENTKEY; + T_SHELLBOX; + T_SHELLS; + T_SHIELD1; + T_SHIELD2; + T_SHOTGUN; + T_SHOTGUY; + T_SILVERKEY; + T_SKULLROD; + T_SKULLRODBLAST; + T_SMALLMETALKEY; + T_SNAKE; + T_SNAKEPROJECTILE; + T_SNAKEPROJECTILEBIG; + T_SOULSPHERE; + T_SOUND_WATERFALL; + T_SOUND_WIND; + T_SPARK_DRIP; + T_SPECTRE; + T_SPIDERMASTERMIND; + T_SPREAD; + T_SSGGUY; + T_STAINEDGLASS0; + T_STAINEDGLASS1; + T_STAINEDGLASS2; + T_STAINEDGLASS3; + T_STAINEDGLASS4; + T_STAINEDGLASS5; + T_STAINEDGLASS6; + T_STAINEDGLASS7; + T_STAINEDGLASS8; + T_STAINEDGLASS9; + T_STEALTHARACHNOTRON; + T_STEALTHBARON; + T_STEALTHCACODEMON; + T_STEALTHCHAINGUY; + T_STEALTHIMP; + T_STEALTHKNIGHT; + T_STEALTHMANCUBUS; + T_STEALTHREVENANT; + T_STEALTHSERGEANT; + T_STEALTHSHOTGUY; + T_STEALTHVILE; + T_STEALTHZOMBIE; + T_STIMPACK; + T_STRENGTH; + T_SUPERSHOTGUN; + T_TEMPLARGEFLAME; + T_TEMPSMALLFLAME; + T_THRUSTSPIKEDOWN; + T_THRUSTSPIKEUP; + T_TIMEFREEZER; + T_TINYVOLCANOBALL; + T_TRACER; + T_TRANSLUCENCY; + T_TURBOSPHERE; + T_VILE; + T_VOLCANO; + T_VOLCANOBALL; + T_WATERDRIP; + T_WATERLURKER; + T_WATERLURKERLEADER; + T_WHIRLWIND; + T_WHITEFLAG; + T_WIMPYBLASTERAMMO; + T_WIMPYCROSSBOWAMMO; + T_WIMPYMACEAMMO; + T_WIMPYPHOENIXRODAMMO; + T_WIMPYSKULLRODAMMO; + T_WIMPYWANDAMMO; + T_WIZARD; + T_WIZARDSHOT; + T_WOLFSS; + T_WRAITH; + T_WRAITHBURIED; + T_YELLOWKEY; + T_YELLOWKEYCARD; + T_YELLOWSKULLKEY; + T_ZOMBIE; + TEAM_BLUE; + TEAM_RED; + TEXFLAG_ADDOFFSET; + TEXFLAG_BOTTOM; + TEXFLAG_MIDDLE; + TEXFLAG_TOP; + TEXTURE_BOTTOM; + TEXTURE_MIDDLE; + TEXTURE_TOP; + TRUE; + YES; +} \ No newline at end of file diff --git a/Build/Scripting/Dehacked.cfg b/Build/Scripting/Dehacked.cfg new file mode 100644 index 0000000..110cf93 --- /dev/null +++ b/Build/Scripting/Dehacked.cfg @@ -0,0 +1,145 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for Dehacked +\*******************************************************************/ + +// Editor settings +description = "Dehacked script"; +codepage = 0; +extensions = "deh,bex"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 6; // Perl-style +keywordhelp = ""; + +keywords +{ + [CODEPTR] = "[CODEPTR]"; + [PARS] = "[PARS]"; + [STRINGS] = "[STRINGS]"; + Action.sound = "Action sound"; + Alert.sound = "Alert sound"; + Ammo = "Ammo"; + Ammo.&.Keys = "Ammo & Keys"; + Ammo.type = "Ammo type"; + Attack.sound = "Attack sound"; + Auto-map = "Auto-map"; + BEHOLD.menu = "BEHOLD menu"; + Berserk = "Berserk"; + BFG.Cells/Shot = "BFG Cells/Shot"; + Bits = "Bits"; + Blue.Armor.Class = "Blue Armor Class"; + Bobbing.frame = "Bobbing frame"; + Chainsaw = "Chainsaw"; + Change.music = "Change music"; + Cheat = "Cheat"; + Close.attack.frame = "Close attack frame"; + Codep.Frame = "Codep Frame"; + Death.frame = "Death frame"; + Death.sound = "Death sound"; + Deselect.frame = "Deselect frame"; + Doom.version = "Doom version"; + Duration = "Duration"; + Exploding.frame = "Exploding frame"; + Far.attack.frame = "Far attack frame"; + Firing.frame = "Firing frame"; + First.moving.frame = "First moving frame"; + Frame = "Frame"; + God.mode = "God mode"; + God.Mode.Health = "God Mode Health"; + Green.Armor.Class = "Green Armor Class"; + Height = "Height"; + Hit.points = "Hit points"; + ID.# = "ID #"; + IDFA.Armor = "IDFA Armor"; + IDFA.Armor.Class = "IDFA Armor Class"; + IDKFA.Armor = "IDKFA Armor"; + IDKFA.Armor.Class = "IDKFA Armor Class"; + INCLUDE = "INCLUDE"; + INCLUDE.NOTEXT = "INCLUDE NOTEXT"; + Initial.Bullets = "Initial Bullets"; + Initial.frame = "Initial frame"; + Initial.Health = "Initial Health"; + Injury.frame = "Injury frame"; + Invincibility = "Invincibility"; + Invisibility = "Invisibility"; + Level.Warp = "Level Warp"; + Lite-amp.Goggles = "Lite-amp Goggles"; + Mass = "Mass"; + Max.ammo = "Max ammo"; + Max.Armor = "Max Armor"; + Max.Health = "Max Health"; + Max.Soulsphere = "Max Soulsphere"; + Megasphere.Health = "Megasphere Health"; + Misc = "Misc"; + Missile.damage = "Missile damage"; + Monsters.Infight = "Monsters Infight"; + Next.frame = "Next frame"; + No.Clipping.1 = "No Clipping 1"; + No.Clipping.2 = "No Clipping 2"; + Offset = "Offset"; + Pain.chance = "Pain chance"; + Pain.sound = "Pain sound"; + par = "par"; + Patch.format = "Patch format"; + Per.ammo = "Per ammo"; + Player.Position = "Player Position"; + Pointer = "Pointer"; + Radiation.Suit = "Radiation Suit"; + Reaction.time = "Reaction time"; + Respawn.frame = "Respawn frame"; + Select.frame = "Select frame"; + Shooting.frame = "Shooting frame"; + Soulsphere.Health = "Soulsphere Health"; + Sound = "Sound"; + Speed = "Speed"; + Sprite = "Sprite"; + Sprite.number = "Sprite number"; + Sprite.subnumber = "Sprite subnumber"; + Text = "Text"; + Thing = "Thing"; + Unknown.1 = "Unknown 1"; + Unknown.2 = "Unknown 2"; + Weapon = "Weapon"; + Width = "Width"; + Zero.1 = "Zero 1"; + Zero.2 = "Zero 2"; + Zero.3 = "Zero 3"; + Zero.4 = "Zero 4"; + Zero/One = "Zero/One"; +} + +constants +{ + AMBUSH; + BOUNCES; + CORPSE; + COUNTITEM; + COUNTKILL; + DROPOFF; + DROPPED; + FLOAT; + FRIEND; + INFLOAT; + JUSTATTACKED; + JUSTHIT; + MISSILE; + NOBLOCKMAP; + NOBLOOD; + NOCLIP; + NOGRAVITY; + NOSECTOR; + NOTDMATCH; + PICKUP; + SHADOW; + SHOOTABLE; + SKULLFLY; + SLIDE; + SOLID; + SPAWNCEILING; + SPECIAL; + TELEPORT; + TOUCHY; + TRANSLATION1; + TRANSLATION2; + TRANSLUCENT; +} diff --git a/Build/Scripting/Doomsday_DED.cfg b/Build/Scripting/Doomsday_DED.cfg new file mode 100644 index 0000000..27d8dce --- /dev/null +++ b/Build/Scripting/Doomsday_DED.cfg @@ -0,0 +1,98 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for DED +\*******************************************************************/ + +// Editor settings +description = "Doomsday DED script"; +codepage = 0; +extensions = "ded"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 1; +keywordhelp = "http://dengine.net/dew/index.php?title=%K"; + +keywords +{ + Blending.Mode = "Blending Mode"; + Copy.Model = "Copy Model"; + File = "File"; + Flags = "Flags"; + Frame = "Frame"; + Frame.Range = "Frame Range"; + Group = "Group"; + ID = "ID"; + Include = "Include"; + IncludeIf = "IncludeIf"; + IncludeIf.Not = "IncludeIf Not"; + Inter = "Inter"; + Interpolate = "Interpolate"; + MD2 = "MD2"; + Model = "Model"; + ModelPath = "ModelPath"; + Off = "Off"; + Offset = "Offset"; + Offset.XYZ = "Offset XYZ"; + Parm = "Parm"; + Resize = "Resize"; + Scale = "Scale"; + Scale.XYZ = "Scale XYZ"; + Selector = "Selector"; + Selskin = "Selskin"; + Selskin.Mask = "Selskin Mask"; + Selskin.Shift = "Selskin Shift"; + Selskins = "Selskins"; + Shadow.Radius = "Shadow Radius"; + Shiny = "Shiny"; + Shiny.Color = "Shiny Color"; + Shiny.Reaction = "Shiny Reaction"; + Shiny.Skin = "Shiny Skin"; + Skin = "Skin"; + Skin.File = "Skin File"; + Skin.Range = "Skin Range"; + Skin.Ticks = "Skin Ticks"; + SkipIf = "SkipIf"; + SkipIf.Not = "SkipIf Not"; + Sprite = "Sprite"; + Sprite.Frame = "Sprite Frame"; + State = "State"; + Sub = "Sub"; + Transparent = "Transparent"; +} + +constants +{ + add; + alignpitch; + alignyaw; + autoscale; + brightshadow; + brightshadow2; + dark; + darkshadow; + fullbright; + idangle; + idframe; + idskin; + invmul; + litshiny; + movpitch; + movyaw; + mul; + nointerpol; + nomaxz; + noptc; + normal; + notexcomp; + noz; + ptoffsub1; + revsub; + selskin; + shadow1; + shadow2; + skintrans; + specular; + spin; + sub; + sub2; + worldtime; +} diff --git a/Build/Scripting/GZDoom_MODELDEF.cfg b/Build/Scripting/GZDoom_MODELDEF.cfg new file mode 100644 index 0000000..e3d7fc2 --- /dev/null +++ b/Build/Scripting/GZDoom_MODELDEF.cfg @@ -0,0 +1,41 @@ +/*******************************************************************\ + GZDoom Builder Script highlighting definitions for MODELDEF +\*******************************************************************/ + +// Editor settings +description = "GZDoom MODELDEF"; +codepage = 0; +extensions = "mdd"; +casesensitive = false; +insertcase = 1; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +keywordhelp = "http://zdoom.org/wiki/MODELDEF"; +scripttype = 2; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + Path = "Path <\"path\">"; + Model = "Model <\"model file\">"; + Skin = "Skin <\"skin file\">"; + Scale = "Scale "; + Frame = "Frame <\"frame name\">"; + FrameIndex = "FrameIndex "; + Rotation-Speed = "Rotation-Speed "; + Rotation-Vector = "Rotation-Vector "; + Rotation-Center = "Rotation-Center "; + ZOffset = "ZOffset "; + AngleOffset = "AngleOffset "; + PitchOffset = "PitchOffset "; + RollOffset = "RollOffset "; +} + +constants +{ + PITCHFROMMOMENTUM; + IGNORETRANSLATION; + INTERPOLATEDOUBLEDFRAMES; + ROTATING; + NOINTERPOLATION; + INHERITACTORPITCH; + INHERITACTORROLL; +} \ No newline at end of file diff --git a/Build/Scripting/Hexen_ACS.cfg b/Build/Scripting/Hexen_ACS.cfg new file mode 100644 index 0000000..550ac28 --- /dev/null +++ b/Build/Scripting/Hexen_ACS.cfg @@ -0,0 +1,299 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for ACS +\*******************************************************************/ + +// Compiler settings +compiler = "hexen_acc"; +parameters = "-H -I \"%PT\" -I \"%PS\" %FI %FO"; +resultlump = "BEHAVIOR"; + +// Editor settings +description = "Hexen ACS script"; +codepage = 0; +extensions = "acs"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; +snippetsdir = "acs"; +scripttype = 1; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + #Define = "#Define identifier expression"; + #Import = "#Import"; + #Include = "#Include"; + #Library = "#Library"; + #LibDefine = "#LibDefine identifier expression"; + ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)"; + ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)"; + ACS_Suspend = "ACS_Suspend(script, map)"; + ACS_Terminate = "ACS_Terminate(script, map)"; + ActivatorSound = "ActivatorSound(name, volume)"; + ActivatorTID = "ActivatorTID()"; + Bool = "Bool expression"; + Break = "Break"; + Return = "Return"; + Case = "Case expression:"; + Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush)"; + Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush)"; + Ceiling_CrushStop = "Ceiling_CrushStop(tag)"; + Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush)"; + Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)"; + Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)"; + Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)"; + ChangeCeiling = "void ChangeCeiling(int tag, str flatname)"; + ChangeFloor = "void ChangeFloor(int tag, str flatname)"; + ClearLineSpecial = "void ClearLineSpecial(void)\nClears the special of the line that activated the script."; + Const = "Const"; + Continue = "Continue"; + DamageThing = "DamageThing(amount)"; + Death = "Script expression Death"; + Default = "Default:"; + Delay = "void Delay(int tics)"; + Disconnect = "Script expression Disconnect"; + Do = "Do"; + Door_Close = "Door_Close(tag, speed)"; + Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock)"; + Door_Open = "Door_Open(tag, speed)"; + Door_Raise = "Door_Raise(tag, speed, delay)"; + Else = "Else"; + Enter = "Script expression Enter"; + Floor_CrushStop = "Floor_CrushStop(tag)"; + Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)"; + Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)"; + Floor_LowerInstant = "Floor_LowerInstant(tag, arg1, height)"; + Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)"; + Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)"; + Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)"; + Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush)"; + Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)"; + Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)"; + Floor_RaiseInstant = "Floor_RaiseInstant(tag, arg1, height)"; + Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)"; + Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)"; + Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)"; + FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)"; + FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)"; + For = "For(initialization, condition, iteration)"; + Function = "Function Void expression (Void)"; + GameSkill = "int GameSkill(void)"; + GameType = "int GameType(void)"; + If = "if(expression)"; + Int = "int expression"; + Light_ChangeToValue = "Light_ChangeToValue(tag, value)"; + Light_Fade = "Light_Fade(tag, value, tics)"; + Light_Flicker = "Light_Flicker(tag, upper, lower)"; + Light_ForceLightning = "Light_ForceLightning()"; + Light_Glow = "Light_Glow(tag, upper, lower, tics)"; + Light_LowerByValue = "Light_LowerByValue(tag, value)"; + Light_RaiseByValue = "Light_RaiseByValue(tag, value)"; + Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)"; + LineSide = "int LineSide(void)"; + Open = "Script expression Open"; + Pillar_Build = "Pillar_Build(tag, speed, height)"; + Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush)"; + Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)"; + Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)"; + Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)"; + Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)"; + Plat_Stop = "Plat_Stop(tag)"; + Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)"; + Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)"; + Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)"; + PlayerCount = "int PlayerCount(void)\nReturns the number of players currently in the game"; + Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)"; + Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)"; + Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)"; + Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)"; + Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)"; + Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)"; + Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed)"; + Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)"; + Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)"; + Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)"; + PolyWait = "void PolyWait(int polyid)"; + Print = "void Print(type:expression)\nPrint will print something to the screen.\nPrint will only display for the activator of the script\nFor printing to all players, use PrintBold."; + PrintBold = "void PrintBold(type:expression)\nThis is exactly the same as Print, except all players will see the printed text\non the screen instead of just the activator of the script."; + Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)"; + Random = "int Random(int min, int max)"; + Restart = "Restart"; + Script = "Script expression"; + ScriptWait = "void ScriptWait(int script)"; + Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)"; + SectorSound = "void SectorSound(str sound, int volume)"; + SetLineBlocking = "void SetLineBlocking(int lineid, int blocking)"; + SetLineSpecial = "void SetLineSpecial(int lineid, int special[, int arg0[, int arg1[, int arg2[, int arg3[, int arg4]]]]])\nSetLineSpecial will change the special on all lines with the line id number specified."; + SetLineTexture = "void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename)\nSetLineTexture will change the specified texture on all lines with the line id number specified\nline_side: SIDE_ flags can be used.\nsidedef_texture: TEXTURE_ flags can be used.\ntexturename: the texture that will be set on the line. Use '-' to remove a texture."; + SoundSequence = "void SoundSequence(str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + Special = "Special"; + Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)"; + Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)"; + Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)"; + Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)"; + str = "str expression"; + Suspend = "Suspend"; + Switch = "Switch(expression)"; + TagWait = "void TagWait(int tag)"; + Teleport = "Teleport(tid, tag, nosourcefog)"; + Teleport_NewMap = "Teleport_NewMap(map, pos)"; + Teleport_NoFog = "Teleport_NoFog(tid)"; + Terminate = "Terminate"; + Thing_Activate = "Thing_Activate(tid)"; + Thing_Deactivate = "Thing_Deactivate(tid)"; + Thing_Destroy = "Thing_Destroy(tid, extreme)"; + Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)"; + Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)"; + Thing_Remove = "Thing_Remove(tid)"; + Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)"; + Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)"; + ThingCount = "int ThingCount(int type, int tid)"; + ThrustThing = "ThrustThing(angle, force, limit, tid)"; + Timer = "int Timer(void)"; + Unloading = "Script expression Unloading"; + Until = "Until(expression)"; + Void = "Void"; + While = "While(expression)"; + World = "World Int expression:identifier"; +} + +constants +{ + TRUE; + FALSE; + ON; + OFF; + YES; + NO; + LINE_FRONT; + LINE_BACK; + SIDE_FRONT; + SIDE_BACK; + TEXTURE_TOP; + TEXTURE_MIDDLE; + TEXTURE_BOTTOM; + GAME_SINGLE_PLAYER; + GAME_NET_COOPERATIVE; + GAME_NET_DEATHMATCH; + CLASS_FIGHTER; + CLASS_CLERIC; + CLASS_MAGE; + SKILL_VERY_EASY; + SKILL_EASY; + SKILL_NORMAL; + SKILL_HARD; + SKILL_VERY_HARD; + T_NONE; + T_CENTAUR; + T_CENTAURLEADER; + T_DEMON; + T_ETTIN; + T_FIREGARGOYLE; + T_WATERLURKER; + T_WATERLURKERLEADER; + T_WRAITH; + T_WRAITHBURIED; + T_FIREBALL1; + T_MANA1; + T_MANA2; + T_ITEMBOOTS; + T_ITEMEGG; + T_ITEMFLIGHT; + T_ITEMSUMMON; + T_ITEMTPORTOTHER; + T_ITEMTELEPORT; + T_BISHOP; + T_ICEGOLEM; + T_BRIDGE; + T_DRAGONSKINBRACERS; + T_ITEMHEALTHPOTION; + T_ITEMHEALTHFLASK; + T_ITEMHEALTHFULL; + T_ITEMBOOSTMANA; + 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_MORPHBLAST; + T_ROCK1; + T_ROCK2; + T_ROCK3; + T_DIRT1; + T_DIRT2; + T_DIRT3; + T_DIRT4; + T_DIRT5; + T_DIRT6; + T_ARROW; + T_DART; + T_POISONDART; + T_RIPPERBALL; + T_STAINEDGLASS1; + T_STAINEDGLASS2; + T_STAINEDGLASS3; + T_STAINEDGLASS4; + T_STAINEDGLASS5; + T_STAINEDGLASS6; + T_STAINEDGLASS7; + T_STAINEDGLASS8; + T_STAINEDGLASS9; + T_STAINEDGLASS0; + T_BLADE; + T_ICESHARD; + T_FLAME_SMALL; + T_FLAME_LARGE; + T_MESHARMOR; + T_FALCONSHIELD; + T_PLATINUMHELM; + T_AMULETOFWARDING; + T_ITEMFLECHETTE; + T_ITEMTORCH; + T_ITEMREPULSION; + 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_GREENKEY; + T_MACEKEY; + T_SILVERKEY; + T_RUSTYKEY; + T_HORNKEY; + T_SERPENTKEY; + T_WATERDRIP; + T_TEMPSMALLFLAME; + T_PERMSMALLFLAME; + T_TEMPLARGEFLAME; + T_PERMLARGEFLAME; + 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; +} diff --git a/Build/Scripting/Legacy_FS.cfg b/Build/Scripting/Legacy_FS.cfg new file mode 100644 index 0000000..f874615 --- /dev/null +++ b/Build/Scripting/Legacy_FS.cfg @@ -0,0 +1,169 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for FS +\*******************************************************************/ + +// Editor settings +description = "Legacy Fragglescript"; +codepage = 0; +extensions = "fs"; +casesensitive = true; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 3; // CPP-style, case-sensitive +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = ""; + +keywords +{ + Abs = "Abs(x)"; + ACos = "ACos(x)"; + AmbientSound = "AmbientSound(soundname)"; + ASin = "ASin(x)"; + ATan = "ATan(x)"; + Beep = "Beep()"; + Break = "Break()"; + CeilingHeight = "CeilingHeight(tag, height)"; + CeilingText = "CeilingText(tag, flat)"; + ChangemMusic = "ChangemMusic(musicname)"; + CheckCVar = "CheckCVar(cvar)"; + CheckLife = "CheckLife(obj)"; + ClearCamera = "ClearCamera()"; + Clock = "Clock()"; + CloseDoor = "CloseDoor(tag, speed)"; + ColorMap = "ColorMap(tag, colormap)"; + Const = "Const identifier = value"; + Continue = "Continue()"; + CopyInto = "CopyInto(source, target)"; + Cos = "Cos(x)"; + CreatePic = "CreatePic(lumpname, x, y, draw, trans, priority)"; + DamageObj = "DamageObj(obj, damage)"; + ElementAt = "ElementAt(array, index)"; + Else = "Else"; + ElseIf = "ElseIf(expression)"; + ExitLevel = "ExitLevel()"; + ExitSecret = "ExitSecret()"; + Exp = "Exp(x)"; + FadeLight = "FadeLight(tag, level, speed)"; + Fixed = "Fixed expression"; + Floor = "Floor(x)"; + FloorHeight = "FloorHeight(tag, height)"; + FloorText = "FloorText(tag, flat)"; + For = "For(initialization, condition, iteration)"; + GameMode = "GameMode()"; + GameSkill = "GameSkill()"; + GetFriction = "GetFriction(tag)"; + GetPicAttr = "GetPicAttr(handle, selector)"; + GetPicHandle = "GetPicHandle(lumpname, x, y)"; + GetPicHP = "GetPicHP()"; + GetPicLP = "GetPicLP()"; + GetPicPriority = "GetPicPriority(handle)"; + Goto = "Goto(label)"; + HealObj = "HealObj(obj, heal)"; + Hub = "Hub"; + If = "If(expression)"; + Include = "Include(lumpname)"; + Int = "Int expression"; + IsPlayerObj = "IsPlayerObj(obj)"; + Kill = "Kill(obj)"; + Length = "Length(array)"; + LightLevel = "LightLevel(tag, level)"; + LineAttack = "LineAttack(obj, angle, damage)"; + LineTrigger = "LineTrigger(special, tag)"; + Log = "Log(x)"; + MapThingNumExist = "MapThingNumExist(mapthing)"; + MapThings = "MapThings()"; + Max = "Max(x, y)"; + MaxPlayerAmmo = "MaxPlayerAmmo(plnum, ammonum, amount)"; + Message = "Message(message)"; + Min = "Min(x, y)"; + MObj = "MObj expression"; + ModifyPic = "ModifyPic(handle, lumpname, x, y)"; + MoveCamera = "MoveCamera(target, targetheight, movespeed, targetangle, anglespeed)"; + MoveCeil = "MoveCeil(tag, destheight, speed)"; + MoveFloor = "MoveFloor(tag, destheight, speed)"; + NewArray = "NewArray(array)"; + ObjAngle = "ObjAngle(obj)"; + ObjAwaken = "ObjAwaken(obj)"; + ObjFlag = "ObjFlag()"; + ObjFlag2 = "ObjFlag2()"; + ObjHealth = "ObjHealth(obj)"; + ObjMomX = "ObjMomX(obj, momx)"; + ObjMomY = "ObjMomY(obj, momy)"; + ObjMomZ = "ObjMomZ(obj, momz)"; + ObjSector = "ObjSector(obj)"; + ObjState = "ObjState(obj, state)"; + ObjTarget = "ObjTarget(source, target)"; + ObjType = "ObjType(obj)"; + ObjX = "ObjX(obj)"; + ObjY = "ObjY(obj)"; + ObjZ = "ObjZ(obj)"; + OpenDoor = "OpenDoor(tag, waittime, speed)"; + PlayDemo = "PlayDemo(demolump)"; + Player = "Player(playerobj)"; + PlayerAddFrag = "PlayerAddFrag(playerid, modifier)"; + PlayerAmmo = "PlayerAmmo(plnum, ammonum, amount)"; + PlayerInGame = "PlayerInGame(playerid)"; + PlayerKeys = "PlayerKeys(plnum, keynum, givetake)"; + PlayerMsg = "PlayerMsg(player, message)"; + PlayerName = "PlayerName(playerid)"; + PlayerObj = "PlayerObj(playerid)"; + PlayerSelWep = "PlayerSelWep(playerid, weapon)"; + PlayerSkin = "PlayerSkin(playerid)"; + PlayerTimedTip = "PlayerTimedTip(message)"; + PlayerTip = "PlayerTip(message)"; + PlayerWeapon = "PlayerWeapon(playerid, weapon, givetake)"; + PointToAngle = "PointToAngle(x1, y1, x2, y2)"; + PointToDist = "PointToDist(x1, y1, x2, y2)"; + Pow = "Pow(x, y)"; + Print = "Print(message)"; + PRnd = "PRnd()"; + PushThing = "PushThing(obj, angle, force)"; + RadiusAttack = "RadiusAttack(spot, source, damage)"; + ReactionTime = "ReactionTime(obj, val)"; + RemoveObj = "RemoveObj(obj)"; + Ressurect = "Ressurect(obj)"; + Return = "Return()"; + Rnd = "Rnd()"; + RunCommand = "RunCommand(command)"; + Script = "Script expression"; + ScriptRunning = "ScriptRunning(scriptid)"; + ScriptWait = "ScriptWait(scriptid)"; + ScriptWaitPre = "ScriptWaitPre(scriptid)"; + SetCamera = "SetCamera(obj, angle, height, pitch)"; + SetCoronas = "SetCoronas()"; + SetElementAt = "SetElementAt(array, index, element)"; + SetFriction = "SetFriction(tag, friction)"; + SetLineBlocking = "SetLineBlocking(tag, block)"; + SetLineMnBlock = "SetLineMnBlock(tag, block)"; + SetLineTexture = "SetLineTexture(tag, side, position, texture)"; + SetPicPriority = "SetPicPriority(handle, priority)"; + SetPicTrans = "SetPicTrans(handle, trans)"; + SetPicVisible = "SetPicVisible(handle, visible)"; + SilentTeleport = "SilentTeleport(obj, sectortag)"; + Sin = "Sin(x)"; + SkinColor = "SkinColor(playerid)"; + Spawn = "Spawn(type, x, y, angle, z)"; + SpawnExplosion = "SpawnExplosion(damage, spot, source)"; + SpawnMissile = "SpawnMissile(obj, target, missile)"; + SpawnShot = "SpawnShot(type, source, target, face)"; + Sqrt = "Sqrt(x)"; + StartScript = "StartScript(scriptid)"; + StartSectorSound = "StartSectorSound(tag, soundname)"; + StartSkill = "StartSkill(skill)"; + StartSound = "StartSound(obj, soundname)"; + String = "String expression"; + TagWait = "TagWait(tag)"; + Tan = "Tan(x)"; + Teleport = "Teleport(obj, sectortag)"; + TestLocation = "TestLocation(obj)"; + TimedTip = "TimedTip(message)"; + Tip = "Tip(message)"; + Wait = "Wait(time)"; + While = "While(expression)"; +} + +constants +{ +} diff --git a/Build/Scripting/ZDoom_ACS.cfg b/Build/Scripting/ZDoom_ACS.cfg new file mode 100644 index 0000000..9753e4b --- /dev/null +++ b/Build/Scripting/ZDoom_ACS.cfg @@ -0,0 +1,1270 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for ACS +\*******************************************************************/ + +// Compiler settings +compiler = "zdoom_acc"; +parameters = "-I \"%PT\" -I \"%PS\" %FI %FO"; +resultlump = "BEHAVIOR"; + +// Editor settings +description = "ZDoom ACS script"; +codepage = 0; +extensions = "acs"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; +snippetsdir = "acs"; +scripttype = 1; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + #Define = "#Define identifier expression"; + #EncryptStrings = "#EncryptStrings"; + #Import = "#Import"; + #Include = "#Include"; + #LibDefine = "#LibDefine identifier expression"; + #Library = "#Library"; + #NoCompact = "#NoCompact"; + #NoWadAuthor = "#NoWadAuthor"; + #WadAuthor = "#WadAuthor"; + ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)"; + ACS_ExecuteAlways = "ACS_ExecuteAlways(script, map, arg1, arg2, arg3)"; + ACS_ExecuteWait = "void ACS_ExecuteWait(int script, int unused, int arg1, int arg2, int arg3)"; + ACS_ExecuteWithResult = "ACS_ExecuteWithResult(script, arg1, arg2, arg3)"; + ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)"; + ACS_LockedExecuteDoor = "ACS_LockedExecuteDoor(script, map, arg1, arg2, lock)"; + ACS_NamedExecute = "bool ACS_NamedExecute(str script, int map, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteAlways = "bool ACS_NamedExecuteAlways(str script, int map, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteWait = "void ACS_NamedExecuteWait(str script, int unused, int arg1, int arg2, int arg3)"; + ACS_NamedExecuteWithResult = "int ACS_NamedExecuteWithResult(str script, int arg1, int arg2, int arg3, int arg4)"; + ACS_NamedLockedExecute = "bool ACS_NamedLockedExecute(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedLockedExecuteDoor = "bool ACS_NamedLockedExecuteDoor(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedSuspend = "bool ACS_NamedSuspend(str script, int map)"; + ACS_NamedTerminate = "bool ACS_NamedTerminate(str script, int map)"; + ACS_Suspend = "ACS_Suspend(script, map)"; + ACS_Terminate = "ACS_Terminate(script, map)"; + ActivatorSound = "void ActivatorSound(str sound, int volume)"; + ActivatorTID = "int ActivatorTID(void)"; + AmbientSound = "void AmbientSound(str sound, int volume)"; + //AnnouncerSound = "void AnnouncerSound(str sound, int flags)"; + Autosave = "Autosave()"; + //BlueCount = "BlueCount()"; + //BlueReturn = "Script expression BlueReturn"; + //BlueScore = "BlueScore()"; + //BlueTeamCount = "BlueTeamCount()"; + //BlueTeamScore = "BlueTeamScore()"; + Bool = "Bool expression"; + Break = "Break"; + CancelFade = "void CancelFade(void)\nIf either FadeTo or FadeRange is currently in progress,\nCancelFade stops it and turns off the palette flash."; + CanRaiseActor = "bool CanRaiseActor(int tid)\nChecks to see if the actor or actors with the specified tid are viable for resurrection.\nIf tid is 0, the check is done on the activator of the script."; + Case = "Case expression"; + Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush, crushmode)"; + Ceiling_CrushAndRaiseA = "Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushAndRaiseDist = "Ceiling_CrushAndRaiseDist(tag, dist, speed, damage, crushmode)"; + Ceiling_CrushAndRaiseSilentA = "Ceiling_CrushAndRaiseSilentA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush, crushmode)"; + Ceiling_CrushRaiseAndStayA = "Ceiling_CrushRaiseAndStayA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushRaiseAndStaySilA = "Ceiling_CrushRaiseAndStaySilA(tag, dspeed, uspeed, crush, crushmode)"; + Ceiling_CrushStop = "Ceiling_CrushStop(tag)"; + Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush, crushmode)"; + Ceiling_LowerAndCrushDist = "Ceiling_LowerAndCrushDist(tag, speed, crush, dist, crushmode)"; + Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)"; + Ceiling_LowerByValueTimes8 = "Ceiling_LowerByValueTimes8(tag, speed, height)"; + Ceiling_LowerInstant = "Ceiling_LowerInstant(tag, unused, height)"; + Ceiling_LowerToFloor = "Ceiling_LowerToFloor(tag, speed)"; + Ceiling_LowerToHighestFloor = "Ceiling_LowerToHighestFloor(tag, speed)"; + Ceiling_LowerToLowest = "Ceiling_LowerToLowest(tag, speed)"; + Ceiling_MoveToValue = "Ceiling_MoveToValue(tag, speed, height, neg)"; + Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)"; + Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)"; + Ceiling_RaiseByValueTimes8 = "Ceiling_RaiseByValueTimes8(tag, speed, height)"; + Ceiling_RaiseInstant = "Ceiling_RaiseInstant(tag, unused, height)"; + Ceiling_RaiseToNearest = "Ceiling_RaiseToNearest(tag, speed)"; + Ceiling_Waggle = "Ceiling_Waggle(tag, amp, freq, offset, time)"; + ChangeActorAngle = "ChangeActorAngle(int tid, fixed angle[, bool interpolate = false])\nSets the angle for the actors with the specified tid.\nIf tid is 0, it sets the angle for the activator of the script.\nangle: a fixed point angle in the range of 0.0 to 1.0 (N = 0.25, W = 0.5, S = 0.75, E = 1.0)."; + ChangeActorPitch = "ChangeActorPitch(int tid, fixed pitch[, bool interpolate = false])\nSets the pitch for the actors with the specified tid. If tid is 0, it sets the pitch for the activator of the script.\npitch: a fixed point angle in the range of 0.0 to 1.0."; + ChangeActorRoll = "void ChangeActorRoll(int tid, fixed angle[, bool interpolate = false])"; + ChangeCamera = "ChangeCamera(tid, who, revert)"; + ChangeCeiling = "void ChangeCeiling(int tag, str flatname)"; + ChangeFloor = "void ChangeFloor(int tag, str flatname)"; + ChangeLevel = "void ChangeLevel(str mapname, int position, int flags[, int skill])\nChanges to a new map, places the player at the specified start spot, and optionally changes the skill level at the same time."; + ChangeSkill = "ChangeSkill(skill)"; + ChangeSky = "void ChangeSky(str sky1, str sky2)\nChanges the sky texture to sky1 and the second sky texture to sky2.\nBoth textures must be the same height if doublesky is enabled.\nYou may also use any flat, pname, sprite or internal graphic (such as TITLEPIC) in place of an actual texture.\nUseful in conjunction with SetSkyScrollSpeed."; + CheckActorCeilingTexture = "bool CheckActorCeilingTexture(int tid, str texture)"; + CheckActorClass = "bool CheckActorClass(int tid, str class)"; + CheckActorFloorTexture = "bool CheckActorFloorTexture(int tid, str texture)"; + CheckActorInventory = "int CheckActorInventory(int tid, str inventory_item)\nChecks the given actor's inventory for the item specified by inventory_item"; + CheckActorProperty = "bool CheckActorProperty(int tid, int property, [int|float|str] value)"; + CheckFlag = "bool CheckFlag(int tid, str flag)\nChecks to see if the actor with the matching tid has the specified actor flag set.\nIf tid is 0, the check is performed on the activator of the script."; + CheckFont = "bool CheckFont(str fontname)"; + CheckInventory = "int CheckInventory(str inventory_item)\nChecks the inventory of the actor who activated the script for the item specified by inventory_item"; + CheckPlayerCamera = "int CheckPlayerCamera(int player)"; + CheckSight = "bool CheckSight(int source, int dest, int flags)"; + CheckWeapon = "bool CheckWeapon(str weapon)\nChecks if player's active weapon is the weapon with specified class name."; + ClassifyActor = "int ClassifyActor(int tid)"; + ClearActorInventory = "void ClearActorInventory(int tid)\nThis function clears the specified actor's inventory."; + ClearForceField = "ClearForceField(tag)"; + ClearInventory = "void ClearInventory(void)\nClears the player's inventory of weapons, ammo, armor and usable items."; + ClearLineSpecial = "void ClearLineSpecial(void)\nClears the special of the line that activated the script."; + //ConsoleCommand = "void ConsoleCommand(str command)"; + Const = "const"; + Continue = "continue"; + cos = "fixed Cos(int angle)"; + CreateTranslation = "void CreateTranslation(int transnumber, a:b=c:d, ...)"; + DamageThing = "DamageThing(amount, mod)"; + Death = "Script expression Death"; + Default = "default:"; + Delay = "void Delay(int tics)"; + Disconnect = "Disconnect script expression"; + Do = "do"; + Door_Animated = "Door_Animated(tag, speed, delay, lock)"; + Door_Close = "Door_Close(tag, speed, lighttag)"; + Door_CloseWaitOpen = "Door_CloseWaitOpen(tag, speed, delay, lighttag)"; + Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock, lighttag)"; + Door_Open = "Door_Open(tag, speed, lighttag)"; + Door_Raise = "Door_Raise(tag, speed, delay, lighttag)"; + DropInventory = "void DropInventory(int tid, str itemtodrop)"; + DropItem = "int DropItem(int tid, str item[, int dropamount = -1[, int chance = 256]])\nCauses actors with the matching tid to drop the specified item.\nIf tid is 0, the activator of the script is considered to be the dropper of the item.\nThis works in a similar way to the DropItem actor property.\nThe return value of the function is the number of dropped items."; + Elevator_LowerToNearest = "Elevator_LowerToNearest(tag, speed)"; + Elevator_MoveToFloor = "Elevator_MoveToFloor(tag, speed)"; + Elevator_RaiseToNearest = "Elevator_RaiseToNearest(tag, speed)"; + Else = "Else"; + Enter = "Script expression Enter"; + Exit_Normal = "Exit_Normal(pos)"; + Exit_Secret = "Exit_Secret(pos)"; + FadeRange = "void FadeRange(int red1, int green1, int blue1, fixed amount1, int red2, int green2, int blue2, fixed amount2, fixed seconds)\nSets the current flash to the first color set and then fades it to the second color set over the specified number of seconds."; + FadeTo = "void FadeTo(int red, int green, int blue, fixed amount, fixed seconds)\nFades the activator's view from the current palette flash to another one.\nThis will also work if the activator is looking through another viewpoint (using a camera, etc.)."; + FixedDiv = "fixed FixedDiv(int a, int b)"; + FixedMul = "fixed FixedMul(int a, int b)"; + FixedSqrt = "fixed FixedSqrt(fixed number)"; + Floor_CrushStop = "Floor_CrushStop(tag)"; + Floor_Donut = "Floor_Donut(ptag, pspeed, sspeed)"; + Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)"; + Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)"; + Floor_LowerInstant = "Floor_LowerInstant(tag, unused, height)"; + Floor_LowerToHighest = "Floor_LowerToHighest(tag, speed, adjust, force_adjust)"; + Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)"; + Floor_LowerToLowestTxTy = "Floor_LowerToLowestTxTy(tag, speed)"; + Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)"; + Floor_MoveToValue = "Floor_MoveToValue(tag, speed, height, neg)"; + Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)"; + Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush, crushmode)"; + Floor_RaiseAndCrushDoom = "Floor_RaiseAndCrushDoom(tag, speed, crush, crushmode)"; + Floor_RaiseByTexture = "Floor_RaiseByTexture(tag, speed)"; + Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)"; + Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)"; + Floor_RaiseByValueTxTy = "Floor_RaiseByValueTxTy(tag, speed, height)"; + Floor_RaiseInstant = "Floor_RaiseInstant(tag, unused, height)"; + Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)"; + Floor_RaiseToLowestCeiling = "Floor_RaiseToLowestCeiling(tag, speed)"; + Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)"; + Floor_TransferNumeric = "Floor_TransferNumeric(tag)"; + Floor_TransferTrigger = "Floor_TransferTrigger(tag)"; + Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)"; + FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)"; + FloorAndCeiling_LowerRaise = "FloorAndCeiling_LowerRaise(tag, fspeed, cspeed, boomemu)"; + FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)"; + For = "for(initialization, condition, iteration)"; + ForceField = "ForceField"; + FS_Execute = "FS_Execute(script, side, keynum, message)"; + Function = "function void expression(void)"; + GameSkill = "int GameSkill(void)"; + GameType = "int GameType(void)"; + Generic_Ceiling = "Generic_Ceiling(tag, speed, height, target, flag)"; + Generic_Crusher = "Generic_Crusher(tag, dspeed, uspeed, silent, crush)"; + Generic_Crusher2 = "Generic_Crusher2(tag, dspeed, uspeed, silent, crush)"; + Generic_Door = "Generic_Door(tag, speed, kind, delay, lock)"; + Generic_Floor = "Generic_Floor(tag, speed, height, target, flags)"; + Generic_Lift = "Generic_Lift(tag, speed, delay, type, height)"; + Generic_Stairs = "Generic_Stairs(tag, speed, height, flags, reset)"; + GetActorAngle = "fixed GetActorAngle(int tid)"; + GetActorCeilingZ = "fixed GetActorCeilingZ(int tid)"; + GetActorClass = "str GetActorClass(int tid)"; + GetActorFloorZ = "fixed GetActorFloorZ(int tid)"; + GetActorLightLevel = "int GetActorLightLevel(int tid)"; + GetActorPitch = "fixed GetActorPitch(int tid)"; + GetActorPowerupTics = "int GetActorPowerupTics(int tid, str powerup)"; + GetActorProperty = "int GetActorProperty(int tid, int property)"; + GetActorRoll = "fixed GetActorRoll(int tid)"; + GetActorVelX = "fixed GetActorVelX(int tid)"; + GetActorVelY = "fixed GetActorVelY(int tid)"; + GetActorVelZ = "fixed GetActorVelZ(int tid)"; + GetActorViewHeight = "fixed GetActorViewHeight(int tid)"; + GetActorX = "fixed GetActorX(int tid)"; + GetActorY = "fixed GetActorY(int tid)"; + GetActorZ = "fixed GetActorZ(int tid)"; + GetAirSupply = "int GetAirSupply(int playernum)"; + GetAmmoCapacity = "int GetAmmoCapacity(str classname)"; + GetArmorInfo = "mixed GetArmorInfo(int infotype)"; + GetArmorType = "int GetArmorType(str armortype, int playernum)"; + GetChar = "int GetChar(str string, int index)"; + GetCVar = "int GetCVar(str cvar)"; + GetCVarString = "str GetCVarString(str cvar)"; + //GetInvasionState = "GetInvasionState()"; + //GetInvasionWave = "GetInvasionWave()"; + GetLevelInfo = "int GetLevelInfo(int levelinfo)"; + GetLineActivation = "int GetLineActivation(int lineid)\nlineid: The id of the line of which to get the activation flags.\nReturns SPAC flags as a bitfield"; + GetLineRowOffset = "int GetLineRowOffset(void)"; + GetLineUDMFFixed = "fixed GetLineUDMFFixed(int lineid, str key)"; + GetLineUDMFInt = "int GetLineUDMFInt(int lineid, str key)"; + GetMaxInventory = "int GetMaxInventory(int tid, str inventory)"; + GetPlayerInfo = "int GetPlayerInfo(int playernumber, int playerinfo)"; + GetPlayerInput = "int GetPlayerInput(int player, int input)"; + GetPolyobjX = "fixed GetPolyobjX(int polyid)"; + GetPolyobjY = "fixed GetPolyobjY(int polyid)"; + GetScreenHeight = "int GetScreenHeight(void)"; + GetScreenWidth = "int GetScreenWidth(void)"; + GetSectorCeilingZ = "int GetSectorCeilingZ(int tag, int x, int y)"; + GetSectorFloorZ = "fixed GetSectorFloorZ(int tag, int x, int y)"; + GetSectorLightLevel = "int GetSectorLightLevel(int tag)"; + GetSectorUDMFFixed = "fixed GetSectorUDMFFixed(int tag, str key)"; + GetSectorUDMFInt = "int GetSectorUDMFInt(int tag, str key)"; + GetSideUDMFFixed = "fixed GetSideUDMFFixed(int lineid, bool side, str key)"; + GetSideUDMFInt = "int GetSideUDMFInt(int lineid, bool side, str key)"; + GetSigilPieces = "int GetSigilPieces(void)\nReturns the number of Sigil pieces that are held by the player"; + GetThingUDMFFixed = "fixed GetThingUDMFFixed(int thingid, str key)"; + GetThingUDMFInt = "int GetThingUDMFInt(int thingid, str key)"; + GetUserArray = "void GetUserArray(int tid, str name, int pos)"; + GetUserCVar = "int GetUserCVar(int playernumber, str cvar)"; + GetUserCVarString = "str GetUserCVarString(int playernumber, str cvar)"; + GetUserVariable = "int GetUserVariable(int tid, str name)"; + GetWeapon = "str GetWeapon(void)\nReturns the class name of the weapon currently equipped by the player as a string"; + GiveActorInventory = "void GiveActorInventory(int tid, str inventory_item, int amount)\nThis function will give the amount of items to the specifed actor.\nThis function does not treat tid 0 as the activator of the script"; + GiveInventory = "void GiveInventory(str inventory_item, int amount)\nThis function will give the number of items specified to the activator."; + GlassBreak = "GlassBreak(dontspawnjunk)"; + Global = "Global Int expression:identifier"; + HealThing = "HealThing(amount)"; + HudMessage = "void hudmessage(s:text; int type, int id, int color, fixed x, fixed y, fixed holdTime)"; + HudMessageBold = "void HudMessageBold(s:text; int type, int id, int color, fixed x, fixed y, fixed holdTime)"; + If = "if(expression)"; + Int = "int expression"; + //IsMultiplayer = "int IsMultiplayer(void)"; + //IsOneFlagCTF = "int IsOneFlagCTF(void)"; + IsPointerEqual = "bool IsPointerEqual(int ptr_select1, int ptr_select2[, int tid1[, int tid2]])"; + IsTIDUsed = "bool IsTIDUsed(int tid)"; + Light_ChangeToValue = "Light_ChangeToValue(tag, value)"; + Light_Fade = "Light_Fade(tag, value, tics)"; + Light_Flicker = "Light_Flicker(tag, upper, lower)"; + Light_ForceLightning = "Light_ForceLightning(mode)"; + Light_Glow = "Light_Glow(tag, upper, lower, tics)"; + Light_LowerByValue = "Light_LowerByValue(tag, value)"; + Light_MaxNeighbor = "Light_MaxNeighbor(tag)"; + Light_MinNeighbor = "Light_MinNeighbor(tag)"; + Light_RaiseByValue = "Light_RaiseByValue(tag, value)"; + Light_Stop = "Light_Stop(tag)"; + Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)"; + Light_StrobeDoom = "Light_StrobeDoom(tag, u-tics, l-tics)"; + Lightning = "Script expression Lightning"; + LineAttack = "LineAttack(int tid, fixed angle, fixed pitch, int damage[, str pufftype = 'BulletPuff'[, str damagetype = 'None'[, fixed range = 2048[, int flags = 0]]]])\nFires a hitscan attack. If tid is 0, the activator of the script is the source of the attack."; + Line_AlignCeiling = "Line_AlignCeiling(lineid, side)"; + Line_AlignFloor = "Line_AlignFloor(lineid, side)"; + Line_SetBlocking = "Line_SetBlocking(lineid, setflags, clearflags)"; + Line_SetTextureOffset = "Line_SetTextureOffset(lineid, x, y, side, flags)"; + Line_SetTextureScale = "Line_SetTextureScale(lineid, x, y, side, flags)"; + LineSide = "int LineSide(void)"; + LocalAmbientSound = "void LocalAmbientSound(str sound, int volume)"; + LocalSetMusic = "void LocalSetMusic(str song[, int order[, int unused]])"; + Log = "void Log(type:expression)\nLog will print something in the log area of the screen (top left), as well as logging it to the console.\nIt uses the same parameter format as the Print function."; + MorphActor = "int MorphActor(int tid, [str playerclass, [str monsterclass, [int duration, [int style, [str morphflash, [str unmorphflash]]]]]])"; + NamedScriptWait = "void NamedScriptWait(str script)"; + Net = "Script expression Net"; + NoiseAlert = "NoiseAlert(target_tid, emiter_tid)"; + Open = "Script expression Open"; + PickActor = "bool PickActor(int source_tid, fixed angle, fixed pitch, fixed distance, int tid[, int actorMask = MF_SHOOTABLE[, int wallMask = ML_BLOCKEVERYTHING | ML_BLOCKHITSCAN[, bool forcetid = false]]])"; + Pickup = "Script expression Pickup"; + Pillar_Build = "Pillar_Build(tag, speed, height)"; + Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush, crushmode)"; + Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)"; + Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)"; + Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)"; + Plat_DownWaitUpStayLip = "Plat_DownWaitUpStayLip(tag, speed, delay, lip, sound)"; + Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)"; + Plat_PerpetualRaiseLip = "Plat_PerpetualRaiseLip(tag, speed, delay, lip)"; + Plat_RaiseAndStayTx0 = "Plat_RaiseAndStayTx0(tag, speed, lockout)"; + Plat_Stop = "Plat_Stop(tag)"; + Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)"; + Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)"; + Plat_UpByValueStayTx = "Plat_UpByValueStayTx(tag, speed, height)"; + Plat_UpNearestWaitDownStay = "Plat_UpNearestWaitDownStay(tag, speed, delay)"; + Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)"; + PlayActorSound = "void PlayActorSound(int tid, int sound, int channel, fixed volume, bool looping, fixed attenuation)"; + PlayerClass = "int PlayerClass(int playernumber)"; + PlayerCount = "int PlayerCount(void)\nReturns the number of players currently in the game"; + PlayerFrags = "int PlayerFrags(void)"; + PlayerInGame = "bool PlayerInGame(int playernumber)\nReturns true if the player [0..7] is in the game"; + PlayerIsBot = "bool PlayerIsBot(int playernumber)\nReturns TRUE if the player [0..7] is a bot and FALSE if not"; + PlayerNumber = "int PlayerNumber(void)\nReturns the player number for the player who activated the script, starting at 0.\nFor scripts that were not activated by a player, PlayerNumber will return -1."; + PlaySound = "void PlaySound(int tid, str sound[, int channel = CHAN_BODY[, fixed volume = 1.0[, bool looping = false[, fixed attenuation = ATTN_NORM]]]])"; + Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)"; + Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)"; + Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)"; + Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)"; + Polyobj_MoveTo = "Polyobj_MoveTo(po, speed, pos_x, pos_y)"; + Polyobj_MoveToSpot = "Polyobj_MoveToSpot(po, speed, target)"; + Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)"; + Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)"; + Polyobj_OR_MoveTo = "Polyobj_OR_MoveTo(po, speed, pos_x, pos_y)"; + Polyobj_OR_MoveToSpot = "Polyobj_OR_MoveToSpot(po, speed, target)"; + Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed, angle)"; + Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)"; + Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)"; + Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)"; + Polyobj_Stop = "Polyobj_Stop(po)"; + PolyWait = "void PolyWait(int polyid)"; + Print = "void Print(type:expression)\nPrint will print something to the screen.\nPrint will only display for the activator of the script\nFor printing to all players, use PrintBold."; + PrintBold = "void PrintBold(type:expression)\nThis is exactly the same as Print, except all players will see the printed text\non the screen instead of just the activator of the script."; + QuakeEx = "bool QuakeEx(int tid, int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad, str sound[, int flags = 0[, float mulwavex = 1.0[, float mulwavey = 1.0[, float mulwavez = 1.0]]]])"; + Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)"; + Radius_Quake2 = "void Radius_Quake2(int tid, int intensity, int duration, int damrad, int tremrad, str sound)"; + Random = "int Random(int min, int max)"; + ReplaceTextures = "void ReplaceTextures(str oldtexturename, str newtexturename[, int flags])\nReplaces all occurences of oldtexturename with newtexturename.\nNOT_ flags can be used."; + Respawn = "Script expression Respawn"; + Restart = "Restart"; + Return = "Return"; + Script = "Script expression"; + ScriptWait = "void ScriptWait(int script)"; + Scroll_Ceiling = "Scroll_Ceiling(tag, x-move, y-move, unused)"; + Scroll_Floor = "Scroll_Floor(tag, x-move, y-move, type)"; + Scroll_Texture_Both = "Scroll_Texture_Both(lineid, left, right, down, up)"; + Scroll_Wall = "Scroll_Wall(lineid, x, y, side, flags)"; + Sector_ChangeFlags = "Sector_ChangeFlags(tag, setflags, clearflags)"; + Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)"; + Sector_SetCeilingPanning = "Sector_SetCeilingPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetCeilingScale = "Sector_SetCeilingScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetCeilingScale2 = "Sector_SetCeilingScale2(tag, u-fixed, v-fixed)"; + Sector_SetColor = "Sector_SetColor(tag, red, green, blue, desaturation)"; + Sector_SetCurrent = "Sector_SetCurrent(tag, amount, angle, useline)"; + Sector_SetDamage = "Sector_SetDamage(tag, amount, mod)"; + Sector_SetFade = "Sector_SetFade(tag, red, green, blue)"; + Sector_SetFloorPanning = "Sector_SetFloorPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFloorScale = "Sector_SetFloorScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFloorScale2 = "Sector_SetFloorScale2(tag, u-fixed, v-fixed)"; + Sector_SetFriction = "Sector_SetFriction(tag, amount)"; + Sector_SetGravity = "Sector_SetGravity(tag, ipart, fpart)"; + Sector_SetLink = "Sector_SetLink(controltag, tag, surface, movetype)"; + Sector_SetPlaneReflection = "Sector_SetPlaneReflection(tag, floor, ceiling)"; + Sector_SetRotation = "Sector_SetRotation(tag, floorangle, ceilingangle)"; + Sector_SetTranslucent = "Sector_SetTranslucent(tag, plane, amount, type)"; + Sector_SetWind = "Sector_SetWind(tag, amount, angle, useline)"; + SectorDamage = "void SectorDamage(int tag, int amount, str type, str protection_item, int flags)\nDoes the damage only when the function is called,\nand damages everything in the tagged sector.\nUses DAMAGE_ flags."; + SectorSound = "void SectorSound(str sound, int volume)"; + SendToCommunicator = "SendToCommunicator(voc_id, front_only, indentify, nolog)"; + SetActivator = "int SetActivator(int tid[, int pointer_selector])\nThis changes the activator of the script to the first actor found with the specified tid.\ntid: TID of the new activator.\npointer_selector: the pointer of the TID to set as the new activator (use AAPTR_ flags)."; + SetActivatorToTarget = "bool SetActivatorToTarget(int tid)\nThis changes the activator of the script to the current target\nof the first actor found with the specified tid.\nUsing a tid of 0 uses the current activator's target."; + SetActorAngle = "void SetActorAngle(int tid, fixed angle)\nSets the actor's angle.\nangle: a fixed point angle in the range of 0.0 to 1.0 (N = 0.25, W = 0.5, S = 0.75, E = 1.0)."; + SetActorPitch = "void SetActorPitch(int tid, int pitch)\nSets the actor's Pitch.\npitch: a fixed point angle in the range of 0.0 to 1.0."; + SetActorPosition = "bool SetActorPosition(int tid, fixed x, fixed y, fixed z, bool fog)\nThis function sets the x, y, and z coordinates of the specified actor, with or without teleport fog.\nReturns TRUE if the actor position was changed successfully."; + SetActorProperty = "void SetActorProperty(int tid, int property, [int|float|str] value)\nproperty: one of the APROP_ properties."; + SetActorRoll = "void SetActorRoll(int tid, fixed angle)"; + SetActorState = "int SetActorState(int tid, str statename[, bool exact])\nForces the actor(s) with the matching tid into the specified state, as defined in Decorate.\nIf tid is 0, the activator is affected.\nThe exact parameter specifies whether or not partial state name matches are accepted."; + SetActorVelocity = "bool SetActorVelocity(int tid, fixed velx, fixed vely, fixed velz, bool add, bool setbob)\nChanges actor velocity.\ntid: TID of things to affect. If 0, the activator is used.\nvelx, vely, velz: The desired velocity for the affected things.\nadd: If true, each affected actor's velocity is modified by the velx, vely\nand velz parameters, rather than replaced by them.\nsetbob: If true, the speed adjustment influences the bobbing of any concerned player actor."; + SetAirControl = "void SetAirControl(fixed amount)\nSets how well the player can move while in the air.\nThe default amount is 0.00390625."; + SetAirSupply = "bool SetAirSupply(int playernum, int tics)\nSets the amount of tics remaining in a player's air supply."; + SetAmmoCapacity = "void SetAmmoCapacity(str typename, int maxamount)\nSets the maximum amount of a type of ammo the player can carry."; + SetCameraToTexture = "void SetCameraToTexture(int cameratid, str texturename, int fov)\nBinds the named texture to the specified camera\n(which does not have to be an actual camera thing).\nThe texture used must be defined as a “cameratexture” in the ANIMDEFS lump."; + SetCeilingTrigger = "void SetCeilingTrigger(int tag, int height, int special[, int arg1[, int arg2[, int arg3[, int arg4[, int arg5]]]]])\nWhen the ceiling specified by tag moves the specified height,\nspecial(arg1, arg2, arg3, arg4, arg5) will be activated."; + SetCVar = "bool SetCVar(str cvar, int value)\nSets the value of a particular console variable.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, or it is not writable."; + SetCVarString = "bool SetCVarString(str cvar, str value)\nSets the value of a particular console variable.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, or it is not writable."; + SetFloorTrigger = "SetFloorTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)"; + SetFont = "void SetFont(str fontlump)\nSets the current font (only within the script) to fontlump"; + SetGlobalFogParameter = "SetGlobalFogParameter(property, value)"; + SetGravity = "void SetGravity(fixed amount)\nThis function sets the global gravity of an entire level.\nDefault is 800.0"; + SetHUDClipRect = "void SetHUDClipRect(int x, int y, int width, int height[, int wrapwidth = 0[, bool aspectratio = true]])\nSets the clipping rectangle for future HUD messages."; + SetHudSize = "void SetHudSize(int width, int height, bool statusbar)\nCauses text messages to be stretched or shrunk to match the size\nthey would appear if the user's resolution was width by height."; + SetHUDWrapWidth = "void SetHudWrapWidth(int wrapwidth)\nSets the wrapping width for future HUD messages without altering the clipping rectangle.\nIf you set the wrapping width to 0, messages will wrap\nto the full width of the HUD, as normal."; + SetLineActivation = "void SetLineActivation(int lineid, int activation)\nSets the line activation flags of the line with the specified id.\nlineid: The id of the line of which to set the activation flags\nactivation: SPAC_ flags to set. Multiple flags can be set by using the pipe character | between the constant names."; + SetLineBlocking = "void SetLineBlocking(int lineid, int blocking)\nDEPRECATED!\nUse Line_SetBlocking instead!"; + SetLineMonsterBlocking = "void SetLineMonsterBlocking(int lineid, int setting)\nDEPRECATED!\nUse Line_SetBlocking instead!"; + SetLineSpecial = "void SetLineSpecial(int lineid, int special[, int arg0[, int arg1[, int arg2[, int arg3[, int arg4]]]]])\nSetLineSpecial will change the special on all lines with the line id number specified."; + SetLineTexture = "void SetLineTexture(int lineid, int line_side, int sidedef_texture, str texturename)\nSetLineTexture will change the specified texture on all lines with the line id number specified\nline_side: SIDE_ flags can be used.\nsidedef_texture: TEXTURE_ flags can be used.\ntexturename: the texture that will be set on the line. Use '-' to remove a texture."; + SetMarineSprite = "void SetMarineSprite(int tid, str actorclass)\nChanges a Scripted Marine's sprite to match the sprite\nused in the specified actor's spawn state."; + SetMarineWeapon = "void SetMarineWeapon(int tid, int weapon)\nSets a Scripted Marine's weapon on the fly.\nweapon: one of MARINEWEAPON_ flags"; + SetMugShotState = "void SetMugShotState(str state)\nSets the state of the mug shot in SBARINFO status bars.\nThe state you set will only be interrupted by damage or if the player\npicks up a weapon, provided the mugshot supports it."; + SetMusic = "void SetMusic(str song[, int order[, int unused]])"; + SetPlayerProperty = "SetPlayerProperty(who, set, which)"; + SetPointer = "bool SetPointer(int assign_slot, int tid[, int pointer_selector[, int flags]])\nSet the value of one of the caller's stored pointers."; + SetResultValue = "void SetResultValue(int value)"; + SetSkyScrollSpeed = "void SetSkyScrollSpeed(int sky, fixed skyspeed)\nChanges the scrolling speed of a sky.\nThis is useful in conjunction with ChangeSky.\nsky: either 1 or 2.\nskyspeed: the desired scrolling speed."; + SetActorTeleFog = "void SetActorTeleFog(int tid, str telefogsrcclass, str telefogdestclass"; + SetThingSpecial = "void SetThingSpecial(int tid, int special[, int arg0[, int arg1[, int arg2[, int arg3[, int arg4]]]]])\nSets the special for any things with the same TID.\nThis is similar to Thing_SetSpecial, except it can only be used from ACS,\nand it can set all of a thing's special arguments.\nIf tid is 0, then the activator is used."; + SetUserArray = "void SetUserArray(int tid, str name, int pos, int value)\nSets one of the affected actor's user array-bound variables."; + SetUserCVar = "bool SetUserCVar(int playernumber, str cvar, int value)\nSets the console variable of a particular player.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, it is not writable, or the player doesn't exist."; + SetUserCVarString = "bool SetUserCVarString(int playernumber, str cvar, str value)\nSets the console variable of a particular player.\nOnly mod-defined console variables through CVARINFO can be changed by using this function.\nReturns FALSE if cvar is invalid, it is not writable, or the player doesn't exist."; + SetUserVariable = "void SetUserVariable(int tid, str name, int value)\nSets one of the affected actor's user variables."; + SetWeapon = "bool SetWeapon(str weaponname)\nSets the player's current weapon to weaponname.\nReturns TRUE if the weapon was set successfully, and FALSE if not."; + sin = "fixed Sin(int angle)"; + SoundSequence = "void SoundSequence(str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnActor = "void SoundSequenceOnActor(int tid, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnPolyObj = "void SoundSequenceOnPolyobj(int polynum, str sndseq)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundSequenceOnSector = "void SoundSequenceOnSector(int tag, str sndseq, int location)\nPlays a sound sequence defined in SNDSEQ lump."; + SoundVolume = "void SoundVolume(int tid, int channel, fixed volume)\nChanges the volume of the currently playing sound by the actor(s) with the specified tid.\nIf tid is 0, the sound volume change is done to the sound being played by the activator of the script."; + Spawn = "int Spawn(str classname, fixed x, fixed y, fixed z[, int tid[, int angle]])\nSpawns an actor at the given X, Y and Z coordinates.\nOptionally a TID and a byte angle can be specified."; + SpawnForced = "int SpawnForced(str classname, fixed x, fixed y, fixed z[, int tid[, int angle]])\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe return value is the number of things spawned."; + SpawnDecal = "int SpawnDecal(int tid, str decalname, int flags[, fixed angle = 0.0[, fixed zoffset = 0.0[, fixed distance = 64.0]]])\nCreates a decal on a wall by tracing a line from the actor with the\nspecified tid until hitting said wall, on which the decal is then created.\nIf tid is 0, the tracing is done from the activator of the script.\ndecalname: The name of the decal to create, as defined in DECALDEF.\nflags: use SDF_ flags\nThe return value of the function is the number of decals spawned."; + SpawnProjectile = "void SpawnProjectile(int tid, str type, int angle, int speed, int vspeed, int gravity, int newtid)"; + SpawnSpot = "int SpawnSpot(str classname, int spottid[, int tid[, int angle]])\nRequires a MapSpot at the location where you want the Actor to spawn.\nThe return value is the number of things spawned."; + SpawnSpotFacing = "int SpawnSpotFacing(str classname, int spottid[, int tid])\nRequires a MapSpot at the location where you want the Actor to spawn.\nThe thing will assume the angle of the mapspot it is spawned to.\nThe return value is the number of things spawned."; + SpawnSpotFacingForced = "int SpawnSpotFacingForced(str classname, int spottid[, int tid])\nRequires a MapSpot at the location where you want the Actor to spawn.\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe thing will assume the angle of the mapspot it is spawned to.\nThe return value is the number of things spawned."; + SpawnSpotForced = "int SpawnSpotForced(str classname, int spottid[, int tid[, int angle]])\nRequires a MapSpot at the location where you want the Actor to spawn.\nForces the actor to spawn, even in conditions where the spawning would normally fail.\nThe return value is the number of things spawned."; + Special = "Special"; + Sqrt = "int Sqrt(int number)"; + Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)"; + Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)"; + Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)"; + Stairs_BuildUpDoom = "Stairs_BuildUpDoom(tag, speed, height, delay, reset)"; + Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)"; + StartConversation = "StartConversation(talker_tid, facetalker)"; + StopSound = "void StopSound(int tid, int channel)\nStops the sound currently playing on the specified channel for the actor with matching tid"; + str = "str expression"; + StrCmp = "int StrCmp(str string1, str string2[, int maxcomparenum])\nCompares the two strings passed in arguments string1 and string2 character by character.\nIf maxcomparenum is specified, it only compares up to maxcomparenum characters of each string."; + StrCpy = "bool StrCpy(a:destination, str source[, int source_index])\nCopy a source string to a destination array as a series of characters.\nOptionally, the copy can start from a given index in the source string.\nReturns TRUE if the entire string (or substring) was successfully copied to the array;\nFALSE if the copy ran out of room or if a negative source_index was given."; + StrIcmp = "int StrCmp(str string1, str string2[, int maxcomparenum])\nStrIcmp is case-insensitive version of StrCmp"; + StrLeft = "str StrLeft(str string, int length)\nCreates a new string containing the length first characters of string.\nIf string does not exist, an empty string is returned.\nIf string is shorter than length characters, the entire string is returned."; + StrLen = "int StrLen(str string)"; + StrMid = "str StrMid(str string, int start, int length)\nCreates a new string containing the length characters of string starting from the one at position start.\nIf string does not exist or is shorter than start characters, an empty string is returned. \nIf string is shorter than start + length characters, the entire substring beginning at start is returned."; + StrParam = "int StrParam(type:expression)\nStrParam will create a new string formatted based upon the same method for Print or Log.\nThe return value is the string table index of the new string."; + StrRight = "str StrRight(str string, int length)\nCreates a new string containing the length last characters of string.\nIf string does not exist, an empty string is returned.\nIf string is shorter than length characters, the entire string is returned."; + Suspend = "Suspend"; + SwapActorTeleFog = "int SwapActorTeleFog(int tid)"; + Switch = "Switch(expression)"; + TagWait = "void TagWait(int tag)"; + TakeActorInventory = "void TakeActorInventory(int tid, str inventory_item, int amount)\nThis function will take the amount of items from the specified actor.\nTakeActorInventory can remove items that are flagged as undroppable."; + TakeInventory = "void TakeInventory(str inventory_item, int amount)\nThis function will take the number of items specified from the activator.\nTakeInventory can remove items that are flagged as undroppable."; + Teleport = "Teleport(tid, tag, nosourcefog)"; + Teleport_EndGame = "Teleport_EndGame()"; + Teleport_NewMap = "Teleport_NewMap(map, pos, face)"; + Teleport_NoFog = "Teleport_NoFog(tid, useangle, tag)"; + Teleport_NoStop = "Teleport_NoStop(tid, tag, nofog)"; + Teleport_ZombieChanger = "Teleport_ZombieChanger(tid, tag)"; + TeleportGroup = "TeleportGroup(groupid, sourceid, destinationid, movesource, fog)"; + TeleportInSector = "TeleportInSector(tag, sourceid, destinationid, fog, groupid)"; + TeleportOther = "TeleportOther(tid, destinationid, fog)"; + Terminate = "Terminate"; + Thing_Activate = "Thing_Activate(tid)"; + Thing_ChangeTID = "Thing_ChangeTID(oldtid, newtid)"; + Thing_Damage = "Thing_Damage(tid, amount, mod)"; + Thing_Damage2 = "int Thing_Damage2(int tid, int amount, str type)\nDamages the specified actor.\nDamage type is specified by name."; + Thing_Deactivate = "Thing_Deactivate(tid)"; + Thing_Destroy = "Thing_Destroy(tid, extreme, tag)"; + Thing_Hate = "Thing_Hate(hater, hatee, type)"; + Thing_Move = "Thing_Move(tid, destid, nofog)"; + Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)"; + Thing_Projectile2 = "void Thing_Projectile2(int tid, int type, int angle, int speed, int vspeed, int gravity, int newtid)"; + Thing_ProjectileAimed = "Thing_ProjectileAimed(tid, type, speed, target, newtid)"; + Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)"; + Thing_ProjectileIntercept = "Thing_ProjectileIntercept(tid, type, speed, target, newtid)"; + Thing_Raise = "Thing_Raise(tid)"; + Thing_Remove = "Thing_Remove(tid)"; + Thing_SetConversation = "Thing_SetConversation(tid, conversationid)"; + Thing_SetGoal = "Thing_SetGoal(tid, goal, delay, dontchasetarget)"; + Thing_SetSpecial = "Thing_SetSpecial(tid, special, arg1, arg2, arg3)"; + Thing_SetTranslation = "Thing_SetTranslation(tid, translation)"; + Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)"; + Thing_SpawnFacing = "Thing_SpawnFacing(tid, type, nofog, newtid)"; + Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)"; + Thing_Stop = "Thing_Stop(tid)"; + ThingCount = "int ThingCount(int type, int tid)"; + ThingCountName = "int ThingCountName(str classname, int tid)"; + ThingCountNameSector = "int ThingCountNameSector(str classname, int tid, int tag)"; + ThingCountSector = "int ThingCountSector(int type, int tid, int tag)"; + ThingSound = "void ThingSound(int tid, str sound, int volume)\nPlays a sound at a thing.\nThis is a point sound, so anyone far away will not hear it as loudly"; + ThrustThing = "ThrustThing(angle, force, nolimit, tid)"; + ThrustThingZ = "ThrustThingZ(tid, speed, up_or_down, add_or_set)"; + Timer = "int Timer(void)"; + TranslucentLine = "TranslucentLine(lineid, amount, additive, moreflags)"; + UniqueTID = "int UniqueTID([int tid[, int limit]])"; + Unloading = "Script expression Unloading"; + UnMorphActor = "int UnMorphActor(int tid[, bool force])"; + Until = "Until(expression)"; + UseActorInventory = "int UseActorInventory(int tid, str classname)\nForces the actor(s) with the specified tid to use an item from their inventory, if they have one.\nReturns TRUE if the item was used successfully."; + UseInventory = "int UseInventory(str classname)\nForces the activator to use the specified inventory item, if he has it.\nReturns TRUE if the item was used successfully."; + UsePuzzleItem = "UsePuzzleItem(item, script, arg1, arg2, arg3)"; + VectorAngle = "fixed VectorAngle(int x, int y)"; + VectorLength = "int VectorLength(int x, int y)"; + Void = "void"; + Warp = "bool Warp(int destinationtid, fixed xofs, fixed yofs, fixed zofs, int angle, int flags[, str success_state[, bool exactstate[, fixed heightoffset]]])"; + While = "while(expression)"; + WhiteReturn = "Script expression WhiteReturn"; + World = "World Int expression:identifier"; +} + +constants +{ + AAPTR_DEFAULT; + AAPTR_FRIENDPLAYER; + AAPTR_GET_LINETARGET; + AAPTR_MASTER; + AAPTR_NULL; + AAPTR_PLAYER_GETCONVERSATION; + AAPTR_PLAYER_GETTARGET; + AAPTR_PLAYER1; + AAPTR_PLAYER2; + AAPTR_PLAYER3; + AAPTR_PLAYER4; + AAPTR_PLAYER5; + AAPTR_PLAYER6; + AAPTR_PLAYER7; + AAPTR_PLAYER8; + AAPTR_TARGET; + AAPTR_TRACER; + ACTOR_ALIVE; + ACTOR_BOT; + ACTOR_DEAD; + ACTOR_GENERIC; + ACTOR_MISSILE; + ACTOR_MONSTER; + ACTOR_NONE; + ACTOR_PLAYER; + ACTOR_VOODOODOLL; + ACTOR_WORLD; + APROP_Accuracy; + APROP_ActiveSound; + APROP_Alpha; + APROP_Ambush; + APROP_AttackSound; + APROP_AttackZOffset; + APROP_ChaseGoal; + APROP_Damage; + APROP_DamageFactor; + APROP_DamageMultiplier; + APROP_DeathSound; + APROP_Dormant; + APROP_Dropped; + APROP_Friction; + APROP_Friendly; + APROP_Frightened; + APROP_Gravity; + APROP_Health; + APROP_Height; + APROP_Invulnerable; + APROP_JumpZ; + APROP_Mass; + APROP_MasterTID; + APROP_MeleeRange; + APROP_NameTag; + APROP_NoTarget; + APROP_NoTrigger; + APROP_PainSound; + APROP_Radius; + APROP_RenderStyle; + APROP_ScaleX; + APROP_ScaleY; + APROP_Score; + APROP_SeeSound; + APROP_SpawnHealth; + APROP_Species; + APROP_Speed; + APROP_Stamina; + APROP_StencilColor; + APROP_TargetTID; + APROP_TracerTID; + APROP_ViewHeight; + APROP_Waterlevel; + ARMORINFO_CLASSNAME; + ARMORINFO_SAVEAMOUNT; + ARMORINFO_ACTUALSAVEAMOUNT; + ARMORINFO_SAVEPERCENT; + ARMORINFO_MAXABSORB; + ARMORINFO_MAXFULLABSORB; + ATTN_IDLE; + ATTN_NONE; + ATTN_NORM; + ATTN_STATIC; + BLOCK_CREATURES; + BLOCK_EVERYTHING; + BLOCK_NOTHING; + BLOCK_PLAYERS; + BLOCK_RAILING; + BLOCKF_CREATURES; + BLOCKF_EVERYTHING; + BLOCKF_FLOATERS; + BLOCKF_HITSCAN; + BLOCKF_MONSTERS; + BLOCKF_PLAYERS; + BLOCKF_PROJECTILES; + BLOCKF_RAILING; + BLOCKF_SIGHT; + BLOCKF_USE; + BT_ALTATTACK; + BT_ATTACK; + BT_BACK; + BT_CROUCH; + BT_FORWARD; + BT_JUMP; + BT_LEFT; + BT_LOOKDOWN; + BT_LOOKUP; + BT_MOVEDOWN; + BT_MOVELEFT; + BT_MOVERIGHT; + BT_MOVEUP; + BT_RELOAD; + BT_RIGHT; + BT_SHOWSCORES; + BT_SPEED; + BT_STRAFE; + BT_TURN180; + BT_USE; + BT_USER1; + BT_USER2; + BT_USER3; + BT_USER4; + BT_ZOOM; + CARRY; + CHAN_AREA; + CHAN_AUTO; + CHAN_BODY; + CHAN_ITEM; + CHAN_LISTENERZ; + CHAN_LOOP; + CHAN_MAYBE_LOCAL; + CHAN_NOPAUSE; + CHAN_UI; + CHAN_VOICE; + CHAN_WEAPON; + CHAN_5; + CHAN_6; + CHAN_7; + CHANGELEVEL_KEEPFACING; + CHANGELEVEL_NOINTERMISSION; + CHANGELEVEL_NOMONSTERS; + CHANGELEVEL_PRERAISEWEAPON; + CHANGELEVEL_RESETHEALTH; + CHANGELEVEL_RESETINVENTORY; + CLASS_CLERIC; + CLASS_FIGHTER; + CLASS_MAGE; + CR_BLACK; + CR_BLUE; + CR_BRICK; + CR_BROWN; + CR_CREAM; + CR_CYAN; + CR_DARKBROWN; + CR_DARKGRAY; + CR_DARKGREEN; + CR_DARKGREY; + CR_DARKRED; + CR_GOLD; + CR_GRAY; + CR_GREEN; + CR_GREY; + CR_LIGHTBLUE; + CR_OLIVE; + CR_ORANGE; + CR_PURPLE; + CR_RED; + CR_TAN; + CR_UNTRANSLATED; + CR_WHITE; + CR_YELLOW; + CSF_NOBLOCKALL; + CSF_NOFAKEFLOORS; + DAMAGE_IN_AIR; + DAMAGE_NONPLAYERS; + DAMAGE_PLAYERS; + DAMAGE_SUBCLASSES_PROTECT; + FALSE; + FHF_NORANDOMPUFFZ; + FHF_NOIMPACTDECAL; + FOGP_DENSITY; + FOGP_OUTSIDEDENSITY; + FOGP_SKYFOG; + GAME_NET_COOPERATIVE; + GAME_NET_DEATHMATCH; + GAME_SINGLE_PLAYER; + GAME_TITLE_MAP; + HUDMSG_ADDBLEND; + HUDMSG_ALPHA; + HUDMSG_COLORSTRING; + HUDMSG_FADEINOUT; + HUDMSG_FADEOUT; + HUDMSG_LAYER_OVERHUD; + HUDMSG_LAYER_OVERMAP; + HUDMSG_LAYER_UNDERHUD; + HUDMSG_LOG; + HUDMSG_NOTWITH3DVIEW; + HUDMSG_NOTWITHFULLMAP; + HUDMSG_NOTWITHOVERLAYMAP; + HUDMSG_NOWRAP; + HUDMSG_PLAIN; + HUDMSG_TYPEON; + INPUT_BUTTONS; + INPUT_FORWARDMOVE; + INPUT_OLDBUTTONS; + INPUT_PITCH; + INPUT_ROLL; + INPUT_SIDEMOVE; + INPUT_UPMOVE; + INPUT_YAW; + IS_BOSSFIGHT; + IS_COUNTDOWN; + IS_FIRSTCOUNTDOWN; + IS_INPROGRESS; + IS_WAITINGFORPLAYERS; + IS_WAVECOMPLETE; + LEVELINFO_CLUSTERNUM; + LEVELINFO_FOUND_ITEMS; + LEVELINFO_FOUND_SECRETS; + LEVELINFO_KILLED_MONSTERS; + LEVELINFO_LEVELNUM; + LEVELINFO_PAR_TIME; + LEVELINFO_SUCK_TIME; + LEVELINFO_TOTAL_ITEMS; + LEVELINFO_TOTAL_MONSTERS; + LEVELINFO_TOTAL_SECRETS; + LINE_BACK; + LINE_FRONT; + MARINEWEAPON_BerserkFist; + MARINEWEAPON_BFG; + MARINEWEAPON_Chaingun; + MARINEWEAPON_Chainsaw; + MARINEWEAPON_Dummy; + MARINEWEAPON_Fist; + MARINEWEAPON_Pistol; + MARINEWEAPON_PlasmaRifle; + MARINEWEAPON_Railgun; + MARINEWEAPON_RocketLauncher; + MARINEWEAPON_Shotgun; + MARINEWEAPON_SuperShotgun; + MF_SPECIAL; + MF_SOLID; + MF_SHOOTABLE; + MF_NOSECTOR; + MF_NOBLOCKMAP; + MF_AMBUSH; + MF_JUSTHIT; + MF_JUSTATTACKED; + MF_SPAWNCEILING; + MF_NOGRAVITY; + MF_DROPOFF; + MF_PICKUP; + MF_NOCLIP; + MF_INCHASE; + MF_FLOAT; + MF_TELEPORT; + MF_MISSILE; + MF_DROPPED; + MF_SHADOW; + MF_NOBLOOD; + MF_CORPSE; + MF_INFLOAT; + MF_INBOUNCE; + MF_COUNTKILL; + MF_COUNTITEM; + MF_SKULLFLY; + MF_NOTDMATCH; + MF_SPAWNSOUNDSOURCE; + MF_FRIENDLY; + MF_UNMORPHED; + MF_NOLIFTDROP; + MF_STEALTH; + MF_ICECORPSE; + ML_BLOCKING; + ML_BLOCKMONSTERS; + ML_TWOSIDED; + ML_DONTPEGTOP; + ML_DONTPEGBOTTOM; + ML_SECRET; + ML_SOUNDBLOCK; + ML_DONTDRAW; + ML_MAPPED; + ML_REPEAT_SPECIAL; + ML_ADDTRANS; + ML_MONSTERSCANACTIVATE; + ML_BLOCK_PLAYERS; + ML_BLOCKEVERYTHING; + ML_ZONEBOUNDARY; + ML_RAILING; + ML_BLOCK_FLOATERS; + ML_CLIP_MIDTEX; + ML_WRAP_MIDTEX; + ML_3DMIDTEX; + ML_CHECKSWITCHRANGE; + ML_FIRSTSIDEONLY; + ML_BLOCKPROJECTILE; + ML_BLOCKUSE; + ML_BLOCKSIGHT; + ML_BLOCKHITSCAN; + MOD_BFG_SPLASH; + MOD_CRUSH; + MOD_DISINTEGRATE; + MOD_ELECTRIC; + MOD_EXIT; + MOD_FALLING; + MOD_HIT; + MOD_ICE; + MOD_LAVA; + MOD_POISON; + MOD_RAILGUN; + MOD_SLIME; + MOD_SUICIDE; + MOD_TELEFRAG; + MOD_UNKNOWN; + MOD_WATER; + MODINPUT_BUTTONS; + MODINPUT_FORWARDMOVE; + MODINPUT_OLDBUTTONS; + MODINPUT_PITCH; + MODINPUT_ROLL; + MODINPUT_SIDEMOVE; + MODINPUT_UPMOVE; + MODINPUT_YAW; + MOVIE_Failed; + MOVIE_Played; + MOVIE_Played_Aborted; + MOVIE_Played_NoVideo; + MRF_ADDSTAMINA; + MRF_FAILNOLAUGH; + MRF_FAILNOTELEFRAG; + MRF_FULLHEALTH; + MRF_LOSEACTUALWEAPON; + MRF_NEWTIDBEHAVIOUR; + MRF_OLDEFFECTS; + MRF_UNDOBYCHAOSDEVICE; + MRF_UNDOBYDEATH; + MRF_UNDOBYDEATHFORCED; + MRF_UNDOBYDEATHSAVES; + MRF_UNDOBYTOMEOFPOWER; + MRF_WHENINVULNERABLE; + NO; + NO_CHANGE; + NOT_BOTTOM; + NOT_CEILING; + NOT_FLOOR; + NOT_MIDDLE; + NOT_TOP; + OFF; + ON; + PICKAF_FORCETID; + PICKAF_RETURNTID; + PLAYERINFO_AIMDIST; + PLAYERINFO_COLOR; + PLAYERINFO_DESIREDFOV; + PLAYERINFO_FOV; + PLAYERINFO_GENDER; + PLAYERINFO_MOVEBOB; + PLAYERINFO_NEVERSWITCH; + PLAYERINFO_PLAYERCLASS; + PLAYERINFO_STILLBOB; + PLAYERINFO_TEAM; + PRINTNAME_LEVEL; + PRINTNAME_LEVELNAME; + PRINTNAME_SKILL; + PROP_ALLMAP; + PROP_BUDDHA; + PROP_FLIGHT; + PROP_FLY; + PROP_FROZEN; + PROP_INFRARED; + PROP_INSTANTWEAPONSWITCH; + PROP_INVISIBILITY; + PROP_INVULNERABILITY; + PROP_NOTARGET; + PROP_RADIATIONSUIT; + PROP_SPEED; + PROP_STRENGTH; + PROP_TOTALLYFROZEN; + PROP_WEAPONLEVEL2; + PTROP_NOSAFEGUARDS; + PTROP_UNSAFEMASTER; + PTROP_UNSAFETARGET; + QF_RELATIVE; + QF_SCALEDOWN; + QF_SCALEUP; + QF_MAX; + QF_FULLINTENSITY; + QF_WAVE; + SCROLL; + SCROLL_AND_CARRY; + SDF_ABSANGLE; + SDF_PERMANENT; + SECF_FLOORDROP; + SECF_NOFALLINGDAMAGE; + SECF_NORESPAWN; + SECF_SILENT; + SECSEQ_CEILING; + SECSEQ_FLOOR; + SECSEQ_FULLHEIGHT; + SECSEQ_INTERIOR; + SIDE_BACK; + SIDE_FRONT; + SKILL_EASY; + SKILL_HARD; + SKILL_NORMAL; + SKILL_VERY_EASY; + SKILL_VERY_HARD; + SPAC_None; + SPAC_Cross; + SPAC_Use; + SPAC_MCross; + SPAC_Impact; + SPAC_Push; + SPAC_PCross; + SPAC_UseThrough; + SPAC_AnyCross; + SPAC_MUse; + SPAC_MPush; + SPAC_UseBack; + STYLE_Add; + STYLE_AddStencil; + STYLE_AddShaded; + STYLE_Fuzzy; + STYLE_None; + STYLE_Normal; + STYLE_OptFuzzy; + STYLE_Shaded; + STYLE_Shadow; + STYLE_SoulTrans; + STYLE_Stencil; + STYLE_Subtract; + STYLE_Translucent; + STYLE_TranslucentStencil; + T_ABADDON; + T_ABADDONSHOT; + T_AMMOBOX; + T_AMULETOFWARDING; + T_ANTIGRAVBELT; + T_ARACHNOTRON; + T_ARACHNOTRONPLASMA; + T_ARMORBONUS; + T_ARROW; + T_AXEKEY; + T_BACKPACK; + T_BARON; + T_BARONBALL; + T_BARREL; + T_BATTERY; + T_BEAST; + T_BEASTBALL; + T_BELPHEGOR; + T_BERSERK; + T_BFG; + T_BFG10000; + T_BFG10KSHOT; + T_BFGSHOT; + T_BISHOP; + T_BLADE; + T_BLASTER; + T_BLOOD; + T_BLOODDEMON; + T_BLOODPOOL; + T_BLOODPOOL1; + T_BLOODPOOL2; + T_BLUEARMOR; + T_BLUEFLAG; + T_BLUEKEY; + T_BLUEKEYCARD; + T_BLUESKULLKEY; + T_BLUETELEGLITTER; + T_BOUNCYMACEBALL; + T_BRAINS; + T_BRIDGE; + T_CACODEMON; + T_CACODEMONSHOT; + T_CACOLANTERN; + T_CACOLANTERNSHOT; + T_CELL; + T_CENTAUR; + T_CENTAUR_MASH; + T_CENTAURLEADER; + T_CHAINGUN; + T_CHAINGUY; + T_CHAINSAW; + T_CHICKEN; + T_CLERICHOLY1; + T_CLERICHOLY2; + T_CLERICHOLY3; + T_CLERICSTAFF; + T_CLINK; + T_CLIP; + T_COMPUTERMAP; + T_CROSSBOW; + T_CROSSBOWMAINBLAST; + T_CROSSBOWMINIBLAST; + T_CROSSBOWPOWERBLAST; + T_CYBERDEMON; + T_DARKIMP; + T_DARKIMPFIREBALL; + T_DART; + T_DEATHBALL; + T_DEMON; + T_DEMON_MASH; + T_DEMON1; + T_DEMON2_MASH; + T_DIRT1; + T_DIRT2; + T_DIRT3; + T_DIRT4; + T_DIRT5; + T_DIRT6; + T_DOOMSPHERE; + T_DRAGONSKINBRACERS; + T_DRAIN; + T_DSPARILALONE; + T_DSPARILBLUESHOT; + T_DSPARILONSERPENT; + T_DSPARILTELEPORTDEST; + T_DSPARILWIZARDSPAWNER; + T_EMERALDKEY; + T_ETTIN; + T_ETTIN_MASH; + T_FALCONSHIELD; + T_FEATHER; + T_FIGHTERAXE; + T_FIGHTERHAMMER; + T_FIGHTERSWORD1; + T_FIGHTERSWORD2; + T_FIGHTERSWORD3; + T_FIREBALL1; + T_FIREGARGOYLE; + T_FIREKEY; + T_FLAME_LARGE; + T_FLAME_SMALL; + T_FLAMINGBARREL; + T_FLESH_DRIP1; + T_FLESH_DRIP2; + T_GAUNTLETS; + T_GREENARMOR; + T_GREENKEY; + T_GRENADE; + T_GRENADELAUNCHER; + T_GUTS; + T_HASTE; + T_HEALTHBONUS; + T_HEAVYMACEBALL; + T_HECTEBUS; + T_HEFTYBLASTERAMMO; + T_HEFTYCROSSBOWAMMO; + T_HEFTYMACEAMMO; + T_HEFTYPHOENIXRODAMMO; + T_HEFTYSKULLRODAMMO; + T_HEFTYWANDAMMO; + T_HELLKNIGHT; + T_HIGHJUMP; + T_HORNKEY; + T_ICEGOLEM; + T_ICESHARD; + T_IMP; + T_IMPFIREBALL; + T_IMPLEADER; + T_INFRAGOGGLES; + T_INFRATRACKER; + T_INVISIBILITY; + T_INVULNERABILITY; + T_IRONFEET; + T_IRONLICH; + T_IRONLICHBLUESHOT; + T_ITEMALLMAP; + T_ITEMBAGOFHOLDING; + T_ITEMBOOSTMANA; + T_ITEMBOOTS; + T_ITEMEGG; + T_ITEMFLECHETTE; + T_ITEMFLIGHT; + T_ITEMHEALTHFLASH; + T_ITEMHEALTHFLASK; + T_ITEMHEALTHFULL; + T_ITEMHEALTHPOTION; + T_ITEMINVISIBILITY; + T_ITEMINVULNERABILITY; + T_ITEMPORK; + T_ITEMREPULSION; + T_ITEMSUMMON; + T_ITEMTELEPORT; + T_ITEMTIMEBOMB; + T_ITEMTOME; + T_ITEMTORCH; + T_ITEMTPORTOTHER; + T_KNIGHT; + T_KNIGHTAXE; + T_KNIGHTBLOODAXE; + T_KNIGHTGHOST; + T_LIGHTAMP; + T_LOSTSOUL; + T_MACE; + T_MACEKEY; + T_MAGESHARDS; + T_MAGESTAFF1; + T_MAGESTAFF2; + T_MAGESTAFF3; + T_MANA1; + T_MANA2; + T_MANA3; + T_MANCUBUS; + T_MANCUBUSSHOT; + T_MAXARMORBONUS; + T_MAXHEALTHBONUS; + T_MEDKIT; + T_MEGASPHERE; + T_MESHARMOR; + T_METALKEY; + T_MINIGUN; + T_MORPHBLAST; + T_MUMMY; + T_MUMMYGHOST; + T_MUMMYHEAD; + T_MUMMYLEADER; + T_MUMMYLEADERGHOST; + T_NOGRAVITYMACEBALL; + T_NONE; + T_PAINELEMENTAL; + T_PERMLARGEFLAME; + T_PERMSMALLFLAME; + T_PHOENIXROD; + T_PHOENIXSHOT; + T_PISTOL; + T_PLASMABOLT; + T_PLASMAGUN; + T_PLATINUMHELM; + T_POD; + T_PODGENERATOR; + T_POISONDART; + T_POWERWANDBIGGERBLAST; + T_POWERWANDMINIBLAST; + T_PROSPERITY; + T_PUFF; + T_PUZZBOOK1; + T_PUZZBOOK2; + T_PUZZGEMBIG; + T_PUZZGEMBLUE1; + T_PUZZGEMBLUE2; + T_PUZZGEMGREEN1; + T_PUZZGEMGREEN2; + T_PUZZGEMRED; + T_PUZZSKULL; + T_RAGE; + T_RAILGUN; + T_RANDOMPOWERUP; + T_REDARMOR; + T_REDFLAG; + T_REDKEYCARD; + T_REDSKULLKEY; + T_REDTELEGLITTER; + T_REFLECTION; + T_REGENERATION; + T_RESISTANCE; + T_REVENANT; + T_RIPPER; + T_RIPPERBALL; + T_ROCK1; + T_ROCK2; + T_ROCK3; + T_ROCKET; + T_ROCKETAMMO; + T_ROCKETBOX; + T_ROCKETLAUNCHER; + T_RUSTYKEY; + T_SCRIPTEDMARINE; + T_SERPENTFIREBALL; + T_SERPENTKEY; + T_SHELLBOX; + T_SHELLS; + T_SHIELD1; + T_SHIELD2; + T_SHOTGUN; + T_SHOTGUY; + T_SILVERKEY; + T_SKULLROD; + T_SKULLRODBLAST; + T_SMALLMETALKEY; + T_SNAKE; + T_SNAKEPROJECTILE; + T_SNAKEPROJECTILEBIG; + T_SOULSPHERE; + T_SOUND_WATERFALL; + T_SOUND_WIND; + T_SPARK_DRIP; + T_SPECTRE; + T_SPIDERMASTERMIND; + T_SPREAD; + T_SSGGUY; + T_STAINEDGLASS0; + T_STAINEDGLASS1; + T_STAINEDGLASS2; + T_STAINEDGLASS3; + T_STAINEDGLASS4; + T_STAINEDGLASS5; + T_STAINEDGLASS6; + T_STAINEDGLASS7; + T_STAINEDGLASS8; + T_STAINEDGLASS9; + T_STEALTHARACHNOTRON; + T_STEALTHBARON; + T_STEALTHCACODEMON; + T_STEALTHCHAINGUY; + T_STEALTHIMP; + T_STEALTHKNIGHT; + T_STEALTHMANCUBUS; + T_STEALTHREVENANT; + T_STEALTHSERGEANT; + T_STEALTHSHOTGUY; + T_STEALTHVILE; + T_STEALTHZOMBIE; + T_STIMPACK; + T_STRENGTH; + T_SUPERSHOTGUN; + T_TEMPLARGEFLAME; + T_TEMPSMALLFLAME; + T_THRUSTSPIKEDOWN; + T_THRUSTSPIKEUP; + T_TIMEFREEZER; + T_TINYVOLCANOBALL; + T_TRACER; + T_TRANSLUCENCY; + T_TURBOSPHERE; + T_VILE; + T_VOLCANO; + T_VOLCANOBALL; + T_WATERDRIP; + T_WATERLURKER; + T_WATERLURKERLEADER; + T_WHIRLWIND; + T_WHITEFLAG; + T_WIMPYBLASTERAMMO; + T_WIMPYCROSSBOWAMMO; + T_WIMPYMACEAMMO; + T_WIMPYPHOENIXRODAMMO; + T_WIMPYSKULLRODAMMO; + T_WIMPYWANDAMMO; + T_WIZARD; + T_WIZARDSHOT; + T_WOLFSS; + T_WRAITH; + T_WRAITHBURIED; + T_YELLOWKEY; + T_YELLOWKEYCARD; + T_YELLOWSKULLKEY; + T_ZOMBIE; + TEXFLAG_ADDOFFSET; + TEXFLAG_BOTTOM; + TEXFLAG_MIDDLE; + TEXFLAG_TOP; + TEXTURE_BOTTOM; + TEXTURE_MIDDLE; + TEXTURE_TOP; + WARPF_ABSOLUTEOFFSET; + WARPF_ABSOLUTEANGLE; + WARPF_USECALLERANGLE; + WARPF_NOCHECKPOSITION; + WARPF_INTERPOLATE; + WARPF_WARPINTERPOLATION; + WARPF_COPYINTERPOLATION; + WARPF_STOP; + WARPF_TOFLOOR; + WARPF_TESTONLY; + WARPF_ABSOLUTEPOSITION; + WARPF_BOB; + WARPF_MOVEPTR; + WARPF_USEPTR; + WARPF_COPYVELOCITY; + WARPF_COPYPITCH; + TRUE; + YES; +} \ No newline at end of file diff --git a/Build/Scripting/ZDoom_DECORATE.cfg b/Build/Scripting/ZDoom_DECORATE.cfg new file mode 100644 index 0000000..416ebff --- /dev/null +++ b/Build/Scripting/ZDoom_DECORATE.cfg @@ -0,0 +1,1197 @@ +/*******************************************************************\ + GZDoom Builder Script highlighting definitions for DECORATE +\*******************************************************************/ + +// Editor settings +description = "ZDoom DECORATE"; +codepage = 0; +extensions = "txt,dec"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; +scripttype = 3; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + #Include = "#Include"; +//Monster AI + A_AlertMonsters = "A_AlertMonsters[(float maxrange = 0.0[, int flags = 0])]"; + A_Burst = "A_Burst(str type)"; + A_CentaurDefend = "A_CentaurDefend"; + A_Chase = "A_Chase[(str meleestate = \"Melee\"[, str rangedstate = \"Missile\"[, int flags = 0]])]"; + A_ClearLastHeard = "A_ClearLastHeard"; + A_ClearSoundTarget = "A_ClearSoundTarget"; + A_ClearTarget = "A_ClearTarget"; + A_DamageChildren = "A_DamageChildren(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_DamageMaster = "A_DamageMaster(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_DamageSelf = "A_DamageSelf(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_DamageSiblings = "A_DamageSiblings(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_DamageTarget = "A_DamageTarget(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_DamageTracer = "A_DamageTracer(int amount[, str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]]])\namount: amount of damage to inflict. Use a negative value to heal.\ndamagetype: the type of damage to inflict.\nflags: DMSS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_Die = "A_Die[(str damagetype)]"; + A_FaceTarget = "A_FaceTarget[(float angle = 0.0[, float pitch = 0.0])]\nA_FaceTarget(float max_turn, float max_pitch, float ang_offset, float pitch_offset, int flags)"; + A_FaceMaster = "A_FaceMaster[(float angle = 0.0[, float pitch = 0.0])]\nA_FaceMaster(float max_turn, float max_pitch, float ang_offset, float pitch_offset, int flags)"; + A_FastChase = "A_FastChase"; + A_KillChildren = "A_KillChildren[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\[, str species = \"None\]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_KillMaster = "A_KillMaster[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_KillSiblings = "A_KillSiblings[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_KillTarget = "A_KillTarget[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_KillTracer = "A_KillTracer[(str damagetype = \"None\"[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\ndamagetype: if the actor dies, the actor will enter a death state based on damagetype if present (or pain state if using NODAMAGE).\nflags: KILS flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_Look = "A_Look"; + A_Look2 = "A_Look2"; + A_LookEx = "A_LookEx(int flags, fixed minseedist, fixed maxseedist, fixed maxheardist, fixed fov, state seestate)"; + A_RaiseChildren = "A_RaiseChildren[(bool copyaffiliation = false)]"; + A_RaiseMaster = "A_RaiseMaster[(bool copyaffiliation = false)]"; + A_RaiseSiblings = "A_RaiseSiblings[(bool copyaffiliation = false)]"; + A_RemoveChildren = "A_RemoveChildren[(bool all = false[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_RemoveMaster = "A_RemoveMaster[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_RemoveSiblings = "A_RemoveSiblings[(bool all = false[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_RemoveTarget = "A_RemoveTarget[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_RemoveTracer = "A_RemoveTracer[(int flags = 0[, str filter = \"None\"[, str species = \"None\"]])]\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_Remove = "A_Remove(int pointer[, int flags = 0[, str filter = \"None\"[, str species = \"None\"]]])\nflags: RMVF flags.\nfilter: the actor class to damage.\nspecies: the actor species to damage."; + A_SentinelBob = "A_SentinelBob"; + A_SetTeleFog = "A_SetTeleFog(str telefogsourceclass, str telefogdestclass)"; + A_Srcr2Decide = "A_Srcr2Decide"; + A_SwapTeleFog = "A_SwapTeleFog"; + A_TurretLook = "A_TurretLook"; + A_Teleport = "A_Teleport[(str teleportstate = \"Teleport\"[, str targettype = \"BossSpot\"[, str fogtype = \"TeleportFog\"[, int flags = 0[, float mindist = 0.0[, float maxdist = 0.0[, int pointer = AAPTR_DEFAULT]]]]]])]"; + A_VileChase = "A_VileChase"; + A_Wander = "A_Wander"; +//Generic monster attacks + A_CustomMissile = "A_CustomMissile(str missiletype[, float spawnheight = 0.0[, int spawnofs_horiz = 0[, int angle = 0[, int aimflags = 0[, int pitch = 0[, int target = AAPTR_TARGET]]]]]])"; + A_CustomBulletAttack = "A_CustomBulletAttack(float horz_spread, float vert_spread, int numbullets, int damageperbullet[, str pufftype = \"BulletPuff\"[, float range = 0.0[, int flags = 0[, int target = AAPTR_TARGET]]]])"; + A_CustomRailgun = "A_CustomRailgun(int damage[, int offset[, color ringcolor[, color corecolor[, int flags = 0[, bool aim = false[, float maxdiff = 0.0[, str pufftype = \"\"[, float spread_xy = 0.0[, float spread_z = 0.0[, fixed range = 8192[, int duration = 35[, float sparsity = 1.0[, float driftspeed = 1.0[, str spawnclass = \"\"[, float spawnofs_z = 0[, int spiraloffset = 270]]]]]]]]]]]]]]]])"; + A_CustomMeleeAttack = "A_CustomMeleeAttack[(int damage = 0[, str meleesound = \"\"[, str misssound = \"\"[, str damagetype = \"Melee\"[, bool bleed = true]]]])]"; + A_CustomComboAttack = "A_CustomComboAttack(str missiletype, float spawnheight, int damage, str meleesound[, str damagetype = \"Melee\"[, bool bleed = true]])"; + A_MonsterRefire = "A_MonsterRefire(int chancecontinue, str abortstate) "; + A_BasicAttack = "A_BasicAttack(int meleedamage, str meleesound, str missiletype, float missileheight)"; + A_BulletAttack = "A_BulletAttack"; + A_MonsterRail = "A_MonsterRail"; + A_Explode = "A_Explode[(int explosiondamage = 128[, int explosionradius = 128[, int flags = XF_HURTSOURCE[, bool alert = false[, int fulldamageradius = 0[, int nails = 0[, int naildamage = 10[, str pufftype = \"BulletPuff\"]]]]]]])]"; + A_RadiusThrust = "A_RadiusThrust(int force, int distance[, int flags[, int fullthrustdistance]])"; + A_Detonate = "A_Detonate"; + A_ThrowGrenade = "A_ThrowGrenade(str spawntype[, float spawnheight[, float throwspeed_horz[, float throwspeed_vert[, bool useammo]]]])"; + A_WolfAttack = "A_WolfAttack[(int flags = 0[, str soundname = \"weapons/pistol\"[, float snipe = 1.0[, int damage = 64[, int blocksize = 128[, int pointblank = 0[, int longrange = 0[, float runspeed = 160.0[, str pufftype = \"BulletPuff\"]]]]]]]])]"; +//Freeze death functions + A_FreezeDeath = "A_FreezeDeath"; + A_GenericFreezeDeath = "A_GenericFreezeDeath"; + A_FreezeDeathChunks = "A_FreezeDeathChunks"; + A_IceGuyDie = "A_IceGuyDie"; +//Sound functions + A_PlaySound = "A_PlaySound(str soundname[, int slot = CHAN_BODY[, float volume = 1.0[, bool looping = false[, float attenuation = ATTN_NORM]]]])"; + A_PlayWeaponSound = "A_PlayWeaponSound(str soundname)"; + A_ActiveSound = "A_ActiveSound"; + A_LoopActiveSound = "A_LoopActiveSound"; + A_FLoopActiveSound = "A_FLoopActiveSound"; + A_StopSound = "A_StopSound[(int slot = CHAN_VOICE)]"; + A_Pain = "A_Pain"; + A_Scream = "A_Scream"; + A_XScream = "A_XScream"; + A_PlayerScream = "A_PlayerScream"; + A_VileStart = "A_VileStart"; + A_BrainPain = "A_BrainPain"; + A_BrainAwake = "A_BrainAwake"; + A_BFGSound = "A_BFGSound"; +//Print actions + A_Print = "A_Print(str text[, float time = 0.0[, str fontname = \"SmallFont\"]])"; + A_PrintBold = "A_PrintBold(str text[, float time = 0.0[, str fontname = \"SmallFont\"]])"; + A_Log = "A_Log(str text)"; + A_LogInt = "A_LogInt(int number)"; +//Special actions + A_BossDeath = "A_BossDeath"; + A_KeenDie = "A_KeenDie[(int tag = 666)]"; + A_BrainDie = "A_BrainDie"; + A_GetHurt = "A_GetHurt"; + A_KlaxonBlare = "A_KlaxonBlare"; + A_CheckTerrain = "A_CheckTerrain"; + A_SetBlend = "A_SetBlend(str blendcolor, float alpha, int duration[, str fadecolor])"; + A_CheckPlayerDone = "A_CheckPlayerDone"; + A_PlayerSkinCheck = "A_PlayerSkinCheck(str state)"; + A_SkullPop = "A_SkullPop[(str type = \"BloodySkull\")]"; + A_Quake = "A_Quake(int intensity, int duration, int damageradius, int tremorradius[, str sound = \"world/quake\"])"; + A_QuakeEx = "A_QuakeEx(int intensityX, int intensityY, int intensityZ, int duration, int damrad, int tremrad[, str sound = \"world/quake\"[, int flags = 0[, float mulwavex = 1.0[, float mulwavey = 1.0[, float mulwavez = 1.0]]]]])"; +//Spawn functions + A_TossGib = "A_TossGib"; + A_SpawnDebris = "A_SpawnDebris(str type[, bool translation = false[, float horizontal_vel = 1.0[, float vertical_vel = 1.0]]])"; + A_SpawnItem = "A_SpawnItem(str type, int distance, float zpos, bool useammo, bool translation)"; + A_SpawnItemEx = "A_SpawnItemEx(str type[, float xoffset = 0.0[, float yoffset = 0.0[, float zoffset = 0.0[, float xvelocity = 0.0[, float yvelocity = 0.0[, float zvelocity = 0.0[, float angle = 0.0[, int flags = 0[, int skipchance = 0[, int tid = 0]]]]]]]]]])"; +//State jumps + A_CheckBlock = "A_CheckBlock(str block[, int flags = 0[, int pointer = AAPTR_TARGET]])"; + A_CheckCeiling = "A_CheckCeiling(int offset OR str state)"; + A_CheckFloor = "A_CheckFloor(int offset OR str state)"; + A_CheckFlag = "A_CheckFlag(str flagname, state label[, int check_pointer = AAPTR_DEFAULT])"; + A_CheckLOF = "A_CheckLOF(state jump[, int flags = 0[, float range = 0.0[, float minrange = 0.0[, float angle = 0.0[, float pitch = 0.0[, float offsetheight = 0.0[, float offsetwidth = 0.0[, int ptr_target = AAPTR_DEFAULT]]]]]]]])"; + A_CheckProximity = "A_CheckProximity(str \"jump\", str classname, float distance[, int count = 1[, int flags = 0[, int pointer]]])"; + A_CheckRange = "A_CheckRange(float distance, int offset OR str state[, bool 2d_check])"; + A_CheckSight = "A_CheckSight(int offset OR str state)"; + A_CheckSightOrRange = "A_CheckSightOrRange(float distance, int offset OR str state[, bool 2d_check])"; + A_Jump = "A_Jump(int chance, int offset OR str state, ...)"; + A_JumpIf = "A_JumpIf(expression, int offset OR str state)"; + A_JumpIfArmorType = "A_JumpIfArmorType(str armortype, str state[, int minimum])"; + A_JumpIfCloser = "A_JumpIfCloser(int distance, int offset OR str state[, bool noz = false])"; + A_JumpIfHealthLower = "A_JumpIfHealthLower(int health, int offset OR str state[, int pointer = AAPTR_DEFAULT])"; + A_JumpIfHigherOrLower = "A_JumpIfHigherOrLower(str high, str low[, float offsethigh = 0.0[, float offsetlow = 0.0[, bool includeHeight = true[, int pointer = AAPTR_TARGET]]]])"; + A_JumpIfInventory = "A_JumpIfInventory(str inventorytype, int amount, int offset OR str state[, int owner = AAPTR_DEFAULT])"; + A_JumpIfInTargetInventory = "A_JumpIfInTargetInventory(str item, int count, int offset OR str state[, int forward])"; + A_JumpIfInTargetLOS = "A_JumpIfInTargetLOS(int offset OR str state[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nflags: JLOSF flags."; + A_JumpIfMasterCloser = "A_JumpIfMasterCloser(int distance, int offset OR str state[, bool noz = false])"; + A_JumpIfNoAmmo = "A_JumpIfNoAmmo(int offset OR str state)"; + A_JumpIfTargetInLOS = "A_JumpIfTargetInLOS(int offset OR str state[, float fov = 0.0[, int flags = 0[, float dist_max = 0.0[, float dist_close = 0.0]]]])\nflags: JLOSF flags."; + A_JumpIfTargetInsideMeleeRange = "A_JumpIfTargetInsideMeleeRange(int offset OR str state)\nJumps the number of frames (offset) forward, or to the specified state\nwhen the target of the calling actor is within melee range of the caller."; + A_JumpIfTargetOutsideMeleeRange = "A_JumpIfTargetOutsideMeleeRange(int offset OR str state)\nJumps the number of frames (offset) forward, or to the specified state\nwhen the target of the calling actor is beyond melee range of the caller."; + A_JumpIfTracerCloser = "A_JumpIfTracerCloser(int distance, int offset OR str state[, bool noz = false])"; +//Status changes + A_ActiveAndUnblock = "A_ActiveAndUnblock"; + A_CallSpecial = "A_CallSpecial(int special[, int arg1[, int arg2[, int arg3[, int arg4[, int arg5]]]]])"; + A_ChangeFlag = "A_ChangeFlag(str flagname, bool value)"; + A_ChangeVelocity = "A_ChangeVelocity[(float x = 0.0[, float y = 0.0[, float z = 0.0[, int flags = 0[, int pointer = AAPTR_DEFAULT]]]])]\nflags: CVF flags."; + A_ClearShadow = "A_ClearShadow"; + A_CopyFriendliness = "A_CopyFriendliness[(int copyfrom = AAPTR_MASTER)]"; + A_DeQueueCorpse = "A_DeQueueCorpse"; + A_FadeIn = "A_FadeIn[(float increase_amount = 0.1[, int flags = 0])]\nflags: FTF flags."; + A_FadeOut = "A_FadeOut[(float reduce_amount = 0.1[, int flags = FTF_REMOVE])]\nflags: FTF flags."; + A_FadeTo = "A_FadeTo(float target[, float amount = 0.1[, int flags = 0]])\nflags: FTF flags."; + A_Fall = "A_Fall"; + A_Gravity = "A_Gravity"; + A_HideThing = "A_HideThing"; + A_LowGravity = "A_LowGravity"; + A_NoBlocking = "A_NoBlocking"; + A_NoGravity = "A_NoGravity"; + A_QueueCorpse = "A_QueueCorpse"; + A_RearrangePointers = "A_RearrangePointers(int target, int master, int tracer, int flags)\nflags: AAPTR flags."; + A_ResetHealth = "A_ResetHealth[(int pointer = AAPTR_DEFAULT)]"; + A_Respawn = "A_Respawn[(int flags = RSF_FOG)]\nflags: RSF flags"; + A_ScaleVelocity = "A_ScaleVelocity(float scale[, int pointer = AAPTR_DEFAULT])"; + A_ScreamAndUnblock = "A_ScreamAndUnblock"; + A_SetAngle = "A_SetAngle(float angle[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\nangle: the actor's new angle, in degrees.\nflags: SPF flags."; + A_SetArg = "A_SetArg(int position, int value)"; + A_SetDamageType = "A_SetDamageType(str damagetype)"; + A_SetFloat = "A_SetFloat"; + A_SetFloatSpeed = "A_SetFloatSpeed(float speed[, int pointer = AAPTR_DEFAULT])"; + A_FloatBobPhase = "A_FloatBobPhase(int bob)\nChanges the calling actor's FloatBobPhase to bob, which takes a number from 0 to 63.\nIf the number is invalid or not in range, the function does nothing."; + A_SetFloorClip = "A_SetFloorClip"; + A_SetHealth = "A_SetHealth(int health[, int pointer = AAPTR_DEFAULT])\nhealth: The health value to set for the actor. Valid values are 1 and above.\npointer: The actor to set its health. Default is AAPTR_DEFAULT, which corresponds to the calling actor."; + A_SetInvulnerable = "A_SetInvulnerable"; + A_SetMass = "A_SetMass(int mass)"; + A_SetPainThreshold = "A_SetPainThreshold(int threshold[, int ptr])"; + A_SetPitch = "A_SetPitch(float pitch[, int flags = 0[, int pointer = AAPTR_DEFAULT]])\npitch: The actor's new pitch, in degrees.\nflags: SPF flags."; + A_SetReflective = "A_SetReflective"; + A_SetReflectiveInvulnerable = "A_SetReflectiveInvulnerable"; + A_SetRipperLevel = "A_SetRipperLevel(int level)"; + A_SetRipMin = "A_SetRipMin(int min)"; + A_SetRipMax = "A_SetRipMax(int max)"; + A_SetRoll = "A_SetRoll(float pitch[, int flags = 0[, int pointer = AAPTR_DEFAULT]])"; + A_SetScale = "A_SetScale(float scaleX[, float scaleY = scaleX[, int pointer = AAPTR_DEFAULT]])"; + A_SetShadow = "A_SetShadow"; + A_SetShootable = "A_SetShootable"; + A_SetSolid = "A_SetSolid"; + A_SetSpecial = "A_SetSpecial(int special, int arg0, int arg1, int arg2, int arg3, int arg4)"; + A_SetSpecies = "A_SetSpecies(str species[, int pointer = AAPTR_DEFAULT])"; + A_SetSpeed = "A_SetSpeed(float speed[, int pointer = AAPTR_DEFAULT])"; + A_SetTics = "A_SetTics(int tics)"; + A_SetTranslucent = "A_SetTranslucent(float alpha[, int mode = 0])"; + A_SetUserVar = "A_SetUserVar(str name, int value)"; + A_TransferPointer = "A_TransferPointer(int source, int recipient, int sourcefield, int recipientfield[, int flags])\nflags: PTROP flags."; + A_UnHideThing = "A_UnHideThing"; + A_UnsetFloat = "A_UnsetFloat"; + A_UnSetFloorClip = "A_UnSetFloorClip"; + A_UnSetInvulnerable = "A_UnSetInvulnerable"; + A_UnSetReflective = "A_UnSetReflective"; + A_UnSetReflectiveInvulnerable = "A_UnSetReflectiveInvulnerable"; + A_UnSetShootable = "A_UnSetShootable"; + A_UnsetSolid = "A_UnsetSolid"; +//Missile movement + A_SeekerMissile = "A_SeekerMissile(angle threshold, angle maxturnangle[, int flags = 0[, int chance = 50[, int distance = 10]]])\nflags: SMF flags."; + A_Tracer = "A_Tracer"; + A_Tracer2 = "A_Tracer2"; + A_FaceTracer = "A_FaceTracer[(float angle = 0.0[, float pitch = 0.0])]\nA_FaceTracer(float max_turn, float max_pitch, float ang_offset, float pitch_offset, int flags)"; + A_Fire = "A_Fire[(float height = 0.0)]"; + A_Weave = "A_Weave(int horzspeed, int vertspeed, float horzdist, float vertdist)"; + A_Warp = "A_Warp(int ptr_destination[, float x-offset = 0[, float y-offset = 0[, float z-offset = 0[, float angle = 0[, int flags = 0[, str success_state = \"\"[, float heightoffset = 0[, float radiusoffset = 0[, float pitch = 0]]]]]]]]])\nflags: WARPF flags."; + A_Countdown = "A_Countdown"; + A_CountdownArg = "A_CountdownArg(int arg[, str targetstate])"; + A_Stop = "A_Stop"; +//Inventory functions + A_GiveInventory = "A_GiveInventory(str type[, int count = 0[, int giveto = AAPTR_DEFAULT]])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1.\ngiveto: the actor to give the item to"; + A_GiveToChildren = "A_GiveToChildren(str type[, int count])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1."; + A_GiveToSiblings = "A_GiveToSiblings(str type[, int count])\ntype: the item to give. This should be a valid inventory item.\ncount: the number of samples of this item to give. Default is 0, which is interpreted as 1."; + A_GiveToTarget = "A_GiveToTarget(str type, int count[, int giveto])"; + A_TakeInventory = "A_TakeInventory(str type, int count[, int flags[, int takefrom = AAPTR_DEFAULT]])"; + A_TakeFromChildren = "A_TakeFromChildren(str type[, int count])\ntype: the item to take. This should be a valid inventory item.\ncount: the number of samples of this item to take.\nIf this is 0, the item is cleared from the inventory unless it has the\nINVENTORY.KEEPDEPLETED flag set, and in which case, its amount is merely reduced to 0.\nDefault is 0."; + A_TakeFromSiblings = "A_TakeFromSiblings(str type[, int count])\ntype: the item to take. This should be a valid inventory item.\ncount: the number of samples of this item to take.\nIf this is 0, the item is cleared from the inventory unless it has the\nINVENTORY.KEEPDEPLETED flag set, and in which case, its amount is merely reduced to 0.\nDefault is 0."; + A_TakeFromTarget = "A_TakeFromTarget(str type, int count[, int flags[, int takefrom]])"; + A_DropInventory = "A_DropInventory(str type)"; + A_DropItem = "A_DropItem(str item[, int dropamount = -1[, int chance = 256]])\nThe calling actor drops the specified item.\nThis works in a similar way to the DropItem actor property."; + A_SelectWeapon = "A_SelectWeapon(str type)"; + A_RadiusGive = "A_RadiusGive(str item, fixed distance, int flags[, int amount = 0[, str filter = \"None\"[, str species = \"None\"[, fixed mindist = 0]]]])\nflags: RGF flags."; +//Weapon functions + A_WeaponReady = "A_WeaponReady[(int flags = 0)]\nflags: WRF flags."; + A_Lower = "A_Lower"; + A_Raise = "A_Raise"; + A_ReFire = "A_ReFire[(str state = \"Hold\")]"; + A_ClearReFire = "A_ClearReFire"; + A_GunFlash = "A_GunFlash[(str state = \"Flash\"[, int flags = 0])]\nflags: GFF flags."; + A_CheckReload = "A_CheckReload"; + A_CheckForReload = "A_CheckForReload(int counter, str state[, bool dontincrement = false])"; + A_ResetReloadCounter = "A_ResetReloadCounter"; + A_Light = "A_Light(int intensity)"; + A_Light0 = "A_Light0"; + A_Light1 = "A_Light1"; + A_Light2 = "A_Light2"; + A_LightInverse = "A_LightInverse"; + A_Recoil = "A_Recoil(float force)"; + A_ZoomFactor = "A_ZoomFactor[(float zoom = 1.0[, int flags = 0])]\nflags: ZOOM flags."; + A_SetCrosshair = "A_SetCrosshair(int number)"; +//Weapon attack functions + A_Punch = "A_Punch"; + A_Saw = "A_Saw[(str fullsound = \"weapons/sawfull\"[, str hitsound = \"weapons/sawhit\"[, int damage = 0[, str pufftype = \"BulletPuff\"[, int flags = 0[, float range = 65.0[, float spread_xy = 2.8125[, float spread_z = 0.0[, float lifesteal = 0.0[, int lifestealmax = 0[, str armorbonustype = \"ArmorBonus\"]]]]]]]]]])]"; + A_CustomPunch = "A_CustomPunch(int damage[, bool norandom = false[, int flags = 0[, str pufftype = \"BulletPuff\"[, float range = 64.0[, float lifesteal = 0.0[, int lifestealmax = 0[, str armorbonustype = \"ArmorBonus\"[, str meleesound[, str misssound]]]]]]]]])"; + A_FireBullets = "A_FireBullets(int spread_horz, int spread_vert, int numbullets, int damage[, str pufftype = \"\"[, int flags = FBF_USEAMMO[, float range = 0.0]]])"; + A_FireCustomMissile = "A_FireCustomMissile(str missiletype[, int angle = 0[, bool useammo = false[, int spawnofs_horz = 0[, int spawnheight = 0[, bool aim = false OR int flags = 0[, angle pitch = 0]]]]]])"; + A_RailAttack = "A_RailAttack(int damage[, int spawnofs_horz[, bool useammo[, str ringcolor[, str corecolor[, int flags[, int maxdiff[, str pufftype[, float spread_xy = 0[, float spread_z = 0.0[, fixed range = 8192[, int duration = 35[, float sparsity = 1.0[, float driftspeed = 1.0[, str spawnclass[, float spawnofs_z = 0.0[, int spiraloffset = 270]]]]]]]]]]]]]]]])"; + A_FireAssaultGun = "A_FireAssaultGun"; + A_FireBFG = "A_FireBFG"; + A_FireOldBFG = "A_FireOldBFG"; + A_FireShotgun = "A_FireShotgun"; + A_FireShotgun2 = "A_FireShotgun2"; + A_FireCGun = "A_FireCGun"; + A_FireMissile = "A_FireMissile"; + A_FirePlasma = "A_FirePlasma"; +//Script functions + ACS_ExecuteWithResult = "int ACS_ExecuteWithResult(int script, int arg1, int arg2, int arg3, int arg4)"; + ACS_NamedExecute = "bool ACS_NamedExecute(str script, int map, int arg1, int arg2, int arg3)"; + ACS_NamedSuspend = "bool ACS_NamedSuspend(str script, int map)"; + ACS_NamedTerminate = "bool ACS_NamedTerminate(str script, int map)"; + ACS_NamedLockedExecute = "bool ACS_NamedLockedExecute(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedLockedExecuteDoor = "bool ACS_NamedLockedExecuteDoor(str script, int map, int arg1, int arg2, int lock)"; + ACS_NamedExecuteWithResult = "int ACS_NamedExecuteWithResult(str script, int arg1, int arg2, int arg3, int arg4)"; + ACS_NamedExecuteAlways = "bool ACS_NamedExecuteAlways(str script, int map, int arg1, int arg2, int arg3)"; + CallACS = "int CallACS(str script, int arg1, int arg2, int arg3, int arg4)"; +//Original Doom/Strife monster attacks + A_PosAttack = "A_PosAttack"; + A_SPosAttack = "A_SPosAttack"; + A_CPosAttack = "A_CPosAttack"; + A_CPosRefire = "A_CPosRefire"; + A_SpidRefire = "A_SpidRefire"; + A_TroopAttack = "A_TroopAttack"; + A_SargAttack = "A_SargAttack"; + A_HeadAttack = "A_HeadAttack"; + A_BruisAttack = "A_BruisAttack"; + A_SkullAttack = "A_SkullAttack[(int speed = 20)]"; + A_BspiAttack = "A_BspiAttack"; + A_CyberAttack = "A_CyberAttack"; + A_PainAttack = "A_PainAttack[(str spawntype = \"LostSoul\"[, float angle = 0.0[, int flags = 0[, int limit = 21]]])]"; + A_DualPainAttack = "A_DualPainAttack[(str spawntype = \"LostSoul\")]"; + A_PainDie = "A_PainDie[(str spawntype = \"LostSoul\")]"; + A_SkelFist = "A_SkelFist"; + A_SkelMissile = "A_SkelMissile"; + A_FatAttack1 = "A_FatAttack1[(str spawntype = \"FatShot\")]"; + A_FatAttack2 = "A_FatAttack2[(str spawntype = \"FatShot\")]"; + A_FatAttack3 = "A_FatAttack3[(str spawntype = \"FatShot\")]"; + A_VileTarget = "A_VileTarget[(str type = \"ArchvileFire\")]"; + A_VileAttack = "A_VileAttack[(str sound = \"vile/stop\"[, int initialdamage = 20[, int blastdamage = 70[, int blastradius = 70[, float thrustfactor = 1.0[, str damagetype = \"Fire\"[, int flags = 0]]]]]])]"; + A_BrainSpit = "A_BrainSpit[(str spawntype = \"SpawnShot\")]"; + A_SpawnFly = "A_SpawnFly[(str fogactor = \"SpawnFire\")]"; + A_SpawnSound = "A_SpawnSound"; + A_BrainScream = "A_BrainScream"; + A_BrainExplode = "A_BrainExplode"; + A_Mushroom = "A_Mushroom[(str spawntype = \"FatShot\"[, int amount[, int flags = MSF_STANDARD[, float vrange = 4.0[, float hrange = 0.5]]]])]"; + A_M_Saw = "A_M_Saw[(str fullsound = \"weapons/sawfull\"[, str hitsound = \"weapons/sawhit\"[, int damage = 0[, str pufftype = \"BulletPuff\"]]])]"; + A_SentinelRefire = "A_SentinelRefire"; + A_BetaSkullAttack = "A_BetaSkullAttack"; +//Miscellaneous functions for Doom + A_Hoof = "A_Hoof"; + A_Metal = "A_Metal"; + A_BabyMetal = "A_BabyMetal"; + A_FatRaise = "A_FatRaise"; + A_SkelWhoosh = "A_SkelWhoosh"; + A_StartFire = "A_StartFire"; + A_FireCrackle = "A_FireCrackle"; + A_BFGSpray = "A_BFGSpray[(str flashtype = \"BFGExtra\"[, int numrays = 40[, int damagecnt = 15[, float angle = 90.0[, float distance = 1024.0[, float vrange = 32.0[, int explicit_damage = 0]]]]]])]"; + A_BarrelDestroy = "A_BarrelDestroy"; +//Miscellaneous functions not listed in the "Action functions" wiki article + A_Bang4Cloud = "A_Bang4Cloud"; + A_Blast = "A_Blast[(int flags = 0[, int strength = 255[, int radius = 255[, float speed = 20.0[, str blasteffect = \"BlastEffect\"[, sound blastsound = \"BlastRadius\"]]]]])]"; + A_DropWeaponPieces = "A_DropWeaponPieces(str actorclass1, str actorclass2, str actorclass3)"; + A_Feathers = "A_Feathers"; + A_GauntletAttack = "A_GauntletAttack(int power)"; + A_GiveQuestItem = "A_GiveQuestItem(int itemnum)"; + A_PigPain = "A_PigPain"; + A_RemoveForcefield = "A_RemoveForcefield"; + A_RocketInFlight = "A_RocketInFlight"; + A_SetGravity = "A_SetGravity(float gravity)\nSets the amount of gravity for the calling actor."; + A_SetUserArray = "A_SetUserArray(str name, int index, int value)"; + A_ShootGun = "A_ShootGun"; + A_SPosAttackUseAtkSound = "A_SPosAttackUseAtkSound"; +//Mathematical functions + abs = "abs(x)\nReturns the absolute value of x."; + sin = "sin(x)\nTrigonometry function, x must be in degrees."; + cos = "cos(x)\nTrigonometry function, x must be in degrees."; + sqrt = "sqrt(x)\nReturns the square root of x."; + random = "random[identifier](min, max)\nReturns a random integer value between min and max."; + random2 = "random2[identifier](mask)\nReturns a random integer value between -mask and +mask."; + frandom = "frandom[identifier](min, max)\nReturns a random floating point value between min and max."; + randompick = "randompick[identifier](int, ...)\nPicks a number from the numbers placed in it.\nThis can take an unlimited amount of parameters."; + frandompick = "frandompick[identifier](int, ...)\nSimilar to randompick but for float-point values."; +//State keywords + //Bright = "Bright"; + CanRaise = "CanRaise"; + Fast = "Fast"; + Light = "Light(str lightname)"; + NoDelay = "NoDelay"; + Offset = "Offset(int x, int y)"; + Slow = "Slow"; +//Special functions + CheckClass = "bool CheckClass(str classname[, int ptr_select = AAPTR_DEFAULT[, bool match_superclass = false]])"; + IsPointerEqual = "bool IsPointerEqual(int ptr_select1, int ptr_select2)"; +} + +constants +{ + Actor; +//states: + States; + Spawn:; + Idle:; + See:; + Melee:; + Missile:; + Pain:; + Pain.Dagger:; + Death:; + XDeath:; + Burn:; + Ice:; + Disintegrate:; + Raise:; + Heal:; + Crash:; + Crash.Extreme:; + Crush:; + Wound:; + Greetings:; + Yes:; + No:; + Active:; + Inactive:; + Bounce:; + Bounce.Floor:; + Bounce.Ceiling:; + Bounce.Wall:; + Bounce.Actor:; + Bounce.Actor.Creature:; +//flow control + loop; + stop; + wait; + fail; + goto; +//////////////////// +//ACTOR PROPERTIES +//////////////////// +//Map editing control + Game; + SpawnID; + ConversationID; + Tag; +//Behavior + Health; + GibHealth; + WoundHealth; + ReactionTime; + PainChance; + PainThreshold; + DamageFactor; + Damage; + PoisonDamage; + PoisonDamageType; + RadiusDamageFactor; + DesignatedTeam; + Speed; + VSpeed; + FastSpeed; + FloatSpeed; + Species; + Accuracy; + Stamina; + Activation; + TeleFogSourceType; + TeleFogDestType; +//Collision and 'Physics' + Radius; + Height; + DeathHeight; + BurnHeight; + ProjectilePassHeight; + CameraHeight; + Gravity; + Mass; + MaxStepHeight; + MaxDropOffHeight; + BounceType; + BounceFactor; + WallBounceFactor; + BounceCount; + ProjectileKickBack; + PushFactor; + WeaveIndexXY; + WeaveIndexZ; +//Sound + ActiveSound; + AttackSound; + BounceSound; + CrushPainSound; + DeathSound; + HowlSound; + PainSound; + SeeSound; + WallBounceSound; +//Rendering + RenderStyle; + Alpha; + DefaultAlpha; + XScale; + YScale; + Scale; + Translation; + BloodColor; + BloodType; + Decal; + StencilColor; + FloatBobPhase; +//Obituaries + HitObituary; + Obituary; +//Attacks + MinMissileChance; + DamageType; + DeathType; + MeleeThreshold; + MeleeRange; + MaxTargetRange; + PainType; +//Special + Args[0]; + Args[1]; + Args[2]; + Args[3]; + Args[4]; + ClearFlags; + DropItem; + Skip_Super; + VisibleToTeam; + VisibleToPlayerClass; +//Inventory + Inventory.Amount; + Inventory.DefMaxAmount; + Inventory.MaxAmount; + Inventory.InterHubAmount; + Inventory.Icon; + Inventory.PickupMessage; + Inventory.PickupSound; + Inventory.PickupFlash; + Inventory.UseSound; + Inventory.RespawnTics; + Inventory.GiveQuest; + Inventory.ForbiddenTo; + Inventory.RestrictedTo; +//FakeInventory + FakeInventory.Respawns; +//BasicArmorPickup + Armor.SaveAmount; + Armor.SavePercent; + Armor.MaxFullAbsorb; + Armor.MaxAbsorb; +//BasicArmorBonus + Armor.SavePercent; + Armor.MaxSaveAmount; + Armor.SaveAmount; + Armor.MaxBonus; + Armor.MaxBonusMax; +//Weapons + Weapon.AmmoGive; + Weapon.AmmoGive1; + Weapon.AmmoGive2; + Weapon.AmmoType; + Weapon.AmmoType1; + Weapon.AmmoType2; + Weapon.AmmoUse; + Weapon.AmmoUse1; + Weapon.AmmoUse2; + Weapon.MinSelectionAmmo1; + Weapon.MinSelectionAmmo2; + Weapon.BobRangeX; + Weapon.BobRangeY; + Weapon.BobSpeed; + Weapon.BobStyle; + Weapon.KickBack; + Weapon.DefaultKickBack; + Weapon.ReadySound; + Weapon.SelectionOrder; + Weapon.SisterWeapon; + Weapon.SlotNumber; + Weapon.SlotPriority; + Weapon.UpSound; + Weapon.YAdjust; +//Ammo + Ammo.BackpackAmount; + Ammo.BackpackMaxAmount; + Ammo.DropAmount; +//Weapon Pieces + WeaponPiece.Number; + WeaponPiece.Weapon; +//Health + Health.LowMessage; +//Puzzle Items + PuzzleItem.Number; + PuzzleItem.FailMessage; +//Player + Player.AirCapacity; + Player.AttackZOffset; + Player.ColorRange; + Player.ColorSet; + Player.ColorSetFile; + Player.ClearColorSet; + Player.CrouchSprite; + Player.DamageScreenColor; + Player.DisplayName; + Player.Face; + Player.FallingScreamSpeed; + Player.FlechetteType; + Player.ForwardMove; + Player.GruntSpeed; + Player.HealRadiusType; + Player.HexenArmor; + Player.InvulnerabilityMode; + Player.JumpZ; + Player.MaxHealth; + Player.RunHealth; + Player.Portrait; + Player.ScoreIcon; + Player.SideMove; + Player.SoundClass; + Player.SpawnClass; + Player.StartItem; + Player.UseRange; + Player.WeaponSlot; + Player.ViewHeight; + Player.MorphWeapon; + Player.MugShotMaxHealth; +//Powerup + Powerup.Color; + Powerup.Colormap; + Powerup.Duration; + Powerup.Mode; + Powerup.Strength; +//Powerup Giver + Powerup.Type; +//Health Pickup + HealthPickup.AutoUse; +//Morph Projectile + MorphProjectile.PlayerClass; + MorphProjectile.MonsterClass; + MorphProjectile.Duration; + MorphProjectile.MorphStyle; + MorphProjectile.MorphFlash; + MorphProjectile.UnMorphFlash; + +//Actor position and movement + x; + y; + z; + Angle; + CeilingZ; + FloorZ; + Pitch; + VelX; + VelY; + VelZ; +//Actor properties + ScaleX; + ScaleY; + Score; + Special; + Stamina; +//////// +//FLAGS +//////// +//pointers + AAPTR_DEFAULT; + AAPTR_NULL; + AAPTR_TARGET; + AAPTR_MASTER; + AAPTR_TRACER; + AAPTR_PLAYER; + AAPTR_PLAYER_GETTARGET; + AAPTR_PLAYER_GETCONVERSATION; +//A_SpawnItemEx flags + SXF_TRANSFERTRANSLATION; + SXF_ABSOLUTEPOSITION; + SXF_ABSOLUTEANGLE; + SXF_ABSOLUTEVELOCITY; + SXF_SETMASTER; + SXF_NOCHECKPOSITION; + SXF_TELEFRAG; + SXF_TRANSFERAMBUSHFLAG; + SXF_TRANSFERPITCH; + SXF_TRANSFERPOINTERS; + SXF_USEBLOODCOLOR; + SXF_CLEARCALLERTID; + SXF_MULTIPLYSPEED; + SXF_TRANSFERSCALE; + SXF_TRANSFERSPECIAL; + SXF_CLEARCALLERSPECIAL; + SXF_TRANSFERSTENCILCOL; + SXF_TRANSFERALPHA; + SXF_TRANSFERRENDERSTYLE; + SXF_SETTARGET; + SXF_SETTRACER; + SXF_NOPOINTERS; + SXF_ORIGINATOR; + SXF_TRANSFERSPRITEFRAME; + SXF_TRANSFERROLL; + SXF_ISTARGET; + SXF_ISMASTER; + SXF_ISTRACER; +//weapon flags + WRF_NOBOB; + WRF_NOFIRE; + WRF_NOSWITCH; + WRF_NOPRIMARY; + WRF_DISABLESWITCH; + WRF_NOSECONDARY; + WRF_ALLOWRELOAD; + WRF_ALLOWZOOM; + ZOOM_INSTANT; + ZOOM_NOSCALETURNING; + CPF_USEAMMO; + CPF_DAGGER; + CPF_PULLIN; + CPF_NORANDOMPUFFZ; + CPF_NOTURN; + CPF_STEALARMOR; + FBF_USEAMMO; + FBF_NOFLASH; + FBF_NORANDOM; + FBF_EXPLICITANGLE; + FBF_NOPITCH; + FBF_NORANDOMPUFFZ; +//monster flags + PAF_NOSKULLATTACK; + PAF_AIMFACING; + PAF_NOTARGET; +//Sound channels flags + CHAN_AUTO; + CHAN_WEAPON; + CHAN_VOICE; + CHAN_ITEM; + CHAN_BODY; + CHAN_5; + CHAN_6; + CHAN_7; + CHAN_LISTENERZ; + CHAN_MAYBE_LOCAL; + CHAN_UI; + CHAN_NOPAUSE; + CHAN_LOOP; +//misc flags + MSF_STANDARD; + MSF_CLASSIC; + MSF_DONTHURT; +//combo flags + Monster; + Projectile; +//physics + SOLID; + SHOOTABLE; + FLOAT; + NOGRAVITY; + WINDTHRUST; + PUSHABLE; + DONTFALL; + CANPASS; + ACTLIKEBRIDGE; + NOBLOCKMAP; + MOVEWITHSECTOR; + RELATIVETOFLOOR; + NOLIFTDROP; + SLIDESONWALLS; + NODROPOFF; + NOTRIGGER; + BLOCKEDBYSOLIDACTORS; +//Behavior + ALWAYSRESPAWN; + AMBUSH; + AVOIDMELEE; + BOSS; + DONTCORPSE; + DORMANT; + FRIENDLY; + JUMPDOWN; + LOOKALLAROUND; + MISSILEEVENMORE; + MISSILEMORE; + NEVERRESPAWN; + NOSPLASHALERT; + NOTARGETSWITCH; + NOVERTICALMELEERANGE; + QUICKTORETALIATE; + STANDSTILL; +//(In)Abilities + CANNOTPUSH; + NOTELEPORT; + ACTIVATEIMPACT; + CANPUSHWALLS; + CANUSEWALLS; + ACTIVATEPCROSS; + CANTLEAVEFLOORPIC; + TELESTOMP; + NOTELESTOMP; + STAYMORPHED; + CANBLAST; + NOBLOCKMONST; + THRUGHOST; + THRUACTORS; + THRUSPECIES; + MTHRUSPECIES; + SPECTRAL; + FRIGHTENED; + NOTARGET; + NEVERTARGET; + NOINFIGHTING; + NOTIMEFREEZE; + NOFEAR; + CANTSEEK; + SEEINVISIBLE; + DONTTHRUST; + ALLOWPAIN; +//Defenses + INVULNERABLE; + BUDDHA; + REFLECTIVE; + SHIELDREFLECT; + DEFLECT; + NORADIUSDMG; + DONTBLAST; + GHOST; + DONTMORPH; + DONTSQUASH; + NOTELEOTHER; + HARMFRIENDS; + DOHARMSPECIES; + DONTHARMCLASS; + DONTHARMSPECIES; + NODAMAGE; + DONTRIP; + NOTELEFRAG; + ALWAYSTELEFRAG; + DONTDRAIN; + LAXTELEFRAGDMG; +//Appearance & Sound + BRIGHT; + INVISIBLE; + SHADOW; + NOBLOOD; + NOBLOODDECALS; + STEALTH; + FLOORCLIP; + SPAWNFLOAT; + SPAWNCEILING; + FLOATBOB; + NOICEDEATH; + DONTGIB; + DONTSPLASH; + DONTOVERLAP; + RANDOMIZE; + FIXMAPTHINGPOS; + FULLVOLACTIVE; + FULLVOLDEATH; + NOWALLBOUNCESND; + VISIBILITYPULSE; + ROCKETTRAIL; + GRENADETRAIL; + NOBOUNCESOUND; + NOSKIN; + DONTTRANSLATE; + NOPAIN; + FORCEYBILLBOARD; + FORCEXYBILLBOARD; +//Projectile + MISSILE; + RIPPER; + NOBOSSRIP; + NODAMAGETHRUST; + DONTREFLECT; + FLOORHUGGER; + CEILINGHUGGER; + BLOODLESSIMPACT; + BLOODSPLATTER; + FOILINVUL; + FOILBUDDHA; + SEEKERMISSILE; + SCREENSEEKER; + SKYEXPLODE; + NOEXPLODEFLOOR; + STRIFEDAMAGE; + EXTREMEDEATH; + NOEXTREMEDEATH; + DEHEXPLOSION; + PIERCEARMOR; + FORCERADIUSDMG; + SPAWNSOUNDSOURCE; + PAINLESS; + FORCEPAIN; + CAUSEPAIN; + DONTSEEKINVISIBLE; + STEPMISSILE; + ADDITIVEPOISONDAMAGE; + ADDITIVEPOISONDURATION; + NOFORWARDFALL; + HITTARGET; + HITMASTER; + HITTRACER; +//Bouncing + BOUNCEONWALLS; + BOUNCEONFLOORS; + BOUNCEONCEILINGS; + ALLOWBOUNCEONACTORS; + BOUNCEAUTOOFF; + BOUNCEAUTOOFFFLOORONLY; + BOUNCELIKEHERETIC; + BOUNCEONACTORS; + NOWALLBOUNCESND; + EXPLODEONWATER; + CANBOUNCEWATER; + MBFBOUNCER; + USEBOUNCESTATE; +//Miscellaneous + ICESHATTER; + DROPPED; + ISMONSTER; + CORPSE; + COUNTITEM; + COUNTKILL; + COUNTSECRET; + NOTDMATCH; + NONSHOOTABLE; + DROPOFF; + PUFFONACTORS; + ALLOWPARTICLES; + ALWAYSPUFF; + PUFFGETSOWNER; + FORCEDECAL; + NODECAL; + SYNCHRONIZED; + ALWAYSFAST; + NEVERFAST; + OLDRADIUSDMG; + USESPECIAL; + BUMPSPECIAL; + BOSSDEATH; + NOINTERACTION; + NOTAUTOAIMED; + NOTONAUTOMAP; + WEAPONSPAWN; + NOMENU; + PICKUP; + TOUCHY; + VULNERABLE; +//Limited Use + SEESDAGGERS; + INCOMBAT; + NOCLIP; + NOSECTOR; + ICECORPSE; + JUSTHIT; + JUSTATTACKED; + TELEPORT; + BLASTED; + EXPLOCOUNT; + SKULLFLY; +//Inventory + INVENTORY.QUIET; + INVENTORY.AUTOACTIVATE; + INVENTORY.UNDROPPABLE; + INVENTORY.INVBAR; + INVENTORY.HUBPOWER; + INVENTORY.PERSISTENTPOWER; + INVENTORY.ALWAYSPICKUP; + INVENTORY.FANCYPICKUPSOUND; + INVENTORY.NOATTENPICKUPSOUND; + INVENTORY.BIGPOWERUP; + INVENTORY.NEVERRESPAWN; + INVENTORY.KEEPDEPLETED; + INVENTORY.IGNORESKILL; + INVENTORY.ADDITIVETIME; + INVENTORY.UNTOSSABLE; + INVENTORY.RESTRICTABSOLUTELY; + INVENTORY.NOSCREENFLASH; + INVENTORY.TOSSED; + INVENTORY.ALWAYSRESPAWN; + INVENTORY.TRANSFER; + INVENTORY.NOTELEPORTFREEZE; +//Weapons + WEAPON.NOAUTOFIRE; + WEAPON.READYSNDHALF; + WEAPON.DONTBOB; + WEAPON.AXEBLOOD; + WEAPON.NOALERT; + WEAPON.AMMO_OPTIONAL; + WEAPON.ALT_AMMO_OPTIONAL; + WEAPON.AMMO_CHECKBOTH; + WEAPON.PRIMARY_USES_BOTH; + WEAPON.ALT_USES_BOTH; + WEAPON.WIMPY_WEAPON; + WEAPON.POWERED_UP; + WEAPON.STAFF2_KICKBACK; + WEAPON.EXPLOSIVE; + WEAPON.MELEEWEAPON; + WEAPON.BFG; + WEAPON.CHEATNOTWEAPON; + WEAPON.NO_AUTO_SWITCH; + WEAPON.NOAUTOAIM; +//Player + PLAYERPAWN.NOTHRUSTWHENINVUL; + PLAYERPAWN.CANSUPERMORPH; + PLAYERPAWN.CROUCHABLEMORPH; +//Action-specific flags + AMF_EMITFROMTARGET; + AMF_TARGETEMITTER; + AMF_TARGETNONPLAYER; + BF_USEAMMO; + BF_DONTWARN; + BF_AFFECTBOSSES; + BF_NOIMPACTDAMAGE; + CBAF_AIMFACING; + CBAF_EXPLICITANGLE; + CBAF_NOPITCH; + CBAF_NORANDOM; + CBAF_NORANDOMPUFFZ; + CBF_NOLINES; + CBF_SETTARGET; + CBF_SETMASTER; + CBF_SETTRACER; + CBF_SETONPTR; + CHF_DONTMOVE; + CHF_FASTCHASE; + CHF_NIGHTMAREFAST; + CHF_NOPLAYACTIVE; + CHF_RESURRECT; + CLOFF_AIM_VERT_NOOFFSET; + CLOFF_ALLOWNULL; + CLOFF_BEYONDTARGET; + CLOFF_CHECKPARTIAL; + CLOFF_FROMBASE; + CLOFF_IGNOREGHOST; + CLOFF_JUMPENEMY; + CLOFF_JUMPFRIEND; + CLOFF_JUMPNONHOSTILE; + CLOFF_JUMPOBJECT; + CLOFF_JUMP_ON_MISS; + CLOFF_MUL_HEIGHT; + CLOFF_MUL_WIDTH; + CLOFF_MUSTBEGHOST; + CLOFF_MUSTBESHOOTABLE; + CLOFF_MUSTBESOLID; + CLOFF_NOAIM; + CLOFF_NOAIM_HORZ; + CLOFF_NOAIM_VERT; + CLOFF_SETTARGET; + CLOFF_SETMASTER; + CLOFF_SETTRACER; + CLOFF_SKIPENEMY; + CLOFF_SKIPFRIEND; + CLOFF_SKIPNONHOSTILE; + CLOFF_SKIPOBJECT; + CLOFF_SKIPOBSTACLES; + CLOFF_SKIPTARGET; + CMF_ABSOLUTEANGLE; + CMF_ABSOLUTEPITCH; + CMF_AIMDIRECTION; + CMF_AIMOFFSET; + CMF_CHECKTARGETDEAD; + CMF_OFFSETPITCH; + CMF_SAVEPITCH; + CMF_TRACKOWNER; + CVF_RELATIVE; + CVF_REPLACE; + DMSS_AFFECTARMOR; + DMSS_FOILBUDDHA; + DMSS_FOILINVUL; + DMSS_KILL; + DMSS_NOFACTOR; + DMSS_NOPROTECT; + DMSS_EXFILTER; + DMSS_EXSPECIES; + DMSS_EITHER; + FPF_AIMATANGLE; + FPF_TRANSFERTRANSLATION; + FPF_NOAUTOAIM; + FTF_CLAMP; + FTF_REMOVE; + GFF_NOEXTCHANGE; + JLOSF_ALLYNOJUMP; + JLOSF_CHECKMASTER; + JLOSF_CHECKTRACER; + JLOSF_CLOSENOFOV; + JLOSF_CLOSENOJUMP; + JLOSF_CLOSENOSIGHT; + JLOSF_COMBATANTONLY; + JLOSF_DEADNOJUMP; + JLOSF_FLIPFOV; + JLOSF_NOAUTOAIM; + JLOSF_NOSIGHT; + JLOSF_PROJECTILE; + JLOSF_TARGETLOS; + KILS_FOILBUDDHA; + KILS_FOILINVUL; + KILS_KILLMISSILES; + KILS_NOMONSTERS; + KILS_EXFILTER; + KILS_EXSPECIES; + KILS_EITHER; + LOF_DONTCHASEGOAL; + LOF_FULLVOLSEESOUND; + LOF_NOJUMP; + LOF_NOSEESOUND; + LOF_NOSIGHTCHECK; + LOF_NOSOUNDCHECK; + PTROP_NOSAFEGUARDS; + PTROP_UNSAFEMASTER; + PTROP_UNSAFETARGET; + RGF_CENTERZ; + RGF_CORPSES; + RGF_CUBE; + RGF_EXFILTER; + RGF_EXPLICITANGLE; + RGF_EXSPECIES; + RGF_FULLBRIGHT; + RGF_GIVESELF; + RGF_INCLUSIVE; + RGF_ITEMS; + RGF_KILLED; + RGF_MISSILES; + RGF_MONSTERS; + RGF_NOMASTER; + RGF_NOPIERCING; + RGF_NOSIGHT; + RGF_NOTARGET; + RGF_NOTRACER; + RGF_OBJECTS; + RGF_PLAYERS; + RGF_SILENT; + RGF_VOODOO; + RMVF_EVERYTHING; + RMVF_MISC; + RMVF_MISSILES; + RMVF_NOMONSTERS; + RMVF_EXFILTER; + RMVF_EXSPECIES; + RMVF_EITHER; + RSF_FOG; + RSF_KEEPTARGET; + RSF_TELEFRAG; + RTF_AFFECTSOURCE; + RTF_NOIMPACTDAMAGE; + RTF_NOTMISSILE; + SF_NOPULLIN; + SF_NORANDOM; + SF_NOTURN; + SF_NOUSEAMMO; + SF_NOUSEAMMOMISS; + SF_RANDOMLIGHTBOTH; + SF_RANDOMLIGHTHIT; + SF_RANDOMLIGHTMISS; + SF_STEALARMOR; + SMF_CURSPEED; + SMF_LOOK; + SMF_PRECISE; + SPF_FORCECLAMP; + SPF_INTERPOLATE; + TF_TELEFRAG; + TF_RANDOMDECIDE; + TF_FORCED; + TF_KEEPVELOCITY; + TF_KEEPANGLE; + TF_USESPOTZ; + TF_NOSRCFOG; + TF_NODESTFOG; + TF_NOFOG; + TF_USEACTORFOG; + TF_NOJUMP; + TF_OVERRIDE; + TIF_NOTAKEINFINITE; + VAF_DMGTYPEAPPLYTODIRECT; + WARPF_ABSOLUTEOFFSET; + WARPF_ABSOLUTEANGLE; + WARPF_USECALLERANGLE; + WARPF_NOCHECKPOSITION; + WARPF_INTERPOLATE; + WARPF_WARPINTERPOLATION; + WARPF_COPYINTERPOLATION; + WARPF_STOP; + WARPF_TOFLOOR; + WARPF_TESTONLY; + WAPRF_ABSOLUTEPOSITION; + WARPF_BOB; + WARPF_MOVEPTR; + WARPF_USETID; + WARPF_COPYVELOCITY; + WARPF_COPYPITCH; + XF_HURTSOURCE; + XF_NOTMISSILE; +////////////////////////// +//Property-specific flags +////////////////////////// +//Activation flags + THINGSPEC_Default; + THINGSPEC_ThingActs; + THINGSPEC_TriggerActs; + THINGSPEC_ThingTargets; + THINGSPEC_TriggerTargets; + THINGSPEC_MonsterTrigger; + THINGSPEC_MissileTrigger; + THINGSPEC_ClearSpecial; + THINGSPEC_NoDeathSpecial; + THINGSPEC_Activate; + THINGSPEC_Deactivate; + THINGSPEC_Switch; +//MorphProjectile.MorphStyle flags + MRF_ADDSTAMINA; + MRF_FULLHEALTH; + MRF_UNDOBYTOMEOFPOWER; + MRF_UNDOBYCHAOSDEVICE; + MRF_FAILNOTELEFRAG; + MRF_FAILNOLAUGH; + MRF_WHENINVULNERABLE; + MRF_LOSEACTUALWEAPON; + MRF_NEWTIDBEHAVIOUR; + MRF_UNDOBYDEATH; + MRF_UNDOBYDEATHFORCED; + MRF_UNDOBYDEATHSAVES; + MRF_UNDOALWAYS; +//A_CheckProximity flags + CPXF_ANCESTOR; + CPXF_NOZ; + CPXF_COUNTDEAD; + CPXF_DEADONLY; + CPXF_LESSOREQUAL; + CPXF_EXACT; +//A_FaceTraget/Master/Tracer flags + FAF_BOTTOM; + FAF_MIDDLE; + FAF_TOP; + FAF_NODISTFACTOR; +//A_QuakeEx flags + QF_RELATIVE; + QF_SCALEDOWN; + QF_SCALEUP; + QF_WAVE; + QF_MAX; + QF_FULLINTENSITY; +} diff --git a/Build/Scripting/ZDoom_USDF.cfg b/Build/Scripting/ZDoom_USDF.cfg new file mode 100644 index 0000000..13929e5 --- /dev/null +++ b/Build/Scripting/ZDoom_USDF.cfg @@ -0,0 +1,50 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for ACS +\*******************************************************************/ + +// Editor settings +description = "ZDoom USDF script"; +codepage = 0; +extensions = "txt"; +casesensitive = false; +insertcase = 1; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +terminator = ";"; + +keywords +{ + Include = "Include a binary or text format script."; + Conversation = "conversation"; + ID = "Unique ID for this conversation."; + Actor = "Class name of the Actor that uses this conversation."; + Page = "page"; + Name = "Name to be displayed in upper-left coner."; + Panel = "Name of the image to show on the background."; + Voice = "Name of the narration sound to play."; + Dialog = "Dialog text on the page."; + Drop = "Class name of the object to drop when the actor is killed"; + Link = "Next page to jump to when all ifitem conditions are satisified."; + IfItem = "ifitem"; + Item = "Class name of an item to check in the inventory."; + Amount = "Amount of item required to be in the inventory."; + Choice = "choice"; + Text = "Text of the choice the user has."; + Cost = "cost"; + DisplayCost = "'true' to display the cost with the choice. 'false' to hide the cost."; + YesMessage = "Message to show in the console when the choice is accepted."; + NoMessage = "Message to show in the console when the choise is denied."; + Log = "LOG entry to use on success."; + GiveItem = "Class name of an item to give upon success."; + Special = "Action to perform upon success."; + Arg0 = "Argument 0 for the special action."; + Arg1 = "Argument 1 for the special action."; + Arg2 = "Argument 2 for the special action."; + Arg3 = "Argument 3 for the special action."; + Arg4 = "Argument 4 for the special action."; + NextPage = "Index of the next page."; + CloseDialog = "'true' to close the dialog with this choice."; +} + +constants +{ +} diff --git a/Build/Scripting/Zandronum_ACS.cfg b/Build/Scripting/Zandronum_ACS.cfg new file mode 100644 index 0000000..2436abc --- /dev/null +++ b/Build/Scripting/Zandronum_ACS.cfg @@ -0,0 +1,995 @@ +/*******************************************************************\ + Doom Builder Script highlighting definitions for ACS +\*******************************************************************/ + +// Compiler settings +compiler = "zandronum_acc"; +parameters = "-I \"%PT\" -I \"%PS\" %FI %FO"; +resultlump = "BEHAVIOR"; + +// Editor settings +description = "Zandronum ACS script"; +codepage = 0; +extensions = "acs"; +casesensitive = false; +insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase +lexer = 35; // CPP-style, case-insensitive +functionopen = "("; +functionclose = ")"; +argumentdelimiter = ","; +terminator = ";"; +keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K"; +snippetsdir = "acs"; +scripttype = 1; //0 = unknown script, 1 = acc, 2 = modeldef, 3 = decorate + +keywords +{ + #Define = "#Define identifier expression"; + #EncryptStrings = "#EncryptStrings"; + #Import = "#Import"; + #Include = "#Include"; + #Library = "#Library"; + #LibDefine = "#LibDefine identifier expression"; + #NoCompact = "#NoCompact"; + #NoWadAuthor = "#NoWadAuthor"; + #WadAuthor = "#WadAuthor"; + ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)"; + ACS_ExecuteAlways = "ACS_ExecuteAlways(script, map, arg1, arg2, arg3)"; + ACS_ExecuteWait = "ACS_ExecuteWait(script, map, arg1, arg2, arg3)"; + ACS_ExecuteWithResult = "ACS_ExecuteWithResult(script, s_arg1, s_arg2, s_arg3)"; + ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)"; + ACS_LockedExecuteDoor = "ACS_LockedExecuteDoor(script, map, arg1, arg2, lock)"; + ACS_Suspend = "ACS_Suspend(script, map)"; + ACS_Terminate = "ACS_Terminate(script, map)"; + ActivatorSound = "ActivatorSound(name, volume)"; + ActivatorTID = "ActivatorTID()"; + AmbientSound = "AmbientSound(name, volume)"; + Autosave = "Autosave()"; + BlueTeamCount = "BlueTeamCount()"; + BlueTeamScore = "BlueTeamScore()"; + Bool = "Bool expression"; + Break = "Break"; + Return = "Return"; + CancelFade = "CancelFade()"; + Case = "Case expression:"; + Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush)"; + Ceiling_CrushAndRaiseA = "Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush)"; + Ceiling_CrushAndRaiseSilentA = "Ceiling_CrushAndRaiseSilentA(tag, dspeed, uspeed, crush)"; + Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush)"; + Ceiling_CrushRaiseAndStayA = "Ceiling_CrushRaiseAndStayA(tag, dspeed, uspeed, crush)"; + Ceiling_CrushRaiseAndStaySilA = "Ceiling_CrushRaiseAndStaySilA(tag, dspeed, uspeed, crush)"; + Ceiling_CrushStop = "Ceiling_CrushStop(tag)"; + Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush)"; + Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)"; + Ceiling_LowerByValueTimes8 = "Ceiling_LowerByValueTimes8(tag, speed, height)"; + Ceiling_LowerInstant = "Ceiling_LowerInstant(tag, arg1, height)"; + Ceiling_LowerToFloor = "Ceiling_LowerToFloor(tag, speed)"; + Ceiling_LowerToHighestFloor = "Ceiling_LowerToHighestFloor(tag, speed)"; + Ceiling_LowerToLowest = "Ceiling_LowerToLowest(tag, speed)"; + Ceiling_MoveToValue = "Ceiling_MoveToValue(tag, speed, height, neg)"; + Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)"; + Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)"; + Ceiling_RaiseByValueTimes8 = "Ceiling_RaiseByValueTimes8(tag, speed, height)"; + Ceiling_RaiseInstant = "Ceiling_RaiseInstant(tag, arg1, height)"; + Ceiling_RaiseToNearest = "Ceiling_RaiseToNearest(tag, speed)"; + Ceiling_Waggle = "Ceiling_Waggle(tag, amp, freq, offset, time)"; + ChangeCamera = "ChangeCamera(tid, who, revert)"; + ChangeCeiling = "ChangeCeiling(tag, flat)"; + ChangeFloor = "ChangeFloor(tag, flat)"; + ChangeLevel = "ChangeLevel(mapname, position, flags, skill)"; + ChangeSkill = "ChangeSkill(skill)"; + CheckActorCeilingTexture = "CheckActorCeilingTexture(tid, texture)"; + CheckActorClass = "CheckActorClass(tid, class)"; + CheckActorFloorTexture = "CheckActorFloorTexture(tid, texture)"; + CheckActorInventory = "CheckActorInventory(tid, type)"; + CheckActorProperty = "CheckActorProperty(tid, property, value)"; + CheckInventory = "CheckInventory(type)"; + CheckPlayerCamera = "CheckPlayerCamera(player)"; + CheckWeapon = "CheckWeapon(weapon)"; + ClassifyActor = "ClassifyActor(tid)"; + ClearActorInventory = "ClearActorInventory(tid)"; + ClearForceField = "ClearForceField()"; + ClearInventory = "ClearInventory()"; + ClearLineSpecial = "ClearLineSpecial()"; + ConsoleCommand = "ConsoleCommand(command)"; + Const = "Const"; + Continue = "Continue"; + cos = "cos(angle)"; + CreateTranslation = "CreateTranslation(transnumber, translation, translation, translation, ...)"; + DamageThing = "DamageThing(amount)"; + Death = "Script expression Death"; + Default = "Default:"; + Delay = "Delay(tics)"; + Disconnect = "Script expression Disconnect"; + Do = "Do"; + Door_Animated = "Door_Animated(tag, speed, delay)"; + Door_Close = "Door_Close(tag, speed)"; + Door_CloseWaitOpen = "Door_CloseWaitOpen(tag, speed, delay)"; + Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock)"; + Door_Open = "Door_Open(tag, speed)"; + Door_Raise = "Door_Raise(tag, speed, delay)"; + Elevator_LowerToNearest = "Elevator_LowerToNearest(tag, speed)"; + Elevator_MoveToFloor = "Elevator_MoveToFloor(tag, speed)"; + Elevator_RaiseToNearest = "Elevator_RaiseToNearest(tag, speed)"; + Else = "Else"; + Enter = "Script expression Enter"; + Exit_Normal = "Exit_Normal(pos)"; + Exit_Secret = "Exit_Secret(pos)"; + FadeRange = "FadeRange(red1, green1, blue1, red2, green2, blue2, amount, seconds)"; + FadeTo = "FadeTo(red, green, blue, amount, seconds)"; + FixedDiv = "FixedDiv(fa, fb)"; + FixedMul = "FixedMul(fa, fb)"; + Floor_CrushStop = "Floor_CrushStop(tag)"; + Floor_Donut = "Floor_Donut(ptag, pspeed, sspeed)"; + Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)"; + Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)"; + Floor_LowerInstant = "Floor_LowerInstant(tag, arg1, height)"; + Floor_LowerToHighest = "Floor_LowerToHighest(tag, speed, adjust)"; + Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)"; + Floor_LowerToLowestTxTy = "Floor_LowerToLowestTxTy(tag, speed)"; + Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)"; + Floor_MoveToValue = "Floor_MoveToValue(tag, speed, height, neg)"; + Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)"; + Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush)"; + Floor_RaiseByTexture = "Floor_RaiseByTexture(tag, speed)"; + Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)"; + Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)"; + Floor_RaiseByValueTxTy = "Floor_RaiseByValueTxTy(tag, speed, height)"; + Floor_RaiseInstant = "Floor_RaiseInstant(tag, arg1, height)"; + Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)"; + Floor_RaiseToLowestCeiling = "Floor_RaiseToLowestCeiling(tag, speed)"; + Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)"; + Floor_TransferNumeric = "Floor_TransferNumeric(tag)"; + Floor_TransferTrigger = "Floor_TransferTrigger(tag)"; + Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)"; + FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)"; + FloorAndCeiling_LowerRaise = "FloorAndCeiling_LowerRaise(tag, fspeed, cspeed)"; + FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)"; + For = "For(initialization, condition, iteration)"; + ForceField = "ForceField()"; + Function = "Function Void expression (Void)"; + GameSkill = "GameSkill()"; + GameType = "GameType()"; + Generic_Ceiling = "Generic_Ceiling(tag, speed, height, target, flag)"; + Generic_Crusher = "Generic_Crusher(tag, dspeed, uspeed, silent, crush)"; + Generic_Door = "Generic_Door(tag, speed, kind, delay, lock)"; + Generic_Floor = "Generic_Floor(tag, speed, height, target, flags)"; + Generic_Lift = "Generic_Lift(tag, speed, delay, type, height)"; + Generic_Stairs = "Generic_Stairs(tag, speed, height, flags, reset)"; + GetLevelInfo = "GetLevelInfo(infotype)"; + GetActorAngle = "GetActorAngle(tid)"; + GetActorCeilingZ = "GetActorCeilingZ(tid)"; + GetActorFloorZ = "GetActorFloorZ(tid)"; + GetActorLightLevel = "GetActorLightLevel(tid)"; + GetActorPitch = "GetActorPitch(tid)"; + GetActorProperty = "GetActorProperty(tid, property)"; + GetActorVelX = "GetActorVelX(tid)"; + GetActorVelY = "GetActorVelY(tid)"; + GetActorVelZ = "GetActorVelZ(tid)"; + GetActorViewHeight = "GetActorViewHeight(tid)"; + GetActorX = "GetActorX(tid)"; + GetActorY = "GetActorY(tid)"; + GetActorZ = "GetActorZ(tid)"; + GetAirSupply = "GetAirSupply(playernumber)"; + GetAmmoCapacity = "GetAmmoCapacity(classname)"; + GetArmorType = "GetArmorType(armortype, playernumber)"; + GetChar = "GetChar(string, index)"; + GetCVar = "GetCVar(name)"; + GetInvasionState = "GetInvasionState()"; + GetInvasionWave = "GetInvasionWave()"; + GetPlayerInfo = "GetPlayerInfo(playernumber, infotype)"; + GetLevelInfo = "GetLevelInfo(infotype)"; + GetLineRowOffset = "GetLineRowOffset()"; + GetLineUDMFInt = "GetLineUDMFInt(lineid, fieldname)"; + GetLineUDMFFixed = "GetLineUDMFFixed(lineid, fieldname)"; + GetPlayerInput = "GetPlayerInput(player, input)"; + GetPolyobjX = "GetPolyobjX(po)"; + GetPolyobjY = "GetPolyobjY(po)"; + GetScreenHeight = "GetScreenHeight()"; + GetScreenWidth = "GetScreenWidth()"; + GetSectorCeilingZ = "GetSectorCeilingZ(tag, x, y)"; + GetSectorFloorZ = "GetSectorFloorZ(tag, x, y)"; + GetSectorLightLevel = "GetSectorLightLevel(tag)"; + GetSectorUDMFInt = "GetSectorUDMFInt(tag, fieldname)"; + GetSectorUDMFFixed = "GetSectorUDMFFixed(tag, fieldname)"; + GetSideUDMFInt = "GetSideUDMFInt(lineid, side, fieldname)"; + GetSideUDMFFixed = "GetSideUDMFFixed(lineid, side, fieldname)"; + GetThingUDMFInt = "GetThingUDMFInt(tid, fieldname)"; + GetThingUDMFFixed = "GetThingUDMFFixed(tid, fieldname)"; + GetUserArray = "GetUserArray(tid, name, pos)"; + GetUserVariable = "GetUserVariable(tid, name)"; + GiveActorInventory = "GiveActorInventory(tid, type, amount)"; + GiveInventory = "GiveInventory(type, amount)"; + GlassBreak = "GlassBreak(dontspawnjunk)"; + Global = "Global Int expression:identifier"; + Goto = "Goto"; + HealThing = "HealThing(amount)"; + HudMessage = "HudMessage(text; type, id, color, x, y, holdtime)"; + HudMessageBold = "HudMessageBold(text; type, id, color, x, y, holdtime)"; + If = "If(expression)"; + Int = "Int expression"; + IsMultiplayer = "IsMultiplayer()"; + IsOneFlagCTF = "IsOneFlagCTF()"; + Light_ChangeToValue = "Light_ChangeToValue(tag, value)"; + Light_Fade = "Light_Fade(tag, value, tics)"; + Light_Flicker = "Light_Flicker(tag, upper, lower)"; + Light_ForceLightning = "Light_ForceLightning()"; + Light_Glow = "Light_Glow(tag, upper, lower, tics)"; + Light_LowerByValue = "Light_LowerByValue(tag, value)"; + Light_MaxNeighbor = "Light_MaxNeighbor(tag)"; + Light_MinNeighbor = "Light_MinNeighbor(tag)"; + Light_RaiseByValue = "Light_RaiseByValue(tag, value)"; + Light_Stop = "Light_Stop(tag)"; + Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)"; + Light_StrobeDoom = "Light_StrobeDoom(tag, u-tics, l-tics)"; + Lightning = "Script expression Lightning"; + Line_AlignCeiling = "Line_AlignCeiling(lineid, side)"; + Line_AlignFloor = "Line_AlignFloor(lineid, side)"; + Line_SetBlocking = "Line_SetBlocking(lineid, setflags, clearflags)"; + Line_SetTextureScale = "Line_SetTextureScale(lineid, x, y, side, flags)"; + Line_SetTextureOffset = "Line_SetTextureOffset(lineid, x, y, side, flags)"; + LineSide = "LineSide()"; + LocalAmbientSound = "LocalAmbientSound(name, volume)"; + LocalSetMusic = "LocalSetMusic(song, pattern, transition)"; + Log = "Log(type:expression)"; + MorphActor = "MorphActor(tid, playerclass, monsterclass, duration, style, morphflash, unmorphflash)"; + Net = "Script expression Net"; + NoiseAlert = "NoiseAlert(target_tid, emiter_tid)"; + Open = "Script expression Open"; + Pillar_Build = "Pillar_Build(tag, speed, height)"; + Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush)"; + Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)"; + Plane_Align = "Plane_Align(floor, ceiling)"; + Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)"; + Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)"; + Plat_DownWaitUpStayLip = "Plat_DownWaitUpStayLip(tag, speed, delay, lip)"; + Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)"; + Plat_PerpetualRaiseLip = "Plat_PerpetualRaiseLip(tag, speed, delay, lip)"; + Plat_RaiseAndStayTx0 = "Plat_RaiseAndStayTx0(tag, speed)"; + Plat_Stop = "Plat_Stop(tag)"; + Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)"; + Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)"; + Plat_UpByValueStayTx = "Plat_UpByValueStayTx(tag, speed, height)"; + Plat_UpNearestWaitDownStay = "Plat_UpNearestWaitDownStay(tag, speed, delay)"; + Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)"; + Player_GiveItem = "Player_GiveItem(item, message)"; + Player_RemoveItem = "Player_RemoveItem(item, message)"; + Player_SetTeam = "Player_SetTeam(team)"; + PlayerArmorPoints = "PlayerArmorPoints()"; + PlayerBlueSkull = "PlayerBlueSkull()"; + PlayerClass = "PlayerClass(player_number)"; + PlayerCount = "PlayerCount()"; + PlayerFrags = "PlayerFrags()"; + PlayerHealth = "PlayerHealth()"; + PlayerInGame = "PlayerInGame(player_number)"; + PlayerIsBot = "PlayerIsBot(player_number)"; + PlayerNumber = "PlayerNumber()"; + PlayerOnTeam = "PlayerOnTeam()"; + PlayerRedSkull = "PlayerRedSkull()"; + PlayerTeam = "PlayerTeam()"; + PlayerYellowSkull = "PlayerYellowSkull()"; + PlayMovie = "PlayMovie(moviename)"; + Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)"; + Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)"; + Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)"; + Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)"; + Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)"; + Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)"; + Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed)"; + Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)"; + Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)"; + Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)"; + PolyWait = "PolyWait(po)"; + Print = "Print(type:expression)"; + PrintBold = "PrintBold(type:expression)"; + PointPush_SetForce = "PointPush_SetForce(tag, tid, amount, useline)"; + Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)"; + Random = "Random(low, high)"; + ReplaceTextures = "ReplaceTextures(oldtexture, newtexture, flags)"; + RedTeamCount = "RedTeamCount()"; + RedTeamScore = "RedTeamScore()"; + Respawn = "Script expression Respawn"; + Restart = "Restart"; + Script = "Script expression (Void)"; + ScriptWait = "ScriptWait(scriptid)"; + Scroll_Ceiling = "Scroll_Ceiling(tag, scrollbits, 0, xmove, ymove)"; + Scroll_Floor = "Scroll_Floor(tag, scrollbits, method xmove, ymove)"; + Scroll_Texture_Both = "Scroll_Texture_Both(lineid, left, right, down, up)"; + Scroll_Texture_Model = "Scroll_Texture_Model(lineid, scrollbits)"; + Scroll_Texture_Offsets = "Scroll_Texture_Offsets"; + Scroll_Wall = "Scroll_Wall(lineid, x, y, side, flags)"; + Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)"; + Sector_SetCeilingPanning = "Sector_SetCeilingPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetCeilingScale = "Sector_SetCeilingScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetColor = "Sector_SetColor(tag, r, g, b)"; + Sector_SetDamage = "Sector_SetDamage(tag, amount, mod)"; + Sector_SetFade = "Sector_SetFade(tag, r, g, b)"; + Sector_SetFloorPanning = "Sector_SetFloorPanning(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFloorScale = "Sector_SetFloorScale(tag, u-int, u-frac, v-int, v-frac)"; + Sector_SetFriction = "Sector_SetFriction(tag, amount)"; + Sector_SetGravity = "Sector_SetGravity(tag, ipart, fpart)"; + Sector_SetLink = "Sector_SetLink(controltag, tag, surface, movetype)"; + Sector_SetPlaneReflection = "Sector_SetPlaneReflection(tag, floor, ceiling)"; + Sector_SetRotation = "Sector_SetRotation(tag, floor-angle, ceiling-angle)"; + SectorDamage = "SectorDamage(tag, amount, type, protection-item, flags)"; + SectorSound = "SectorSound(name, volume)"; + SendToCommunicator = "SendToCommunicator(voc_id, front_only, indentify, nolog)"; + SetActorAngle = "SetActorAngle(tid, angle)"; + SetAirControl = "SetAirControl(amount)"; + SetActorPitch = "SetActorPitch(tid, angle)"; + SetActorPosition = "SetActorPosition(tid, x, y, z, fog)"; + SetActorProperty = "SetActorProperty(tid, property, value)"; + SetActorState = "SetActorState(tid, state, exact)"; + SetActorVelocity = "SetActorVelocity(tid, velx, vely, velz, add, setbob)"; + SetAirSupply = "SetAirSupply(playernumber, tics)"; + SetCameraToTexture = "SetCameraToTexture(tag, texture, fov)"; + SetCeilingTrigger = "SetCeilingTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)"; + SetFloorTrigger = "SetFloorTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)"; + SetFont = "SetFont(fontname)"; + SetGravity = "SetGravity(amount)"; + SetHudSize = "SetHudSize(width, height, statusbar)"; + SetLineBlocking = "SetLineBlocking(line, blocking)"; + SetLineMonsterBlocking = "SetLineMonsterBlocking(line, blocking)"; + SetLineSpecial = "SetLineSpecial(line, special, arg1, arg2, arg3, arg4, arg5)"; + SetLineTexture = "SetLineTexture(line, side, position, texture)"; + SetMarineSprite = "SetMarineSprite(tid, actorclass)"; + SetMarineWeapon = "SetMarineWeapon(tid, weapon)"; + SetMugShotState = "SetMugShotState(state)"; + SetMusic = "SetMusic(song, pattern, transition)"; + SetPlayerProperty = "SetPlayerProperty(who, set, which)"; + SetResultValue = "SetResultValue(value)"; + SetSkyScrollSpeed = "SetSkyScrollSpeed(skynumber, speed)"; + SetThingSpecial = "SetThingSpecial(tid, special, arg1, arg2, arg3, arg4, arg5)"; + SetWeapon = "SetWeapon(weaponname)"; + sin = "sin(angle)"; + SinglePlayer = "SinglePlayer()"; + SoundSequence = "SoundSequence(name)"; + SoundSequenceOnActor = "SoundSequenceOnActor(tid, sndseq)"; + SoundSequenceOnSector = "SoundSequenceOnSector(tag, sndseq, location)"; + SoundSequenceOnPolyObj = "SoundSequenceOnPolyObj(tag, sndseq)"; + Spawn = "Spawn(type, x, y, z, thingid, angle)"; + SpawnProjectile = "SpawnProjectile(tid, type, angle, speed, vspeed, gravity, newtid)"; + SpawnSpot = "SpawnSpot(type, spotid, thingid, angle)"; + SpawnSpotFacing = "SpawnSpotFacing(type, spotid, thingid)"; + Special = "Special"; + Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)"; + Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)"; + Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)"; + Stairs_BuildUpDoom = "Stairs_BuildUpDoom(tag, speed, height, delay, reset)"; + Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)"; + StartConversation = "StartConversation(tid, facing)"; + Str = "Str expression"; + strlen = "strlen(string)"; + Suspend = "Suspend"; + Switch = "Switch(expression)"; + TagWait = "TagWait(tag)"; + TakeActorInventory = "TakeActorInventory(tid, type, amount)"; + TakeInventory = "TakeInventory(type, amount)"; + Team_GivePoints = "Team_GivePoints(team, amount, announce)"; + Team_Score = "Team_Score(amount, nogrin)"; + Teleport = "Teleport(tid, tag, nosourcefog)"; + Teleport_EndGame = "Teleport_EndGame()"; + Teleport_Line = "Teleport_Line(thisid, destid, flip)"; + Teleport_NewMap = "Teleport_NewMap(map, pos)"; + Teleport_NoFog = "Teleport_NoFog(tid)"; + Teleport_NoStop = "Teleport_NoStop(tid, sector, nofog)"; + Teleport_ZombieChanger = "Teleport_ZombieChanger(tid, tag)"; + TeleportGroup = "TeleportGroup(groupid, sourceid, destinationid, movesource, fog)"; + TeleportInSector = "TeleportInSector(tag, sourceid, destinationid, fog, groupid)"; + TeleportOther = "TeleportOther(tid, destinationid, fog)"; + Terminate = "Terminate"; + Thing_Activate = "Thing_Activate(tid)"; + Thing_ChangeTID = "Thing_ChangeTID(oldtid, newtid)"; + Thing_Damage = "Thing_Damage(tid, amount, mod)"; + Thing_Damage2 = "Thing_Damage2(tid, amount, type)"; + Thing_Deactivate = "Thing_Deactivate(tid)"; + Thing_Destroy = "Thing_Destroy(tid, extreme)"; + Thing_Hate = "Thing_Hate(hater, hatee, type)"; + Thing_Move = "Thing_Move(tid, destid, nofog)"; + Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)"; + Thing_Projectile2 = "Thing_Projectile2(tid, type, angle, speed, vspeed, gravity, newtid)"; + Thing_ProjectileAimed = "Thing_ProjectileAimed(tid, type, speed, target, newtid)"; + Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)"; + Thing_ProjectileIntercept = "Thing_ProjectileIntercept(tid, type, speed, target, newtid)"; + Thing_Raise = "Thing_Raise(tid)"; + Thing_Remove = "Thing_Remove(tid)"; + Thing_SetFrame = "Thing_SetFrame(tid, frame)"; + Thing_SetGoal = "Thing_SetGoal(tid, goal, delay, ignore)"; + Thing_SetSpecial = "Thing_SetSpecial(tid, special, arg1, arg2, arg3)"; + Thing_SetTranslation = "Thing_SetTranslation(tid, translation)"; + Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)"; + Thing_SpawnFacing = "Thing_SpawnFacing(tid, type, nofog, newtid)"; + Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)"; + Thing_Stop = "Thing_Stop(tid)"; + ThingCount = "ThingCount(type, id)"; + ThingCountName = "ThingCountName(type, tid)"; + ThingCountNameSector = "ThingCountNameSector(class, tid, tag)"; + ThingCountSector = "ThingCountSector(type, tid, tag)"; + ThingSound = "ThingSound(thingid, name, volume)"; + ThrustThing = "ThrustThing(angle, force, limit, tid)"; + ThrustThingZ = "ThrustThingZ(tid, speed, upordown, addorset)"; + Timer = "Timer()"; + Transfer_Heights = "Transfer_Heights(tag, flags)"; + Transfer_WallLight = "Transfer_WallLight(lineid, flags)"; + Transfer_CeilingLight = "Transfer_CeilingLight(tag)"; + Transfer_FloorLight = "Transfer_FloorLight(tag)"; + TranslucentLine = "TranslucentLine(lineid, amount, additive)"; + Unloading = "Script expression Unloading"; + UnmorphActor = "UnmorphActor(tid, force)"; + Until = "Until(expression)"; + UsePuzzleItem = "UsePuzzleItem(item, script)"; + UseActorInventory = "UseActorInventory(tid, item)"; + VectorAngle = "VectorAngle(x, y)"; + Void = "Void"; + While = "While(expression)"; + World = "World Int expression:identifier"; +} + +constants +{ + TRUE; + FALSE; + ON; + OFF; + YES; + NO; + CARRY; + SCROLL; + SCROLL_AND_CARRY; + ACTOR_NONE; + ACTOR_WORLD; + ACTOR_PLAYER; + ACTOR_BOT; + ACTOR_VOODOODOLL; + ACTOR_MONSTER; + ACTOR_ALIVE; + ACTOR_DEAD; + ACTOR_MISSILE; + ACTOR_GENERIC; + APROP_ActiveSound; + APROP_Alpha; + APROP_Ambush; + APROP_AttackSoun; + APROP_ChaseGoal; + APROP_Damage; + APROP_DeathSound; + APROP_Dropped; + APROP_Friendly; + APROP_Frightened; + APROP_Gravity; + APROP_Health; + APROP_Invulnerable; + APROP_JumpZ; + APROP_Notarget; + APROP_PainSound; + APROP_RenderStyle; + APROP_SeeSound; + APROP_SpawnHealth; + APROP_Speed; + BLOCK_CREATURES; + BLOCK_EVERYTHING; + BLOCK_NOTHING; + BLOCK_PLAYERS; + BLOCKF_MONSTERS; + BLOCKF_PLAYERS; + BLOCKF_FLOATERS; + BLOCKF_PROJECTILES; + BLOCKF_EVERYTHING; + BLOCKF_RAILING; + BLOCKF_USE; + BT_ALTATTACK; + BT_ATTACK; + BT_BACK; + BT_CROUCH; + BT_FORWARD; + BT_JUMP; + BT_LEFT; + BT_LOOKDOWN; + BT_LOOKUP; + BT_MOVEDOWN; + BT_MOVELEFT; + BT_MOVERIGHT; + BT_MOVEUP; + BT_RELOAD; + BT_RIGHT; + BT_SHOWSCORES; + BT_SPEED; + BT_STRAFE; + BT_TURN180; + BT_USE; + BT_USER1; + BT_USER2; + BT_USER3; + BT_USER4; + BT_ZOOM; + CLASS_CLERIC; + CLASS_FIGHTER; + CLASS_MAGE; + CR_BLACK; + CR_BLUE; + CR_BRICK; + CR_BROWN; + CR_CREAM; + CR_DARKBROWN; + CR_DARKGRAY; + CR_DARKGREEN; + CR_DARKRED; + CR_GOLD; + CR_GRAY; + CR_GREEN; + CR_GREY; + CR_LIGHTBLUE; + CR_OLIVE; + CR_ORANGE; + CR_PURPLE; + CR_RED; + CR_TAN; + CR_UNTRANSLATED; + CR_WHITE; + CR_YELLOW; + DAMAGE_IN_AIR; + DAMAGE_NONPLAYERS; + DAMAGE_PLAYERS; + DAMAGE_SUBCLASSES_PROTECT; + GAME_NET_COOPERATIVE; + GAME_NET_DEATHMATCH; + GAME_NET_TEAMGAME; + GAME_SINGLE_PLAYER; + HUDMSG_COLORSTRING; + HUDMSG_FADEINOUT; + HUDMSG_FADEOUT; + HUDMSG_LOG; + HUDMSG_PLAIN; + HUDMSG_TYPEON; + IS_COUNTDOWN; + IS_FIRSTCOUNTDOWN; + IS_INPROGRESS; + IS_WAITINGFORPLAYERS; + IS_WAVECOMPLETE; + INPUT_BUTTONS; + INPUT_FORWARDMOVE; + INPUT_OLDBUTTONS; + INPUT_PITCH; + INPUT_ROW; + INPUT_SIDEMOVE; + INPUT_UPMOVE; + INPUT_YAW; + LEVELINFO_CLUSTERNUM; + LEVELINFO_FOUND_ITEMS; + LEVELINFO_FOUND_SECRETS; + LEVELINFO_KILLED_MONSTERS; + LEVELINFO_LEVELNUM; + LEVELINFO_PAR_TIME; + LEVELINFO_SUCK_TIME; + LEVELINFO_TOTAL_ITEMS; + LEVELINFO_TOTAL_MONSTERS; + LEVELINFO_TOTAL_SECRETS; + LINE_BACK; + LINE_FRONT; + MARINEWEAPON_BerserkFis; + MARINEWEAPON_BFG; + MARINEWEAPON_Chaingun; + MARINEWEAPON_Chainsaw; + MARINEWEAPON_Dummy; + MARINEWEAPON_Fist; + MARINEWEAPON_Pistol; + MARINEWEAPON_PlasmaRifl; + MARINEWEAPON_Railgun; + MARINEWEAPON_RocketLaunche; + MARINEWEAPON_Shotgun; + MARINEWEAPON_SuperShotgu; + MOD_BARREL; + MOD_BFG_BOOM; + MOD_BFG_SPLASH; + MOD_CHAINGUN; + MOD_CHAINSAW; + MOD_CRUSH; + MOD_EXIT; + MOD_FALLING; + MOD_FIST; + MOD_HIT; + MOD_LAVA; + MOD_PISTOL; + MOD_PLASMARIFLE; + MOD_R_SPLASH; + MOD_ROCKET; + MOD_SHOTGUN; + MOD_SLIME; + MOD_SPLASH; + MOD_SSHOTGUN; + MOD_SUICIDE; + MOD_TELEFRAG; + MOD_UNKNOWN; + MOD_WATER; + MODINPUT_BUTTONS; + MODINPUT_FORWARDMOVE; + MODINPUT_OLDBUTTONS; + MODINPUT_PITCH; + MODINPUT_ROW; + MODINPUT_SIDEMOVE; + MODINPUT_UPMOVE; + MODINPUT_YAW; + MOVIE_Failed; + MOVIE_Played; + MOVIE_Played_Aborted; + MOVIE_Played_NoVideo; + NO_TEAM; + NOT_BOTTOM; + NOT_CEILING; + NOT_FLOOR; + NOT_MIDDLE; + NOT_TOP; + PLAYERINFO_AIMDIST; + PLAYERINFO_COLOR; + PLAYERINFO_GENDER; + PLAYERINFO_MOVEBOB; + PLAYERINFO_NEVERSWITCH; + PLAYERINFO_PLAYERCLASS; + PLAYERINFO_STILLBOB; + PLAYERINFO_TEAM; + PROP_FLY; + PROP_FROZEN; + PROP_INSTANTWEAPONSWITCH; + PROP_NOTARGET; + PROP_TOTALLYFROZEN; + SIDE_BACK; + SIDE_FRONT; + SKILL_EASY; + SKILL_HARD; + SKILL_NORMAL; + SKILL_VERY_EASY; + SKILL_VERY_HARD; + STYLE_Add; + STYLE_Fuzzy; + STYLE_None; + STYLE_Normal; + STYLE_OptFuzzy; + STYLE_SoulTrans; + STYLE_Translucent; + T_ABADDON; + T_ABADDONSHOT; + T_AMMOBOX; + T_AMULETOFWARDING; + T_ANTIGRAVBELT; + T_ARACHNOTRON; + T_ARACHNOTRONPLASMA; + T_ARCHSTATUE; + T_ARMORBONUS; + T_ARROW; + T_AXEKEY; + T_BACKPACK; + T_BARON; + T_BARONBALL; + T_BARONSTATUE; + T_BARREL; + T_BATTERY; + T_BEAST; + T_BEASTBALL; + T_BELPHEGOR; + T_BERSERK; + T_BFG; + T_BFG10000; + T_BFG10KSHOT; + T_BFGSHOT; + T_BISHOP; + T_BLADE; + T_BLASTER; + T_BLOOD; + T_BLOODDEMON; + T_BLOODPOOL; + T_BLOODPOOL1; + T_BLOODPOOL2; + T_BLUEARMOR; + T_BLUEFLAG; + T_BLUEKEY; + T_BLUEKEYCARD; + T_BLUESKULLKEY; + T_BLUETELEGLITTER; + T_BOBBINGSKULLINFLAMES; + T_BOUNCYMACEBALL; + T_BRAINS; + T_BRIDGE; + T_CACODEMON; + T_CACODEMONSHOT; + T_CACOLANTERN; + T_CACOLANTERNSHOT; + T_CELL; + T_CENTAUR; + T_CENTAUR_MASH; + T_CENTAURLEADER; + T_CHAINGUN; + T_CHAINGUY; + T_CHAINSAW; + T_CHICKEN; + T_CLERICHOLY1; + T_CLERICHOLY2; + T_CLERICHOLY3; + T_CLERICSTAFF; + T_CLINK; + T_CLIP; + T_COMPUTERMAP; + T_CROSSBOW; + T_CROSSBOWMAINBLAST; + T_CROSSBOWMINIBLAST; + T_CROSSBOWPOWERBLAST; + T_CYBERDEMON; + T_CYBERDEMONSTATUE; + T_DARKIMP; + T_DARKIMPFIREBALL; + T_DART; + T_DEADCYBERDEMON; + T_DEATHBALL; + T_DEMON; + T_DEMON_MASH; + T_DEMON1; + T_DEMON2_MASH; + T_DEMONSTATUE; + T_DIRT1; + T_DIRT2; + T_DIRT3; + T_DIRT4; + T_DIRT5; + T_DIRT6; + T_DOOMSPHERE; + T_DRAGONSKINBRACERS; + T_DRAIN; + T_DSPARILALONE; + T_DSPARILBLUESHOT; + T_DSPARILONSERPENT; + T_DSPARILTELEPORTDEST; + T_DSPARILWIZARDSPAWNER; + T_EMERALDKEY; + T_ETTIN; + T_ETTIN_MASH; + T_FALCONSHIELD; + T_FEATHER; + T_FIGHTERAXE; + T_FIGHTERHAMMER; + T_FIGHTERSWORD1; + T_FIGHTERSWORD2; + T_FIGHTERSWORD3; + T_FIREBALL1; + T_FIREGARGOYLE; + T_FIREKEY; + T_FLAME_LARGE; + T_FLAME_SMALL; + T_FLAMINGBARREL; + T_FLESH_DRIP1; + T_FLESH_DRIP2; + T_GAUNTLETS; + T_GOTHICPILLAR; + T_GREENARMOR; + T_GREENKEY; + T_GRENADE; + T_GRENADELAUNCHER; + T_GREYPILLARHEART; + T_GREYSTALAGMITE; + T_GUTS; + T_HASTE; + T_HEALTHBONUS; + T_HEAVYMACEBALL; + T_HECTEBUS; + T_HEFTYBLASTERAMMO; + T_HEFTYCROSSBOWAMMO; + T_HEFTYMACEAMMO; + T_HEFTYPHOENIXRODAMMO; + T_HEFTYSKULLRODAMMO; + T_HEFTYWANDAMMO; + T_HELLKNIGHT; + T_HELLPILLAR; + T_HIGHJUMP; + T_HISSY; + T_HORNKEY; + T_ICEGOLEM; + T_ICESHARD; + T_IMP; + T_IMPALINGSPIKE; + T_IMPALINGSPIKECGUN; + T_IMPALINGSPIKEZOMB; + T_IMPFIREBALL; + T_IMPHEAD; + T_IMPLEADER; + T_IMPSTATUE; + T_INFRAGOGGLES; + T_INFRATRACKER; + T_INVISIBILITY; + T_INVULNERABILITY; + T_IRONFEET; + T_IRONLICH; + T_IRONLICHBLUESHOT; + T_ITEMALLMAP; + T_ITEMBAGOFHOLDING; + T_ITEMBOOSTMANA; + T_ITEMBOOTS; + T_ITEMEGG; + T_ITEMFLECHETTE; + T_ITEMFLIGHT; + T_ITEMHEALTHFLASH; + T_ITEMHEALTHFLASK; + T_ITEMHEALTHFULL; + T_ITEMHEALTHPOTION; + T_ITEMINVISIBILITY; + T_ITEMINVULNERABILITY; + T_ITEMREPULSION; + T_ITEMSUMMON; + T_ITEMTELEPORT; + T_ITEMTIMEBOMB; + T_ITEMTOME; + T_ITEMTORCH; + T_ITEMTPORTOTHER; + T_KNIGHT; + T_KNIGHTAXE; + T_KNIGHTBLOODAXE; + T_KNIGHTGHOST; + T_LABORTORYPILLAR; + T_LIGHTAMP; + T_LOSTSOUL; + T_MACE; + T_MACEKEY; + T_MAGESHARDS; + T_MAGESTAFF1; + T_MAGESTAFF2; + T_MAGESTAFF3; + T_MANA1; + T_MANA2; + T_MANA3; + T_MANCUBUS; + T_MANCUBUSSHOT; + T_MASARMORBONUS; + T_MASSMOUTHSTATUE; + T_MAXHEALTHBONUS; + T_MEDKIT; + T_MEGASPHERE; + T_MESHARMOR; + T_METALKEY; + T_MILITARYPILLAR; + T_MINIGUN; + T_MORPHBLAST; + T_MUMMY; + T_MUMMYGHOST; + T_MUMMYHEAD; + T_MUMMYLEADER; + T_MUMMYLEADERGHOST; + T_NOGRAVITYMACEBALL; + T_NONE; + T_PAINELEMENTAL; + T_PERMLARGEFLAME; + T_PERMSMALLFLAME; + T_PHOENIXROD; + T_PHOENIXSHOT; + T_PISTOL; + T_PLASMABOLT; + T_PLASMAGUN; + T_PLATINUMHELM; + T_POD; + T_PODGENERATOR; + T_POISONDART; + T_POWERWANDBIGGERBLAST; + T_POWERWANDMINIBLAST; + T_PROSPERITY; + T_PUFF; + T_PUZZBOOK1; + T_PUZZBOOK2; + T_PUZZGEMBIG; + T_PUZZGEMBLUE1; + T_PUZZGEMBLUE2; + T_PUZZGEMGREEN1; + T_PUZZGEMGREEN2; + T_PUZZGEMRED; + T_PUZZSKULL; + T_RAGE; + T_RAILGUN; + T_RANDOMPOWERUP; + T_REDARMOR; + T_REDFLAG; + T_REDKEYCARD; + T_REDSKULLKEY; + T_REDTELEGLITTER; + T_REFLECTION; + T_REGENERATION; + T_RESISTANCE; + T_REVENANT; + T_REVENANTHAND; + T_RIPPER; + T_RIPPERBALL; + T_ROCK1; + T_ROCK2; + T_ROCK3; + T_ROCKET; + T_ROCKETAMMO; + T_ROCKETBOX; + T_ROCKETLAUNCHER; + T_RUSTYKEY; + T_SAUSAGEHEAD; + T_SAUSAGESPITTER; + T_SCRIPTEDMARINE; + T_SERPENTFIREBALL; + T_SERPENTKEY; + T_SHELLBOX; + T_SHELLS; + T_SHIELD1; + T_SHIELD2; + T_SHORTGREYPILLAR; + T_SHOTGUN; + T_SHOTGUY; + T_SILVERKEY; + T_SKULLROD; + T_SKULLRODBLAST; + T_SMALLMETALKEY; + T_SNAKE; + T_SNAKEPROJECTILE; + T_SNAKEPROJECTILEBIG; + T_SOULSPHERE; + T_SOUND_WATERFALL; + T_SOUND_WIND; + T_SPARK_DRIP; + T_SPECTRE; + T_SPIDERMASTERMIND; + T_SPREAD; + T_SSGGUY; + T_STAINEDGLASS0; + T_STAINEDGLASS1; + T_STAINEDGLASS2; + T_STAINEDGLASS3; + T_STAINEDGLASS4; + T_STAINEDGLASS5; + T_STAINEDGLASS6; + T_STAINEDGLASS7; + T_STAINEDGLASS8; + T_STAINEDGLASS9; + T_STARBASEPILLAR; + T_STEALTHARACHNOTRON; + T_STEALTHBARON; + T_STEALTHCACODEMON; + T_STEALTHCHAINGUY; + T_STEALTHIMP; + T_STEALTHKNIGHT; + T_STEALTHMANCUBUS; + T_STEALTHREVENANT; + T_STEALTHSERGEANT; + T_STEALTHSHOTGUY; + T_STEALTHVILE; + T_STEALTHZOMBIE; + T_STIMPACK; + T_STRENGTH; + T_SUPERSHOTGUN; + T_TALLGOTHICPILLAR; + T_TALLGREYPILLAR; + T_TEMPLARGEFLAME; + T_TEMPSMALLFLAME; + T_THRUSTSPIKEDOWN; + T_THRUSTSPIKEUP; + T_TIMEFREEZER; + T_TINYVOLCANOBALL; + T_TRACER; + T_TRANSLUCENCY; + T_TURBOSPHERE; + T_VILE; + T_VOLCANO; + T_VOLCANOBALL; + T_WATERDRIP; + T_WATERLURKER; + T_WATERLURKERLEADER; + T_WHIRLWIND; + T_WHITEFLAG; + T_WIMPYBLASTERAMMO; + T_WIMPYCROSSBOWAMMO; + T_WIMPYMACEAMMO; + T_WIMPYPHOENIXRODAMMO; + T_WIMPYSKULLRODAMMO; + T_WIMPYWANDAMMO; + T_WIZARD; + T_WIZARDSHOT; + T_WOLFSS; + T_WRAITH; + T_WRAITHBURIED; + T_YELLOWKEY; + T_YELLOWKEYCARD; + T_YELLOWSKULLKEY; + T_ZOMBIE; + TEAM_BLUE; + TEAM_RED; + TEXTURE_BOTTOM; + TEXTURE_MIDDLE; + TEXTURE_TOP; +} diff --git a/Build/Setup/dotnetfx35setup.exe b/Build/Setup/dotnetfx35setup.exe new file mode 100644 index 0000000..7fd35dc Binary files /dev/null and b/Build/Setup/dotnetfx35setup.exe differ diff --git a/Build/Setup/dxwebsetup.exe b/Build/Setup/dxwebsetup.exe new file mode 100644 index 0000000..c15749e Binary files /dev/null and b/Build/Setup/dxwebsetup.exe differ diff --git a/Build/Setup/vcredist_x86.exe b/Build/Setup/vcredist_x86.exe new file mode 100644 index 0000000..378e7f0 Binary files /dev/null and b/Build/Setup/vcredist_x86.exe differ diff --git a/Build/SharpCompress.3.5.dll b/Build/SharpCompress.3.5.dll new file mode 100644 index 0000000..56828e2 Binary files /dev/null and b/Build/SharpCompress.3.5.dll differ diff --git a/Build/SlimDX.dll b/Build/SlimDX.dll new file mode 100644 index 0000000..8715ac4 Binary files /dev/null and b/Build/SlimDX.dll differ diff --git a/Build/Snippets/acs/dountil.txt b/Build/Snippets/acs/dountil.txt new file mode 100644 index 0000000..e9c6a34 --- /dev/null +++ b/Build/Snippets/acs/dountil.txt @@ -0,0 +1,3 @@ +do[LB]{ + +} until ([EP]); \ No newline at end of file diff --git a/Build/Snippets/acs/dowhile.txt b/Build/Snippets/acs/dowhile.txt new file mode 100644 index 0000000..2ce3216 --- /dev/null +++ b/Build/Snippets/acs/dowhile.txt @@ -0,0 +1,3 @@ +do[LB]{ + +} while ([EP]); \ No newline at end of file diff --git a/Build/Snippets/acs/for.txt b/Build/Snippets/acs/for.txt new file mode 100644 index 0000000..03b3345 --- /dev/null +++ b/Build/Snippets/acs/for.txt @@ -0,0 +1,3 @@ +for (int i = 0; i < [EP]; i++)[LB]{ + +} diff --git a/Build/Snippets/acs/if.txt b/Build/Snippets/acs/if.txt new file mode 100644 index 0000000..995faaf --- /dev/null +++ b/Build/Snippets/acs/if.txt @@ -0,0 +1,3 @@ +if ([EP])[LB]{ + +} \ No newline at end of file diff --git a/Build/Snippets/acs/ifelse.txt b/Build/Snippets/acs/ifelse.txt new file mode 100644 index 0000000..d76161c --- /dev/null +++ b/Build/Snippets/acs/ifelse.txt @@ -0,0 +1,5 @@ +if ([EP])[LB]{ + +}[LB]else[LB]{ + +} \ No newline at end of file diff --git a/Build/Snippets/acs/include.txt b/Build/Snippets/acs/include.txt new file mode 100644 index 0000000..95d9ac1 --- /dev/null +++ b/Build/Snippets/acs/include.txt @@ -0,0 +1,5 @@ +#include "zcommon.acs" + +script 1 OPEN[LB]{ + [EP] +} \ No newline at end of file diff --git a/Build/Snippets/acs/script.txt b/Build/Snippets/acs/script.txt new file mode 100644 index 0000000..dc05cd7 --- /dev/null +++ b/Build/Snippets/acs/script.txt @@ -0,0 +1,3 @@ +script [EP] (void)[LB]{ + +} \ No newline at end of file diff --git a/Build/Snippets/acs/until.txt b/Build/Snippets/acs/until.txt new file mode 100644 index 0000000..1f7fda2 --- /dev/null +++ b/Build/Snippets/acs/until.txt @@ -0,0 +1,3 @@ +until ([EP])[LB]{ + +} \ No newline at end of file diff --git a/Build/Snippets/acs/while.txt b/Build/Snippets/acs/while.txt new file mode 100644 index 0000000..7ed3aa3 --- /dev/null +++ b/Build/Snippets/acs/while.txt @@ -0,0 +1,3 @@ +while ([EP])[LB]{ + +} \ No newline at end of file diff --git a/Build/Sprites/Action.png b/Build/Sprites/Action.png new file mode 100644 index 0000000..146bf95 Binary files /dev/null and b/Build/Sprites/Action.png differ diff --git a/Build/Sprites/Actor.png b/Build/Sprites/Actor.png new file mode 100644 index 0000000..41b8da1 Binary files /dev/null and b/Build/Sprites/Actor.png differ diff --git a/Build/Sprites/ActorMover.png b/Build/Sprites/ActorMover.png new file mode 100644 index 0000000..48df6e9 Binary files /dev/null and b/Build/Sprites/ActorMover.png differ diff --git a/Build/Sprites/Anchor.png b/Build/Sprites/Anchor.png new file mode 100644 index 0000000..3367cd0 Binary files /dev/null and b/Build/Sprites/Anchor.png differ diff --git a/Build/Sprites/Arrow.png b/Build/Sprites/Arrow.png new file mode 100644 index 0000000..e7e97e8 Binary files /dev/null and b/Build/Sprites/Arrow.png differ diff --git a/Build/Sprites/Bridge.png b/Build/Sprites/Bridge.png new file mode 100644 index 0000000..73afdf5 Binary files /dev/null and b/Build/Sprites/Bridge.png differ diff --git a/Build/Sprites/Camera.png b/Build/Sprites/Camera.png new file mode 100644 index 0000000..6a54317 Binary files /dev/null and b/Build/Sprites/Camera.png differ diff --git a/Build/Sprites/Decal.png b/Build/Sprites/Decal.png new file mode 100644 index 0000000..139de29 Binary files /dev/null and b/Build/Sprites/Decal.png differ diff --git a/Build/Sprites/DeepWater.png b/Build/Sprites/DeepWater.png new file mode 100644 index 0000000..091c4fd Binary files /dev/null and b/Build/Sprites/DeepWater.png differ diff --git a/Build/Sprites/Dog.png b/Build/Sprites/Dog.png new file mode 100644 index 0000000..28c5781 Binary files /dev/null and b/Build/Sprites/Dog.png differ diff --git a/Build/Sprites/InterpolationPoint.png b/Build/Sprites/InterpolationPoint.png new file mode 100644 index 0000000..f081679 Binary files /dev/null and b/Build/Sprites/InterpolationPoint.png differ diff --git a/Build/Sprites/InterpolationSpecial.png b/Build/Sprites/InterpolationSpecial.png new file mode 100644 index 0000000..a2c2d71 Binary files /dev/null and b/Build/Sprites/InterpolationSpecial.png differ diff --git a/Build/Sprites/Light.png b/Build/Sprites/Light.png new file mode 100644 index 0000000..01d2313 Binary files /dev/null and b/Build/Sprites/Light.png differ diff --git a/Build/Sprites/MapSpot.png b/Build/Sprites/MapSpot.png new file mode 100644 index 0000000..b711f6a Binary files /dev/null and b/Build/Sprites/MapSpot.png differ diff --git a/Build/Sprites/MapSpotGravity.png b/Build/Sprites/MapSpotGravity.png new file mode 100644 index 0000000..3055fa8 Binary files /dev/null and b/Build/Sprites/MapSpotGravity.png differ diff --git a/Build/Sprites/PathFollower.png b/Build/Sprites/PathFollower.png new file mode 100644 index 0000000..361cebb Binary files /dev/null and b/Build/Sprites/PathFollower.png differ diff --git a/Build/Sprites/PointPuller.png b/Build/Sprites/PointPuller.png new file mode 100644 index 0000000..60a2c03 Binary files /dev/null and b/Build/Sprites/PointPuller.png differ diff --git a/Build/Sprites/PointPusher.png b/Build/Sprites/PointPusher.png new file mode 100644 index 0000000..55bec88 Binary files /dev/null and b/Build/Sprites/PointPusher.png differ diff --git a/Build/Sprites/Portal_lower.png b/Build/Sprites/Portal_lower.png new file mode 100644 index 0000000..e4874a1 Binary files /dev/null and b/Build/Sprites/Portal_lower.png differ diff --git a/Build/Sprites/Portal_upper.png b/Build/Sprites/Portal_upper.png new file mode 100644 index 0000000..4d5293d Binary files /dev/null and b/Build/Sprites/Portal_upper.png differ diff --git a/Build/Sprites/Secret.png b/Build/Sprites/Secret.png new file mode 100644 index 0000000..f2bb04d Binary files /dev/null and b/Build/Sprites/Secret.png differ diff --git a/Build/Sprites/SilentSector.png b/Build/Sprites/SilentSector.png new file mode 100644 index 0000000..e7594bb Binary files /dev/null and b/Build/Sprites/SilentSector.png differ diff --git a/Build/Sprites/SkyboxPicker.png b/Build/Sprites/SkyboxPicker.png new file mode 100644 index 0000000..e689065 Binary files /dev/null and b/Build/Sprites/SkyboxPicker.png differ diff --git a/Build/Sprites/SkyboxViewpoint.png b/Build/Sprites/SkyboxViewpoint.png new file mode 100644 index 0000000..f3d5304 Binary files /dev/null and b/Build/Sprites/SkyboxViewpoint.png differ diff --git a/Build/Sprites/Slope.png b/Build/Sprites/Slope.png new file mode 100644 index 0000000..b0ac546 Binary files /dev/null and b/Build/Sprites/Slope.png differ diff --git a/Build/Sprites/Sound.png b/Build/Sprites/Sound.png new file mode 100644 index 0000000..1c30b95 Binary files /dev/null and b/Build/Sprites/Sound.png differ diff --git a/Build/Sprites/Sparkle.png b/Build/Sprites/Sparkle.png new file mode 100644 index 0000000..3903be5 Binary files /dev/null and b/Build/Sprites/Sparkle.png differ diff --git a/Build/Sprites/Target.png b/Build/Sprites/Target.png new file mode 100644 index 0000000..1637d17 Binary files /dev/null and b/Build/Sprites/Target.png differ diff --git a/Build/Sprites/Teleport.png b/Build/Sprites/Teleport.png new file mode 100644 index 0000000..c7c0375 Binary files /dev/null and b/Build/Sprites/Teleport.png differ diff --git a/Build/Sprites/ZDoomGoldWand.png b/Build/Sprites/ZDoomGoldWand.png new file mode 100644 index 0000000..f887f04 Binary files /dev/null and b/Build/Sprites/ZDoomGoldWand.png differ diff --git a/Build/Sprites/ZDoomPistol.png b/Build/Sprites/ZDoomPistol.png new file mode 100644 index 0000000..74ff023 Binary files /dev/null and b/Build/Sprites/ZDoomPistol.png differ diff --git a/Build/Sprites/ZandFlagBlue.png b/Build/Sprites/ZandFlagBlue.png new file mode 100644 index 0000000..0a5d993 Binary files /dev/null and b/Build/Sprites/ZandFlagBlue.png differ diff --git a/Build/Sprites/ZandFlagGold.png b/Build/Sprites/ZandFlagGold.png new file mode 100644 index 0000000..d533643 Binary files /dev/null and b/Build/Sprites/ZandFlagGold.png differ diff --git a/Build/Sprites/ZandFlagGreen.png b/Build/Sprites/ZandFlagGreen.png new file mode 100644 index 0000000..45815c1 Binary files /dev/null and b/Build/Sprites/ZandFlagGreen.png differ diff --git a/Build/Sprites/ZandFlagRed.png b/Build/Sprites/ZandFlagRed.png new file mode 100644 index 0000000..27bd2e8 Binary files /dev/null and b/Build/Sprites/ZandFlagRed.png differ diff --git a/Build/Sprites/ZandFlagWhite.png b/Build/Sprites/ZandFlagWhite.png new file mode 100644 index 0000000..c12a857 Binary files /dev/null and b/Build/Sprites/ZandFlagWhite.png differ diff --git a/Build/Sprites/ZandRuneDrain.png b/Build/Sprites/ZandRuneDrain.png new file mode 100644 index 0000000..52336d0 Binary files /dev/null and b/Build/Sprites/ZandRuneDrain.png differ diff --git a/Build/Sprites/ZandRuneHaste.png b/Build/Sprites/ZandRuneHaste.png new file mode 100644 index 0000000..5429612 Binary files /dev/null and b/Build/Sprites/ZandRuneHaste.png differ diff --git a/Build/Sprites/ZandRuneHighJump.png b/Build/Sprites/ZandRuneHighJump.png new file mode 100644 index 0000000..66263d1 Binary files /dev/null and b/Build/Sprites/ZandRuneHighJump.png differ diff --git a/Build/Sprites/ZandRuneProsperity.png b/Build/Sprites/ZandRuneProsperity.png new file mode 100644 index 0000000..9f5f6e2 Binary files /dev/null and b/Build/Sprites/ZandRuneProsperity.png differ diff --git a/Build/Sprites/ZandRuneRage.png b/Build/Sprites/ZandRuneRage.png new file mode 100644 index 0000000..409c397 Binary files /dev/null and b/Build/Sprites/ZandRuneRage.png differ diff --git a/Build/Sprites/ZandRuneReflection.png b/Build/Sprites/ZandRuneReflection.png new file mode 100644 index 0000000..ec662f1 Binary files /dev/null and b/Build/Sprites/ZandRuneReflection.png differ diff --git a/Build/Sprites/ZandRuneRegeneration.png b/Build/Sprites/ZandRuneRegeneration.png new file mode 100644 index 0000000..5c99fe6 Binary files /dev/null and b/Build/Sprites/ZandRuneRegeneration.png differ diff --git a/Build/Sprites/ZandRuneResistance.png b/Build/Sprites/ZandRuneResistance.png new file mode 100644 index 0000000..55a50a3 Binary files /dev/null and b/Build/Sprites/ZandRuneResistance.png differ diff --git a/Build/Sprites/ZandRuneSpread.png b/Build/Sprites/ZandRuneSpread.png new file mode 100644 index 0000000..e7de298 Binary files /dev/null and b/Build/Sprites/ZandRuneSpread.png differ diff --git a/Build/Sprites/ZandRuneStrength.png b/Build/Sprites/ZandRuneStrength.png new file mode 100644 index 0000000..f5b0e47 Binary files /dev/null and b/Build/Sprites/ZandRuneStrength.png differ diff --git a/Build/Sprites/Zone.png b/Build/Sprites/Zone.png new file mode 100644 index 0000000..3d60661 Binary files /dev/null and b/Build/Sprites/Zone.png differ diff --git a/Build/Textures/Crosshair.png b/Build/Textures/Crosshair.png new file mode 100644 index 0000000..7d069a2 Binary files /dev/null and b/Build/Textures/Crosshair.png differ diff --git a/Build/Textures/CrosshairBusy.png b/Build/Textures/CrosshairBusy.png new file mode 100644 index 0000000..c534727 Binary files /dev/null and b/Build/Textures/CrosshairBusy.png differ diff --git a/Build/Textures/Hourglass3D.png b/Build/Textures/Hourglass3D.png new file mode 100644 index 0000000..f3a1b7d Binary files /dev/null and b/Build/Textures/Hourglass3D.png differ diff --git a/Build/Textures/MissingTexture3D.png b/Build/Textures/MissingTexture3D.png new file mode 100644 index 0000000..1e24d4c Binary files /dev/null and b/Build/Textures/MissingTexture3D.png differ diff --git a/Build/Textures/UnknownTexture3D.png b/Build/Textures/UnknownTexture3D.png new file mode 100644 index 0000000..7f31fa0 Binary files /dev/null and b/Build/Textures/UnknownTexture3D.png differ diff --git a/Build/Updater.exe b/Build/Updater.exe new file mode 100644 index 0000000..4ad1e3b Binary files /dev/null and b/Build/Updater.exe differ diff --git a/Build/Updater.ini b/Build/Updater.ini new file mode 100644 index 0000000..b521b1c --- /dev/null +++ b/Build/Updater.ini @@ -0,0 +1,3 @@ +URL http://devbuilds.drdteam.org/doombuilder2-gzdb/ +FileName Builder.exe +UpdateName GZDoom_Builder-r[REVNUM].7z \ No newline at end of file diff --git a/Builder.sln b/Builder.sln new file mode 100644 index 0000000..28c1e43 --- /dev/null +++ b/Builder.sln @@ -0,0 +1,128 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 14 +VisualStudioVersion = 14.0.24720.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Builder", "Source\Core\Builder.csproj", "{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuilderModes", "Source\Plugins\BuilderModes\BuilderModes.csproj", "{B42D5AA0-F9A6-4234-9C4B-A05B11A64851}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuilderEffects", "Source\Plugins\BuilderEffects\BuilderEffects.csproj", "{B859BE0F-A992-476D-A642-FA8EFE94AAA5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ColorPicker", "Source\Plugins\ColorPicker\ColorPicker.csproj", "{A4761900-0EA3-4FE4-A919-847FD5080EFC}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagExplorer", "Source\Plugins\TagExplorer\TagExplorer.csproj", "{BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CommentsPanel", "Source\Plugins\CommentsPanel\CommentsPanel.csproj", "{58BD8A5B-1B48-435D-8473-A92F27D06C49}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NodesViewer", "Source\Plugins\NodesViewer\NodesViewer.csproj", "{9F244231-6A0C-42A6-87C5-ED9620DEE096}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TagRange", "Source\Plugins\TagRange\TagRange.csproj", "{F49EFF6D-51CB-4E49-8223-AAE653C5B62F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VisplaneExplorer", "Source\Plugins\VisplaneExplorer\VisplaneExplorer.csproj", "{CF670175-7099-4090-A330-EE25C7230139}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SoundPropagation", "Source\Plugins\SoundPropagationMode\SoundPropagation.csproj", "{F59B344C-DD50-4DB7-ADDD-56AAD66450AF}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StairSectorBuilder", "Source\Plugins\StairSectorBuilder\StairSectorBuilder.csproj", "{3F365121-906B-409D-BB1E-37E0A78056C2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug + Profiler|x86 = Debug + Profiler|x86 + Debug|x86 = Debug|x86 + Release + Profiler|x86 = Release + Profiler|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|x86.ActiveCfg = Debug|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|x86.Build.0 = Debug|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|x86.ActiveCfg = Release|x86 + {818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|x86.Build.0 = Release|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug|x86.ActiveCfg = Debug|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Debug|x86.Build.0 = Debug|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release|x86.ActiveCfg = Release|x86 + {B42D5AA0-F9A6-4234-9C4B-A05B11A64851}.Release|x86.Build.0 = Release|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Debug|x86.ActiveCfg = Debug|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Debug|x86.Build.0 = Debug|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Release|x86.ActiveCfg = Release|x86 + {B859BE0F-A992-476D-A642-FA8EFE94AAA5}.Release|x86.Build.0 = Release|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|x86.ActiveCfg = Debug|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Debug|x86.Build.0 = Debug|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|x86.ActiveCfg = Release|x86 + {A4761900-0EA3-4FE4-A919-847FD5080EFC}.Release|x86.Build.0 = Release|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.ActiveCfg = Debug|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Debug|x86.Build.0 = Debug|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.ActiveCfg = Release|x86 + {BE7917F3-E6FE-4D5B-8FA9-B8E7668AC731}.Release|x86.Build.0 = Release|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|x86.ActiveCfg = Debug|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Debug|x86.Build.0 = Debug|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|x86.ActiveCfg = Release|x86 + {58BD8A5B-1B48-435D-8473-A92F27D06C49}.Release|x86.Build.0 = Release|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Debug|x86.ActiveCfg = Debug|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Debug|x86.Build.0 = Debug|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Release|x86.ActiveCfg = Release|x86 + {9F244231-6A0C-42A6-87C5-ED9620DEE096}.Release|x86.Build.0 = Release|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Debug|x86.ActiveCfg = Debug|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Debug|x86.Build.0 = Debug|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Release|x86.ActiveCfg = Release|x86 + {F49EFF6D-51CB-4E49-8223-AAE653C5B62F}.Release|x86.Build.0 = Release|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Debug|x86.ActiveCfg = Debug|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Debug|x86.Build.0 = Debug|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Release|x86.ActiveCfg = Release|x86 + {CF670175-7099-4090-A330-EE25C7230139}.Release|x86.Build.0 = Release|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Debug|x86.ActiveCfg = Debug|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Debug|x86.Build.0 = Debug|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Release|x86.ActiveCfg = Release|x86 + {F59B344C-DD50-4DB7-ADDD-56AAD66450AF}.Release|x86.Build.0 = Release|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Debug + Profiler|x86.ActiveCfg = Debug + Profiler|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Debug + Profiler|x86.Build.0 = Debug + Profiler|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Debug|x86.ActiveCfg = Debug|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Debug|x86.Build.0 = Debug|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Release + Profiler|x86.ActiveCfg = Release + Profiler|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Release + Profiler|x86.Build.0 = Release + Profiler|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Release|x86.ActiveCfg = Release|x86 + {3F365121-906B-409D-BB1E-37E0A78056C2}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/ChangelogMaker.exe b/ChangelogMaker.exe new file mode 100644 index 0000000..c47131d Binary files /dev/null and b/ChangelogMaker.exe differ diff --git a/Clean Rebuild.bat b/Clean Rebuild.bat new file mode 100644 index 0000000..4eb46a0 --- /dev/null +++ b/Clean Rebuild.bat @@ -0,0 +1,133 @@ +@ECHO OFF + +ECHO. +ECHO. This build script requires the following software to be installed: +ECHO. - Microsoft Visual Studio 2008 +ECHO. + +SET STUDIODIR=c:\Program Files (x86)\Microsoft Visual Studio 9.0 + +CALL "%STUDIODIR%\Common7\Tools\vsvars32.bat" + +DEL /F /Q "Build\Plugins\*.pdb" > NUL + +ECHO. +ECHO Compiling GZDoom Builder core... +ECHO. +IF EXIST "Build\Builder.exe" DEL /F /Q "Build\Builder.exe" > NUL +IF EXIST "Source\Core\obj" RD /S /Q "Source\Core\obj" +msbuild "Source\Core\Builder.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Builder.exe" GOTO FILEFAIL + +ECHO. +ECHO Compiling Builder Effects plugin... +ECHO. +IF EXIST "Build\Plugins\BuilderEffects.dll" DEL /F /Q "Build\Plugins\BuilderEffects.dll" > NUL +IF EXIST "Source\Plugins\BuilderEffects\obj" RD /S /Q "Source\Plugins\BuilderEffects\obj" +msbuild "Source\Plugins\BuilderEffects\BuilderEffects.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\BuilderEffects.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Builder Modes plugin... +ECHO. +IF EXIST "Build\Plugins\BuilderModes.dll" DEL /F /Q "Build\Plugins\BuilderModes.dll" > NUL +IF EXIST "Source\Plugins\BuilderModes\obj" RD /S /Q "Source\Plugins\BuilderModes\obj" +msbuild "Source\Plugins\BuilderModes\BuilderModes.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\BuilderModes.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Color Picker plugin... +ECHO. +IF EXIST "Build\Plugins\ColorPicker.dll" DEL /F /Q "Build\Plugins\ColorPicker.dll" > NUL +IF EXIST "Source\Plugins\ColorPicker\obj" RD /S /Q "Source\Plugins\ColorPicker\obj" +msbuild "Source\Plugins\ColorPicker\ColorPicker.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\ColorPicker.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Comments Panel plugin... +ECHO. +IF EXIST "Build\Plugins\CommentsPanel.dll" DEL /F /Q "Build\Plugins\CommentsPanel.dll" > NUL +IF EXIST "Source\Plugins\CommentsPanel\obj" RD /S /Q "Source\Plugins\CommentsPanel\obj" +msbuild "Source\Plugins\CommentsPanel\CommentsPanel.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\CommentsPanel.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Nodes Viewer plugin... +ECHO. +IF EXIST "Build\Plugins\NodesViewer.dll" DEL /F /Q "Build\Plugins\NodesViewer.dll" > NUL +IF EXIST "Source\Plugins\NodesViewer\obj" RD /S /Q "Source\Plugins\NodesViewer\obj" +msbuild "Source\Plugins\NodesViewer\NodesViewer.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\NodesViewer.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Sound Propagation Mode plugin... +ECHO. +IF EXIST "Build\Plugins\SoundPropagationMode.dll" DEL /F /Q "Build\Plugins\SoundPropagationMode.dll" > NUL +IF EXIST "Source\Plugins\SoundPropagationMode\obj" RD /S /Q "Source\Plugins\SoundPropagationMode\obj" +msbuild "Source\Plugins\SoundPropagationMode\SoundPropagation.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\SoundPropagationMode.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Stair Sector Builder plugin... +ECHO. +IF EXIST "Build\Plugins\StairSectorBuilder.dll" DEL /F /Q "Build\Plugins\StairSectorBuilder.dll" > NUL +IF EXIST "Source\Plugins\StairSectorBuilder\obj" RD /S /Q "Source\Plugins\StairSectorBuilder\obj" +msbuild "Source\Plugins\StairSectorBuilder\StairSectorBuilder.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\StairSectorBuilder.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Tag Explorer plugin... +ECHO. +IF EXIST "Build\Plugins\TagExplorer.dll" DEL /F /Q "Build\Plugins\TagExplorer.dll" > NUL +IF EXIST "Source\Plugins\TagExplorer\obj" RD /S /Q "Source\Plugins\TagExplorer\obj" +msbuild "Source\Plugins\TagExplorer\TagExplorer.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\TagExplorer.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Tag Range plugin... +ECHO. +IF EXIST "Build\Plugins\TagRange.dll" DEL /F /Q "Build\Plugins\TagRange.dll" > NUL +IF EXIST "Source\Plugins\TagRange\obj" RD /S /Q "Source\Plugins\TagRange\obj" +msbuild "Source\Plugins\TagRange\TagRange.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\TagRange.dll" GOTO FILEFAIL + +ECHO. +ECHO Compiling Visplane Explorer plugin... +ECHO. +IF EXIST "Build\Plugins\VisplaneExplorer.dll" DEL /F /Q "Build\Plugins\VisplaneExplorer.dll" > NUL +IF EXIST "Source\Plugins\VisplaneExplorer\obj" RD /S /Q "Source\Plugins\VisplaneExplorer\obj" +msbuild "Source\Plugins\VisplaneExplorer\VisplaneExplorer.csproj" /t:Rebuild /p:Configuration=Release /p:Platform=x86 /v:minimal +IF %ERRORLEVEL% NEQ 0 GOTO ERRORFAIL +IF NOT EXIST "Build\Plugins\VisplaneExplorer.dll" GOTO FILEFAIL + +ECHO. +ECHO. BUILD DONE ! +ECHO. +PAUSE > NUL +GOTO LEAVE + +:ERRORFAIL +ECHO. +ECHO. BUILD FAILED (Tool returned error %ERRORLEVEL%) +ECHO. +PAUSE > NUL +GOTO LEAVE + +:FILEFAIL +ECHO. +ECHO. BUILD FAILED (Output file was not built) +ECHO. +PAUSE > NUL +GOTO LEAVE + +:LEAVE diff --git a/CompileHelp.bat b/CompileHelp.bat new file mode 100644 index 0000000..6d7f2ce --- /dev/null +++ b/CompileHelp.bat @@ -0,0 +1,29 @@ +@ECHO OFF +ECHO. +ECHO Compiling HTML Help file... +ECHO. +IF EXIST "Build\Refmanual.chm" DEL /F /Q "Build\Refmanual.chm" > NUL +"c:\Program Files (x86)\HTML Help Workshop\hhc" Help\Refmanual.hhp +IF %ERRORLEVEL% NEQ 1 GOTO ERRORFAIL +IF NOT EXIST "Build\Refmanual.chm" GOTO FILEFAIL + +ECHO. +ECHO. BUILD DONE ! +ECHO. +GOTO LEAVE + +:ERRORFAIL +ECHO. +ECHO. BUILD FAILED (Tool returned error) +ECHO. +PAUSE > NUL +GOTO LEAVE + +:FILEFAIL +ECHO. +ECHO. BUILD FAILED (Output file was not built) +ECHO. +PAUSE > NUL +GOTO LEAVE + +:LEAVE \ No newline at end of file diff --git a/Documents/Boom_specs.txt b/Documents/Boom_specs.txt new file mode 100644 index 0000000..5fab2b8 --- /dev/null +++ b/Documents/Boom_specs.txt @@ -0,0 +1,2388 @@ +>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<< +> < +> BOOM reference v1.3 4/12/98 < +> < +>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<< + +====================================================================== + Part I Linedef Types +====================================================================== + +####################### +Section 0. Terminology +####################### + +In BOOM actions are caused to happen in the game thru linedef types. +BOOM has three kinds of linedef types: + +Regular - the linedef types that were already in DOOM II v1.9 + +Extended - linedef types not in DOOM II v1.9 but less than 8192 + in value + +Generalized - linedef types over 8192 in value that contain bit + fields that independently control the actions of the sector + affected. + +A linedef with non-zero linedef type is called a linedef trigger. A +linedef trigger is always activated in one of three ways - pushing on +the first sidedef of the linedef, walking over the linedef, or +shooting the linedef with an impact weapon (fists, chainsaw, pistol, +shotgun, double barreled, or chaingun). + +Linedefs activated by pushing on them come in two varieties. A manual +linedef affects the sector on the second sidedef of the line pushed. +A switched linedef affects all sectors that have the same tag field +as the linedef that was pushed. + +Nearly all switched, walkover, and gun linedefs operate on the sectors +with the same tag as that in the tag field of the linedef. + +Some linedefs are never activated per se, but simply create or control +an effect thru their existence and properties, usually affecting the +sectors sharing the linedef's tags. There are also a few special case +like line-line teleporters and exit linedefs that do not affect +sectors. + +Some linedefs are only triggerable once, others are triggerable as +many times as you like. + +Triggering types are denoted by the letters P, S, W, and G for +manual(push), switched, walkover, and gun. Their retriggerability is +denoted by a 1 or R following the letter. So the triggering types for +linedefs are: + +P1 PR S1 SR W1 WR G1 GR + +Often linedef actions depend on values in neighboring sectors. A +neighboring sector is one that shares a linedef in common, just +sharing a vertex is not sufficient. + +In DOOM only one action on a sector could occur at a time. BOOM +supports one floor action, one ceiling action, and one lighting +action simultaneously. + + +################ +Section 1. Doors +################ + +A door is a sector, usually placed between two rooms, whose ceiling +raises to open, and lowers to close. + +A door is fully closed when its ceiling height is equal to its floor +height. + +A door is fully open when its ceiling height is 4 less than the lowest +neighbor ceiling adjacent to it. + +A door may be set to an intermediate state initially, or thru the action +of a linedef trigger that affects ceilings or floors. The door is passable +to a player when its ceiling is at least 56 units higher than its floor. +In general the door is passable to a monster or a thing when its ceiling +is at least the monster or thing's height above the floor. + +If a door has a ceiling height ABOVE the fully open height, then an +open door action moves the ceiling to the fully open height +instantly. + +If a door has a ceiling height BELOW the fully closed height (that is +the ceiling of the door sector is lower than the floor of the door +sector) a close door action moves the ceiling to the fully closed +height instantly. + +-------------------------- +Section 1.1 Door functions +-------------------------- + +Open, Wait, Then Close + +On activation, door opens fully, waits a specified period, then +closes fully. + +Open and Stay Open + +On activation, door opens fully and remains there. + +Close and Stay Closed + +On activation, door closes fully, and remains there. + +Close, Wait, Then Open + +On activation, door closes fully, waits a specified period, then +opens fully. + +------------------------------ +Section 1.2 Varieties of doors +------------------------------ + +A door can be triggered by pushing on it, walking over or pressing a +linedef trigger tagged to it, or shooting a linedef tagged to it. +These are called manual, walkover, switched, or gun doors resp. + +Since a push door (P1/PR) has no use for its tag, BOOM has extended +the functionality to include changing any tagged sectors to maximum +neighbor lighting on fully opening, then to minimum neighbor lighting +on fully closing. This is true for regular, extended, and generalized +doors with push triggers. + +A door trigger can be locked. This means that the door function will only +operate if the player is in possession of the right key(s). Regular +and extended door triggers only care if the player has a key of the +right color, they do not care which. Generalized door triggers +can distinguish between skull and card keys, and can also require +any key, or all keys in order to activate. + +A door can have different speeds, slow, normal, fast or turbo. + +A door can wait for different amounts of time. + +A door may or may not be activatable by monsters. + +Any door function except Close and Stay Closed, when closing and +encountering a monster or player's head will bounce harmlessly off +that head and return to fully open. A Close and Stay Closed will rest +on the head until it leaves the door sector. + +------------------------------ +Section 1.3 Door linedef types +------------------------------ + +Regular and Extended Door Types +--------------------------------------------------------------- +# Class Trig Lock Speed Wait Monst Function + +1 Reg PR No Slow 4s Yes Open, Wait, Then Close +117 Reg PR No Fast 4s No Open, Wait, Then Close +63 Reg SR No Slow 4s No Open, Wait, Then Close +114 Reg SR No Fast 4s No Open, Wait, Then Close +29 Reg S1 No Slow 4s No Open, Wait, Then Close +111 Reg S1 No Fast 4s No Open, Wait, Then Close +90 Reg WR No Slow 4s No Open, Wait, Then Close +105 Reg WR No Fast 4s No Open, Wait, Then Close +4 Reg W1 No Slow 4s No Open, Wait, Then Close +108 Reg W1 No Fast 4s No Open, Wait, Then Close + +31 Reg P1 No Slow -- No Open and Stay Open +118 Reg P1 No Fast -- No Open and Stay Open +61 Reg SR No Slow -- No Open and Stay Open +115 Reg SR No Fast -- No Open and Stay Open +103 Reg S1 No Slow -- No Open and Stay Open +112 Reg S1 No Fast -- No Open and Stay Open +86 Reg WR No Slow -- No Open and Stay Open +106 Reg WR No Fast -- No Open and Stay Open +2 Reg W1 No Slow -- No Open and Stay Open +109 Reg W1 No Fast -- No Open and Stay Open +46 Reg GR No Slow -- No Open and Stay Open + +42 Reg SR No Slow -- No Close and Stay Closed +116 Reg SR No Fast -- No Close and Stay Closed +50 Reg S1 No Slow -- No Close and Stay Closed +113 Reg S1 No Fast -- No Close and Stay Closed +75 Reg WR No Slow -- No Close and Stay Closed +107 Reg WR No Fast -- No Close and Stay Closed +3 Reg W1 No Slow -- No Close and Stay Closed +110 Reg W1 No Fast -- No Close and Stay Closed + +196 Ext SR No Slow 30s No Close, Wait, Then Open +175 Ext S1 No Slow 30s No Close, Wait, Then Open +76 Reg WR No Slow 30s No Close, Wait, Then Open +16 Reg W1 No Slow 30s No Close, Wait, Then Open + +Regular and Extended Locked Door Types +--------------------------------------------------------------- +# Class Trig Lock Speed Wait Monst Function + +26 Reg PR Blue Slow 4s No Open, Wait, Then Close +28 Reg PR Red Slow 4s No Open, Wait, Then Close +27 Reg PR Yell Slow 4s No Open, Wait, Then Close + +32 Reg P1 Blue Slow -- No Open and Stay Open +33 Reg P1 Red Slow -- No Open and Stay Open +34 Reg P1 Yell Slow -- No Open and Stay Open +99 Reg SR Blue Fast -- No Open and Stay Open +134 Reg SR Red Fast -- No Open and Stay Open +136 Reg SR Yell Fast -- No Open and Stay Open +133 Reg S1 Blue Fast -- No Open and Stay Open +135 Reg S1 Red Fast -- No Open and Stay Open +137 Reg S1 Yell Fast -- No Open and Stay Open + + +There are two generalized door linedef types, Generalized Door, and +Generalized Locked Door. The following tables show the possibilities +for each parameter, any combination of parameters is allowed: + +Slow and Fast represent the same speeds as slow and fast regular doors. Normal +is twice as fast as slow, Fast is twice normal, Turbo is twice Fast. + +Generalized Door Types +--------------------------------------------------------------- +# Class Trig Lock Speed Wait Monst Function + +3C00H- Gen P1/PR No Slow 1s Yes Open, Wait, Then Close +4000H S1/SR Normal 4s No Open and Stay Open + W1/WR Fast 9s Close and Stay Closed + G1/GR Turbo 30s Close, Wait, Then Open + + +Generalized Locked Door Types +--------------------------------------------------------------- +# Class Trig Lock Speed Wait Monst Function + +3800H- Gen P1/PR Any Slow 1s No Open, Wait, Then Close +3C00H S1/SR Blue Normal 4s Open and Stay Open + W1/WR Red Fast 9s Close and Stay Closed + G1/GR Yell Turbo 30s Close, Wait, Then Open + BlueC + RedC + YellC + BlueS + RedS + YellS + All3 + All6 + +################# +Section 2. Floors +################# + +---------------------------- +Section 2.1 Floor targets +---------------------------- + +Lowest Neighbor Floor (LnF) + +This means that the floor moves to the height of the lowest +neighboring floor including the floor itself. If the floor +direction is up (only possible with generalized floors) motion is +instant, else at the floor's speed. + +Next Neighbor Floor (NnF) + +This means that the floor moves up to the height of the lowest +adjacent floor greater in height than the current, or down to the +height of the highest adjacent floor less in height than the current, +as determined by the floor's direction. Instant motion is not +possible in this case. If no such floor exists, the floor does not move. + +Lowest Neighbor Ceiling (LnC) + +This means that the floor height changes to the height of the lowest +ceiling possessed by any neighboring sector, including that floor's +ceiling. If the target height is in the opposite direction to floor +motion, motion is instant, otherwise at the floor action's speed. + +8 Under Lowest Neighbor Ceiling (8uLnC) + +This means that the floor height changes to 8 less than the height +of the lowest ceiling possessed by any neighboring sector, including +that floor's ceiling. If the target height is in the opposite +direction to floor motion, motion is instant, otherwise at the floor +action's speed. + +Highest Neighbor Floor (HnF) + +This means that the floor height changes to the height of the highest +neighboring floor, excluding the floor itself. If no neighbor floor +exists, the floor moves down to -32000. If the target height is in +the opposite direction to floor motion, the motion is instant, +otherwise it occurs at the floor action's speed. + +8 Above Highest Neighbor Floor (8aHnF) + +This means that the floor height changes to 8 above the height of +the highest neighboring floor, excluding the floor itself. If no +neighbor floor exists, the floor moves down to -31992. If the target +height is in the opposite direction to floor motion, the motion is +instant, otherwise it occurs at the floor action's speed. + +Ceiling + +The floor moves up until its at ceiling height, instantly if floor +direction is down (only available with generalized types), at the +floor speed if the direction is up. + +24 Units (24) + +The floor moves 24 units in the floor action's direction. Instant +motion is not possible with this linedef type. + +32 Units (32) + +The floor moves 32 units in the floor action's direction. Instant +motion is not possible with this linedef type. + +512 Units (512) + +The floor moves 512 units in the floor action's direction. Instant +motion is not possible with this linedef type. + +Shortest Lower Texture (SLT) + +The floor moves the height of the shortest lower texture on the +boundary of the sector, in the floor direction. Instant motion is not +possible with this type. In the case that there is no surrounding +texture the motion is to -32000 or +32000 depending on direction. + +None + +Some pure texture type changes are provided for changing the floor +texture and/or sector type without moving the floor. + +-------------------------------- +Section 2.2 Varieties of floors +-------------------------------- + +A floor can be activated by pushing on a linedef bounding it +(generalized types only), or by pushing on a switch with the same tag +as the floor sector, or by walking over a linedef with the same tag +as the floor, or by shooting a linedef with the same tag as the +floor with an impact weapon. + +A floor can move either Up or Down. + +A floor can move with speeds of Slow, Normal, Fast, or Turbo. If the +target height specified by the floor function (see Floor Targets +above) is in the opposite direction to the floor's motion, then +travel is instantaneous, otherwise its at the speed specified. + +A floor action can be a texture change type, in which case after the +action the floor texture of the affected floor, and possibly the +sector type of the affected floor are changed to those of a model +sector. The sector type may be zeroed instead of copied from the +model, or not changed at all. These change types are referred to +below as Tx (texture only), Tx0 (type zeroed), and TxTy (texture and +type changed). The model sector for the change may be the sector on +the first sidedef of the trigger (trigger model) or the sector with +floor at destination height across the lowest numbered two-sided +linedef surrounding the affected sector (numeric model). If no model +sector exists, no change occurs. If a change occurs, floor texture is +always affected, lighting is never affected, even that corresponding +to the sector's type, nor is any other sector property other than the +sector's type. + +Numeric model algorithm: + +1) Find all floors adjacent to the tagged floor at destination height +2) Find the lowest numbered linedef separating those floors from that tagged +3) The sector on the other side of that linedef is the model + +A floor action can have the crush property, in which case players and +monsters are crushed when the floor tries to move above the point +where they fit exactly underneath the ceiling. This means they take +damage until they die, leave the sector, or the floor action is stopped. +A floor action never reverses on encountering an obstacle, even if +the crush property is not true, the floor merely remains in the same +position until the obstacle is removed or dies, then continues. + +------------------------------- +Section 2.3 Floor linedef types +------------------------------- + +Regular and Extended Floor Types +------------------------------------------------------------------- +# Class Trig Dir Spd Chg Mdl Mon Crsh Target + +60 Reg SR Dn Slow None -- No No Lowest Neighbor Floor +23 Reg S1 Dn Slow None -- No No Lowest Neighbor Floor +82 Reg WR Dn Slow None -- No No Lowest Neighbor Floor +38 Reg W1 Dn Slow None -- No No Lowest Neighbor Floor + +177 Ext SR Dn Slow TxTy Num No No Lowest Neighbor Floor +159 Ext S1 Dn Slow TxTy Num No No Lowest Neighbor Floor +84 Reg WR Dn Slow TxTy Num No No Lowest Neighbor Floor +37 Reg W1 Dn Slow TxTy Num No No Lowest Neighbor Floor + +69 Reg SR Up Slow None -- No No Next Neighbor Floor +18 Reg S1 Up Slow None -- No No Next Neighbor Floor +128 Reg WR Up Slow None -- No No Next Neighbor Floor +119 Reg W1 Up Slow None -- No No Next Neighbor Floor + +132 Reg SR Up Fast None -- No No Next Neighbor Floor +131 Reg S1 Up Fast None -- No No Next Neighbor Floor +129 Reg WR Up Fast None -- No No Next Neighbor Floor +130 Reg W1 Up Fast None -- No No Next Neighbor Floor + +222 Ext SR Dn Slow None -- No No Next Neighbor Floor +221 Ext S1 Dn Slow None -- No No Next Neighbor Floor +220 Ext WR Dn Slow None -- No No Next Neighbor Floor +219 Ext W1 Dn Slow None -- No No Next Neighbor Floor + +64 Reg SR Up Slow None -- No No Lowest Neighbor Ceiling +101 Reg S1 Up Slow None -- No No Lowest Neighbor Ceiling +91 Reg WR Up Slow None -- No No Lowest Neighbor Ceiling +5 Reg W1 Up Slow None -- No No Lowest Neighbor Ceiling +24 Reg G1 Up Slow None -- No No Lowest Neighbor Ceiling + +65 Reg SR Up Slow None -- No Yes Lowest Neighbor Ceiling - 8 +55 Reg S1 Up Slow None -- No Yes Lowest Neighbor Ceiling - 8 +94 Reg WR Up Slow None -- No Yes Lowest Neighbor Ceiling - 8 +56 Reg W1 Up Slow None -- No Yes Lowest Neighbor Ceiling - 8 + +45 Reg SR Dn Slow None -- No No Highest Neighbor Floor +102 Reg S1 Dn Slow None -- No No Highest Neighbor Floor +83 Reg WR Dn Slow None -- No No Highest Neighbor Floor +19 Reg W1 Dn Slow None -- No No Highest Neighbor Floor + +70 Reg SR Dn Fast None -- No No Highest Neighbor Floor + 8 +71 Reg S1 Dn Fast None -- No No Highest Neighbor Floor + 8 +98 Reg WR Dn Fast None -- No No Highest Neighbor Floor + 8 +36 Reg W1 Dn Fast None -- No No Highest Neighbor Floor + 8 + +180 Ext SR Up Slow None -- No No Absolute 24 +161 Ext S1 Up Slow None -- No No Absolute 24 +92 Reg WR Up Slow None -- No No Absolute 24 +58 Reg W1 Up Slow None -- No No Absolute 24 + +179 Ext SR Up Slow TxTy Trg No No Absolute 24 +160 Ext S1 Up Slow TxTy Trg No No Absolute 24 +93 Reg WR Up Slow TxTy Trg No No Absolute 24 +59 Reg W1 Up Slow TxTy Trg No No Absolute 24 + +176 Ext SR Up Slow None -- No No Abs Shortest Lower Texture +158 Ext S1 Up Slow None -- No No Abs Shortest Lower Texture +96 Reg WR Up Slow None -- No No Abs Shortest Lower Texture +30 Reg W1 Up Slow None -- No No Abs Shortest Lower Texture + +178 Ext SR Up Slow None -- No No Absolute 512 +140 Reg S1 Up Slow None -- No No Absolute 512 +147 Ext WR Up Slow None -- No No Absolute 512 +142 Ext W1 Up Slow None -- No No Absolute 512 + +190 Ext SR -- ---- TxTy Trg No No None +189 Ext S1 -- ---- TxTy Trg No No None +154 Ext WR -- ---- TxTy Trg No No None +153 Ext W1 -- ---- TxTy Trg No No None + +78 Ext SR -- ---- TxTy Num No No None +241 Ext S1 -- ---- TxTy Num No No None +240 Ext WR -- ---- TxTy Num No No None +239 Ext W1 -- ---- TxTy Num No No None + +The following tables show the possibilities for generalized floor +linedef type parameters. Any combination of parameters is allowed: + +Slow and Fast represent the same speeds as slow and fast regular +floors. Normal is twice as fast as slow, Fast is twice normal, Turbo +is twice Fast. + +Generalized Floor Types +--------------------------------------------------------------------------- +# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target + +6000H- Gen P1/PR Up Slow None Trg Yes Yes Lowest Neighbor Floor +7FFFH S1/SR Dn Normal Tx Num No No Next Neighbor Floor + W1/WR Fast Tx0 Lowest Neighbor Ceiling + G1/GR Turbo TxTy Highest Neighbor Floor + Ceiling + 24 + 32 +*Mon(ster) enabled must be No if Shortest Lower Texture +Chg field is not None + +Tx = Texture copied only Trg = Trigger Model +Tx0 = Texture copied and Type->0 Num = Numeric Model +TxTy = Texture and Type copied + + +#################### +Section 3. Ceilings +#################### + +---------------------------- +Section 3.1 Ceiling Targets +---------------------------- + +Highest Neighbor Ceiling (HnC) + +This means that the ceiling moves to the height of the highest +neighboring ceiling NOT including the ceiling itself. If the ceiling +direction is down (only possible with generalized ceilings) motion is +instant, else at the ceiling's speed. If no adjacent ceiling exists +the ceiling moves to -32000 units. + +Next Neighbor Ceiling (NnC) + +This means that the ceiling moves up to the height of the lowest +adjacent ceiling greater in height than the current, or to the +height of the highest adjacent ceiling less in height than the current, +as determined by the ceiling's direction. Instant motion is not +possible in this case. If no such ceiling exists, the ceiling does +not move. + +Lowest Neighbor Ceiling (LnC) + +This means that the ceiling height changes to the height of the lowest +ceiling possessed by any neighboring sector, NOT including itself. +If the target height is in the opposite direction to ceiling +motion, motion is instant, otherwise at the ceiling action's speed. +If no adjacent ceiling exists the ceiling moves to 32000 units. + +Highest Neighbor Floor (HnF) + +This means that the ceiling height changes to the height of the +highest neighboring floor, excluding the ceiling's floor itself. If +no neighbor floor exists, the ceiling moves down to -32000 or the +ceiling's floor, whichever is higher. If the target height is in the +opposite direction to ceiling motion, the motion is instant, +otherwise it occurs at the ceiling action's speed. + +Floor + +The ceiling moves down until its at floor height, instantly if +ceiling direction is up (only available with generalized types), at +the ceiling speed if the direction is down. + +8 Above Floor (8aF) + +This means that the ceiling height changes to 8 above the height of +the ceiling's floor. If the target height is in the opposite direction +to ceiling motion, the motion is instant, otherwise it occurs at the +ceiling action's speed. + +24 Units (24) + +The ceiling moves 24 units in the ceiling action's direction. Instant +motion is not possible with this linedef type. + +32 Units (32) + +The ceiling moves 32 units in the ceiling action's direction. Instant +motion is not possible with this linedef type. + +Shortest Upper Texture (SUT) + +The ceiling moves the height of the shortest upper texture on the +boundary of the sector, in the ceiling direction. Instant motion is not +possible with this type. In the case that there is no surrounding +texture the motion is to -32000 or +32000 depending on direction. + +---------------------------------- +Section 3.2 Varieties of ceilings +---------------------------------- + +A ceiling can be activated by pushing on a linedef bounding it +(generalized types only), or by pushing on a switch with the same tag +as the ceiling sector, or by walking over a linedef with the same tag +as the ceiling, or by shooting a linedef with the same tag as the +ceiling with an impact weapon (generalized types only). + +A ceiling can move either Up or Down. + +A ceiling can move with speeds of Slow, Normal, Fast, or Turbo. If the +target height specified by the ceiling function (see Ceiling Targets +above) is in the opposite direction to the ceiling's motion, then +travel is instantaneous, otherwise its at the speed specified. + +A ceiling action can be a texture change type, in which case after +the action the ceiling texture of the affected ceiling, and possibly +the sector type of the affected ceiling are changed to those of a +model sector. The sector type may be zeroed instead of copied from +the model, or not changed at all. These change types are referred to +below as Tx (texture only), Tx0 (type set to 0), and TxTy (texture +and type copied from model). The model sector for the change may be +the sector on the first sidedef of the trigger (trigger model) or the +sector with ceiling at destination height across the lowest numbered +two-sided linedef surrounding the affected sector (numeric model). If +no model sector exists, no change occurs. If a change occurs, ceiling +texture is always affected, lighting is never affected, even that +corresponding to the sector's type, nor is any other sector property +other than the sector's type. + +Numeric model algorithm: + +1) Find all ceilings adjacent to the tagged ceiling at destination height +2) Find the lowest numbered linedef separating those ceilings from that tagged +3) The sector on the other side of that linedef is the model + +A ceiling action can have the crush property (generalized types only), +in which case players and monsters are crushed when the ceiling tries +to move below the point where they fit exactly underneath the +ceiling. This means they take damage until they die, leave the +sector, or the ceiling action is stopped. A ceiling action never +reverses on encountering an obstacle, even if the crush property is +not true, the ceiling merely remains in the same position until the +obstacle is removed or dies, then continues. + +--------------------------------- +Section 3.3 Ceiling linedef types +--------------------------------- + +Regular and Extended Ceiling Types +------------------------------------------------------------------- +# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target + +43 Reg SR Dn Fast None -- No No Floor +41 Reg S1 Dn Fast None -- No No Floor +152 Ext WR Dn Fast None -- No No Floor +145 Ext W1 Dn Fast None -- No No Floor + +186 Ext SR Up Slow None -- No No Highest Neighbor Ceiling +166 Ext S1 Up Slow None -- No No Highest Neighbor Ceiling +151 Ext WR Up Slow None -- No No Highest Neighbor Ceiling +40 Reg W1 Up Slow None -- No No Highest Neighbor Ceiling + +187 Ext SR Dn Slow None -- No No 8 Above Floor +167 Ext S1 Dn Slow None -- No No 8 Above Floor +72 Reg WR Dn Slow None -- No No 8 Above Floor +44 Reg W1 Dn Slow None -- No No 8 Above Floor + +205 Ext SR Dn Slow None -- No No Lowest Neighbor Ceiling +203 Ext S1 Dn Slow None -- No No Lowest Neighbor Ceiling +201 Ext WR Dn Slow None -- No No Lowest Neighbor Ceiling +199 Ext W1 Dn Slow None -- No No Lowest Neighbor Ceiling + +206 Ext SR Dn Slow None -- No No Highest Neighbor Floor +204 Ext S1 Dn Slow None -- No No Highest Neighbor Floor +202 Ext WR Dn Slow None -- No No Highest Neighbor Floor +200 Ext W1 Dn Slow None -- No No Highest Neighbor Floor + +Generalized Ceiling Types +--------------------------------------------------------------------------- +# Class Trig Dir Spd *Chg *Mdl Mon Crsh Target + +4000H- Gen P1/PR Up Slow None Trg Yes Yes Highest Neighbor Ceiling +5FFFH S1/SR Dn Normal Tx Num No No Next Neighbor Ceiling + W1/WR Fast Tx0 Lowest Neighbor Ceiling + G1/GR Turbo TxTy Highest Neighbor Floor + Floor + 24 + 32 +*Mon(ster) enabled must be No if Shortest Upper Texture +Chg field is not None + +Tx = Texture copied only Trg = Trigger Model +Tx0 = Texture copied and Type->0 Num = Numeric Model +TxTy = Texture and Type copied + + +############################ +Section 4. Platforms (Lifts) +############################ + +A platform is basically a floor action involving two heights. The +simple raise platform actions, for example, differ from the +corresponding floor actions in that if they encounter an obstacle, +they reverse direction and return to their former height. + +The most often used kind of platform is a lift which travels from its +current height to the target height, then waits a specified time and +returns to it former height. + +----------------------------- +Section 4.1 Platform Targets +----------------------------- + +Lowest Neighbor Floor + +This means that the platforms "low" height is the height of the +lowest surrounding floor, including the platform itself. The "high" +height is the original height of the floor. + +Next Lowest Neighbor Floor + +This means that the platforms "low" height is the height of the +highest surrounding floor lower than the floor itself. If no lower +floor exists, no motion occurs as the "low" and "high" heights are +then both equal to the floors current height. + +Lowest Neighbor Ceiling + +This means that the platforms "low" height is the height of the +lowest surrounding ceiling unless this is higher than the floor +itself. If no adjacent ceiling exists, or is higher than the floor no +motion occurs as the "low" and "high" heights are then both equal to +the floors current height. + +Lowest and Highest Floor + +This target sets the "low" height to the lowest neighboring floor, +including the floor itself, and the "high" height to the highest +neighboring floor, including the floor itself. When this target is +used the floor moves perpetually between the two heights. Once +triggered this type of linedef runs permanently, even if the motion +is temporarily suspended with a Stop type. No other floor action can +be commanded on the sector after this type is begun. + +Ceiling + +This target sets the "high" height to the ceiling of the sector and +the "low" height to the floor height of the sector and is only used in +the instant toggle type that switches the floor between the ceiling +and its original height on each activation. This is also the ONLY +instant platform type. + +Raise Next Floor + +This means that the "high" height is the lowest surrounding floor +higher than the platform. If no higher adjacent floor exists no +motion will occur. + +Raise 24 Units + +The "low" height is the original floor height, the "high" height is 24 +more. + +Raise 32 Units + +The "low" height is the original floor height, the "high" height is 32 +more. + +----------------------------------- +Section 4.2 Varieties of Platforms +----------------------------------- + +A platform can be activated by pushing on a linedef bounding it +(generalized types only), or by pushing on a switch with the same tag +as the platform sector, or by walking over a linedef with the same tag +as the platform, or by shooting a linedef with the same tag as the +platform with an impact weapon. + +A platform can move with speeds of Slow, Normal, Fast, or Turbo. +Only the instant toggle platform moves instantly, all others move at +the platform's speed. + +A platform can have a delay, in between when it reaches "high" height +and returns to "low" height, or at both ends of the motion in the +case of perpetual lifts. + +A platform action can be a texture change type, in which case after +the action the floor texture of the affected floor, and possibly the +sector type of the affected floor are changed to those of a model +sector. The sector type may be zeroed instead of copied from the +model, or not changed at all. These change types are referred to +below as Tx (texture only), Tx0 (type zeroed), and TxTy (texture and +type changed). The model sector for the change is always the sector +on the first sidedef of the trigger (trigger model). If a change +occurs, floor texture is always affected, lighting is never affected, +even that corresponding to the sector's type, nor is any other sector +property other than the sector's type. + +----------------------------------- +Section 4.3 Platform Linedef types +----------------------------------- + +Regular and Extended Platform Types +------------------------------------------------------------------- +# Class Trig Dly Spd Chg Mdl Mon Target + +66 Reg SR -- Slow Tx Trg No Raise 24 Units +15 Reg S1 -- Slow Tx Trg No Raise 24 Units +148 Ext WR -- Slow Tx Trg No Raise 24 Units +143 Ext W1 -- Slow Tx Trg No Raise 24 Units + +67 Reg SR -- Slow Tx0 Trg No Raise 32 Units +14 Reg S1 -- Slow Tx0 Trg No Raise 32 Units +149 Ext WR -- Slow Tx0 Trg No Raise 32 Units +144 Ext W1 -- Slow Tx0 Trg No Raise 32 Units + +68 Reg SR -- Slow Tx0 Trg No Raise Next Floor +20 Reg S1 -- Slow Tx0 Trg No Raise Next Floor +95 Reg WR -- Slow Tx0 Trg No Raise Next Floor +22 Reg W1 -- Slow Tx0 Trg No Raise Next Floor +47 Reg G1 -- Slow Tx0 Trg No Raise Next Floor + +181 Ext SR 3s Slow None -- No Lowest and Highest Floor (perpetual) +162 Ext S1 3s Slow None -- No Lowest and Highest Floor (perpetual) +87 Reg WR 3s Slow None -- No Lowest and Highest Floor (perpetual) +53 Reg W1 3s Slow None -- No Lowest and Highest Floor (perpetual) + +182 Ext SR -- ---- ---- -- -- Stop +163 Ext S1 -- ---- ---- -- -- Stop +89 Reg WR -- ---- ---- -- -- Stop +54 Reg W1 -- ---- ---- -- -- Stop + +62 Reg SR 3s Slow None -- No Lowest Neighbor Floor (lift) +21 Reg S1 3s Slow None -- No Lowest Neighbor Floor (lift) +88 Reg WR 3s Slow None -- No Lowest Neighbor Floor (lift) +10 Reg W1 3s Slow None -- No Lowest Neighbor Floor (lift) + +123 Reg SR 3s Fast None -- No Lowest Neighbor Floor (lift) +122 Reg S1 3s Fast None -- No Lowest Neighbor Floor (lift) +120 Reg WR 3s Fast None -- No Lowest Neighbor Floor (lift) +121 Reg W1 3s Fast None -- No Lowest Neighbor Floor (lift) + +211 Ext SR -- Inst None -- No Ceiling (toggle) +212 Ext WR -- Inst None -- No Ceiling (toggle) + +Generalized Lift Types +--------------------------------------------------------------------------- +# Class Trig Dly Spd Mon Target + +3400H- Gen P1/PR 1s Slow Yes Lowest Neighbor Floor +37FFH S1/SR 3s Normal No Next Lowest Neighbor Floor + W1/WR 5s Fast Lowest Neighbor Ceiling + G1/GR 10s Turbo Lowest and Highest Floor (perpetual) + +############################ +Section 5. Crusher Ceilings +############################ + +A crusher ceiling is a linedef type that causes the ceiling to cycle +between its starting height and 8 above the floor, damaging +monsters and players that happen to be in between. Barrels explode +when crushed. + +Once a crusher ceiling is started it remains running for the +remainder of the level even if temporarily suspended with a stop type. +No other ceiling action can be used in that sector thereafter. + +---------------------------------- +Section 5.1 Varieties of Crushers +---------------------------------- + +A crusher can be activated by pushing on a linedef bounding it +(generalized types only), or by pushing on a switch with the same tag +as the crusher sector, or by walking over a linedef with the same tag +as the crusher, or by shooting a linedef with the same tag as the +crusher with an impact weapon (generalized types only). + +A crusher has a speed: slow, normal, fast, or turbo. The slower the +speed, the more damage the crusher does when crushing, simply thru +being applied longer. When a slow or normal crusher is moving down +and encounters something to crush, it slows down even more, by a +factor of 8. This persists until it reaches bottom of stroke and +starts up again. Fast and turbo crushers do not slow down. + +A crusher can be silent. The regular silent crusher makes platform +stop and start noises at top and bottom of stroke. The generalized +silent crusher is completely quiet. + +A crusher linedef is provided to stop a crusher in its current +position. Care should be used that this doesn't lock the player out +of an area of the wad if the crusher is too low to pass. A crusher +can be restarted, but not changed, with any crusher linedef. + +---------------------------------- +Section 5.2 Crusher Linedef Types +---------------------------------- + +Regular and Extended Crusher Types +------------------------------------------------------------------- +# Class Trig Spd Mon Silent Action + +184 Ext SR Slow No No Start +49 Reg S1 Slow No No Start +73 Reg WR Slow No No Start +25 Reg W1 Slow No No Start + +183 Ext SR Fast No No Start +164 Ext S1 Fast No No Start +77 Reg WR Fast No No Start +6 Reg W1 Fast No No Start + +185 Ext SR Slow No Yes Start +165 Ext S1 Slow No Yes Start +150 Ext WR Slow No Yes Start +141 Reg W1 Slow No Yes Start + +188 Ext SR ---- -- -- Stop +168 Ext S1 ---- -- -- Stop +74, Reg WR ---- -- -- Stop +57, Reg W1 ---- -- -- Stop + +Generalized Crusher Types +--------------------------------------------------------------------------- +# Class Trig Spd Mon Silent + +2F80H- Gen P1/PR Slow Yes Yes +2FFFH S1/SR Normal No No + W1/WR Fast + G1/GR Turbo + +########################## +Section 6. Stair Builders +########################## + +A stair builder is a linedef type that sets a sequence of sectors +defined by a complex rule to an ascending or descending sequence of +heights. + +The rule for stair building is as follows: + +1) The first step to rise or fall is the tagged sector. It rises or +falls by the stair stepsize, at the stair speed. + +2) To find the next step (sector) affected examine all two-sided +linedefs with first sidedef facing into the previous step for the one +with lowest linedef number. The sector on the other side of this +linedef is the next step. If no such linedef exists, stair building +ceases. + +3) If the next step is already moving, or has already risen as part +of the stair, stair building ceases. Optionally if the floor texture +of the next step is different from the previous step's the stair +building stops. Otherwise the next step moves to the height of the +previous step plus or minus the stepsize depending on the direction +the stairs build, up or down. If the motion is in the same direction +as the stairs build, it occurs at stair build speed, otherwise it is +instant. + +4) Repeat from step 2 until stair building ceases. + +---------------------------------------- +Section 6.1 Varieties of Stair Builders +---------------------------------------- + +A stair can be activated by pushing on a linedef bounding it +(generalized types only), or by pushing on a switch with the same tag +as the stair sector, or by walking over a linedef with the same tag +as the stair, or by shooting a linedef with the same tag as the +stair with an impact weapon (generalized types only). + +Only extended and generalized stair types are retriggerable. The +extended retriggerable stairs are mostly useless, though triggering a +stair with stepsize 8 twice might be used. The generalized +retriggerable stairs alternate building up and down on each +activation which is much more useful. + +A stair can build up or down (generalized types only). + +A stair can have a step size of 4, 8, 16, or 24. Only generalized +types support stepsize of 4 or 24. + +A stair can have build speeds of slow, normal, fast or turbo. Only +generalized types support speeds of normal or turbo. + +A stair can stop on encountering a different texture or ignore +(generalized types only) different textures and continue. + +Only the regular build fast, stepsize 16 stair has the property that +monsters and players can be crushed by the motion, all others do not +crush. + +---------------------------------------------------- +Section 6.2 Regular and Extended Stair Builder Types +---------------------------------------------------- + +Regular and Extended Stairs Types +------------------------------------------------------------------- +# Class Trig Dir Spd Step Ignore Mon + +258 Ext SR Up Slow 8 No No +7 Reg S1 Up Slow 8 No No +256 Ext WR Up Slow 8 No No +8 Reg W1 Up Slow 8 No No + +259 Ext SR Up Fast 16 No No +127 Reg S1 Up Fast 16 No No +257 Ext WR Up Fast 16 No No +100 Reg W1 Up Fast 16 No No + +Generalized Stairs Types +--------------------------------------------------------------------------- +# Class Trig Dir Spd Step Ignore Mon + +3000H- Gen P1/PR Up Slow 4 Yes Yes +33FFH S1/SR Dn Normal 8 No No + W1/WR Fast 16 + G1/GR Turbo 24 + +#################### +Section 7 Elevators +#################### + +An elevator is a linedef type that moves both floor and ceiling +together. All elevator linedefs are extended, there are no regular or +generalized elevator types. Instant elevator motion is not possible, +and monsters cannot activate elevators. All elevator triggers are +either switched or walkover. + +----------------------------- +Section 7.1 Elevator Targets +----------------------------- + +Next Highest Floor + +The elevator floor moves to the lowest adjacent floor higher than the +elevator's floor, the ceiling staying the same height above the floor. +If there is no higher floor the elevator doesn't move. + +Next Lowest Floor + +The elevator floor moves to the highest adjacent floor lower than the +current floor, the ceiling staying the same height above the floor. If +there is no lower floor the elevator doesn't move. + +Current Floor + +The elevator floor moves to the height of the floor on the first +sidedef of the triggering line, the ceiling remaining the same height +above the elevator floor. + +----------------------------------- +Section 7.2 Elevator Linedef Types +----------------------------------- + +Extended Elevator types +------------------------------------------------------------------- +# Class Trig Spd Target + +230 Ext SR Fast Next Highest Floor +229 Ext S1 Fast Next Highest Floor +228 Ext WR Fast Next Highest Floor +227 Ext W1 Fast Next Highest Floor + +234 Ext SR Fast Next Lowest Floor +233 Ext S1 Fast Next Lowest Floor +232 Ext WR Fast Next Lowest Floor +231 Ext W1 Fast Next Lowest Floor + +238 Ext SR Fast Current Floor +237 Ext S1 Fast Current Floor +236 Ext WR Fast Current Floor +235 Ext W1 Fast Current Floor + +################### +Section 7 Lighting +################### + +The lighting linedef types change the lighting in the tagged sector. +All are regular or extended types, there are no generalized lighting +types. All are switched or walkovers. + +----------------------------- +Section 7.1 Lighting Targets +----------------------------- + +Lights to Minimum Neighbor + +Each tagged sector is set to the minimum light level found in any +adjacent sector. The tagged sectors are changed in numerical order, +and this may influence the result. + +Lights to Maximum Neighbor + +Each tagged sector is set to the maximum light level found in any +adjacent sector. The tagged sectors are changed in numerical order, +and this may influence the result. + +Blinking + +Each tagged sector begins blinking between two light levels. The +brighter level is the light level in the tagged sector. The darker +level is the minimum neighbor light level, or 0 if all neighbor +sectors have lighting greater than or equal to the sector's at the +time of activation. The blinking is non-synchronous, beginning 1-9 +gametics after activation, with a dark period of 1 sec (35 gametics) +and a bright period of 1/7 sec (5 gametics). + +35 Units + +Each tagged sector is set to a light level of 35 units. + +255 Units + +Each tagged sector is set to a light level of 255 units. + +----------------------------------- +Section 7.2 Lighting Linedef Types +----------------------------------- + +Regular and Extended Lighting types +------------------------------------------------------------------- +# Class Trig Target + +139 Reg SR 35 Units +170 Ext S1 35 Units +79 Reg WR 35 Units +35 Reg W1 35 Units + +138 Reg SR 255 Units +171 Ext S1 255 Units +81 Reg WR 255 Units +13 Reg W1 255 Units + +192 Ext SR Maximum Neighbor +169 Ext S1 Maximum Neighbor +80 Reg WR Maximum Neighbor +12 Reg W1 Maximum Neighbor + +194 Ext SR Minimum Neighbor +173 Ext S1 Minimum Neighbor +157 Ext WR Minimum Neighbor +104 Reg W1 Minimum Neighbor + +193 Ext SR Blinking +172 Ext S1 Blinking +156 Ext WR Blinking +17 Reg W1 Blinking + + +################ +Section 8 Exits +################ + +An exit linedef type ends the current level bringing up the +intermission screen with its report of kills/items/secrets or frags +in the case of deathmatch. Obviously, none are retriggerable, and +none require tags, since no sector is affected. + +--------------------------- +Section 8.1 Exit Varieties +--------------------------- + +An exit can be activated by pushing on a switch with the exit type +or by walking over a linedef with the exit type, or by shooting a +linedef with the exit type with an impact weapon. + +An exit can be normal or secret. The normal exit simply ends the +level and takes you to the next level via the intermission screen. A +secret exit only works in a special level depending on the IWAD being +played. In DOOM the secret exits can be on E1M3, E2M5, or E3M6. In +DOOM II they can be in levels 15 and 31. If a secret exit is used in +any other level, it brings you back to the start of the current +level. In DOOM the secret exits go from E1M3 to E1M9, E2M5 to E2M9, +and E3M6 to E3M9. In DOOM II they go from 15 to 31 and from 31 to 32. +In DOOM II a normal exit from 31 or 32 goes to level 16. + +----------------------------------- +Section 8.2 Exit Linedef Types +----------------------------------- + +Regular and Extended Exit types +------------------------------------------------------------------- +# Class Trig Type + +11 Reg S1 Normal +52 Reg W1 Normal +197 Ext G1 Normal + +51 Reg S1 Secret +124 Reg W1 Secret +198 Ext G1 Secret + +###################### +Section 9 Teleporters +###################### + +A teleporter is a linedef that when crossed or switched makes the +player or monster appear elsewhere in the level. There are only +regular and extended teleporters, no generalized teleporters exist +(yet). Teleporters are the only direction sensitive walkover +triggers in DOOM (to allow them to be exited without teleporting +again). They must be crossed from the first sidedef side in order to +work. + +The place that the player or monster appears is set in one of two +ways. The more common is by a teleport thing in the sector tagged to +the teleport line. The newer completely player preserving line-line +silent teleport makes the player appear relative to the exit line +(identified by having the same tag as the entry line) with the same +orientation, position, momentum and height that they had relative to +the entry line just before teleportation. A special kind of line-line +teleporter is also provided that reverses the player's orientation by +180 degrees. + +In the case of several lines tagged the same as the teleport line, or +several sectors tagged the same, or several teleport things in the +tagged sector, in all cases the lowest numbered one is used. + +In DOOM crossing a W1 teleport line in the wrong direction used it +up, and it was never activatable. In BOOM this is not the case, it +does not teleport but remains active until next crossed in the right +direction. + +If the exit of a teleporter is blocked a monster (or anything besides +a player) will not teleport thru it. However if the exit of teleporter +is blocked a player will, including into a down crusher, a monster, +or another player. In the latter two cases the monster/player +occupying the spot dies messily, and this is called a telefrag. + +------------------------------- +Section 9.1 Teleport Varieties +------------------------------- + +A teleporter can be walkover or switched, and retriggerable or not. + +A teleporter can have destination set by a teleport thing in the +tagged sector, or by a line tagged the same as the teleport line. +These are called thing teleporters and line teleporters resp. + +A teleporter can preserve orientation or set orientation from the +position, height, and angle of the teleport thing. Note a thing +destination teleporter always sets position, though it may preserve +orientation otherwise. + +A teleporter can produce green fog and a whoosh noise, or it can be +silent, in which case it does neither. + +A teleporter can transport monsters only, or both players and +monsters. + +----------------------------------- +Section 9.2 Teleport Linedef types +----------------------------------- + +Regular and Extended Teleport types +------------------------------------------------------------------- +# Class Trig Silent Mon Plyr Orient Dest + +195 Ext SR No Yes Yes Set TP thing in tagged sector +174 Ext S1 No Yes Yes Set TP thing in tagged sector +97 Reg WR No Yes Yes Set TP thing in tagged sector +39 Reg W1 No Yes Yes Set TP thing in tagged sector + +126 Reg WR No Yes No Set TP thing in tagged sector +125 Reg W1 No Yes No Set TP thing in tagged sector +269 Ext WR Yes Yes No Set TP thing in tagged sector +268 Ext W1 Yes Yes No Set TP thing in tagged sector + +210 Ext SR Yes Yes Yes Preserve TP thing in tagged sector +209 Ext S1 Yes Yes Yes Preserve TP thing in tagged sector +208 Ext WR Yes Yes Yes Preserve TP thing in tagged sector +207 Ext W1 Yes Yes Yes Preserve TP thing in tagged sector + +244 Ext WR Yes Yes Yes Preserve Line with same tag +243 Ext W1 Yes Yes Yes Preserve Line with same tag +263 Ext WR Yes Yes Yes Preserve Line with same tag (reversed) +262 Ext W1 Yes Yes Yes Preserve Line with same tag (reversed) + +267 Ext WR Yes Yes No Preserve Line with same tag +266 Ext W1 Yes Yes No Preserve Line with same tag +265 Ext WR Yes Yes No Preserve Line with same tag (reversed) +264 Ext W1 Yes Yes No Preserve Line with same tag (reversed) + +################## +Section 10 Donuts +################## + +A donut is a very specialized linedef type that lowers a pillar in a +surrounding pool, while raising the pool and changing its texture and +type. + +The tagged sector is the pillar, and its lowest numbered line must be +two-sided. The sector on the other side of that is the pool. The pool +must have a two-sided line whose second sidedef does not adjoin the +pillar, and the sector on the second side of the lowest numbered such +linedef is the model for the pool's texture change. The model sector +floor also provides the destination height both for lowering the +pillar and raising the pool. + +No generalized donut linedefs exist, and all are switched or +walkover. + +--------------------------------- +Section 10.1 Donut Linedef types +--------------------------------- + +Regular and Extended Donut types +------------------------------------------------------------------- +# Class Trig + +191 Ext SR +9 Reg S1 +155 Ext WR +146 Ext W1 + +############################# +Section 11 Property Transfer +############################# + +These linedefs are special purpose and are used to transfer +properties from the linedef itself or the sector on its first sidedef +to the tagged sector(s). None are triggered, they simply exist. + +Extended Property Transfer Linedefs +------------------------------------------------------------------- +# Class Trig Description + +213 Ext -- Set Tagged Floor Lighting to Lighting on 1st Sidedef's Sector + +Used to give the floor of a sector a different light level from the +remainder of the sector. For example bright lava in a dark room. + +261 Ext -- Set Tagged Ceiling Lighting to Lighting on 1st Sidedef's Sector + +Used to give the ceiling of a sector a different light level from the +remainder of the sector. + +260 Ext -- Make Tagged Lines (or this line if tag==0) Translucent + +Used to make 2s normal textures translucent. If tag==0, then this linedef's +normal texture is made translucent if it's 2s, and the default translucency +map TRANMAP is used as the filter. If tag!=0, then all similarly-tagged 2s +linedefs' normal textures are made translucent, and if this linedef's first +sidedef contains a valid lump name for its middle texture (as opposed to a +texture name), and the lump is 64K long, then that lump will be used as the +translucency filter instead of the default TRANMAP, allowing different +filters to be used in different parts of the same maps. If the first side's +normal texture is not a valid translucency filter lump name, it must be a +valid texture name, and will be displayed as such on this linedef. + +242 Ext -- Set Tagged Lighting, Flats Heights to 1st Sidedef's Sector, + and set colormap based on sidedef textures. + +This allows the tagged sector to have two levels -- an actual floor and +ceiling, and another floor or ceiling where more flats are rendered. Things +will stand on the actual floor or hang from the actual ceiling, while this +function provides another rendered floor and ceiling at the heights of the +sector on the first sidedef of the linedef. Typical use is "deep water" that +can be over the player's head. + + ---------------------------------- < real sector's ceiling height + | real ceiling | < control sector's ceiling texture + | | + | | < control sector's lightlevel + | A | + | | < upper texture as colormap + | | + | | < control sector's floor texture + ---------------------------------- < control sector's ceiling height + | fake ceiling | < real sector's ceiling texture + | | + | | < real sector's lightlevel + | B | + | | < normal texture as colormap + | | + | fake floor | < real sector's floor texture + ---------------------------------- < control sector's floor height + | | < control sector's ceiling texture + | | + | | < control sector's lightlevel + | C | + | | < lower texture as colormap + | | + | real floor | < control sector's floor texture + ---------------------------------- < real sector's floor height + +Boom sectors controlled by a 242 linedef are partitioned into 3 spaces. +The viewer's xyz coordinates uniquely determine which space they are in. + +If they are in space B (normal space), then the floor and ceiling textures +and lightlevel from the real sector are used, and the colormap from the 242 +linedef's first sidedef's normal texture is used (COLORMAP is used if it's +invalid or missing). The floor and ceiling are rendered at the control +sector's heights. + +If they are in space C ("underwater"), then the floor and ceiling textures +and lightlevel from the control sector are used, and the lower texture in +the 242 linedef's first sidedef is used as the colormap. + +If they are in space A ("head over ceiling"), then the floor and ceiling +textures and lightlevel from the control sector are used, and the upper +texture in the 242 linedef's first sidedef is used as the colormap. + +If only two of these adjacent partitions in z-space are used, such as +underwater and normal space, one has complete control over floor textures, +ceiling textures, light level, and colormaps, in each of the two partitions. +The control sector determines the textures and lighting in the more "unusual" +case (e.g. underwater). + +It's also possible for the fake floor to extend below the real floor, in +which case an invisible platform / stair effect is created. In that case, +the picture looks like this (barring any ceiling effects too): + + ---------------------------------- < real sector's ceiling texture + | real ceiling = fake ceiling | + | | + | | + | B | < real sector's lightlevel + | | < normal texture's colormap + | | + | real floor | + ---------------------------------- < invisible, no texture drawn + | | + | | + | | < real sector's lightlevel + | C | < normal texture's colormap + | | + | | + | fake floor | < real sector's floor texture + ---------------------------------- < fake sector's floor height + +In this case, since the viewer is always at or above the fake floor, no +colormap/lighting/texture changes occur -- the fake floor just gets drawn +at the control sector's height, but at the real sector's lighting and +texture, while objects stand on the higher height of the real floor. + +It's the viewer's position relative to the fake floor and/or fake ceiling, +which determines whether the control sector's lighting and textures should +be used, and which colormap should be used. If the viewer is always between +the fake floor and fake ceiling, then no colormap, lighting, or texture +changes occur, and the view just sees the real sector's textures and light +level drawn at possibly different heights. + +If the viewer is below the fake floor height set by the control sector, or is +above the fake ceiling height set by the control sector, then the corresponding +colormap is used (lower or upper texture name), and the textures and lighting +are taken from the control sector rather than the real sector. They are still +stacked vertically in standard order -- the control sector's ceiling is always +drawn above the viewer, and the control sector's floor is always drawn below +the viewer. + +The kaleidescope effect only occurs when F_SKY1 is used as the control sector's +floor or ceiling. If F_SKY1 is used as the control sector's ceiling texture, +then under water, only the control sector's floor appears, but it "envelops" +the viewer. Similarly, if F_SKY1 is used as the control sector's floor texture, +then when the player's head is over a fake ceiling, the control sector's +ceiling is used throughout. + +F_SKY1 causes HOM when used as a fake ceiling between the viewer and normal +space. Since there is no other good use for it, this kaleidescope is an +option turned on by F_SKY1. Note that this does not preclude the use of sky +REAL ceilings over deep water -- this is the control sector's ceiling, the +one displayed when the viewer is underwater, not the real one. + +A colormap has the same size and format as Doom's COLORMAP. Extra colormaps +may defined in Boom by adding them between C_START and C_END markers in wads. +Colormaps between C_START and C_END are automatically merged by Boom with any +previously defined colormaps. + +WATERMAP is a colormap predefined by Boom which can be used to provide a +blue-green tint while the player is under water. WATERMAP can be modified by +pwads. + +Ceiling bleeding may occur if required upper textures are not used. + +223 Ext -- Length Sets Friction in tagged Sector,Sludge<100, Ice>100 + +The length of the linedef with type 223 controls the amount of friction +experienced by the player in the tagged sector, when in contact with the +floor. Lengths less than 100 are sticker than normal, lengths greater than +100 are slipperier than normal. The effect is only present in the tagged +sector when its friction enable bit (bit 8) in the sector type is set. +This allows the flat to be changed in conjunction with turning the effect +on or off thru texture/type changes. + + +Constant pushers +---------------- +Two types of constant pushers are available, wind and current. Depending +on whether you are above, on, or below (special water sectors) the ground +level, the amount of force varies. + +The length of the linedef defines the 'full' magnitude of the force, and +the linedef's angle defines the direction. + + line type above on under + --------- ----- -- ----- + wind 224 full half none + current 225 none full full + +The linedef should be tagged to the sector where you want the effect. The +special type of the sector should have bit 9 set (0x200). If this bit +is turned off, the effect goes away. For example, a fan creating a wind +could be turned off, and the wind dies, by changing the sector type and +clearing that bit. + +Constant pushers can be combined with scrolling effects and point +pushers. + +224 Ext -- Length/Direction Sets Wind Force in tagged Sectors + + +225 Ext -- Length/Direction Sets Current Force in tagged Sectors + +Point pushers +------------- +Two types of point pushers are available, push and pull. + +The previous implementation of these was SECTOR-SPECIFIC. The new +implementation ignores sector boundaries and provides the effect in a +circular area whose center is defined by a Thing of type 5001 (push) +or 5002 (pull). You now also don't have to set any option flags on these +Things. A new linedef type of 226 is used to control the effect, and this +line should be tagged to the sector with the 5001/5002 Thing. + +The length of the linedef defines the 'full' magnitude of the force, and +the force is inversely proportional to distance from the point source. If +the length of the controlling linedef is L, then the force is reduced to +zero at a distance of 2L. + +The angle of the controlling linedef is not used. + +The sector where the 5001/5002 Things reside must have bit 9 set (0x200) +in its type. If this is turned off, the effect goes away. + +Point pushers can be combined with scrolling effects and constant +pushers. + +226 Ext -- Length Sets Point Source Wind/Current Force in Tagged Sectors + +########################################### +Section 12 Scrolling Walls, Flats, Objects +########################################### + + +Static Scrollers + +The most basic kind of scrolling linedef causes some part of the tagged +sector or tagged wall to scroll, in proportion to the length of the +linedef the trigger is on, and according to the direction that trigger +linedef lies. For each 32 units of length of the trigger, the tagged +object scrolls 1 unit per frame. Since the length of a linedef doesn't +change during gameplay, these types are static, the scrolling effect +remains constant during gameplay. However, these effects can be combined +with, and/or canceled by, other scrollers. + + +250 -- Scroll Tagged Ceiling + +The ceiling of the tagged sector scrolls in the direction of the linedef +trigger, 1 unit per frame for each 32 units of linedef trigger length. +Objects attached to the ceiling do not move. + + +251 -- Scroll Tagged Floor + +The floor of the tagged sector scrolls in the direction of the linedef +trigger, 1 unit per frame for each 32 units of linedef trigger length. +Objects resting on the floor do not move. + + +252 -- Carry Objects on Tagged Floor + +Objects on the floor of the tagged sector move in the direction of the +linedef trigger, 1 unit per frame for each 32 units of linedef trigger +length. The floor itself does not scroll. + + +253 -- Scroll Tagged Floor, Carry Objects + +Both the floor of the tagged sector and objects resting on that floor +move in the direction of the linedef trigger, 1 unit per frame for each +32 units of linedef trigger length. + + +254 -- Scroll Tagged Wall, Same as Floor/Ceiling + +Walls with the same tag as the linedef trigger scroll at the same +rate as a floor or ceiling controlled by one of 250-253, allowing +their motion to be synchronized. When the linedef trigger is not +parallel to the wall, the component of the linedef in the direction +perpendicular to the wall causes the wall to scroll vertically. The +length of the component parallel to the wall sets the horizontal +scroll rate, the length of the component perpendicular to the wall +sets the vertical scroll rate. + + +Simple Static Scrollers + +For convenience three simpler static scroll functions are provided +for when you just need a wall to scroll and don't need to control its +rate and don't want to bother with proportionality. + +255 -- Scroll Wall Using Sidedef Offsets + +For simplicity, a static scroller is provided that scrolls the first +sidedef of a linedef, based on its x- and y- offsets. No tag is used. +The x offset controls the rate of horizontal scrolling, 1 unit per +frame per x offset, and the y offset controls the rate of vertical +scrolling, 1 unit per frame per y offset. + +48 -- Animated wall, Scrolls Left + +A linedef with this type scrolls its first sidedef left at a +constant rate of 1 unit per frame. + +85 -- Animated wall, Scrolls Right + +A linedef with this type scrolls its first sidedef right at a +constant rate of 1 unit per frame. + + + +Dynamic Scrolling + +To achieve dynamic scrolling effects, the position or rate of scrolling +is controlled by the relative position of the floor and ceiling of the +sector on the scrolling trigger's first sidedef. The direction of +scrolling remains controlled by the direction of the linedef trigger. +Either the floor or ceiling may move in the controlling sector, or +both. The control variable is the amount of change in the sum of the +floor and ceiling heights. + +All scroll effects are additive, and thus two or more effects may +reinforce and/or cancel each other. + +Displacement Scrollers + +In the first kind, displacement scrolling, the position of the scrolled +objects or walls changes proportionally to the motion of the floor or +ceiling in the sector on the first sidedef of the scrolling trigger. +The proportionality is set by the length of the linedef trigger. If it +is 32 units long, the wall, floor, ceiling, or object moves 1 unit for +each unit the floor or ceiling of the controlling sector moves. If it +is 64 long, they move 2 units per unit of relative floor/ceiling motion +in the controlling sector and so on. + +245 -- Scroll Tagged Ceiling w.r.t. 1st Side's Sector + +The tagged sector's ceiling texture scrolls in the direction of the +scrolling trigger line, when the sector on the trigger's first sidedef +changes height. The amount moved is the height change times the trigger +length, divided by 32. Objects attached to the ceiling do not move. + + +246 -- Scroll Tagged Floor w.r.t. 1st Side's Sector + +The tagged sector's floor texture scrolls in the direction of the +scrolling trigger line when the sector on the trigger's first sidedef +changes height. The amount moved is the height change times the trigger +length, divided by 32. Objects on the floor do not move. + + +247 -- Push Objects on Tagged Floor wrt 1st Side's Sector + +Objects on the tagged sector's floor move in the direction of the +scrolling trigger line when the sector on the trigger's first sidedef +changes height. The amount moved is the height change times the trigger +length, divided by 32. + + +248 -- Push Objects & Tagged Floor wrt 1st Side's Sector + +The tagged sector's floor texture, and objects on the floor, move in +the direction of the scrolling trigger line when the sector on the +trigger's first sidedef changes height. The amount moved is the height +change times the trigger length, divided by 32. + + +249 -- Scroll Tagged Wall w.r.t 1st Side's Sector + +Walls with the same tag as the linedef trigger scroll at the same +rate as a floor or ceiling controlled by one of 245-249, allowing +their motion to be synchronized. When the linedef trigger is not +parallel to the wall, the component of the linedef in the direction +perpendicular to the wall causes the wall to scroll vertically. The +length of the component parallel to the wall sets the horizontal +scroll displacement, the length of the component perpendicular to +the wall sets the vertical scroll displacement. The distance scrolled +is the controlling sector's height change times the trigger length, +divided by 32. + + +Accelerative Scrollers + +The second kind of dynamic scrollers, accelerative scrollers, also +react to height changes in the sector on the first sidedef of the +linedef trigger, but the RATE of scrolling changes, not the +displacement. That is, changing the controlling sector's height +speeds up or slows down the scrolling by the change in height +times the trigger's length, divided by 32. + +An on/off scroller can be made by using an accelerative scroller +and any linedef that changes the controlling sector's heights. +If a scroll effect which is initially on is desired, then the +accelerative scroller should be combined with a static one which +turns the scroll effect on initially. The accelerative scroller +would then need to be set up to cancel the static scroller's +effect when the controlling sector's height changes. + + +214 -- Accel Tagged Ceiling w.r.t. 1st Side's Sector + +The tagged sector's ceiling's rate of scroll changes in the direction +of the trigger linedef (use vector addition if already scrolling) by +the change in height of the sector on the trigger's first sidedef +times the length of the linedef trigger, divided by 32. For example, +if the ceiling is motionless originally, the linedef trigger is 32 +long, and the ceiling of the controlling sector moves 1 unit, the +tagged ceiling will start scrolling at 1 unit per frame. + + +215 -- Accel Tagged Floor w.r.t. 1st Side's Sector + +The tagged sector's floor's rate of scroll changes in the direction of +the trigger linedef (use vector addition if already scrolling) by the +change in height of the sector on the trigger's first sidedef times +the length of the linedef trigger, divided by 32. For example, if +the floor is motionless originally, the linedef trigger is 32 long, +and the ceiling of the controlling sector moves 1 unit, the tagged +floor will start scrolling at 1 unit per frame. + + +216 -- Accel Objects on Tagged Floor wrt 1st Side's Sector + +Objects on the tagged sector's floor's rate of motion changes in the +direction of the trigger linedef (use vector addition if already +moving) by the change in height of the sector on the trigger's first +sidedef times the length of the linedef trigger divided by 32. For +example, if the objects are motionless originally, the linedef trigger +is 32 long, and the ceiling of the controlling sector moves 1 unit, +the objects on the tagged floor will start moving at 1 unit per frame. + + +217 -- Accel Objects&Tagged Floor wrt 1st Side's Sector + +The tagged sector's floor, and objects on it, change its rate of +motion in the direction of the trigger linedef (use vector addition +if already moving) by the change in height of the sector on the +trigger's first sidedef times the length of the linedef trigger, divided +by 32. For example, if the floor and objects are motionless originally, +the linedef trigger is 32 long, and the ceiling of the controlling +sector moves 1 unit, the objects and the tagged floor will start moving +at 1 unit per frame. + + +218 -- Accel Tagged Wall w.r.t 1st Side's Sector + +Walls with the same tag as the linedef trigger increase their +scroll rate in sync with a floor or ceiling controlled by one of +214-217. When the linedef trigger is not parallel to the wall, the +component of the linedef in the direction perpendicular to the wall +causes the wall to increase its vertical scroll rate. The length of +the component parallel to the wall sets the change in horizontal +scroll rate, the length of the component perpendicular to the wall +sets the change in vertical scroll rate. The rate change is the height +change times the trigger length, divided by 32. + + +====================================================================== + +####################################################### +Section 13 Detailed Generalized Linedef Specification +####################################################### + + +BOOM has added generalized linedef types that permit the parameters +of linedef actions to be nearly independently chosen. + +To support these, DETH has been modified to support them via dialogs +for each generalized type; each dialog allows the parameters for +that type to be independently specified by choice from a array of +radio buttons. A parser has also been added to support reading back +the function of a generalized linedef from its type number. + +NOTE to wad authors: + +This requires a lot of type numbers, 20608 in all so far. Some +editors may object to the presence of these new types thru assuming +that a lookup table of size 256 suffices (or some other reason). For +those that must continue to use such an editor, it may be necessary +to stick to the old linedef types, which are still present. + +We are also providing command line tools to set these linedef types, +independent of which editor you happen to use, but they are a lot +less slick, and more difficult to use than DETH. See TRIGCALC.EXE and +CLED.EXE in the EDITUTIL.ZIP package of the BOOM distribution. + +== Generalized Linedef Ranges ======================================= + +There are types for Floors, Ceilings, Doors, Locked Doors, Lifts, +Stairs, and Crushers. The allocation of linedef type field numbers is +according to the following table: + +Type Start Length (Dec) +----------------------------------------------------------------- +Floors 0x6000 0x2000 (8192) +Ceilings 0x4000 0x2000 (8192) +Doors 0x3c00 0x0400 (1024) +Locked Doors 0x3800 0x0400 (1024) +Lifts 0x3400 0x0400 (1024) +Stairs 0x3000 0x0400 (1024) +Crushers 0x2F80 0x0080 (128) +----------------------------------------------------------------- +Totals: 0x2f80-0x7fff 0x5080 (20608) + +====================================================================== + +The following sections define the placement and meaning of the bit +fields within each linedef category. Fields in the description are +listed in increasing numeric order. + +Some nomenclature: + +Target height designations: + +H means highest, L means lowest, N means next, F means floor, C means +ceiling, n means neighbor, Cr means crush, sT means shortest +lower texture. + +Texture change designations: + +c0n change texture, change sector type to 0, numeric model change +c0t change texture, change sector type to 0, trigger model change +cTn change texture only, numeric model change +cTt change texture only, trigger model change +cSn change texture and sector type to model's, numeric model change +cSt change texture and sector type to model's, trigger model change + +A trigger model change uses the sector on the first side of the +trigger for its model. A numeric model change looks at the sectors +adjoining the tagged sector at the target height, and chooses the one +across the lowest numbered two sided line for its model. If no model +exists, no change occurs. Note that in DOOM II v1.9, no model meant +an illegal sector type was generated. + + +------------------------------------------------------------------ +generalized floors (8192 types) + +field description NBits Mask Shift +------------------------------------------------------------------ + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +model trig/numeric -or- nomonst/monst 1 0x0020 5 +direct down/up 1 0x0040 6 +target HnF/LnF/NnF/LnC/C/sT/24/32 3 0x0380 7 +change nochg/zero/txtonly/type 2 0x0c00 10 +crush no/yes 1 0x1000 12 + +DETH Nomenclature: + +W1[m] F->HnF DnS [c0t] [Cr] +WR[m] F->LnF DnN [c0n] +S1[m] F->NnF DnF [cTt] +SR[m] F->LnC DnT [cTn] +G1[m] F->C UpS [cSt] +GR[m] FbysT UpN [cSn] +D1[m] Fby24 UpF +DR[m] Fby32 UpT + +Notes: + +1) When change is nochg, model is 1 when monsters can activate trigger + otherwise monsters cannot activate it. +2) The change fields mean the following: + nochg - means no texture change or type change + zero - means sector type is zeroed, texture copied from model + txtonly - means sector type unchanged, texture copied from model + type - means sector type and floor texture are copied from model +3) down/up specifies the "normal" direction for moving. If the + target specifies motion in the opposite direction, motion is instant. + Otherwise it occurs at speed specified by speed field. +4) Speed is 1/2/4/8 units per tic +5) If change is nonzero then model determines which sector is copied. + If model is 0 its the sector on the first side of the trigger. + if model is 1 (numeric) then the model sector is the sector at + destination height on the opposite side of the lowest numbered + two sided linedef around the tagged sector. If it doesn't exist + no change occurs. + +------------------------------------------------------------------ +generalized ceilings (8192 types) + +field description NBits Mask Shift +------------------------------------------------------------------ + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +model trig/numeric -or- nomonst/monst 1 0x0020 5 +direct down/up 1 0x0040 6 +target HnC/LnC/NnC/HnF/F/sT/24/32 3 0x0380 7 +change nochg/zero/txtonly/type 2 0x0c00 10 +crush no/yes 1 0x1000 12 + +DETH Nomenclature: + +W1[m] C->HnC DnS [Cr] [c0t] +WR[m] C->LnC DnN [c0n] +S1[m] C->NnC DnF [cTt] +SR[m] C->HnF DnT [cTn] +G1[m] C->F UpS [cSt] +GR[m] CbysT UpN [cSn] +D1[m] Cby24 UpF +DR[m] Cby32 UpT + +Notes: + +1) When change is nochg, model is 1 when monsters can activate trigger + otherwise monsters cannot activate it. +2) The change fields mean the following: + nochg - means no texture change or type change + zero - means sector type is zeroed, texture copied from model + txtonly - means sector type unchanged, texture copied from model + type - means sector type and ceiling texture are copied from model +3) down/up specifies the "normal" direction for moving. If the + target specifies motion in the opposite direction, motion is instant. + Otherwise it occurs at speed specified by speed field. +4) Speed is 1/2/4/8 units per tic +5) If change is nonzero then model determines which sector is copied. + If model is 0 its the sector on the first side of the trigger. + if model is 1 (numeric) then the model sector is the sector at + destination height on the opposite side of the lowest numbered + two sided linedef around the tagged sector. If it doesn't exist + no change occurs. + +------------------------------------------------------------------ +generalized doors (1024 types) + +field description NBits Mask Shift +------------------------------------------------------------------ + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +kind odc/o/cdo/c 2 0x0060 5 +monster n/y 1 0x0080 7 +delay 1/4/9/30 (secs) 2 0x0300 8 + +DETH Nomenclature: + +W1[m] OpnD{1|4|9|30}Cls S +WR[m] Opn N +S1[m] ClsD{1|4|9|30}Opn F +SR[m] Cls T +G1[m] +GR[m] +D1[m] +DR[m] + +Notes: + +1) The odc (Open, Delay, Close) and cdo (Close, Delay, Open) kinds use + the delay field. The o (Open and Stay) and c (Close and Stay) kinds + do not. +2) The precise delay timings in gametics are: 35/150/300/1050 +3) Speed is 2/4/8/16 units per tic + +------------------------------------------------------------------ +generalized locked doors (1024 types) + +field description NBits Mask Shift +------------------------------------------------------------------ + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +kind odc/o 1 0x0020 5 +lock any/rc/yc/bc/rs/bs/ys/all 3 0x01c0 6 +sk=ck n/y 1 0x0200 9 + +DETH Nomenclature: + +W1[m] OpnD{1|4|9|30}Cls S Any +WR[m] Opn N R{C|S|K} +S1[m] F B{C|S|K} +SR[m] T Y{C|S|K} +G1[m] All{3|6} +GR[m] +D1[m] +DR[m] + +Notes: + +1) Delay for odc kind is constant at 150 gametics or about 4.333 secs +2) The lock field allows any key to open a door, or a specific key to + open a door, or all keys to open a door. +3) If the sk=ck field is 0 (n) skull and cards are different keys, + otherwise they are treated identically. Hence an "all" type door + requires 3 keys if sk=ck is 1, and 6 keys if sk=ck is 0. +4) Speed is 2/4/8/16 units per tic + +------------------------------------------------------------------- +generalized lifts (1024 types) + +field description NBits Mask Shift +------------------------------------------------------------------- + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +monster n/y 1 0x0020 5 +delay 1/3/5/10 (secs) 2 0x00c0 6 +target LnF/NnF/LnC/LnF<->HnF(perp.) 2 0x0300 8 + +DETH Nomenclature: + +W1[m] Lft F->LnFD{1|3|5|10} S +WR[m] F->NnFD{1|3|5|10} N +S1[m] F->LnCD{1|3|5|10} F +SR[m] HnF<->LnFD{1|3|5|10} T +G1[m] +GR[m] +D1[m] +DR[m] + +Notes: + +1) The precise delay timings in gametics are: 35/105/165/350 +2) Speed is 1/2/4/8 units per tic +3) If the target specified is above starting floor height, or does not + exist the lift does not move when triggered. NnF is Next Lowest + Neighbor Floor. +4) Starting a perpetual lift between lowest and highest neighboring floors + locks out all other actions on the sector, even if it is stopped with + the non-extended stop perpetual floor function. + +------------------------------------------------------------------- +generalized stairs (1024 types) + +field description NBits Mask Shift +------------------------------------------------------------------- + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +monster n/y 1 0x0020 5 +step 4/8/16/24 2 0x00c0 6 +dir dn/up 1 0x0100 8 +igntxt n/y 1 0x0200 9 + +DETH Nomenclature: + +W1[m] Stair Dn s4 S [Ign] +WR[m] Up s8 N +S1[m] s16 F +SR[m] s24 T +G1[m] +GR[m] +D1[m] +DR[m] + +Notes: + +1) Speed is .25/.5/2/4 units per tic +2) If igntxt is 1, then the staircase will not stop building when + a step does not have the same texture as the previous. +3) A retriggerable stairs builds up and down alternately on each + trigger. + +------------------------------------------------------------------- +generalized crushers (128 types) + +field description NBits Mask Shift +------------------------------------------------------------------- + +trigger W1/WR/S1/SR/G1/GR/D1/DR 3 0x0007 0 +speed slow/normal/fast/turbo 2 0x0018 3 +monster n/y 1 0x0020 5 +silent n/y 1 0x0040 6 + +DETH Nomenclature: + +W1[m] Crusher S [Silent] +WR[m] N +S1[m] F +SR[m] T +G1[m] +GR[m] +D1[m] +DR[m] + +Notes: + +1) Speed is 1/2/4/8 units per second, faster means slower damage as usual. +2) If silent is 1, the crusher is totally quiet, no start/stop sounds + + +====================================================================== + Part II Sector Types +====================================================================== + +BOOM is backward compatible with DOOM's sector types. All types 0-17 +have the same meaning they did under DOOM. Types 18-31 are reserved +for extended sector types, that work like DOOM's and share the +limitation that only one type can be active in a sector at once. No +extended sector types are implemented at this time. + +#################################### +Section 14. Regular Sector types +#################################### + +From Matt Fell's Unofficial DOOM Spec the DOOM sector types are: + +Dec Hex Class Description +------------------------------------------------------------------- + 0 00 - Normal, no special characteristic. + 1 01 Light random off + 2 02 Light blink 0.5 second + 3 03 Light blink 1.0 second + 4 04 Both -10/20% health AND light blink 0.5 second + 5 05 Damage -5/10% health + 7 07 Damage -2/5% health + 8 08 Light oscillates + 9 09 Secret a player must stand in this sector to get credit for + finding this secret. This is for the SECRETS ratio + on inter-level screens. +10 0a Door 30 seconds after level start, ceiling closes like a door. +11 0b End -10/20% health. If a player's health is lowered to less + than 11% while standing here, then the level ends! Play + proceeds to the next level. If it is a final level + (levels 8 in DOOM 1, level 30 in DOOM 2), the game ends! +12 0c Light blink 0.5 second, synchronized +13 0d Light blink 1.0 second, synchronized +14 0e Door 300 seconds after level start, ceiling opens like a door. +16 10 Damage -10/20% health + +17 11 Light flickers on and off randomly + +Note that BOOM will NEVER exit the game on an illegal sector type, as +was the case with DOOM. The sector type will merely be ignored. + +#################################### +Section 15. Generalized sector types +#################################### + +BOOM also provides generalized sector types, based on bit fields, +that allow several sector type properties to be independently +specified for a sector. Texture change linedefs can be used to switch +some or all of these properties dynamically, outside lighting. + +Bits 0 thru 4 specify the lighting type in the sector, the same codes +that DOOM used are employed: + +Dec Bits 4-0 Description +------------------------------------------------------------------- +0 00000 Normal lighting +1 00001 random off +2 00010 blink 0.5 second +3 00011 blink 1.0 second +4 00100 -10/20% health AND light blink 0.5 second +8 01000 oscillates +12 01100 blink 0.5 second, synchronized +13 01101 blink 1.0 second, synchronized +17 10001 flickers on and off randomly + +Bits 5 and 6 set the damage type of the sector, with the usual +5/10/20 damage units per second. + +Dec Bits 6-5 Description +------------------------------------------------------------------- +0 00 No damage +32 01 5 units damage per sec (halve damage in TYTD skill) +64 10 10 units damage per sec +96 11 20 units damage per sec + +Bit 7 makes the sector count towards the secrets total at game end + +Dec Bit 7 Description +------------------------------------------------------------------- +0 0 Sector is not secret +128 1 Sector is secret + +Bit 8 enables the ice/mud effect controlled by linedef 223 + +Dec Bit 8 Description +------------------------------------------------------------------- +0 0 Sector friction disabled +256 1 Sector friction enabled + +Bit 9 enables the wind effects controlled by linedefs 224-226 + +Dec Bit 9 Description +------------------------------------------------------------------- +0 0 Sector wind disabled +512 1 Sector wind enabled + +Bits 10 and 11 are not implemented yet, but are reserved for use in +sound control. Bit 10 will suppress all sounds within the sector, +while bit 11 will disable any sounds due to floor or ceiling motion +by the sector. + +====================================================================== + Part III Linedef Flags +====================================================================== + +Only one new linedef flag is implemented, called PassThru, which +allows a push or switch linedef trigger to pass the push action thru +it to ones within range behind it. In this way BOOM is capable of +setting off many actions with a single push. Note that the limitation +of one floor action, one ceiling action, and one lighting action per +sector affect still applies however. + +The new linedef flag is bit 9, value 512, in the linedef flags word. + +====================================================================== + Part IV Thing Flags +====================================================================== + +BOOM has implemented two new thing flags, "not in DM" and "not in +COOP", which in combination with the existing "not in Single" flag, +usually called "Multiplayer", allow complete control over a level's +inventory and monsters, in any game mode. + +If you want a thing to be only available in Single play, you set both +the "not in DM" and "not in COOP" flags. Other combinations are +similar. + +"not in DM" is bit 5, value 32, in the thing flags word. +"not in COOP" is bit 6, value 64, in the thing flags word. + +====================================================================== + Part V Thing Types +====================================================================== + +BOOM has implemented two new thing types as well, MT_PUSH (5001), and +MT_PULL(5002). These control the origin of the point source wind +effect controlled by linedef types 225 and 226, and set whether the +wind blows towards or away from the origin depending on which is +used. + +====================================================================== + Part VI BOOM Predefined Lumps +====================================================================== + +BOOM supports resources embedded in the .EXE that are loaded before +all other resources. They can be replaced by resources of the same +name in the IWAD or add-on PWADs. These resources can be extracted +into a wad thru use of the command: + +BOOM -dumplumps predef.wad + +You can then extract the resources from predef.wad to alter them for +replacement purposes. + +Menu text +--------- +M_HORSEN Mouse horizontal sensitivity menu +M_VERSEN Mouse vertical sensitivity menu +M_SETUP Setup menu entry in main menu +M_KEYBND Key Bindings entry in setup menu +M_AUTO Automap entry in setup menu +M_CHAT Chat string entry in setup menu +M_ENEM Enemies options entry in setup menu +M_STAT Status bar and Hud entry in setup menu +M_WEAP Weapons entry in setup menu +M_MESS Message option entry in setup menu +M_COLORS Palette color picker diagram +M_PALNO Xed-out symbol for unused automap features +M_BUTT1 Setup reset button off state +M_BUTT2 Setup reset button on state + +Font chars +---------- +STCFN096 ` character for standard DOOM font + +STBR123 HUD font bargraph char, full, 4 vertical bars +STBR124 HUD font bargraph char, partial, 3 vertical bars +STBR125 HUD font bargraph char, partial, 2 vertical bars +STBR126 HUD font bargraph char, partial, 1 vertical bars +STBR127 HUD font bargraph char, empty, 0 vertical bars + +DIG0 HUD font 0 char +DIG1 HUD font 1 char +DIG2 HUD font 2 char +DIG3 HUD font 3 char +DIG4 HUD font 4 char +DIG5 HUD font 5 char +DIG6 HUD font 6 char +DIG7 HUD font 7 char +DIG8 HUD font 8 char +DIG9 HUD font 9 char +DIGA HUD font A char +DIGB HUD font B char +DIGC HUD font C char +DIGD HUD font D char +DIGE HUD font E char +DIGF HUD font F char +DIGG HUD font G char +DIGH HUD font H char +DIGI HUD font I char +DIGJ HUD font J char +DIGK HUD font K char +DIGL HUD font L char +DIGM HUD font M char +DIGN HUD font N char +DIGO HUD font O char +DIGP HUD font P char +DIGQ HUD font Q char +DIGR HUD font R char +DIGS HUD font S char +DIGT HUD font T char +DIGU HUD font U char +DIGV HUD font V char +DIGW HUD font W char +DIGX HUD font X char +DIGY HUD font Y char +DIGZ HUD font Z char +DIG45 HUD font - char +DIG47 HUD font / char +DIG58 HUD font : char +DIG91 HUD font [ char +DIG93 HUD font ] char + +Status bar +---------- +STKEYS6 Both blue keys graphic +STKEYS7 Both yellow keys graphic +STKEYS8 Both red keys graphic + +Box chars +--------- +BOXUL Upper left corner of box +BOXUC Center of upper border of box +BOXUR Upper right corner of box +BOXCL Center of left border of box +BOXCC Center of box +BOXCR Center of right border of box +BOXLL Lower left corner of box +BOXLC Center of lower border of box +BOXLR Lower right corner of box + +Lumps missing in v1.1 +--------------------- +STTMINUS minus sign for neg frags in status bar +WIMINUS minus sign for neg frags on end screen +M_NMARE nightmare skill menu string +STBAR status bar background +DSGETPOW sound for obtaining power-up + +Text end screen +--------------- +ENDBOOM Text displayed at end of game, 80X25 with attributes + +Sprites +------- +TNT1A0 Invisible sprite for push/pull controller things + +Switches and Animations +----------------------- +SWITCHES Definition of switch textures recognized +ANIMATED Definition of animated textures and flats recognized + +SWITCHES format: + +The SWITCHES lump makes the names of the switch textures used in the +game known to the engine. It consists of a list of records each 20 +bytes long, terminated by an entry (not used) whose last 2 bytes are 0. + +9 bytes Null terminated string naming "off" state texture for switch +9 bytes Null terminated string naming "off" state texture for switch +2 bytes Short integer for the IWADs switch will work in + 1=shareware + 2=registered/retail DOOM or shareware + 3=DOOM II, registered/retail DOOM, or shareware + 0=terminates list of known switches + +ANIMATED format: + +The ANIMATED lump makes the names of the animated flats and textures +known to the engine. It consists of a list of records, each 23 bytes +long, terminated by a record (not used) whose first byte is -1 (255). + +1 byte -1 to terminate list, 0 if a flat, 1 if a texture +9 bytes Null terminated string naming last texture/flat in animation +9 bytes Null terminated string naming first texture/flat in animation +4 bytes Animation speed, number of frames between animation changes + +The utility package contains a program, SWANTBLS.EXE that will +generate both the SWITCHES and ANIMATED lumps from a text file. An +example is provided, DEFSWANI.DAT that generates the standard set of +switches and animations for DOOM. + +Colormaps +--------- +WATERMAP Custom greenish colormap for underwater use + +The WATERMAP lump has the same format as COLORMAP, 34 tables of 256 +bytes each, see the UDS for details. Note that colormaps you add to +a PWAD must be between C_START and C_END markers. + +The utility package contains a program, CMAPTOOL.EXE, that will +generate custom colormaps for use with BOOM. It also includes 7 +premade colormaps, and an add-on wad containing them. + + +Color translation tables +------------------------ +CRBRICK Translates red range to brick red +CRTAN Translates red range to tan +CRGRAY Translates red range to gray +CRGREEN Translates red range to green +CRBROWN Translates red range to brown +CRGOLD Translates red range to dark yellow +CRRED Translates red range to red range (no change) +CRBLUE Translates red range to light blue +CRBLUE2 Translates red range to dark blue (status bar numerals) +CRORANGE Translates red range to orange +CRYELLOW Translates red range to light yellow + +These tables are used to translate the red font characters to other +colors. They are made replaceable in order to support custom palettes +in TC's better. Note however that the font character graphics must +be defined using the palette indices for the standard red range of the +palette 176-191. + +-END OF DOCUMENT---------------------------------------------------------- + \ No newline at end of file diff --git a/Documents/Doom_specs.txt b/Documents/Doom_specs.txt new file mode 100644 index 0000000..e8d0395 --- /dev/null +++ b/Documents/Doom_specs.txt @@ -0,0 +1,3801 @@ + T H E U N O F F I C I A L +================= =============== =============== ================ +\\ . . . . . . .\\ //. . . . . . .\\ //. . . . . . .\\ \\. . .\\// . .// +||. . ._____. . .|| ||. . ._____. . .|| ||. . ._____. . .|| || . . .\/ . ..|| +|| . .|| ||. . || || . .|| ||. . || || . .|| ||. . || ||. . . . . . .|| +||. . || || . .|| ||. . || || . .|| ||. . || || . .|| || . | . . . ..|| +|| . .|| ||. _-|| ||-_ .|| ||. . || || . .|| ||. _-|| ||-_.|\ . . . .|| +||. . || ||-' || || `-|| || . .|| ||. . || ||-' || || `|\_ . .|..|| +|| . _|| || || || || ||_ . || || . _|| || || || |\ `-_/| .|| +||_-' || .|/ || || \|. || `-_|| ||_-' || .|/ || || | \ / -_.|| +|| ||_-' || || `-_|| || || ||_-' || || | \ / | '|| +|| `' || || `' || || `' || || | \ / | || +|| .===' `===. .==='.`===. .===' /==. | \/ | || +|| .==' \_|-_ `===. .===' _|_ `===. .===' _-|/ `== \/ | || +|| .==' _-' `-_ `=' _-' `-_ `=' _-' `-_ /| \/ | || +|| .==' _-' `-__\._-' `-_./__-' `' |. /| | || +||.==' _-' `' | /==.|| +==' _-' S P E C S \/ `== +\ _-' `-_ / + `'' ``' + Release v1.666 - December 15th, 1994 + Written by: Matthew S Fell (msfell@aol.com) + + "The poets talk about love, ...but what I talk about is DOOM, + because in the end, DOOM is all that counts." + - Alex Machine/George Stark/Stephen King, _The Dark Half_ +------------------------------------------------------------------------------ + + + + + + + + +---------- +DISCLAIMER +---------- + + These specs are to aid in informing the public about the games +DOOM and DOOM 2, by id Software. In no way should this promote your +killing yourself, killing others, or killing in any other fashion. +Additionally, the author does not claim ANY responsibility +regarding ANY illegal activity concerning this file, or indirectly related +to this file. The information contained in this file only reflects +id Software indirectly, and questioning id Software regarding any +information in this file is not recommended. + +---------------- +COPYRIGHT NOTICE +---------------- + +This article is Copyright 1994 by Matt Fell. All rights reserved. +You are granted the following rights: + +I. To make copies of this work in original form, so long as + (a) the copies are exact and complete; + (b) the copies include the copyright notice and these paragraphs + in their entirety; + (c) the copies give obvious credit to the author, Matt Fell; + (d) the copies are in electronic form. +II. To distribute this work, or copies made under the provisions + above, so long as + (a) this is the original work and not a derivative form; + (b) you do not charge a fee for copying or for distribution; + (c) you ensure that the distributed form includes the copyright + notice, this paragraph, the disclaimer of warranty in + their entirety and credit to the author; + (d) the distributed form is not in an electronic magazine or + within computer software (prior explicit permission may be + obtained from the author); + (e) the distributed form is the NEWEST version of the article to + the best of the knowledge of the distributor; + (f) the distributed form is electronic. + + You may not distribute this work by any non-electronic media, +including but not limited to books, newsletters, magazines, manuals, +catalogs, and speech. You may not distribute this work in electronic +magazines or within computer software without prior written explicit +permission. These rights are temporary and revocable upon written, oral, +or other notice by the author. This copyright notice shall be governed +by the laws of the state of Ohio. + If you would like additional rights beyond those granted above, +write to the author at "msfell@aol.com" on the Internet. + + +-------- +CONTENTS +-------- + +[1] Introduction + [1-1] id Software's Copyright + [1-2] What's New +[2] The Basics + [2-1] Pwads + [2-2] DOOM version information + [2-3] Terminology conventions +[3] List of DOOM.WAD Directory Entries +[4] The Levels + [4-1] ExMy or MAPxy + [4-2] THINGS + [4-2-1] Thing Types + [4-2-2] Thing Sizes + [4-2-3] Thing Options + [4-3] LINEDEFS + [4-3-1] Linedef Flags + [4-3-2] Linedef Types + [4-4] SIDEDEFS + [4-5] VERTEXES + [4-6] SEGS + [4-7] SSECTORS + [4-8] NODES + [4-9] SECTORS + [4-9-1] Special Sector Types + [4-10] REJECT + [4-11] BLOCKMAP +[5] Graphics + [5-1] Picture Format +[6] Flats (Floor and Ceiling Textures) + [6-1] Animated Floors, see [8-4-1] +[7] Sounds and Music + [7-1] PC Speaker Sound Effects + [7-2] Soundcard Sound Effects + [7-3] Music + [7-4] GENMIDI + [7-5] DMXGUS +[8] Miscellaneous Lumps + [8-1] PLAYPAL + [8-2] COLORMAP + [8-3] ENDOOM + [8-4] TEXTURE1 and TEXTURE2 + [8-4-1] Animated Walls + [8-4-2] The SKY Textures + [8-5] PNAMES + [8-6] DEMOs + [8-6-1] Level changes from 1.2 to 1.666 DOOM.WAD +[9] Savegame Files + +[10] The DOOM.EXE File + [10-1] Version 1.2 DOOM.EXE Data Segment Overview + [10-1] Version 1.666 DOOM.EXE Data Segment Overview + [10-3] Detail on some EXE Data Structures + +APPENDICES + +[A-1] Backus-Naur Form definitions of wad elements +[A-2] Engine limits +[A-3] DOOM.WAD changes and errors +[A-3] A BLOCKMAP algorithm +[A-4] Other helpful documents +[A-5] Acknowledgments + + +------------------------- +CHAPTER [1]: Introduction +------------------------- + + DOOM is simply an all-time great game. A big factor in its success +and durability is the plethora of user-created add-ons. id Software +tacitly encouraged them by including the -FILE parameter, and by having +a data format that is both straightforward and easy to understand. +DOOM is basically two files, DOOM.EXE and DOOM.WAD. DOOM.EXE is the +"engine" which does the display and controls the game, and DOOM.WAD has +ALL of the graphics, sound, and map/level data that the engine uses. +The -FILE parameter allows small or large external "WAD" files to be +incorporated, changing any number of those graphics, sounds, and maps. + DOOM 2 has many things in common with DOOM. It uses the same EXE file +as version 1.666 of DOOM, and the WAD file format is the same. It's just +the contents of the WAD file that are different; there are more enemies! +more pictures! more weapons! more stuff!! + + This document explains in great detail nearly all aspects of the doom +WAD file format. And a new chapter (10) documents the location of data +within DOOM.EXE itself, so that various unusual game-play changes can +be made. This information has been updated to apply to DOOM 2 as well +as DOOM 1. + The specs were originally conceived as an aid to programmers making +DOOM utilities, especially map-editors. Coincidentally, there might also +be information useful to advanced level designers and players. + The material herein is somewhat technical and it is not recommended for +beginners, unless they are determined. There are some other very useful +documents in existence; I list the ones I know of in Appendix [A-3]. + + +[1-1]: id Software's Copyright and the Shareware Version +======================================================== + + My comments and statements are by no means official, and the excerpts +below are just the parts that I think are relevant to these specs. Please +read the LICENSE.DOC and README.EXE that came with DOOM. + + The LICENSE.DOC says: + + "You shall not: rent, lease, sell, distribute for money or other + consideration, modify, translate, disassemble, decompile, reverse + engineer, or create derivative works based upon the Software. + Notwithstanding the foregoing, you may create a map editor, modify + maps and make your own maps (collectively referenced as the + "Permitted Derivative Works") for the Software. You may not sell + or distribute any Permitted Derivative Works but you may exchange + the Permitted Derivative Works at no charge amongst other end-users. + In order to commercially distribute any such map editor or data + utility you must first sign ID's Data Utility License and ID + reserves the right to deny authorization to commercial distribute + the any such map editor or data utility. You may request a copy of + the Data Editor License from ID" + + "(except for backup purposes) You may not otherwise reproduce, copy + or disclose to others, in whole or in any part, the Software." + + The README says: + + "id Software respectfully requests that you do not modify the levels + for the shareware version of DOOM. We feel that the distribution of + new levels that work with the shareware version of DOOM will lessen a + potential user's incentive to purchase the registered version. + + "If you would like to work with modified levels of DOOM, we encourage + you to purchase the registered version of the game." + + If you are making add-ons, plan on them not working on the shareware +game, and plan on including statements about the trademarks and copyrights +that id Software owns, as well as disclaimers that they won't support your +add-on product, nor will they support DOOM after it has been modified. + + +[1-2]: What's New +================= + + Each new version of these specs renders the previous version obsolete. + This document has grown considerably in size, and to fight that trend, +I'll not discuss it any more. + It has now been five months since the specs were updated. I won't talk +about that either. I'll just apologize for not releasing updates in late +May and July like I should have. Those updates would have been numbered +1.4 and 1.5, so perhaps that's why this is version 1.666. + Here's some of the new or revised sections since the 1.3 specs: + + - DOOM 2 info, especially in [4-2-1] and [4-3-2] + - lots of info on the DOOM.EXE file in [10] + - BNF style definitions in [A-1] + - DOOM engine limits in [A-2] + - the DEMO format [8-6] + - the ENDOOM lump [8-3] + - comprehensive list of WAD lumps in [3] + + - many parts rewritten for clarity + - changes in terminology to reflect id's where possible, and to be + more consistent throughout + - reformatted again, errors and typos corrected + + +------------------- +CHAPTER [2]: Basics +------------------- + + The starting point is the concept of "WAD". It is not an acronym, it +just means a collection of data. Throughout this document, "WAD" or "wad" +will mean a file with a .WAD extension that contains data for the doom +engine to use. + A WAD file has three parts: + + (1) a twelve-byte header + (2) one or more "lumps" + (3) a directory or "info table" that contains the names, offsets, and + sizes of all the lumps in the WAD + + The header consists of three four-byte parts: + + (a) an ASCII string which must be either "IWAD" or "PWAD" + (b) a 4-byte (long) integer which is the number of lumps in the wad + (c) a long integer which is the file offset to the start of + the directory + + The directory has one 16-byte entry for every lump. Each entry consists +of three parts: + + (a) a long integer, the file offset to the start of the lump + (b) a long integer, the size of the lump in bytes + (c) an 8-byte ASCII string, the name of the lump, padded with zeros. + For example, the "DEMO1" entry in hexadecimal would be + (44 45 4D 4F 31 00 00 00) + + A "lump" is just data, in one of several different formats. Some +contain sound data, some contain graphics data, some contain level +structure data, etc. These specs are mostly concerned with delineating +the formats of the various lump types. There are 10 different types of +map/level lump formats, each has a section in chapter [4] (sections 2-11). +There are 13 other types of lump formats, listed below with the section +where the format is explained, and the actual lump names in parentheses. +Also, Appendix [A-1] has definitions of the structures of all these +WAD elements. + + [8-1] palettes (PLAYPAL) + [8-2] colormaps (COLORMAP) + [8-3] dos exit text (ENDOOM) + [8-6] demos (DEMO1, DEMO2, and DEMO3) + [8-4] texture composition list (TEXTURE1 and TEXTURE2) + [8-5] wall patch "number for name" indexing list (PNAMES) + [7-4] midi mapping (GENMIDI) + [7-5] Gravis UltraSound patch mappings (DMXGUS) + [7-1] PC speaker sound effects (DP*) + [7-2] Soundcard sound effects (DS*) + [7-3] songs (D_*) + [6] flats (lumpnames between F_START and F_END) + [5] all other graphics (all other lumps) + + The "marker" and "label" lump names like "S_START" and "E1M1" (or +"MAP01") do not actually refer to lumps - they have zero length. They +merely serve to mark the beginning or end of a set of related lumps. + + It is possible to include other directory entries and lumps in a wad +file, e.g. an entry called CLOWNS could point to a lump that includes the +level creator's name, date of completion, and the latitude and longitude +of the Holy Grail. None of these non-standard entries will be used by +DOOM, nor will they cause it problems. + + +[2-1]: Pwads +============ + + There are two types of wad files. The original DOOM.WAD and DOOM2.WAD +files are "IWAD"s, or "Internal wads", meaning they contain all of the +data necessary to play. The other type is the "PWAD" file, "Patch wad", +an external file which has the same structure, but with far fewer entries +in the directory. The data in a pwad is substituted for the original data +in the DOOM.WAD, thus allowing for much easier distribution of new levels. +Only those resources listed in the pwad's directory are changed, +everything else is loaded from the IWAD. All external wads should have +the "PWAD" indicator, as id has requested. + A typical pwad might contain new data for a single level, in which +case it would contain the 10 lumps and 11 directory entries necessary +to define the level (as described in chapter [4]). + A pwad file may contain more than one level or parts of levels, in +addition to replacement graphics, sounds, etc. (as of version 1.666, +sprites and flats do NOT work from pwads - see chapter [5] for more). +In fact, there is apparently no limit to how many entries may be in a +pwad. The original doom levels are pretty complicated, and they are +from 50-200 kilobytes each in size, uncompressed. + Pwad files need to have the extension .WAD to work. Many of them have +descriptive names, e.g. if J.R.R. Tolkien made a new level, he might call +it GONDOLIN.WAD - to use this level, a player would type + + DOOM -FILE GONDOLIN.WAD + +at the command line, along with any other parameters. More than one +external file can be added, thus in general: + + DOOM -FILE [pwad_filename] [pwad_filename] [pwad_filename] ... + + If there are duplicate entries amongst the directories of all the +wads being "added", the pwads listed LAST take precedence. + When the game loads, a "modified game" message will appear if there +are any pwads involved, reminding the player that id Software will not +give technical support or answer questions regarding modified levels. + With DOOM version 1.666, there is also the @responsefile option for +listing command line parameters and -file specifications. See the DOOM +README or the latest FAQ for more information. Also, there are numerous +"front-end" utilities that make it easier to play pwads, e.g. load several +external files at once, warp to certain levels, specify options, etc. + + +[2-2]: DOOM versions +==================== + +Version Date Time Is + +1.0 10dec93 01:00 first release (aka DOOM Operating System 0.99) +1.1 16dec93 01:10 slightly different from 1.0, newer dos extender +1.2 17feb94 01:20 modem play added! +1.3 - - unauthorized beta release +1.4 28jun94 01:04 shareware beta +1.5 ??jul94 ? shareware beta +1.6 03aug94 01:06 shareware beta +1.666 01sep94 16:42 registered full upgrade! +1.666 ? ? DOOM 2! + + The important releases as of this writing are 1.2 and 1.666. Hopefully, +everyone will move up to 1.666 soon; it has many important improvements +over 1.2. The 1.4, 1.5, and 1.6 shareware betas contained increasing +amounts of the stuff that's now in 1.666, but there's no information +here about what exactly those changes were. One, I didn't keep track, +and two, they're not really important. + See appendix [A-3] for some miscellany about what has changed from +version to version. + + +[2-3]: Terminology conventions +============================== + + Throughout this document, I will use the following conventions for +numbers and variable types: + +(1) Most numbers will be decimal. Hexadecimal numbers will usually be + labeled thus: 0xffff or $ffff. But sometimes I'll say "hex ...". + And in tablature form, a column heading "HEX" indicates all the + numbers in that column are hexadecimal. +(2) "byte" is of course the generic, 8 bits. It will usually mean one + 8-bit component of a larger data type, or an 8-bit ASCII + character, or some such. As a number, it is an unsigned 8-bit + integer (0..255). +(3) "short" is a signed 16-bit integer (-32768..32767), stored in + lo-hi format. +(4) "ushort" or "unsigned short" is an unsigned 16-bit integer (0..65535). +(5) "integer" or "long" is a signed 32-bit integer. If you don't read + this first, my use of the word "integer" might not be immediately + apparent. +(6) "string8" or "8-byte string" is an ASCII string with length between + 1 and 8 characters inclusive. If its length is less than 8, the + remaining bytes are zeros. +(7) The first byte of a file or any data structure, for addressing and + offset purposes, is byte #0, not byte #1. +(8) Some abbreviations I use: E1, E2, and E3 refer to episodes 1, 2, and + 3 respectively. "The EXE" means the file DOOM.EXE. +(666) Any reference to this number is purely intentional. + + +----------------------------------------------- +CHAPTER [3]: List of DOOM.WAD Directory Entries +----------------------------------------------- + + There are over 2000 entries in the DOOM.WAD directory. Most of them +can be easily described in groups, and so are not explicitly mentioned +in this list. This includes the sprites (see [4-2-1] for sprite names +and [5] for the sprite lump naming system), the wall patches ([8-4] and +[8-5] have more info), the flats (chapter [6]), the sounds and songs +(chapter [7]), and the map data lumps (chapter [4]). All the others +are listed here. + There have been several changes from version to version. The "Ver" +column indicates in which doom versions the lump exists: + +___ no indication means it is in every version. Most are like this. +1.1 it was in 1.0 and 1.1, but not in 1.2 and later. It is obsolete. +1.2 it is not in 1.1 and earlier, only in 1.2 and up. +1.6 it is not in 1.2 and earlier, only in 1.666 and up. +r it is only in the registered version, not the shareware. +1 it is only in DOOM 1, it is not in DOOM 2. +2 it is only in DOOM 2, it is not in DOOM 1. + + In the lump names, x (and y and e) indicates variable ASCII +characters, and * can be replaced by an ASCII string (up to the +8-byte lumpname limit). + +LumpName Ver Description +-------- --- ----------- +PLAYPAL fourteen 256 color palettes. See [8-1]. +COLORMAP maps colors in the palette down to darker ones. [8-2]. +ENDOOM text message displayed when you exit to DOS. [8-3]. +DEMOx x=1-3, are the demos. [8-6]. +ExMy subsequent entries define a single level's data. [4]. +MAPxy 2 like ExMy, but for DOOM 2. +TEXTURE1 list of wall texture names and their composition data, + used in the SIDEDEF portion of each level. [8-4]. +TEXTURE2 r more wall texture compositions. +PNAMES lists all lump names used as wall patches. [8-5]. +GENMIDI General Midi standard instrument data. [7-3]. +DMXGUS Gravis Ultra Sound instrument patches. [7-4]. + +D_ExMy music for a doom 1 level. [7-2]. +D_INTER music played on the summary screen between levels. +D_INTRO music played when the game starts. +D_INTROA 1.2 more introductory music. +D_VICTOR music played on the victory text-screen after an episode. +D_BUNNY r music for while a certain rabbit has his story told... +D_* 2 music for a doom 2 level. + +DP_* vary PC speaker sound effects. [7-1]. +DS_* vary Soundcard sound effects. [7-1]. + + All the remaining entries in the directory, except the flats between +F_START and F_END, and the "markers" like S_START, refer to lumps which +are pictures, in the doom/wad graphic format described in chapter [5]. +The flats are also pictures, but in a format described in chapter [6]. + The next seven are full screen (320 by 200 pixel) pictures. After +that, ST* are status-bar pictures, WI* are for the screens between +levels, and M_* are for menus. + +HELP1 Ad-screen says Register!, with some screen shots. +HELP2 Actual help, all the controls explained. +TITLEPIC Maybe this is the title screen? Gee, I dunno... +CREDIT People at id Software who created this great game. +VICTORY2 r Screen shown after a victorious end to episode 2. +PFUB1 r A nice little rabbit minding his own peas and queues... +PFUB2 r ...a hint of what's waiting in Doom 2. + +ENDx r x=0-6, big red "THE END" gets shot up. +AMMNUMx x=0-9. Small grey digits for ammo count (15/200 etc). +STxBARy 1.1 x=M or A, y= L or R. Status bar used to be in pieces. +STCHAT 1.1 Status bar used to have a "chat" box. +STRSNUMx 1.1 x=0-9. Small red digits. +STWEAPx 1.1 x=0-5. COOL little weapon icons. Why'd they drop them? +STFRAGS 1.1 Tiny "FRAG" to be placed on top of part of status bar. +STBAR 1.2 Status Bar as used in deathmatches. +STGNUMx x=0-9. Small grey digits used on the "Arms" panel. +STTNUMx x=0-9. Big red digits used for Armor, Health, etc. +STTMINUS 1.6 Big red "-" used for negative frags. +STYSNUMx x=0-9. Small yellow digits used on the "Arms" panel. +STTPRCNT Big red % used in Armor and Health. +STKEYSx x=0-5. Blue/Yellow/Red Keycards and Skullkeys. +STDISK Disk, used at bottom right corner during disk accesses. +STCDROM 1.6 CD, used during CD-ROM accesses. +STARMS "Arms" panel which replaces "Frags" in non-deathmatch. +STCFNxxx xxx=033-095, also 121. Small red ASCII characters. +STFBx x=0-3. Green/black/brown/red squares, for ST player faces. +STPBx x=0-3. Squares with bottoms, for inter-level screens. +STFSTxy x=0-4, y=0-2. Player face. x=0 is 100% health...x=4 is + very low health. y=0 is glancing right, y=2 left. +STFTLx0 x=0-4. Face looking left, player hurt from that direction. +STFTRx0 x=0-4. Face looking right. +STFOUCHx x=0-4. Face looking surprised (hurt bad). +STFEVLx x=0-4. Face with a grin (when pick up new weapons). +STFKILLx x=0-4. Face with a grimace (when killing foes). +STFGOD0 Face with yellow eyes (invulnerable). +STFDEAD0 Dead face. +BRDR_* Tiny pictures used as a border between a less-than-full + screen view and the "outside" marbleized zone. TL is + top left, BR bottom right, you can guess the rest. +WIBONUS 1.1 Medium sized red text "BONUS" +WISCORE 1.1 "SCORE" +WIMSTPx 1.1 x=0-3. Red text "ONE" to "FOUR". +WIMSTBx 1.1 x=0-3. Grey text "ONE" to "FOUR". +WIMINUS 1.6 Small red "-" used for negative frags. +WIMAPx x=0-2. 320x200 maps used on inter-level screens for e1,2,3. +WIAe0x0y patches used to animate inter-level maps. +WIURH0 "YOU ARE HERE" with an arrow pointing left. +WIURH1 "YOU ARE HERE" with an arrow pointing right. +WISPLAT Splat mark that indicates a completed level. +WIOSTK "KILLS" +WIOSTI "ITEMS" +WIF "FINISHED" +WIMSTT "TOTAL" +WIOSTS "SCRT" +WIOSTF "F." +WITIME "TIME" +WIPAR "PAR" +WIMSTAR "YOU" +WIPCNT "%" +WINUMx x=0-9. Medium sized red digits. +WICOLON ":" +WISUCKS "SUCKS" +WIFRGS "FRAGS" +WILVxy x=0-2, y=0-8. E(x+1)M(y+1) level names in grey/white letters. +WIPx x=1-4. Red "P1" - "P4", for multiplayer summaries. +WIBPx x=1-4. Grey "P1" - "P4" +WIKILRS Small red "KILLERS" going sideways up, for deathmatches. +WIVCTMS Small red "VICTIMS" for the top of the deathmatch chart. +WISCRT2 "SECRET" +WIENTER "ENTERING" +M_DOOM The DOOM logo +M_RDTHIS Big red "Read This!" +M_OPTION "Options" +M_QUITG "Quit Game" +M_NGAME "New Game" +M_SKULL1 The skull indicator with eyes lit. +M_SKULL2 The skull indicator with eyes unlit. +M_THERMO The marker on e.g. the Sfx volume "thermometer". +M_THERMR The right end of the thermometer. +M_THERML The left end. +M_THERMM The middle, repeated over and over. +M_ENDGAM "End Game" +M_PAUSE "Pause" +M_MESSG "Messages:" +M_MSGON "on" +M_MSGOFF "off" +M_EPISOD "Which Epsiode?" +M_EPI1 "Knee-Deep In The Dead" +M_EPI2 "The Shores Of Hell" +M_EPI3 "Inferno" +M_HURT "Hurt me plenty." +M_JKILL "I'm too young to die." +M_ROUGH "Hey, not too rough." +M_SKILL "Choose Skill Level:" +M_NEWG "NEW GAME" (title of New Game menu) +M_ULTRA "Ultra-Violence." +M_NMARE 1.2 "Nightmare!" +M_SVOL "Sound Volume" +M_OPTTTL "OPTIONS" (title of Options menu) +M_SAVEG "Save Game" +M_LOADG "Load Game" +M_DISP "Display" +M_MSENS "Mouse sensitivity" +M_GDHIGH "high" +M_GDLOW "low" +M_DETAIL "Graphic Detail:" +M_DISOPT "DISPLAY OPTIONS" +M_SCRNSZ "Screen Size" +M_SGTTL "SAVE GAME" +M_LGTTL "LOAD GAME" +M_SFXVOL "Sfx Volume" +M_MUSVOL "Music Volume" +M_LSLEFT Load/save box, left part +M_LSCNTR Load/save box, center part (repeated) +M_LSRGHT Load/save box, right part + + The following entries are markers that do not point to a lump; they +have zero size: + +S_START marks the start of the item/monster "sprite" section. + See chapter [5] for the naming convention used here. +S_END is immediately after the last sprite. +P_START marks the beginning of the wall patches. +P1_START before the first of the shareware wall patches. +P1_END after the last of the shareware wall patches. +P2_START r registered wall patches. +P2_END r registered wall patches. +P_END marks the end of the wall patches. +F_START marks the beginning of the flats (floor textures). +F1_START shareware flats. +F1_END shareware flats. +F2_START r registered flats. +F2_END r registered flats. +F_END marks the end of the flats. + + +----------------------- +CHAPTER [4]: The Levels +----------------------- + + Each level has eleven directory entries and ten lumps: E[x]M[y] (or +MAPxy in a DOOM 2 wad), THINGS, LINEDEFS, SIDEDEFS, VERTEXES, SEGS, +SSECTORS, NODES, SECTORS, REJECT, and BLOCKMAP. + In the DOOM.WAD file, all of these entries are present for every level. +In a pwad external file, they don't all need to be present. Whichever +entries are in a pwad will be substituted for the originals. For example, +a pwad with just two entries, E3M6 and THINGS, would use all the walls +and such from the original E3M6, but could have a completely different +set of THINGS. + + +[4-1]: ExMy or MAPxy +==================== + + DOOM 1 levels have an ExMy label in a wad's directory. x is a single +(ASCII) digit 1-3 for the episode number and y is 1-9 for the mission +number. + DOOM 2 levels have a MAPxy label in a wad's directory. xy can range +from (ASCII) 01 to 32, for the level number. + This label just indicates that the lump names following it are part +of the designated level. The label does not actually point to a lump, +and the size field in the directory is 0. The assignment of lumps to +this level stops with either the next ExMy or MAPxy entry, or with a +non-map entry like TEXTURE1. + Without these labels, there would be no way to differentiate amongst +the many lumps named "THINGS", "LINEDEFS", etc. + + +[4-2]: THINGS +============= + + "Things" in DOOM are player start positions, monsters, weapons, keys, +barrels, etc. The size of each THINGS lump will be a multiple of ten, +since each thing requires ten bytes to describe it, in five +fields: + +(1) X position of thing (at level's inception) +(2) Y position of thing +(3) Angle the thing faces. On the automap, 0 is east, 90 is north, 180 + is west, 270 is south. This value is only used for monsters, player + starts, deathmatch starts, and teleporter landing spots. Other + things look the same from all directions. Values are rounded to + the nearest 45 degree angle, so if the value is 80, it will + actually face 90 - north. +(4) Type of thing, see next subsection, [4-2-1] +(5) Thing options, see [4-2-3] + + +[4-2-1]: Thing Types +-------------------- + + Short 4 of 5, occupying bytes 6-7 of each thing record, specifies its +kind. The table below summarizes the different types. They are listed +in functional groups. You can easily get a numerical-order list by +extracting this table and SORTing it. + +Dec/Hex The thing's number in decimal and hexadecimal. This is the + number used in the THINGS lump on a level (ExMy or MAPxx). +V Version of DOOM needed to use this object: + no mark indicates all versions have this object +r requires registered DOOM or DOOM 2 +2 requires DOOM 2 +Spr The sprite name associated with this thing. This is the first + four letters of the lumps that are pictures of this thing. +seq. The sequence of frames displayed. "-" means it displays nothing. + Unanimated things will have just an "a" here, e.g. a backpack's + only picture can be found in the wad under BPAKA0. Animated + things will show the order that their frames are displayed + (they cycle back after the last one). So the blue key + alternates between BKEYA0 and BKEYB0. The soulsphere uses + SOULA0-SOULB0-C0-D0-C0-B0 then repeats. Thing 15, a dead + player, is PLAYN0. ++ Monsters and players and barrels. They can be hurt, and they + have a more complicated sprite arrangement. See chapter [5]. +CAPITAL Monsters, counts toward the KILL ratio at the end of a level. +# An obstacle, players and monsters can't move through it. +^ Hangs from the ceiling, or floats (if a monster). +$ A regular item that players may get. +! An artifact item; counts toward the ITEM ratio at level's end. + Note that 2025, the radiation suit, was an ITEM in version + 1.2, but it is not an ITEM in version 1.666 on. Also note + that 2022 and 2024, invulnerability and invisibility, do not + respawn in -altdeath games. + +Dec. Hex V Spr seq. Thing is: + + -1 ffff ---- - (nothing) + 0 0000 ---- - (nothing) + 1 0001 PLAY + Player 1 start (Player 1 start needed on ALL +levels) + 2 0002 PLAY + Player 2 start (Player starts 2-4 are needed in) + 3 0003 PLAY + Player 3 start (cooperative mode multiplayer games) + 4 0004 PLAY + Player 4 start + 11 000b ---- - Deathmatch start positions. Should have >= 4/level + 14 000e ---- - Teleport landing. Where players/monsters land when + 14 they teleport to the SECTOR containing this thing + +3004 0bbc POSS + # FORMER HUMAN: regular pistol-shooting zombieman + 84 0054 2 SSWV + # WOLFENSTEIN SS: guest appearance by Wolf3D blue guy + 9 0009 SPOS + # FORMER HUMAN SERGEANT: black armor, shotgunners + 65 0041 2 CPOS + # HEAVY WEAPON DUDE: red armor, chaingunners +3001 0bb9 TROO + # IMP: brown, hurl fireballs +3002 0bba SARG + # DEMON: pink, muscular bull-like chewers + 58 003a SARG + # SPECTRE: invisible version of the DEMON +3006 0bbe r SKUL + ^# LOST SOUL: flying flaming skulls, they really bite +3005 0bbd r HEAD + ^# CACODEMON: red one-eyed floating heads. Behold... + 69 0045 2 BOS2 + # HELL KNIGHT: grey-not-pink BARON, weaker +3003 0bbb BOSS + # BARON OF HELL: cloven hooved minotaur boss + 68 0044 2 BSPI + # ARACHNOTRON: baby SPIDER, shoots green plasma + 71 0047 2 PAIN + ^# PAIN ELEMENTAL: shoots LOST SOULS, deserves its +name + 66 0042 2 SKEL + # REVENANT: Fast skeletal dude shoots homing missles + 67 0043 2 FATT + # MANCUBUS: Big, slow brown guy shoots barrage of +fire + 64 0040 2 VILE + # ARCH-VILE: Super-fire attack, ressurects the dead! + 7 0007 r SPID + # SPIDER MASTERMIND: giant walking brain boss + 16 0010 r CYBR + # CYBER-DEMON: robo-boss, rocket launcher + + 88 0058 2 BBRN + # BOSS BRAIN: Horrifying visage of the ultimate demon + 89 0059 2 - - Boss Shooter: Shoots spinning skull-blocks + 87 0057 2 - - Spawn Spot: Where Todd McFarlane's guys appear + +2005 07d5 CSAW a $ Chainsaw +2001 07d1 SHOT a $ Shotgun + 82 0052 2 SGN2 a $ Double-barreled shotgun +2002 07d2 MGUN a $ Chaingun, gatling gun, mini-gun, whatever +2003 07d3 LAUN a $ Rocket launcher +2004 07d4 r PLAS a $ Plasma gun +2006 07d6 r BFUG a $ Bfg9000 +2007 07d7 CLIP a $ Ammo clip +2008 07d8 SHEL a $ Shotgun shells +2010 07da ROCK a $ A rocket +2047 07ff r CELL a $ Cell charge +2048 0800 AMMO a $ Box of Ammo +2049 0801 SBOX a $ Box of Shells +2046 07fe BROK a $ Box of Rockets + 17 0011 r CELP a $ Cell charge pack + 8 0008 BPAK a $ Backpack: doubles maximum ammo capacities + +2011 07db STIM a $ Stimpak +2012 07dc MEDI a $ Medikit +2014 07de BON1 abcdcb ! Health Potion +1% health +2015 07df BON2 abcdcb ! Spirit Armor +1% armor +2018 07e2 ARM1 ab $ Green armor 100% +2019 07e3 ARM2 ab $ Blue armor 200% + 83 0053 2 MEGA abcd ! Megasphere: 200% health, 200% armor +2013 07dd SOUL abcdcb ! Soulsphere, Supercharge, +100% health +2022 07e6 r PINV abcd ! Invulnerability +2023 07e7 r PSTR a ! Berserk Strength and 100% health +2024 07e8 PINS abcd ! Invisibility +2025 07e9 SUIT a (!)Radiation suit - see notes on ! above +2026 07ea PMAP abcdcb ! Computer map +2045 07fd PVIS ab ! Lite Amplification goggles + + 5 0005 BKEY ab $ Blue keycard + 40 0028 r BSKU ab $ Blue skullkey + 13 000d RKEY ab $ Red keycard + 38 0026 r RSKU ab $ Red skullkey + 6 0006 YKEY ab $ Yellow keycard + 39 0027 r YSKU ab $ Yellow skullkey + +2035 07f3 BAR1 ab+ # Barrel; not an obstacle after blown up + (BEXP sprite) + 72 0048 2 KEEN a+ # A guest appearance by Billy + + 48 0030 ELEC a # Tall, techno pillar + 30 001e r COL1 a # Tall green pillar + 32 0020 r COL3 a # Tall red pillar + 31 001f r COL2 a # Short green pillar + 36 0024 r COL5 ab # Short green pillar with beating heart + 33 0021 r COL4 a # Short red pillar + 37 0025 r COL6 a # Short red pillar with skull + 47 002f r SMIT a # Stalagmite: small brown pointy stump + 43 002b r TRE1 a # Burnt tree: gray tree + 54 0036 r TRE2 a # Large brown tree + +2028 07ec COLU a # Floor lamp + 85 0055 2 TLMP abcd # Tall techno floor lamp + 86 0056 2 TLP2 abcd # Short techno floor lamp + 34 0022 CAND a Candle + 35 0023 CBRA a # Candelabra + 44 002c r TBLU abcd # Tall blue firestick + 45 002d r TGRE abcd # Tall green firestick + 46 002e TRED abcd # Tall red firestick + 55 0037 r SMBT abcd # Short blue firestick + 56 0038 r SMGT abcd # Short green firestick + 57 0039 r SMRT abcd # Short red firestick + 70 0046 2 FCAN abc # Burning barrel + + 41 0029 r CEYE abcb # Evil Eye: floating eye in symbol, over candle + 42 002a r FSKU abc # Floating Skull: flaming skull-rock + + 49 0031 r GOR1 abcb ^# Hanging victim, twitching + 63 003f r GOR1 abcb ^ Hanging victim, twitching + 50 0032 r GOR2 a ^# Hanging victim, arms out + 59 003b r GOR2 a ^ Hanging victim, arms out + 52 0034 r GOR4 a ^# Hanging pair of legs + 60 003c r GOR4 a ^ Hanging pair of legs + 51 0033 r GOR3 a ^# Hanging victim, 1-legged + 61 003d r GOR3 a ^ Hanging victim, 1-legged + 53 0035 r GOR5 a ^# Hanging leg + 62 003e r GOR5 a ^ Hanging leg + 73 0049 2 HDB1 a ^# Hanging victim, guts removed + 74 004a 2 HDB2 a ^# Hanging victim, guts and brain removed + 75 004b 2 HDB3 a ^# Hanging torso, looking down + 76 004c 2 HDB4 a ^# Hanging torso, open skull + 77 004d 2 HDB5 a ^# Hanging torso, looking up + 78 004e 2 HDB6 a ^# Hanging torso, brain removed + + 25 0019 r POL1 a # Impaled human + 26 001a r POL6 ab # Twitching impaled human + 27 001b r POL4 a # Skull on a pole + 28 001c r POL2 a # 5 skulls shish kebob + 29 001d r POL3 ab # Pile of skulls and candles + 10 000a PLAY w Bloody mess (an exploded player) + 12 000c PLAY w Bloody mess, this thing is exactly the same as 10 + 24 0018 POL5 a Pool of blood and flesh + 79 004f 2 POB1 a Pool of blood + 80 0050 2 POB2 a Pool of blood + 81 0051 2 BRS1 a Pool of brains + 15 000f PLAY n Dead player + 18 0012 POSS l Dead former human + 19 0013 SPOS l Dead former sergeant + 20 0014 TROO m Dead imp + 21 0015 SARG n Dead demon + 22 0016 r HEAD l Dead cacodemon + 23 0017 r SKUL k Dead lost soul, invisible + (they blow up when killed) + + +[4-2-2]: Thing Sizes +-------------------- + + The list below gives the radius, height, mass, speed, and toughness +of all the monsters in DOOM 1 and 2. Almost all non-monster things only +differ in their "radius", dependent on whether they are obstacles or not. +For collision purposes, things are NOT circular. They occupy a square +whose side equals slightly more than 2 times the radius. This square +does not turn, it is always aligned with the x and y axes of a level. +Consider a simple collision detection in a coordinate plane: + + IF (ABS(x1-x2) =< (r1+r2)) AND (ABS(y1-y2) =< (r1+r2)) THEN *collision* + + This will result in square objects centered on their (x,y) positions, +and that is the behavior that DOOM objects exhibit. + I don't know why the horizontal size is "slightly more" than 2 times +the radius, but it is. A player cannot enter a corridor of width 32, but +can enter a corridor of width 33. Experiments have shown that no monster +can enter a corridor that is exactly (2*radius) wide. It must be bigger. +Moving up to the next multiple of 8 is a good idea, if not 16 or 32. + Monsters CAN enter sectors that are exactly "Height" high. But obstacles +are infinitely high for collision purposes. A player on a very high ledge +might not be able to jump off, because of an obstacle right next to him, +even though it is far below him. + Height is also used when under a crushing ceiling, and to determine +if an object can move from one sector to another. The space between the +highest floor and the lowest ceiling must be "Height" or greater for the +object to fit. + Toughness indicates how much punishment a monster can take until it +dies. Bullets do 10 damage, Shotgun shells 70 (7 pellets, each is 10), +Plasma 20, Rockets 100, and the BFG does 1000 for a direct hit. There's +more info on this stuff in the DOOM FAQ. + +Dec. Hex Radius Height Mass Tough Speed Sprite name or class of things: + +- - 16 56 100 (100) - PLAY +3004 0bbc 20 56 100 20 8 POSS + 84 0054 20 56 100 50 8 SSWV + 9 0009 20 56 100 30 8 SPOS + 65 0041 20 56 100 70 8 CPOS +3001 0bb9 20 56 100 60 8 TROO +3002 0bba 30 56 400 150 10 SARG + 58 003a 30 56 400 150 10 SARG (Inviso model) +3006 0bbe 16 56 50 100 8 SKUL +3005 0bbd 31 56 400 400 8 HEAD + 69 0045 24 64 1000 500 8 BOS2 +3003 0bbb 24 64 1000 1000 8 BOSS + 68 0044 64 64 600 500 12 BSPI + 71 0047 31 56 400 400 8 PAIN + 66 0042 20 56 500 300 10 SKEL + 67 0043 48 64 1000 600 8 FATT + 64 0040 20 56 500 700 15 VILE + 7 0007 128 100 1000 3000 12 SPID + 16 0010 40 110 1000 4000 16 CYBR + 88 0058 16 16 6666 250 0 BBRN + 72 0048 16 72 6666 100 0 KEEN +2035 07f3 10 42 100 20 0 BAR1 + - - 20 16 - - - most non-obstacles (e.g. gettables) + - - 16 16 - - - most obstacles + 54 0036 32 16 - - - large brown tree + + +[4-2-3]: Thing Options +---------------------- + + Short 5 of 5, occupying bytes 8-9 of each thing record, control a +few options, according to which bits are set: + +bit 0 the THING is present at skill 1 and 2 +bit 1 the THING is present at skill 3 (hurt me plenty) +bit 2 the THING is present at skill 4 and 5 (ultra-violence, nightmare) +bit 3 indicates a deaf guard. +bit 4 means the THING only appears in multiplayer mode. + +bits 5-15 have no effect. + + The skill settings are most used with the monsters, of course...the +most common skill level settings are hex 07/0f (on all skills), 06/0e +(on skill 3-4-5), and 04/0c (only on skill 4-5). Unusual skill settings +are perfectly allowable, e.g. hex 05 for a thing which is present on +skill 1, 2, 4, and 5, but not skill 3. + "deaf guard" only has meaning for monsters, who will not attack until +they see a player if they are deaf. Otherwise, they will activate when +they hear gunshots, etc. (including the punch!). Sound does not travel +through solid walls (walls that are solid at the time of the noise). +Also, lines can be set so that sound does not pass through them (see +[4-3-1] bit 6). This option is also known as the "ambush" option (or +flag, or attribute). + + +[4-3]: LINEDEFS +=============== + + Each linedef represents a line from one of the VERTEXES to another, +and each linedef's record is 14 bytes, containing 7 fields: + +(1) from the VERTEX with this number (the first vertex is 0). +(2) to the VERTEX with this number (31 is the 32nd vertex). +(3) flags, see [4-3-1] below. +(4) types, see [4-3-2] below. +(5) is a "tag" or "trigger" number which ties this line's effect type + to all SECTORS that have the same tag number (in their last + field). +(6) number of the "right" SIDEDEF for this linedef. +(7) "left" SIDEDEF, if this line adjoins 2 SECTORS. Otherwise, it is + equal to -1 (FFFF hex). + + "right" and "left" are based on the direction of the linedef as +indicated by the "from" and "to", or "start" and "end", VERTEXES. +This sketch should make it clear: + + left side right side + start -----------------> end <----------------- start + right side left side + + IMPORTANT: All lines must have a right side. If it is a one-sided +line, then it must go the proper direction, so its single side is +facing the sector it is part of. DOOM will crash on a level that has +a line with no right side. + + +[4-3-1]: Linedef Flags +---------------------- + + The third field of each linedef controls some attributes of +that line. These attributes (aka flags) are indicated by bits. If the +bit is set (equal to 1), the condition is true for that line. If the +bit is not set (equal to 0), the condition is not true. Note that the +"unpegged" flags cannot be independently set for the two SIDEDEFs of +a line. Here's a list of the flags, followed by a discussion of each: + +bit Condition + +0 Impassible +1 Block Monsters +2 Two-sided +3 Upper Unpegged +4 Lower Unpegged +5 Secret +6 Block Sound +7 Not on Map +8 Already on Map +9-15 unused + + 0 (Impassible) - Players and monsters cannot cross this line. Note that +if there is no sector on the other side, they can't go through the line +anyway, regardless of the flags. + + 1 (Block Monsters) - Monsters cannot cross this line. + + 2 (Two-sided) - The linedef's two sidedefs can have "-" as a texture, +which in this case means "transparent". If this flag is not set, the +sidedefs can't be transparent: if "-" is viewed, it will result in the +"hall of mirrors" effect. However, a linedef CAN have two non-transparent +sidedefs, even if this flag is not set, as long as it is between two +sectors. + Another side effect of this flag is that if it is set, then gunfire +(pistol, shotgun, chaingun) can go through it. If this flag is not set, +gunfire cannot go through the line. Projectiles (rockets, plasma etc.) +are not restricted this way. They can go through as long as there's a +sector on the other side (and the sector heights allow it). + Finally, monsters can see through and attack through two-sided lines, +despite any of the line's other flag settings and textures (once again, +provided sector heights and the REJECT [4-10] allow it). + + 3 (Upper unpegged) - The upper texture is pasted onto the wall from +the top down instead of from the bottom up like usual. + Upper textures normally have the bottom of the wall texture to be +drawn lined up with the bottom of the "upper" space in which it is +to be drawn (sidedef Y offsets then apply [4-4]). This can result +in the upper texture being misaligned with a neighboring "middle" +texture. To help solve this problem, common at "windows", this flag +can be set. + If the upper texture is unpegged, it is drawn with the wall texture's +top row at the ceiling, just like middle and lower textures are usually +drawn. This can help realign the upper texture with a neighbor. + + The article TEXTURES, cited in appendix [A-4] gives a great deal +more explanation on the "unpegged" flags and how to use them. + + 4 (Lower unpegged) - Lower and middle textures are drawn from the +bottom up, instead of from the top down like usual. + This is also commonly used on lower textures under "windows". It is +also used on doorjambs, because when the door opens, the sector ceiling +is rising, so the "sides" (the doorjambs), which are middle textures, +will be drawn from the ever-changing ceiling height down, and thus will +appear to be "moving". Unpegging them will make them be drawn from the +floor up, and since the floor height doesn't change when a door opens, +then will not move. + There's one slight difference with lower textures being unpegged - +they are not necessarily drawn with the bottom of the wall texture placed +at the bottom of the wall. The height of the facing sector and the height +of the wall texture are taken into account. So if the sector is 160 high, +and the wall texture is 128 high, then lower unpegged will cause the 32nd +row of the wall texture to be at the floor, NOT the 128th row. This of +course excludes sidedef Y offsets, which are applied AFTER unpegged +flags do their stuff. + + 5 (Secret) - On the automap, this line appears in red like a normal +solid wall that has nothing on the other side. This is useful in +protecting secret doors and such. Note that if the sector on the other +side of this "secret" line has its floor height HIGHER than the sector +on the facing side of the secret line, then the map will show the lines +beyond and thus give up the secret. + Also note that this flag has NOTHING to do with the SECRETS ratio on +inter-level screens. That's done with special sector 9 (see [4-9-1]). + + 6 (Block Sound) - For purposes of monsters hearing sounds and thus +becoming alerted. Every time a player fires a weapon, the "sound" of +it travels from sector to sector, alerting all non-deaf monsters in +each new sector. But the sound will die when it hits a second line +with this flag. The sound can cross one such line, but not two. All +possible routes for the sound to take are taken, so it can get to +some out-of-the-way places. Another thing that blocks sound, instantly, +is incompatible sector heights. Sound can go from a sector with 0/72 +floor/ceiling heights to one with 64/192, but the sound CANNOT go +from a 0/128 sector to an adjacent 128/256 sector. + + 7 (Not on Map) - The line is not shown on the automap, even if the +computer all-map power up is acquired. + + 8 (Already on Map) - When the level is begun, this line is already +on the automap, even though it hasn't been seen (in the display) yet. +Normally lines only get mapped once part of the line has been seen in +the display window. + + Automap line colors: Red lines indicate the line is one-sided, that +there is a sector on only one side (or the line is marked secret). +Brown lines are between two sectors with different floor heights but +the same ceiling height. Yellow lines are between two sectors with +different ceiling heights and the same or different floor heights. +Gray lines are as-yet-unseen lines revealed by the computer all-map. +Without the all-map, lines between sectors with identical floor and +ceiling heights don't show up. With it, they are gray. + + +[4-3-2]: Linedef Types +---------------------- + + The in field 4 of 7 of a linedef can control various special +effects like doors opening, floors moving, etc. Some of them must be +activated by "using" them, like switches, and some of them are activated +when they are walked over. There are a huge number of ways to use these +effects, but it's all done by using one of a hundred or so line function +types. + The most common way they work is this: a player walks across a line +or activates (presses the spacebar or the use key) right in front of +a line. That line has a function type that is non-zero. It also has +a tag number. Then ALL sectors on the level with the same tag number, +that are not already engaged in some action, undergo the effects that +the linedef type number dictates. Note that the tag numbers are NOT the +sector numbers, nor the linedef numbers. A tag number is in a lindef's +5th field, and a sector's last field. + +Explanations of all the abbreviations in the table: + +Val The value of the linedef "type" field (#4). If you want them + in numerical order, use SORT or something. +* This line function only works in 1.666 and up +Class The category of the effect +Act Activation. How the linedef's effect is activated. +n does NOT require a tag number (see note 5 below) +W walk-over activation +S switch ("use" - default config is spacebar) +G gunfire (pistol, shotgun, chaingun) cross or hit line +1 the line may be activated once only +R potentially repeatable activation +& affected sectors "locked out" from further changes. See notes 9/10. +m Monster actions can activate the line's effect +Sound The type of noise made by moving sectors +Speed How quickly a floor moves up/down etc. +Tm Time - how long it "rests"; doors "rest" when they've gone as + high as they're going to go, lifts "rest" at the bottom, etc. +Chg Change - some of them cause a floor texture change and/or special + sector change. See note 11 below. +T Trigger model, see note 11 below. +N Numeric model, see note 11 below. +X Floor texture is transferred, and Sector type 0. +P Special Sector types 4, 5, 7, 9, 11, 16 transfer. +Effect What happens to the affected sector(s). +open The ceiling goes (up) to LEC-4. +close The ceiling goes (down) to the floor level. +up Will move up at specified speed if the destination is above. + If the destination is below, it arrives there instantly. +down Will move down at specified speed if the destination is below. + If the destination is above, it arrives there instantly. +open/ The door can be activated while moving. If it's open or opening, + close it closes. If it's closed or closing, it opens, then pauses, + then closes. +open, The door can only be activated if it is in the closed state. + close It opens, pauses, then closes. +lift The floor goes down to LIF, rests, then back up to original height. +L lowest +H highest +C ceiling +F floor +E adjacent sectors, excluding the affected sector +I adjacent sectors, including the affected sector +nh next-higher, i.e. LEF that is higher than source. + + More notes and longer discussions related to these terms: + +1. "Adjacent" is any sector that shares a LINEDEF with the tagged sector +(sectors are adjacent to themselves). +2. All S activations and the teleporters only work from the RIGHT side +of the linedef. +3. For teleporters, if more than 1 sector is tagged the same and each +has a teleport landing THING, then the lowest numbered sector is the +destination. +4. Floors that raise up an absolute height (up 24, 32) will go up INTO +ceilings, so using the WR and SR types of these in levels is unwise. +5. A few of the linedef types don't require tag numbers: the end-level +switches, the scrolling wall type 48 (0x30), and the "manual" doors which +operate on the sector facing the left side of the linedef with the manual +door line type. +666. Here's the terms id uses for different types of activations: + Manual: nSR and nS1 doors + Trigger: W1 + Retrigger: WR + Switch: S1 + Button: SR + Impact: G + Effect: line 48 is the only one +7. The "moving floors" go up to a maximum of HIF and go down to a minimum +of LIF. Why they sometimes go up first and sometimes down is still a +mystery to me. +8. The "crushing ceilings" go from their original ceiling height down +to (floor + 8), then back up. While crushing a creature, their downward +speed slows considerably. "Fast hurt" does about 120% total damage per +crush, and "slow hurt" grabs you and does somewhere around 1000-2000% +total damage per crush. +9. The & symbol indicates that a sector cannot be affected any more by +other line types after it has performed this effect, even if it has +finished. These are the floor-texture-changers and... (keep reading) +10. Moving floors and crushing ceilings also "lock out" further changes +to the sectors affected, EXCEPT for restarting the moving floor or +crushing ceiling. If a line triggers a type 6 crushing ceiling in a +sector, then it is stopped, then ANY other line with a "crush" type that +is tagged to the same sector will cause the type 6 crusher to start +again, with its original maximum and minimum ceiling heights. +11. Some line types cause floor textures and/or some special sector types +(see [4-9-1]) to transfer to the tagged sector. The tagged sectors' floor +and/or special sector (SS) type will change to match that of the "model" +sector. The TRIGGER model gets the info from the sector that the +activating line's right side faces. The NUMERIC model gets the info +from the sector on the other side of the lowest numbered two-sided +linedef that has one side in the tagged sector. + All of these "change" line types transfer the floor texture. Also, +they all can pass a special sector trait of "0" or "nothing", i.e. if +the destination is an acid-floor or "damaging" sector, then any of these +lines can erase the damaging effect. Lines 59, 93, 37, 84, and 9 (see +note 12 for more specifics on line type 9) also have the ability to +transfer the "secret" trait of SS 9, and the damaging traits of SS +4, 5, 7, 11, and 16. None of the "blinking light" effects of SSs can be +transferred. SS 4 "blinks" and causes damage, but only the damaging part +can be transferred. SS 11 also turns off god-mode and causes a level END +when health <11%, this characteristic is part of SS 11, and cannot be +isolated via fancy transfers. +12. Line type 9 is a special one. The definitive example is the chainsaw +pillar on E1M2. Take the lowest-numbered linedef that has a sidedef in +the tagged sector. If that linedef is one-sided, nothing happens. If it +is 2-sided, then the tagged sector's floor will move down to match the +2nd sector's floor height (or it will jump instantly up if it was below, +like other floors that are supposed to move "down"). + If this 2nd sector CONTAINS the tagged sector, i.e. all the linedefs +with a sidedef in the tagged sector have their other sidedef in the 2nd +sector, then this 2nd sector is the "donut". This donut's floor will +move "up" to match the floor height of the sector on the other side of +the DONUT's lowest-numbered linedef, excluding those linedefs that are +shared with the "donut hole" central sector. Also, the donut will undergo +a floor texture change and special sector type change to match the +"outside". The donut sector does not have to be completely surrounded +by another sector (i.e. it can have 1-sided linedefs), but if its +lowest-numbered linedef is not 2-sided, a minor glitch results: the donut +and the donut-hole both move to a strange height, and the donut changes +floor texture to TLITE6_6 - the last flat in the directory. + Note that if the donut hole and the donut are both going to move, the +donut hole is going to move to match the height that the donut is "going +to". In other words, the whole thing will be at a single height when +they're done, and this is the height of the "outside" sector that borders +the donut. + Whew! +13. Line types 30 and 96, "up ShortestLowerTexture" means that affected +sector(s) floors go up a number of units equal to the height of the +shortest "lower" texture facing out from the sector(s). +14. STAIRS. Any sector tagged to a stair-raiser line will go up 8. Now +find the lowest-numbered 2-sided linedef whose RIGHT side faces this +sector (the first step). The sector on the other side of the lindedef +becomes the next step, and its floor height changes to be 8 above the +previous step (it raises up if it was lower, or it changes instantly if +it was higher). This process continues as long as there are 2-sided +lines with right sides facing each successive step. A couple things +will stop the stairway: + (a) no 2-sided linedef whose right side faces the current step + (b) a sector with a different floor texture + (c) a sector that has already been moved by this stairway (this stops + ouroboros stairways that circle around to repeat themselves) + (d) "locked-out" sectors that can't change their floor height anymore + The component steps of a stairway can have any shape or size. + The turbo stairs (100, 127) work just like regular stairs except that +each step goes up 16 not 8, and rising steps can crush things between +themselves and the ceiling. +15. Line types 78 and 85 do NOTHING as of version 1.666. + + + +Val Class Act Sound Speed Tm Chg Effect + +SPECIAL (Continuous effect, doesn't need triggereing) + + 48 Spec n-- - - - - Scrolling wall + +LOCAL DOORS ("MANUAL" DOORS) + + 1 mDoor nSRm door med 4 - open/close + 26 mDoor nSR door med 4 - open/close BLUE KEY + 28 mDoor nSR door med 4 - open/close RED KEY + 27 mDoor nSR door med 4 - open/close YELLOW KEY + 31 mDoor nS1 door med - - open + 32 mDoor nS1 door med - - open BLUE KEY + 33 mDoor nS1 door med - - open RED KEY + 34 mDoor nS1 door med - - open YELLOW KEY + 46 mDoor nGR door med - - open +117 * mDoor nSR blaze turbo 4 - open/close +118 * mDoor nS1 blaze turbo - - open + +REMOTE DOORS + + 4 rDoor W1 door med 4 - open,close + 29 rDoor S1 door med 4 - open,close + 90 rDoor WR door med 4 - open,close + 63 rDoor SR door med 4 - open,close + 2 rDoor W1 door med - - open +103 rDoor S1 door med - - open + 86 rDoor WR door med - - open + 61 rDoor SR door med - - open + 3 rDoor W1 door med - - close + 50 rDoor S1 door med - - close + 75 rDoor WR door med - - close + 42 rDoor SR door med - - close + 16 rDoor W1 door med 30 - close, then opens + 76 rDoor WR door med 30 - close, then opens +108 * rDoor W1 blaze turbo 4 - open,close +111 * rDoor WR blaze turbo 4 - open,close +105 * rDoor S1 blaze turbo 4 - open,close +114 * rDoor SR blaze turbo 4 - open,close +109 * rDoor W1 blaze turbo - - open +112 * rDoor S1 blaze turbo - - open +106 * rDoor WR blaze turbo - - open +115 * rDoor SR blaze turbo - - open +110 * rDoor W1 blaze turbo - - close +113 * rDoor S1 blaze turbo - - close +107 * rDoor WR blaze turbo - - close +116 * rDoor SR blaze turbo - - close +133 * rDoor S1 blaze turbo - - open BLUE KEY + 99 * rDoor SR blaze turbo - - open BLUE KEY +135 * rDoor S1 blaze turbo - - open RED KEY +134 * rDoor SR blaze turbo - - open RED KEY +137 * rDoor S1 blaze turbo - - open YELLOW KEY +136 * rDoor SR blaze turbo - - open YELLOW KEY + +CEILINGS + + 40 Ceil W1 mover slow - - up to HEC + 41 Ceil S1 mover slow - - down to floor + 43 Ceil SR mover slow - - down to floor + 44 Ceil W1 mover slow - - down to floor + 8 + 49 Ceil S1 mover slow - - down to floor + 8 + 72 Ceil WR mover slow - - down to floor + 8 + +LIFTS + + 10 Lift W1 lift fast 3 - lift + 21 Lift S1 lift fast 3 - lift + 88 Lift WRm lift fast 3 - lift + 62 Lift SR lift fast 3 - lift +121 * Lift W1 lift turbo 3 - lift +122 * Lift S1 lift turbo 3 - lift +120 * Lift WR lift turbo 3 - lift +123 * Lift SR lift turbo 3 - lift + +FLOORS + +119 * Floor W1 mover slow - - up to nhEF +128 * Floor WR mover slow - - up to nhEF + 18 Floor S1 mover slow - - up to nhEF + 69 Floor SR mover slow - - up to nhEF + 22 Floor W1& mover slow - TX up to nhEF + 95 Floor WR& mover slow - TX up to nhEF + 20 Floor S1& mover slow - TX up to nhEF + 68 Floor SR& mover slow - TX up to nhEF + 47 Floor G1& mover slow - TX up to nhEF + 5 Floor W1 mover slow - - up to LIC + 91 Floor WR mover slow - - up to LIC +101 Floor S1 mover slow - - up to LIC + 64 Floor SR mover slow - - up to LIC + 24 Floor G1 mover slow - - up to LIC +130 * Floor W1 mover turbo - - up to nhEF +131 * Floor S1 mover turbo - - up to nhEF +129 * Floor WR mover turbo - - up to nhEF +132 * Floor SR mover turbo - - up to nhEF + 56 Floor W1& mover slow - - up to LIC - 8, CRUSH + 94 Floor WR& mover slow - - up to LIC - 8, CRUSH + 55 Floor S1 mover slow - - up to LIC - 8, CRUSH + 65 Floor SR mover slow - - up to LIC - 8, CRUSH + 58 Floor W1 mover slow - - up 24 + 92 Floor WR mover slow - - up 24 + 15 Floor S1& mover slow - TX up 24 + 66 Floor SR& mover slow - TX up 24 + 59 Floor W1& mover slow - TXP up 24 + 93 Floor WR& mover slow - TXP up 24 + 14 Floor S1& mover slow - TX up 32 + 67 Floor SR& mover slow - TX up 32 +140 * Floor S1 mover med - - up 512 + 30 Floor W1 mover slow - - up ShortestLowerTexture + 96 Floor WR mover slow - - up ShortestLowerTexture + 38 Floor W1 mover slow - - down to LEF + 23 Floor S1 mover slow - - down to LEF + 82 Floor WR mover slow - - down to LEF + 60 Floor SR mover slow - - down to LEF + 37 Floor W1 mover slow - NXP down to LEF + 84 Floor WR mover slow - NXP down to LEF + 19 Floor W1 mover slow - - down to HEF +102 Floor S1 mover slow - - down to HEF + 83 Floor WR mover slow - - down to HEF + 45 Floor SR mover slow - - down to HEF + 36 Floor W1 mover fast - - down to HEF + 8 + 71 Floor S1 mover fast - - down to HEF + 8 + 98 Floor WR mover fast - - down to HEF + 8 + 70 Floor SR mover fast - - down to HEF + 8 + 9 Floor S1 mover slow - NXP donut (see note 12 above) + +STAIRS + + 8 Stair W1 mover slow - - stairs + 7 Stair S1 mover slow - - stairs +100 * Stair W1 mover turbo - - stairs (each up 16 not 8) + crush +127 * Stair S1 mover turbo - - stairs (each up 16 not 8) + crush + +MOVING FLOORS + + 53 MvFlr W1& lift slow 3 - start moving floor + 54 MvFlr W1& - - - - stop moving floor + 87 MvFlr WR& lift slow 3 - start moving floor + 89 MvFlr WR& - - - - stop moving floor + +CRUSHING CEILINGS + + 6 Crush W1& crush med 0 - start crushing, fast hurt + 25 Crush W1& crush med 0 - start crushing, slow hurt + 73 Crush WR& crush slow 0 - start crushing, slow hurt + 77 Crush WR& crush med 0 - start crushing, fast hurt + 57 Crush W1& - - - - stop crush + 74 Crush WR& - - - - stop crush +141 * Crush W1& none? slow 0 - start crushing, slow hurt "Silent" + +EXIT LEVEL + + 11 Exit nS- clunk - - - End level, go to next level + 51 Exit nS- clunk - - - End level, go to secret level + 52 Exit nW- clunk - - - End level, go to next level +124 * Exit nW- clunk - - - End level, go to secret level + +TELEPORT + + 39 Telpt W1m tport - - - Teleport + 97 Telpt WRm tport - - - Teleport +125 * Telpt W1m tport - - - Teleport monsters only +126 * Telpt WRm tport - - - Teleport monsters only + +LIGHT + + 35 Light W1 - - - - 0 +104 Light W1 - - - - LE (light level) + 12 Light W1 - - - - HE (light level) + 13 Light W1 - - - - 255 + 79 Light WR - - - - 0 + 80 Light WR - - - - HE (light level) + 81 Light WR - - - - 255 + 17 Light W1 - - - - Light blinks (see [4-9-1] type 3) +138 * Light SR clunk - - - 255 +139 * Light SR clunk - - - 0 + + +[4-4]: SIDEDEFS +=============== + + A sidedef is a definition of what wall texture(s) to draw along a +LINEDEF, and a group of sidedefs outline the space of a SECTOR. + There will be one sidedef for a line that borders only one sector +(and it must be the RIGHT side, as noted in [4-3]). It is not +necessary to define what the doom player would see from the other +side of that line because the doom player can't go there. The doom +player can only go where there is a sector. + Each sidedef's record is 30 bytes, comprising 2 fields, then +3 <8-byte string> fields, then a final field: + +(1) X offset for pasting the appropriate wall texture onto the wall's + "space": positive offset moves into the texture, so the left + portion gets cut off (# of columns off left side = offset). + Negative offset moves texture farther right, in the wall's space. +(2) Y offset: analogous to the X, for vertical. +(3) "upper" texture name: the part above the juncture with a lower + ceiling of an adjacent sector. +(4) "lower" texture name: the part below a juncture with a higher + floored adjacent sector. +(5) "middle" texture name: the regular part of the wall. Also known as + "normal" or "full" texture. +(6) SECTOR that this sidedef faces or helps to surround. + + The texture names are from the TEXTURE1/2 resources. The names of +wall patches in the directory (between P_START and P_END) are not +directly used, they are referenced through the PNAMES lump. + Simple sidedefs have no upper or lower texture, and so they will have +"-" instead of a texture name. Also, two-sided lines can be transparent, +in which case "-" means transparent (no texture). + If the wall is wider than the texture to be pasted onto it, then the +texture is tiled horizontally. A 64-wide texture will be pasted at 0, +64, 128, etc., unless an X-offset changes this. + If the wall is taller than the texture, than the texture is tiled +vertically, with one very important difference: it starts new tiles +ONLY at 128, 256, 384, etc. So if the texture is less than 128 high, +there will be junk filling the undefined areas, and it looks ugly. +This is sometimes called the "Tutti Frutti" effect. + + There are some transparent textures which can be used as middle textures +on 2-sided sidedefs (between sectors). These textures need to be composed +of a single patch (see [8-4]), and note that on a very tall wall, they +will NOT be tiled. Only one will be placed, at the spot determined by +the "lower unpegged" flag being on/off and the sidedef's y offset. And +if a transparent texture is used as an upper or lower texture, then +the good old "Tutti Frutti" effect will have its way. + Also note that animated wall textures (see [8-4-1]) do NOT animate +if they are the "middle" texture on a 2-sided line. So much for the +lava waterfall with the hidden room at its base...hmm, maybe not... + + +[4-5]: VERTEXES +=============== + + These are the beginning and end points for LINEDEFS and SEGS. Each +vertice's record is 4 bytes in 2 fields: + +(1) X coordinate +(2) Y coordinate + + On the automap within the game, with the grid on (press 'G'), the +lines are 128 apart (0x80), two lines = 256 (0x100). + A note on the coordinates: the coordinate system used for the vertices +and the heights of the sectors corresponds to pixels, for purposes of +texture-mapping. So a sector that's 128 high, or a multiple of 128, is +pretty typical, since many wall textures are 128 pixels high. + And yes, the correct spelling of the plural of "vertex" is "vertices". + + +[4-6]: SEGS +=========== + + The SEGS are stored in a sequential order determined by the SSECTORS, +which are part of the NODES recursive tree. + Each seg is 12 bytes in 6 fields: + +(1) start of seg is VERTEX with this number +(2) end VERTEX +(3) angle: 0= east, 16384=north, -16384=south, -32768=west. + In hex, it's 0000=east, 4000=north, 8000=west, c000=south. + This is also know as BAMS for Binary Angle Measurement. +(4) LINEDEF that this seg goes along +(5) direction: 0 if the seg goes the same direction as the linedef it + is on, 1 if the seg goes the opposite direction. This is the + same as (0 if the seg is on the RIGHT side of the linedef) or + (1 if the seg is on the LEFT side of the linedef). +(6) offset: distance along the linedef to the start of this seg (the + vertex in field 1). The offset is in the same direction as the + seg. If field 5 is 0, then the distance is from the "start" + vertex of the linedef to the "start" vertex of the seg. If field + 5 is 1, then the offset is from the "end" vertex of the linedef + to the "start" vertex of the seg. So if the seg begins at one of + the two endpoints of the linedef, this offset will be 0. + + For diagonal segs, the offset distance can be obtained from the +formula DISTANCE = SQR((x2 - x1)^2 + (y2 - y1)^2). The angle can be +calculated from the inverse tangent of the dx and dy in the vertices, +multiplied to convert PI/2 radians (90 degrees) to 16384. And since +most arctan functions return a value between -(pi/2) and (pi/2), +you'll have to do some tweaking based on the sign of (x2-x1), to +account for segs that go "west". + + +[4-7]: SSECTORS +=============== + + SSECTOR stands for sub-sector. These divide up all the SECTORS into +convex polygons. They are then referenced through the NODES resources. +There will be (number of nodes + 1) ssectors. + Each ssector is 4 bytes in 2 fields: + +(1) This many SEGS are in this SSECTOR... +(2) ...starting with this SEG number + + The segs in ssector 0 should be segs 0 through x, then ssector 1 +contains segs x+1 through y, ssector 2 containg segs y+1 to z, etc. + + +[4-8]: NODES +============ + + A detailed explanation of the nodes follows this list of a node's +structure in the wad file. + Each node is 28 bytes in 14 fields: + +(1) X coordinate of partition line's start +(2) Y coordinate of partition line's start +(3) DX, change in X to end of partition line +(4) DY, change in Y to end of partition line + + If (1) to (4) equaled 64, 128, -64, -64, the partition line would +go from (64,128) to (0,64). + +(5) Y upper bound for right bounding-box.\ +(6) Y lower bound All SEGS in right child of node +(7) X lower bound must be within this box. +(8) X upper bound / +(9) Y upper bound for left bounding box. \ +(10) Y lower bound All SEGS in left child of node +(11) X lower bound must be within this box. +(12) X upper bound / +(13) a NODE or SSECTOR number for the right child. If bit 15 of this + is set, then the rest of the number represents the + child SSECTOR. If not, the child is a recursed node. +(14) a NODE or SSECTOR number for the left child. + + The NODES lump is by far the most difficult to understand of all the +data structures in DOOM. A new level won't display right without a valid +set of precalculated nodes, ssectors, and segs. + Here I will explain what the nodes are for, and how they can be +generated automatically from the set of linedefs, sidedefs, and +vertices. I am NOT including any code or a pseudo-code algorithm, like +I do for the BLOCKMAP (appendix [A-3]). This is for reasons of space, +and more importantly, the fact that I haven't written any such +algorithm myself. If there's to be some "node code" published here, it +will have to be donated by someone, well-commented, well-organized, in +pseudo-code, and 100% effective! So the odds are long against it. + + The NODES are branches in a binary space partition (BSP) that divides +up the level and is used to determine which walls are in front of others, +a process know as hidden-surface removal. The SSECTORS (sub-sectors) and +SEGS (segments) lumps are necessary parts of the structure. + A BSP tree is normally used in 3d space, but DOOM uses a simplified +2d version of the scheme. Basically, the idea is to keep dividing the +map into smaller spaces until each of the smallest spaces contains only +wall segments which cannot possibly occlude (block from view) other +walls in its own space. The smallest, undivided spaces will become +SSECTORS. Each wall segment is part or all of a linedef (and thus a +straight line), and becomes a SEG. All of the divisions are kept track +of in a binary tree structure, which is used to greatly speed the +rendering process (drawing what is seen). How does this binary tree +lead to faster rendering? I have no idea. + Only the SECTORS need to be divided. The parts of the levels that are +"outside" sectors are ignored. Also, only the walls need to be kept +track of. The sides of any created ssectors which are not parts of +linedefs do not become segs. + Some sectors do not require any dividing. Consider a square sector. +All the walls are orthogonal to the floor (the walls are all straight +up and down), so from any viewpoint inside the square, none of its +four walls can possibly block the view of any of the others. Now +imagine a sector shaped like this drawing: + ++--------------.------+ The * is the viewpoint, looking ->, east. The +| . | diagonal wall marked @ @ can't be seen at all, +| /\ |@ and the vertical wall marked @@@ is partially +| *-> / @\ |@ occluded by the other diagonal wall. This sector +| / @\|@ needs to be divided. Suppose the diagonal wall ++---------/ is extended, as shown by the two dots (..): + +now each of the two resulting sub-sectors are sufficient, because while +in either one, no wall that is part of that sub-sector blocks any other. + In general, being a convex polygon is the goal of a ssector. Convex +means a line connecting any two points that are inside the polygon will +be completely contained in the polygon. All triangles and rectangles are +convex, but not all quadrilaterals. In doom's simple Euclidean space, +convex also means that all the interior angles of the polygon are less +than or equal to 180 degrees. + Now, an additional complication arises because of the two-sided +linedef. Its two sides are in different sectors, so they will end up +in different ssectors too. Thus every two-sided linedef becomes two segs +(or more), or you could say that every sidedef becomes a seg. Creating +segs from sidedefs is a good idea, because the seg can then be associated +with a sector. Two segs that aren't part of the same sector cannot +possibly be in the same ssector, so further division is required of any +set of segs that aren't all from the same sector. + Whenever a division needs to be made, a SEG is picked, somewhat +arbitrarily, which along with its imaginary extensions, forms a "knife" +that divides the remaining space in two (thus binary). This seg is the +partition line of a node, and the remaining spaces on either side of +the partition line become the right and left CHILDREN of the node. All +partition lines have a direction, and the space on the "right" side of +the partition is the right child of the node; the space on the "left" +is the left child (there's a cute sketch in [4-3]: LINEDEFS that shows +how right and left relate to the start and end of a line). Note that if +there does not exist a seg in the remaining space which can serve as a +partition line, then there is no need for a further partition, i.e. +it's a ssector and a "leaf" on the node tree. + If the "knife" passes through any lines/segs (but not at vertices), +they are split at the intersection, with one part going to each child. +A two-sided linedef, which is two segs, when split results in four segs. +A two sider that lies along an extension of the partition line has each +of its two segs go to opposite sides of the partition line. This is the +eventual fate of ALL segs on two-sided linedefs. + As the partition lines are picked and the nodes created, a strict +ordering must be maintained. The node tree is created from the "top" +down. After the first division is made, then the left child is divided, +then its left child, and so on, until a node's child is a ssector. The +n you move back up the tree one branch, and divide the right child, then +its left, etc. ALWAYS left first, on the way down. + Since there will be splits along the way, there is no way to know +ahead of time how many nodes and ssectors there will be at the end. +And the top of the tree, the node that is created first, is given the +highest number. So as nodes and ssectors are created, they are simply +numbered in order from 0 on up, and when it's all done (nothing's left +but ssectors), then ALL the numbers, for nodes and ssectors, are +reversed. If there's 485 nodes, then 485 becomes 0 and 0 becomes 485. + Here is another fabulous drawing which will explain everything. ++ is a vertex, - and | indicate linedefs, the . . indicates an +extension of a partition line. The <, >, and ^ symbols indicate the +directions of partition lines. All the space within the drawing is +actual level space, i.e. sectors. + + +-----+-------+-------+ 0 (5) + | | | | / \ ==> / \ + | e |^ f |^ g | 1 4 (4) (1) + | |4 |5 | / \ / \ / \ / \ ++---- + . . +-------+-------+ 2 3 e 5 (3) (2) 2 (0) +| | < 0 | / \ / \ / \ / \ / \ / \ +| a | b | a b c d f g 6 5 4 3 1 0 +| |^ | +| . . |2. . . . . +---------+ The order in which How the elements are +| | |1 > the node tree's numbered when it's +| c |^ d | elements get made. finished. +| |3 | 0 = node (5) = node ++-----+-----------+ a = ssector 6 = ssector + + 1. Make segs from all the linedefs. There are 5 two-sided lines here. + 2. Pick the vertex at 0 and go west (left). This is the first + partition line. Note the . . extension line. + 3. Pick the vertex at 1, going east. The backwards extension . . cuts + the line 3>2>, and the unlabeled left edge line. The left edge + was one seg, it becomes two. The 3>2> line was two segs, it + becomes four. New vertices are created at the intersection + points to do this. + 4. Pick the (newly created) vertex at 2. Now the REMAINING spaces on + both sides of the partition line are suitable for ssectors. The + left one is first, it becomes a, the right b. Note that ssector + a has 3 segs, and ssector b has 5 segs. The . . imaginary lines + are NOT segs. + 5. Back up the tree, and take 1's right branch. Pick 3. Once again, we + can make 2 ssectors, c and d, 3 segs each. Back up the tree to 0. + 6. Pick 4. Now the left side is a ssector, it becomes e. But the right + side is not, it needs one more node. Pick 5, make f and g. + 7. All done, so reverse all the ordination of the nodes and the + ssectors. Ssector 0's segs become segs 0-2, ssector 1's segs + become segs 3-7, etc. The segs are written sequentially according + to the ssector numbering. + + If we want to create an algorithm to do the nodes automatically, it +needs to be able to pick partition lines automatically. From studying +the original maps, it appears that they usually chose a linedef which +divides the child's space roughly in "half". This is restricted by the +availability of a seg in a good location, with a good angle. Also, the +"half" refers to the total number of ssectors in any particular child, +which we have no way of knowing when we start! Optimization methods are +probably used, or maybe brute force, trying every candidate seg until +the "best" one is found. + What is the best possible choice for a partition line? Well, there +are apparently two goals when creating a BSP tree, which are partially +exclusive. One is to have a balanced tree, i.e. for any node, there are +about the same total number of sub-nodes on either side of it. The other +goal is to minimize the number of "splits" necessary, in this case, the +number of seg splits needed, along with the accompanying new vertices +and extra segs. Only a very primitive and specially constructed set of +linedefs could avoid having any splits, so they are inevitable. It's +just that with some choices of partition lines, there end up being +fewer splits. For example, + ++--------------+ If a and b are chosen as partition lines, +| | there will be four extra vertices needed, ++---+ +---+ < A and this shape becomes five ssectors and + |^ ^| 16 segs. If A and B are chosen, however, ++---+a b+---+ < B there are no extra vertices, and only three +| | ssectors and 12 segs. ++--------------+ + + I've read that for a "small" number of polygons (less than 1000?), +which is what we're dealing with in a doom level, one should definitely +try to minimize splits, and not worry about balancing the tree. I can't +say for sure, but it does appear that the original levels strive for +this. Their trees are not totally unbalanced, but there are some parts +where many successive nodes each have a node and a ssector as children +(this is unbalanced). And there are a lot of examples to prove that the +number of extra segs and vertices they create is very low compared to +what it could be. I think the algorithm that id Software used tried to +optimize both, but with fewer splits being more important. + + +[4-9]: SECTORS +============== + + A SECTOR is a horizontal (east-west and north-south) area of the map +where a floor height and ceiling height is defined. It can have any +shape. Any change in floor or ceiling height or texture requires a +new sector (and therefore separating linedefs and sidedefs). If you +didn't already know, this is where you find out that DOOM is in many +respects still a two-dimensional world, because there can only be ONE +floor height in each sector. No buildings with two floors, one above +the other, although fairly convincing illusions are possible. + Each sector's record is 26 bytes, comprising 2 fields, then +2 <8-byte string> fields, then 3 fields: + +(1) Floor is at this height for this sector +(2) Ceiling height +(3) name of the flat used for the floor texture, from the directory. +(4) name of the flat used for the ceiling texture. + All the flats in the directory between F_START and F_END work + as either floors or ceilings. +(5) lightlevel of this sector: 0 = total dark, 255 (0xff) = maximum + light. There are actually only 32 brightnesses possible (see + COLORMAP [8-2]), so 0-7 are the same, ..., 248-255 are the same. +(6) special sector: see [4-9-1] immediately below. +(7) a "tag" number corresponding to LINEDEF(s) with the same tag + number. When that linedef is activated, something will usually + happen to this sector - its floor will rise, the lights will + go out, etc. See [4-3-2] for the list of linedef effects. + + +[4-9-1]: Special Sector Types +----------------------------- + + Bytes 22-23 of each Sector record are a which determines +some area-effects called special sectors. + Light changes are automatic. The brightness level will alternate +between the light value specified for the special sector, and the lowest +value amongst adjacent sectors (two sectors are adjacent if a linedef +has a sidedef facing each sector). If there is no lower light value, +or no adjacent sectors, then the "blink" sectors will instead alternate +between 0 light and their own specified light level. The "oscillate" +special (8) does nothing if there is no lower light level. + "blink off" means the light is at the specified level most of the time, +and changes to the lower value for just a moment. "blink on" means the +light is usually at the lower value, and changes to the sector's value +for just a moment. Every "synchronized" blinking sector on the level +will change at the same time, whereas the unsynchonized blinking sectors +change independently. "oscillate" means the light level goes smoothly +from the lower to the higher and back; it takes about 2 seconds to go +from maximum to minimum and back (255 down to 0 back up to 255). + The damaging sector types only affect players, monsters suffer no ill +effects from them whatsoever. Players will only take damage when they +are standing on the floor of the damaging sector. "-10/20%" means that +the player takes 20% damage at the end of every second that they are in +the sector, except at skill 1, they will take 10% damage. If the player +has armor, then the damage is split between health and armor. + +Dec Hex Class Condition or effect + + 0 00 - Normal, no special characteristic. + 1 01 Light random off + 2 02 Light blink 0.5 second + 3 03 Light blink 1.0 second + 4 04 Both -10/20% health AND light blink 0.5 second + 5 05 Damage -5/10% health + 7 07 Damage -2/5% health + 8 08 Light oscillates + 9 09 Secret a player must stand in this sector to get credit for + finding this secret. This is for the SECRETS ratio + on inter-level screens. +10 0a Door 30 seconds after level start, ceiling closes like a door. +11 0b End -10/20% health. If a player's health is lowered to less + than 11% while standing here, then the level ends! Play + proceeds to the next level. If it is a final level + (levels 8 in DOOM 1, level 30 in DOOM 2), the game ends! +12 0c Light blink 0.5 second, synchronized +13 0d Light blink 1.0 second, synchronized +14 0e Door 300 seconds after level start, ceiling opens like a door. +16 10 Damage -10/20% health + + The following value can only be used in versions 1.666 and up, it will +cause an error and exit to DOS in version 1.2 and earlier: + +17 11 Light flickers on and off randomly + + All other values cause an error and exit to DOS. This includes these +two values which were developed and are quoted by id as being available, +but are not actually implemented in DOOM.EXE (as of version 1.666): + + 6 06 - crushing ceiling +15 0f - ammo creator + + What a shame! The "ammo creator" sounds especially interesting! + + +[4-10]: REJECT +============== + + The REJECT lump is used to help speed play on large levels. It can +also be used for some special effects like monsters in plain sight who +CANNOT attack or see players. + The size of a REJECT in bytes is (number of SECTORS ^ 2) / 8, rounded +up. It is an array of bits, with each bit controlling whether monsters +in a given sector can detect and/or attack players in another sector. + Make a table of sectors vs. sectors, like this: + + sector that the player is in + 0 1 2 3 4 + +--------------- +sector 0 | 0 1 0 0 0 +that 1 | 1 0 1 1 0 +the 2 | 0 1 0 1 0 +monster 3 | 0 1 1 1 0 +is in 4 | 0 0 1 0 0 + + A 1 means the monster cannot become activated by seeing a player, nor +can it attack the player. A 0 means there is no restriction. All non- +deaf monsters still become activated by weapon sounds that they hear +(including the bare fist!). And activated monsters will still pursue +the player, but they will not attack if their current sector vs. sector +bit is "1". So a REJECT that's set to all 1s gives a bunch of pacifist +monsters who will follow the player around and look menacing, but never +actually attack. + How the table turns into the REJECT resource: + Reading left-to-right, then top-to-bottom, like a page, the first bit +in the table becomes bit 0 of byte 0, the 2nd bit is bit 1 of byte 0, +the 9th bit is bit 0 of byte 1, etc. So if the above table represented +a level with only 5 sectors, its REJECT would be 4 bytes: + +10100010 00101001 01000111 xxxxxxx0 (hex A2 29 47 00, decimal 162 41 71 0) + + In other words, the REJECT is a long string of bits which are read +from least significant bit to most significant bit, according to the +lo-hi storage scheme used in a certain "x86" family of CPUs. + Usually, if a monster in sector A can't detect a player in sector B, +then the reverse is true too, thus if sector8/sector5 is set, then +sector5/sector8 will be set also. Same sector prohibitions, e.g. 0/0, +3/3, etc. are only useful for special effects (pacifist monsters), or +for tiny sectors that monsters can't get to anyway. + + The REJECT array was designed to speed the monster-detection process. +If a sector pair is prohibited, the game engine doesn't even bother +checking line-of-sight feasibility for the monster to "see" the player +and consider attacking. When a level has hundreds of monsters and +hundreds of sectors, a good REJECT can prevent the drastic slowdowns +that might otherwise occur (even fast CPUs can fall victim to this +phenomenon). + + +[4-11]: BLOCKMAP +================ + + The BLOCKMAP is a pre-calculated structure that the game engine uses +to simplify collision-detection between moving things and walls. If a +level doesn't have a blockmap, it will display fine, but everybody walks +through walls, and no one can hurt anyone else. + A concise definition of the BLOCKMAP is in appendix [A-1]. This is +the full explanation of it. + The whole level is cut into "blocks", each is a 128 (hex 80) wide +square (the grid lines in the automap correspond to these blocks). The +BLOCKMAP is a collection of lists, one list for each block, which say +what LINEDEFS are wholly or partially in that block (i.e. part of the +line passes through the block). When the game engine needs to check +for an object/wall collision (to prevent a player from walking through +a wall or to explode a rocket when it hits a wall, etc.), it just looks +up the blocklist for the block that the object is in. This tells it +which linedefs it needs to check for collisions. Most blocks will have +few if any lines in them, so there will be a substantial savings in +processor time if it only checks a couple linedefs per object instead +of a thousand or so linedefs per object - it would have to check every +single linedef on the level if not for these blocklists. + The blocks are also used for object/object collisions, but that is +not visible in the WAD format. During play, each block is also given a +dynamic "thing list", which tells what THINGS are currently in that +block. Again, this negates the need to check every moving object vs. +every other object for collisions - only a few need be tested. + The BLOCKMAP is composed of three parts: the header, the offsets, and +the blocklists. + The 8-byte header contains 4 short integers: + +(1) X coordinate of block-grid origin +(2) Y coordinate of block-grid origin +(3) # of columns (blocks in X direction) +(4) # of rows (blocks in Y direction) + + The block-grid origin is the bottom-left corner of the bottom-left +(southwest) block. id's blockmap builder this origin point at 8 less +than the minimum values of x and y achieved in any vertex on the level. + The number of columns and rows needs to be sufficient to contain +every linedef in the level. If there are linedefs outside the blockmap, +it will not be able to prevent monsters or players from crossing those +linedefs, which can cause problems, including the hall of mirrors effect. + + There are N blocks, N = (number of columns * number of rows). Each +block has a blocklist and an offset to that blocklist. Immediately +following the 8-byte header are N unsigned short integers. The first +is the offset in short-ints NOT bytes, from the start of the BLOCKMAP +lump to the start of the first blocklist. The last offset points to +blocklist (N-1), the last blocklist. Note that all these offsets are +UNSIGNED, so they can point to a location 65535 shorts (131070 bytes) +into the BLOCKMAP. If they were signed, they could only go up to 32767. + The blocks are numbered going east (right) first, then north (up). +Block 0 is at the southwest corner (row 0, column 0). Block 1 is at +row 0, column 1. If there are 37 columns, then block 38 is at row 1, +column 0, etc. + + After the offsets come the blocklists. Each blocklist starts with +a short-int 0 (0x0000) and ends with a short-int -1 (0xffff). In between +are the numbers of every linedef which has any portion whatsoever in the +128 x 128 coordinate area of that block. If the block-grid origin is at +(0,0), then the first column is X = 0 to 127 inclusive, the second column +is X = 128 to 255 inclusive, etc. So a vertical line with X = 128 which +might seem to be on the border of two columns of blocks is actually only +in the easternmost/rightmost column. Likewise for the rows. + The first linedef in the LINEDEFS lump is linedef number 0, and so on. +An "empty" block's blocklist only has the two shorts 0 and -1. A non- +empty block might have this as its blocklist: 0 330 331 333 -1. This +means that linedefs 330, 331, and 333 have some part of them pass through +this block. A block that has linedef 0 in it will go: 0 0 .. etc .. -1. + + There is an upper limit to how big a BLOCKMAP can be. Even empty +blocklists require at least 3 shorts - the 0, the -1, and the offset to +the blocklist. The offsets are unsigned shorts, which would imply a +maximum value of short #65535 ( = byte 131070) for the start of the last +blocklist. At a little over 6 bytes per blocklist, that would be a maximum +of around 21000 blocks (145 by 145 blocks, 18560 in coordinates). But the +actual limit is less. Experiments suggest that the maximum total size of +all the blocklists, not counting the offsets, is 65535 bytes. This limits +a minimalist level to around 120 blocks square (15360 in coordinates), +or a realistically complex level to around 100 blocks square (12800 in +coordinates). + + +--------------------- +CHAPTER [5]: Graphics +--------------------- + + The great majority of the entries in the directory reference lumps +that are in a special picture format. The same format is used for the +sprites (monsters, items), the wall patches, and various miscellaneous +pictures for the status bar, menu text, inter-level map, etc. Every +one of these picture lumps contains exactly one picture. The flats +(floor and ceiling pictures) are NOT in this format, they are raw data; +see chapter [6]. + A great many of these lumps are used in sprites. A "sprite" is the +picture or pictures necessary to display any of the THINGS. Some of +them are simple, a single lump like SUITA0. Most of the monsters have +50 or more lumps. + The first four letters of these lumps are the sprite's "name". TROO +is for imps, BKEY is for the blue key, and so on. See [4-2-1] for a list +of them all. The fifth letter in the lump is an indication of what "frame" +it is, for animation sequences. The letters correspond to numbers, ASCII +"A" equalling 0, "B" is 1, ... "Z" is 25, etc. The highest needed by a +DOOM 1 sprite is W=22, but some of the DOOM 2 monsters need a few more +frames. + The "0" in the lump name is for "rotations" or "rot"s. All the +static objects like torches and barrels and dead bodies look the same +from any angle. This is because they have a "rot=0 lump" as DOOM itself +might say. Monsters and projectiles look different from different +angles. This is done with rots 1-8. This diagram shows how rot 1 is for +the front and they go counter-clockwise (looking from above) to 8: + + 3 + 4 | 2 + \|/ + 5--*----> 1 Thing is facing this direction + /|\ + 6 | 8 + 7 + + Many things have sets of lumps like this: TROOA1, TROOA2A8, TROOA3A7, +TROOA4A6, TROOA5, TROOB1, etc. This means that for frame 0 (A), the +pairs of rots/angles (2 and 8), (3 and 7), and (4 and 6) are mirror- +images. In the long run, this saves space in the wad file, and from the +designer's point of view, it's 37% fewer pictures to have to draw. + If a sprite's frame has a non-zero rot, it needs to have ALL 8 of +them. Also note that no more than two rots can be squeezed into one +lump's name. Some other two-rot lumps with a different format are +shown in the SPIDA1D1, SPIDA2D2, etc. lumps. + + IMPORTANT: Sprite lumps and flats cannot be added or replaced via pwads +unless they ALL are. That is, ALL sprites' lumps must be located in a +single wad file, and ALL flats' lumps must be in a single wad file. Wall +patches CAN be used in external wads, because the PNAMES lump gives a +number to every pname, and is used as a quick-index list to load in +wall patches. + Version 1.666 was rumored to be able to include sprites in pwads (in +fact the README says it can), but it can't. + + +[5-1]: Picture Format +===================== + + Each picture has three sections. First, an 8-byte header composed of +four short-integers. Then a number of long-integer pointers. Then the +picture's pixel/color data. See [A-1] for concise BNF style definitions, +here is a meatier explanation of the format: + +(A) The header's four fields are: + + (1) Width. The number of columns of picture data. + (2) Height. The number of rows. + (3) Left offset. The number of pixels to the left of the center; + where the first column gets drawn. + (4) Top offset. The number of pixels above the origin; + where the top row is. + + The width and height define a rectangular space or limits for drawing +a picture within. To be "centered", (3) is usually about half of the +total width. If the picture had 30 columns, and (3) was 10, then it +would be off-center to the right, especially when the player is standing +right in front of it, looking at it. If a picture has 30 rows, and (4) +is 60, it will appear to "float" like a blue soul-sphere. If (4) equals +the number of rows, it will appear to rest on the ground. If (4) is less +than that for an object, the bottom part of the picture looks awkward. + With walls patches, (3) is always (columns/2)-1, and (4) is always +(rows)-5. This is because the walls are drawn consistently within their +own space (There are two integers in each SIDEDEF which can offset the +starting position for drawing a wall's texture within the wall space). + + Finally, if (3) and (4) are NEGATIVE integers, then they are the +absolute coordinates from the top-left corner of the screen, to begin +drawing the picture, assuming the VIEW is full-screen (i.e., the full +320x200). This is only done with the picture of the player's current +weapon - fist, chainsaw, bfg9000, etc. The game engine scales the +picture down appropriatelyif the view is less than full-screen. + +(B) After the header, there are N = field (1) = = (# of columns) +4-byte integers. These are pointers to the data for each COLUMN. +The value of the pointer represents the offset in bytes from the first +byte of the picture lump. + +(C) Each column is composed of some number of BYTES (NOT integers), +arranged in "posts": + + The first byte is the row to begin drawing this post at. 0 means +whatever height the header (4) upwards-offset describes, larger numbers +move correspondingly down. + The second byte is how many colored pixels (non-transparent) to draw, +going downwards. + Then follow (# of pixels) + 2 bytes, which define what color each +pixel is, using the game palette. The first and last bytes AREN'T drawn, +and I don't know why they are there. Probably just leftovers from the +creation process on the NeXT machines. Only the middle (# of pixels in +this post) are drawn, starting at the row specified in the first byte +of the post. + After the last byte of a post, either the column ends, or there is +another post, which will start as stated above. + 255 (0xFF) ends the column, so a column that starts this way is a null +column, all "transparent". Draw the next column. + + +----------------------------------------------- +CHAPTER [6]: Flats (Floor and Ceiling Textures) +----------------------------------------------- + + All the lumpnames for flats are in the directory between the F_START +and F_END entries. Calling them flats is a good way to avoid confusion +with wall textures. There is no look-up or meta-structure in flats as +there is in walls textures. Each flat is 4096 raw bytes, making a square +64 by 64 pixels. This is pasted onto a floor or ceiling with the same +orientation as the automap would imply, i.e. the first byte is the color +at the NW corner, the 64th byte (byte 63, 0x3f) is the NE corner, etc. + The blocks in the automap grid are 128 by 128, so four flats will fit +in each block. Note that there is no way to offset the placement of flats, +as can be done with wall textures. They are pasted according to grid lines +64 apart, reckoned from the coordinate (0,0). This allows flats to flow +smoothly even across jagged boundaries between sectors with the same +floor or ceiling height. + + As discussed in chapter [5], replacement and/or new-name flats don't +work right from pwad files unless they are all in the same wad. + Theoretically, you can change all the flats want by constructing a +new DOOM.WAD or ALLFLATS.WAD pwad, but you have to make sure no floor +or ceiling uses an entry name which isn't in your F_ section. And you +have to include these four entries for DOOM 1 use, although you can +change their actual contents (pictures): FLOOR4_8, SFLR6_1, MFLR8_4, +and FLOOR7_2. The first three are needed as backgrounds for the episode +end texts. The last is what is shown "outside" the border of the display +window if the display is not full-screen. + + +[6-1]: Animated Flats +--------------------- + + See Chapter [8-4-1] for a discussion of how the animated walls and +flats work. Unfortunately, the fact that the flats all need to be +lumped together in one wad file means that its not possible to change +the animations via a pwad file, unless it contains ALL the flats, which +amounts to several hundred k. Plus it is illegal to distribute the +original data, so to pass around modifications, either all the flats +must be all-new, or a utility must be used to construct a FLATS.WAD +on an end-user's hard drive, using the original DOOM.WAD plus the +additions. (Note: Bernd Kreimeier, listed in [A-5], has written a +utility that does just this. It is called DMADDS11). + + +----------------------------- +CHAPTER [7]: Sounds and Music +----------------------------- + + +[7-1]: PC Speaker Sound Effects +=============================== + + DP* entries in the directory refer to lumps that are sound data for +systems using the PC speaker. + It's a quick and simple format. First is a that's always 0, +then a that's the number of bytes of sound data, then follow +that many bytes worth of sound data. That is, the lump's bytes will be +0, 0, N, 0, then N bytes of data. The DP* lumps range in size from around +10 bytes to around 150 bytes, and the data seem to range from 0 to 96 +(0x00 to 0x60). The numbers obviously indicate frequency, but beyond +that I don't know the exact correlation in Hz, nor the time duration +of each byte worth of data. Feel free to figure this out and tell me. + + +[7-2]: Soundcard Sound Effects +============================== + + DS* entries in the directory refer to lumps that are sound data for +systems using soundcards. + This data is in a RAW format for 8-bit 11 KHz mono sound - first is +an 8-byte header composed of 4 unsigned short integers: + +(1) 3 (means what?) +(2) 11025 (the sample rate, samples per second) +(3) N (the number of samples) +(4) 0 + + Each sample is a single byte, since they are 8-bit samples. The +maximum number of samples is 65535, so at 11 KHz, a little less than +6 seconds is the longest possible sound effect. + + +[7-3]: Music +============ + + D_* entries is the directory refer to lumps that are music. This +music is in the MUS file format, which goes like this: + +offset type contents + +0 ASCII "MUS" and CTRL-Z (hex 4d 55 53 1a) +4 # of bytes of music data +6 # of bytes of header data (offset to start of music) +8 number of primary channels +10 number of secondary channels +12 number of instrument patches +14 0 +16 s instrument patch numbers +X to end ? Music data + + X is the header size (the second short). Drum patch numbers (greater +than 128) are 28 less than the numbers listed in the DMXGUS lump. + What the exact format of the music data is, I don't know. + + +[7-4]: GENMIDI +============== + + This has something to do with General MIDI, obviously. This lump +has 3 sections: an 8-byte header (the ASCII text "#OPL_II#"), then +150 36-byte records (1 for each instrument), then 150 32-byte strings +(names of instruments, padded with zeros). Perhaps the 36 bytes contain +waveform information for the General MIDI standard instruments (this +guess is based on exactly one glance at a dump of the byte values, +so don't put too much faith in it). + + +[7-5]: DMXGUS +============= + + This lump is used to do instrument patch mappings on the Gravis +Ultra-Sound soundcard. It's in a very simple format - ASCII text! +Here's the start and end of the DMXGUS lump from DOOM 1 version 1.2, +which is 200 lines, of which the first 10 are comments: + +#Purpose: Different size patch libraries for different memory sizes. +# The libraries are built in such a way as to leave 8K+32bytes +# after the patches are loaded for digital audio. +# +#Revision History: 06/22/93 - Fixed problem with 512K patch library +# 07/26/93 - patch names changed in various releases +# +# +#Explanation of Columns: Patch # 256K 512K 768K 1024K Patch Name +# +0, 2, 1, 1, 1, acpiano +1, 2, 1, 1, 1, britepno +2, 2, 1, 1, 1, synpiano +. +. +. +213, 128, 128, 128, 128, castinet +214, 128, 128, 128, 128, surdo1 +215, 128, 128, 128, 128, surdo2 + + +-------------------------------- +CHAPTER [8]: Miscellaneous Lumps +-------------------------------- + + +[8-1]: PLAYPAL +============== + + There are 14 palettes here, each is 768 bytes = 256 rgb triples. +That is, the first three bytes of a palette are the red, green, and +blue portions of color 0. And so on. Note that the values use the +full range (0..255), while standard VGA digital-analog converters +use values 0-63. + The first palette, palette 0, is used for most situations. + Palettes 10-12 are used (briefly) when an item is picked up, the +more items that are picked up in quick succession, the brighter it +gets, palette 12 being the brightest. + Palette 13 is used while wearing a radiation suit. + Palettes 3, 2, then 0 again are used after getting berserk strength. + If the player is hurt, then the palette shifts up to number X, then +comes "down" one every second or so, to palette 2, then palette 0 +(normal) again. What X is depends on how badly the player got hurt: +Over 100% damage (add health loss and armor loss), X=8. 93%, X=7. 81%, +X=6. 55%, X=5. 35%, X=4. 16%, X=2. These are just rough estimates +based on a single test session long ago. Why bother tracking down +the exact division points? + + Unknown: what palettes 1 and 9 are for. + + +[8-2]: COLORMAP +=============== + + This contains 34 sets of 256 bytes, which "map" the colors "down" in +brightness. Brightness varies from sector to sector. At very low +brightness, almost all the colors are mapped to black, the darkest gray, +etc. At the highest brightness levels, most colors are mapped to their +own values, i.e. they don't change. + In each set of 256 bytes, byte 0 will have the number of the palette +color to which original color 0 gets mapped. + The colormaps are numbered 0-33. Colormaps 0-31 are for the different +brightness levels, 0 being the brightest (light level 248-255), 31 being +the darkest (light level 0-7). Light level is the fifth field of each +SECTOR record, see [4-9]. + Colormap 32 is used for every pixel in the display window (but not +the status bar), regardless of sector brightness, when the player is +under the effect of the "Invulnerability" power-up. This colormap is +all whites and greys. + Colormap 33 is all black for some reason. + While the light-amplification goggles power-up is in effect, everything +in the display uses colormap 0, regardless of sector brightness. + + +[8-3]: ENDOOM +============= + + When you finally have to leave DOOM, you exit to dos, and a colorful +box of text appears. This is it. It is 4000 bytes, which are simply +stored in the screen memory area for 80x25 16-color text mode. Thus +it follows the same format as screen memory does: each character on +the screen takes up two bytes. The second byte of each pair is from +the (extended) ASCII character set, while the first byte of each pair +is the color attribute for that character. The color attribute can +be explained thus: + + bit 7 6 5 4 3 2 1 0 + +-----+---+---+---+---+---+---+---+ + | | . . | . . . | + |Blink| Background| Foreground | + | | . . | . . . | + +-----+---+---+---+---+---+---+---+ + + So the foreground color can be from 0-15, the background color can +be from 0-7, and the "blink" attribute is either on or off. All this +very low-level info can be found in many ancient PC programming books, +but otherwise it might be hard to locate... + + +[8-4]: TEXTURE1 and TEXTURE2 +============================ + + These are lists of wall texture names used in SIDEDEFS lumps. Each +wall texture is composed of one or more wall patches, whose names are +listed in the PNAMES lump. But in a texture, the wall patches are not +referred to by name, rather by the index number indicating what position +they occupy in the PNAMES lump. + The TEXTURE2 lump is only present in the registered DOOM.WAD. The +TEXTURE1 lump is identical in DOOM.WAD and the shareware DOOM1.WAD, and +it only refers to pname numbers up to 163, because the shareware wad +only has the first 163 wall patches, not all 350. + + A TEXTURE lump starts with a 4-byte long integer N which is the number +of textures defined in it. Following it are N long integers which are the +offsets in bytes from the beginning of the TEXTURE lump to the start of +each texture's definition. + Then there are N texture definitions, which have the following format. +The first (texture name) field is an 8-byte string (less than 8 byte +names are padded with zeros), the rest of the fields are 2-byte short +integers: + +(1) The name of the texture, used in SIDEDEFS, e.g. "FIREWALL". +(2) always 0. +(3) always 0. +(4) total width of texture +(5) total height of texture + + The fourth and fifth fields define a "space" (usually 128 by 128 + or 64 by 72 or etc...) in which individual wall patches are placed + to form the overall picture. To tile vertically on a very tall wall + without exhibiting the "Tutti Frutti" effect, a texture must have + height 128, the maximum. There is no maximum width. + +(6) always 0. +(7) always 0. +(8) Number of 5-field (5 ) patch descriptors that follow. This +means that each texture entry has variable length. Many entries have just +1 patch, the most used in DOOM in a single texture is 64. + + Patch descriptor: + + (a) x offset from top-left corner of texture space defined in fields + 4 and 5 to start placement of this patch + (b) y offset + (c) number (0...) of the entry in the PNAMES lump that contains the + lump name from the directory, of the wall patch to use... + (d) always 1, is for something called "stepdir"... + (e) always 0, is for "colormap"... + + Each texture's entry ends after the last of its patch descriptors. + Note that patches can have transparent parts, since they are in the +same picture format as everything else. Thus there can be (and are) +transparent wall textures. These should only be used on a border between +two sectors, to avoid "hall of mirrors" problems. + Also, textures intended for use as the "middle" texture of a 2-sided +SIDEDEF (e.g. transparent textures) should only be composed of a single +patch. A limitation in the game engine will cause the "medusa" effect +if there is more than 1 patch in any middle texture that is visible in +the display window. This effect causes the computer to slow to a crawl +and make play impossible until the offending wall is out of view. + + +[8-4-1]: Animated Walls +----------------------- + + Some of the walls and floors are animated. In the case of wall +textures, it is possible to substantially customize these animations. +Flats' animations can theoretically also be modified, but since flats +don't work from pwads, that can make the effort very difficult. + The game engine sets up a number of wall animation cycles based on +what entries it finds in the TEXTURE lumps. It also sets up flat +animations based on what lumps exist between F_START and F_END. +Versions before 1.666 can have up to 9 animated walls and 5 animated +flats. Version 1.666 (DOOM 1 or 2) can have 13 walls and 9 floors +animate. + For wall animations, the entries in the columns "First" and "Last" +below, and all the entries between them (in the order that they occur +in the TEXTURE lump) are linked. If one of them is listed as a texture +on a sidedef, that sidedef will change texture to the next in the cycle +about 3 times a second, going back to after . Flats work +similarly, except the order is dictated by the wad directory. If both +of the and texture/flat names are not present, no problem. +Then that potential cycle is unused. But if is present, and + either is not present or is listed BEFORE , then an +error occurs while the DOOM operating system sets up, and it aborts. + Note that much longer sequences are possible! The entries between + and can be almost anything; they need not be the same +in number as in the original, nor do they have to follow the same +naming pattern. Thus one could set up SLADRIP1, TRON2, TRON3, TRON4, +..., TRON67, SLADRIP3 for a 69-frame animated wall! + The "Ver" column indicates what version of DOOM is required. "All" +indicates all versions have it. The "r" signifies that the shareware +DOOM1.WAD does not contain the necessary picture lumps. The "2" means +that only DOOM 2 has the necessary picture lumps, but version 1.666 of +DOOM.EXE for DOOM 1 also has the capability to use these animation-cycle +names (for pwad designers). + +First Last Ver Normal # of frames + +BLODGR1 BLODGR4 r 4 +BLODRIP1 BLODRIP4 r 4 +FIREBLU1 FIREBLU2 r 2 +FIRELAV3 FIRELAVA r 2 (3 patches are in DOOM.WAD, 1 is unused) +FIREMAG1 FIREMAG3 r 3 +FIREWALA FIREWALL r 3 +GSTFONT1 GSTFONT3 r 3 +ROCKRED1 ROCKRED3 r 3 +SLADRIP1 SLADRIP3 All 3 + +BFALL1 BFALL4 2 4 +SFALL1 SFALL4 2 4 +WFALL1 WFALL4 2 4 +DBRAIN1 DBRAIN4 2 4 + +(floor/ceiling animations): + +NUKAGE1 NUKAGE3 All 3 +FWATER1 FWATER4 r 4 +SWATER1 SWATER4 - 4 (SWATER lumps aren't in any DOOM.WAD) +LAVA1 LAVA4 r 4 +BLOOD1 BLOOD3 r 3 + +RROCK05 RROCK08 2 4 +SLIME01 SLIME04 2 4 +SLIME05 SLIME08 2 4 +SLIME09 SLIME12 2 4 + + +[8-4-2]: The SKY Textures +------------------------- + + The SKY1, SKY2, and SKY3 textures are rather special in that they are +used as sky backgrounds when the player is out in the open. They can +also be used on regular walls, but they usually aren't, because then +they just look like a painting. The "background" effect is done by +the game engine. There is a special flat, F_SKY1, which is used to +indicate that a floor or ceiling is "transparent" to the SKY beyond. +The picture data in the F_SKY1 flat is not even used. + Upper textures between F_SKY1 ceilinged sectors do not have the +specified texture (if any) drawn. Instead, they are "sky". Likewise +with lower textures between F_SKY1 floored sectors, but it doesn't +work as well, because if the player's viewpoint is below the top of +a lower-texture-sky (i.e. if any part of it is in the upper half of +the display), it causes a hall-of-mirrors effect. + SKY textures as sky backgrounds are mirror-images of what they look +like on walls. + The SKY textures are always placed with their tops at the top of the +view window. Since they cannot be more than 128 high, just like any +other texture, a rather ugly "seam" in the sky is sometimes visible +if the player can see too far "down". + SKY textures do move horizontally, though, to give a realistic +effect. Doing a complete 360 degree turn will scroll by a 256-wide +SKY four times. A 1024-wide SKY will exactly circumscribe the horizon. +The 0 column of the SKY texture will be at due north (as on the automap), +the 256 column is at west, 512 is south, and 768 is east. So the middle +part of a 256-wide SKY is visible at NW, SW, SE, and NE. + + SKY textures can be composed of several patches, just like regular +textures, but trying to animate the sky doesn't work. DOOM.EXE can be +changed so that SKY2 is the start of an animation cycle, and indeed +on a wall it will animate, but the sky background does not. This is +perhaps related to the way that "middle" textures of sidedefs do not +animate. + + +[8-5]: PNAMES +============= + + This is a list of all the names of lumps that are going to be used +as wall patches. DOOM assigns numbers to these names, in the order +that they are listed. The numbers are then used in TEXTURE1 and TEXTURE2 +entries to refer to wall patch lumps. In a texture composition entry, +0 means the first pname, 1 is the second, ... + + The first four bytes of the PNAMES lump is a long integer N. + Then follow N pnames, each of which occupies 8 bytes. Pnames less than +8 bytes long are padded with zeros. These names duplicate an entry in +the directory (but are not case sensitive - lowercase letters will match +uppercase letters and vice versa). Unlike sprites and floors, wall +patches can be loaded from external pwads. Whichever pwad was listed +last on the command line and contains a lump with the same name as the +one in the PNAMES lump (which itself could be from a pwad) is the pwad +that is used to get the picture data for that wall patch. + + +[8-6]: DEMOs +============ + + If you start DOOM and do nothing, after a few seconds, it automatically +shows a demo of play on some level. Also, external demos can be recorded +and played back by using the command line parameters explained in the +README and/or the DOOM FAQ. All external demos have a .LMP extension +which the DOOM OS attaches; you only type the [demoname] without the +.LMP extension. + The DOOM.WAD lumps DEMO1, DEMO2, and DEMO3 are in exactly the same +format as these external .LMP files. Strictly speaking, the "demo" +format should not be called the "LMP" format, because any external +file without a wadfile header, i.e. it is just raw data, is a "lump" +and deserves the .LMP extension. + + A DOOM demo has three parts: + + (1) header - 7 or 13 bytes + (2) data recording player moves - 4 bytes per player per gametic + (3) quit byte - equals 128 (0x80) + +(1) There are two different kinds of header depending on the version of +DOOM used to record the demo. Versions up to 1.2 use a 7-byte header: + + byte range purpose + +0 0-4 skill level. 0="I'm too young to die", 4="Nightmare!" +1 1-3 episode. +2 1-9 mission/map. +3 0-1 player 1 is present if this is 1. +4 0-1 player 2. +5 0-1 player 3. +6 0-1 player 4. + + Versions after 1.2 use a 13-byte header: + +byte range purpose + +0 104-106 version. 104=1.4 beta, 105=1.5 beta, 106=1.6 beta or 1.666 +1 0-4 skill level. 0="I'm too young to die", 4="Nightmare!" +2 1-3 episode. In DOOM 2 this is always 1. +3 1-32 mission/map/level. In DOOM 1, it's 1-9. In DOOM 2, it's 1-32. +4 0-2 mode. 0=single or cooperative, 1=deathmatch, 2=altdeath +5 0- respawn. 0=no respawn parameter, (any other value)=respawn. +6 0- fast. 0=no fast parameter, (any other value)=fast. +7 0- nomonsters. 0=monsters exist, (any other value)=nomonsters. +8 0-3 viewpoint. 0=player 1's status bar, ..., 3=player 4. +9 0-1 player 1 is present if this is 1. +10 0x0a 0-1 player 2. +11 0x0b 0-1 player 3. +12 0x0c 0-1 player 4. + +(2) The player-move data is recorded in 4-byte chunks. Every 1/35 of a +second is a gametic, and for every gametic, there is one 4-byte chunk +per player. So the time duration of a demo (in seconds) is approximately +equal to its length in bytes divided by (140 * number_of_players). + + The four bytes recording each player's actions are: + + (a) Forward/Backward Movement. + (b) Strafe Right/Left Movement. + (c) Turn Left/Right. + (d) other actions - use/activate, fire, change weapons. + + The first three are signed bytes (i.e. of type ). + + (a) Ranges from -127 to 127, negative numbers are backward movement, + positive numbers are forward movement. Without the -turbo option + above 100, values outside -50..50 cannot be achieved. With a + keyboard or joystick, these are the regular values: + + Move forward: 25 (0x19) with Speed on: 50 (0x32) + Move backward: -25 (0xE7) with Speed on: -50 (0xCE) + + Fancy mouse use can achieve any number in the range. + + (b) Ranges from -127 to 127, negative numbers are left-strafe movement, + positive numbers are right-strafe movement. The keyboard values are: + + Strafe right: 24 (0x18) with Speed on: 50 (0x32) + Strafe left: -24 (0xE8) with Speed on: -50 (0xCE) + + (c) Ranges from -127 to 127, negative numbers are right turns, positive + numbers are left turns. The keyboard values vary from version to + version, but are all in the range -5..5, and that's with Speed on. + + Using the mouse can achieve much higher numbers here. I doubt if + the maximums of 127 and -127 can actually be achieved in play, + though. + + (d) the bits of this byte indicate what actions the player is engaged in: + + bit 0 Fire current weapon + bit 1 Use (a switch, open a door, etc.) + bit 2 Change weapon to the one indicated in bits 3-5: + + bits 5-3 = 000 Fist or Chainsaw + 001 Pistol + 010 Shotgun + 011 Chaingun + 100 Rocket Launcher + 101 Plasma Rifle + 110 BFG 9000 + 111 Super Shotgun (DOOM 2 only) + + bit 6 unused + bit 7 indicates a special action which alters the meanings + of the other bits: + + bits 1-0 = 01 pause or unpause + = 10 save game in slot # recorded in bits 4 to 2 + (slot number can thus be 0 to 7 but + should NOT be 6 or 7 or else!) + + There might be other special actions. The save game action happens +during replay of the demo, so be careful when playing demos if you +have important savegames! One or more of them could conceivably get +overwritten. + +(3) The last byte of a demo has the value 128 (0x80) + + +[8-6-1]: Level changes from 1.2 to 1.666 DOOM.WAD +================================================= + + Many people have experienced the error "Demo from a different game +version", because DOOM versions will only play back demos that were +recorded with the same version number. Theoretically, though, ANY +version can be converted to ANY other version. Versions up to 1.2 +don't even require any modification, and versions 1.4 and up just +require that their first byte be changed. To change between the two +families (pre-1.4 and post-1.2) would just require extra header bytes +be added/shaved. + But there are serious complications to converting demos. There have +been some minor changes and bug-fixes to the levels from version to +version. Since the demos only record player actions, they have NOTHING +about the level in them, so they depend on the level used for playback +to be the same as the level used for recording. Some kinds of differences +in the playback level can cause the demo to become "unsynchronized" +with the level, and players will seem to have gone crazy. For example, +if a deathmatch start-position is at a different location, when a +demo-player is spawned there, they will try to open doors that don't +exist at the new location, shoot at people who aren't there, etc. +The entire playback is ruined from that point on. Some examples of +changes that don't matter are different floor and wall textures, light +levels, and linedef "unpegged" flags. But most changes DO matter. + Note that changes like (nomonsters) vs. (monsters), (respawn) vs. +(regular), (altdeath) vs. (regular deathmatch) will very quickly lead +to unsynchronized goofball players. + + + +--------------------------- +CHAPTER [9]: Savegame Files +--------------------------- + + +------------------------------- +CHAPTER [10]: The DOOM.EXE File +------------------------------- + + Via pwads, a great many characteristics of the DOOM environment can +be changed: maps, pictures, sounds, etc. But there are also a lot of +neat things that can be done by patching the DOOM.EXE file itself. +There is a large collection of data at the end of the EXE file, and by +patching some bytes, we can turn literal values into variables. For +example, the player has a 16-unit "radius" which prevents him from +entering very small passageways. The player's radius can be made 1 and +his "height" 1, so he can enter mouse-sized crawlspaces. There are a +lot more exciting examples, such as invisible monsters, cyber-demons +that look like players, super-fast shotguns, and a hundred others, but +I won't describe all of that here. See appendix [A-4] for some EXE +utilities and documents. Here I will simply give the data that has +been figured out to date. + I freely mix hex and decimal numbers below. Hopefully you can tell from +the context. All of the stuff below applies to registered version 1.2, +and some of it applies to version 1.666 also. This chapter has not yet +been completely updated for 1.666, but it soon will be. + +[10-1]: Version 1.2 DOOM.EXE Data Segment Overview +================================================== + + The data begins at 0x6f414 (455700) and continues to the end of the +file, 0x8db27 (580391). Here's an overview of the sections: + +start length what + +6f414 3d30 TEXT STRINGS +73412 1a34 various unknowns, probably to do with I/O, sound, mouse, etc. +74bf8 10000 looks like hard-coded math tables, for speed? +84bf8 148 misc. +84d40 82 gamma correction messages +84dc2 280 "are you sure you want to quit" messages +85042 3a2 MENUS (new game, load game, etc.) +853e4 140 ? +85524 36c configuration options and defaults, like in DEFAULT.CFG +85890 174 ? +85a04 60 ? +85a64 54 ? +85ab8 c4 ? +85b7c 20 max ammo at start, and ammo per thing +85b9c c0 ammo type and frame #s for the weapons +85c5c 188 ANIMATED WALLS and FLOORS +85de4 258 SWITCH-WALLS +8603c c0 ? +860fc d4 ? +861d0 500 5 colormaps for use with the gamma correction setting 0-4 +866e4 fc ? +867e0 40 pointers to chatmacros, "Green:", etc. +86820 88 pointers to level names, used on Automap +868a8 d8 splat mark coordinates for end-level screen +86980 5a8 wimap patch animations for end-level screen +86f28 224 SONG NAMES list of pointers +8714c 8b8 SOUND TABLE +87a04 1a4 SPRITE NAMES list of pointers +87ba8 3800 STATE TABLE +8b3a8 20 ? +8b3c8 2368 THING TABLE +8d730 3fd ? + +[10-2]: Version 1.666 DOOM.EXE Data Segment Overview +==================================================== + + +[10-3]: Detail on some EXE Data Structures +========================================== + + More detail on some of the data follows. The "names" of each section +are the hexadecimal offsets to the start of that data, in the registered +versions 1.2 and 1.666 of DOOM.EXE. 1.2 offsets are to the left of the +asterisk, 1.666 to the right. "Integer" means a 4-byte integer +in hi-lo format, unless otherwise noted (e.g. "2-byte short integer"). + +6f414 *** 82a14 + + START OF DATA. Several times I'll refer to "pointers". All of these +pointers are integers. Add the values of these pointers to $6f414 or +$82a14 depending on the version, and you'll get the location of what's +being pointed to. + Note: there's also at least one other kind of pointer in here, with +larger values, that point to a location in the code, NOT the data. I call +these "code-pointers" for now. I know it's a lame term. + +6f414 *** a2228 + + TEXT STRINGS. They all start on 4-byte boundaries, i.e. at xxxx0/4/8/c. +$00 ends the string. Then the next one starts at the next boundary, so a 4 +byte string is followed by $00, then 3 bytes of random junk, then the next +string. + +73140 + + I think this is the last string, "TZ" + +73144 + + Misc. stuff I haven't investigated. Some of it has to do with sound card +stuff and mice and joysticks, because at 7384c is "DMXGUS.INI" and at 74ba8 +are pointers which point to the strings "None", "PC_Speaker", "Adlib", etc. + +74bf8 + + 64k of precisely ordered numbers, which leads me to believe they are +pre-calculated math tables, to speed up some floating point operations +used in the screen draw routine. Any other guesses? + +84bfc + + 3 pointers to the episode 1/2/3 end texts, "Once you beat...", "You've +done it...", and "The loathsome Spiderdemon is dead..." + +84c24 + + pointer to the string "doom.wad" + +84c74 + + pointer to the string "default.cfg" + +84c78 + + 8 integers: 1, 25, 50, 24, 40, 640, 1280, 320 + +84c98 + + 2 code-pointers + +84ccc + + 29 integers, with values like 90 and 135 and 180. Angles? + +84d40 + + "Gamma correction OFF", 00s, "Gamma correction level 1", ... 4. Each +occupies $1a bytes. + +84dc2 + + 8 text messages used to confirm quitting, each uses $50 bytes + +85042 + + MENUS. I know this controls to some extent which menu pictures are used +for which menu, but I haven't figured it all out yet. + +853e4 + + 14 ints: 42, 22, 23, 24, 28, 29, 31, 40, zeros + +8541c + + 256 bytes, values from 00-ff, no two the same, "random" order. + +85524 + + The configuration options. Each is 5 integers: a pointer to a string, +like "mouse_sensitivity", a code-pointer, the default value for that +option, a 0 or 1 (1 for all the "key_" options), and a 0. It would be +pretty dense to do anything with this, I think. + +85890 + + About 117 integers, with a definite structure, but I can't figure it +out, and changing/experimenting seems to do nothing. + +85a64 + + 21 sets of 4 bytes: 0, 0, 1, 0, 320, 168, "33", 0, 1, $(b2 26 26 2e), +$(ff 63 fd ff), a pointer that points to the $(b2...), 0, 1, "ema", 0, 0, +1, 0, 1, "xma". All these are unchanged from version 0.99 through 1.2, +except the pointer obviously. + +85ab8 + + Ints: 0, -1, -1, 0, 0, 0, 0, 4, 7, 10, 12, 14, 15, 15, 0, 0, 112, 96, 64, +176, then 16 that are members of this set {-65536, -47000, 0, 47000, 65536}, +then 4, 5, 6, 7, 0, 1, 2, 3, 8, 3, 1, 5, 7 + +85b7c *** 95714 + + AMMO AMOUNTS. 8 integers: 200, 50, 300, 50, 10, 4, 20, 1. The first four +are the maximum initial capacity for ammo, shells, cells, and rockets. The +backpack doubles these amounts. The second four are how many ammo in a +clip, shells, rockets/rocket, and cells/cell item. Boxes have 5x as much. + +859bc *** 95734 + + AMMO TABLE. 8 sets of 6 integers (9 sets in 1.666): + + version 1.2 version 1.666 + +Punch 5 4 3 2 5 0 Punch 5 4 3 2 5 0 +Pistol 0 12 11 10 13 17 Pistol 0 12 11 10 13 17 +Shotgun 1 20 19 18 21 30 Shotgun 1 20 19 18 21 30 +Chaingun 0 34 33 32 35 38 Chaingun 0 51 50 49 52 55 +Laucher 3 42 41 40 43 46 Laucher 3 59 58 57 60 63 +Plasma 2 59 58 57 60 62 Plasma 2 76 75 74 77 79 +BFG 2 66 65 64 67 71 BFG 2 83 82 81 84 88 +Chainsaw 5 53 52 50 54 0 Chainsaw 5 70 69 67 71 0 + Super-Shotgun 1 34 33 32 35 47 + + The first number of each set is the ammo type. Type 5 never runs out. +The next three numbers are 3 state #s (see the STATE TABLE below) for the +pictures displayed when moving while holding that weapon. You know, the +"bobbing weapon" effect? Fifth is the first state of the "shoot" sequence +for that weapon, and last is the first state of the "firing" sequence. The +"firing" pictures are the ones that are lit up, fire coming out, etc. + +85c5c *** 9580c + + ANIMATED WALLS and FLOORS. Each is 26 bytes: an integer, a 8-byte string, +$00, a 8-byte string, $00, and a final integer. + +0 NUKAGE3 NUKAGE1 8 +0 FWATER4 FWATER1 8 +0 SWATER4 SWATER1 8 +0 LAVA4 LAVA1 8 +0 BLOOD4 BLOOD1 8 + <---- v1.666 has four more: 0 RROCK08 RROCK05 8 +1 BLODGR4 BLODGR1 8 0 SLIME04 SLIME01 8 +1 SLADRIP4 SLADRIP1 8 0 SLIME08 SLIME05 8 +1 BLODRIP4 BLODRIP1 8 0 SLIME12 SLIME09 8 +1 FIREWALL FIREWALA 8 +1 GSTFONT3 GSTFONT1 8 +1 FIRELAVA FIRELAV3 8 +1 FIREBLU2 FIREBLU1 8 +1 ROCKRED3 ROCKRED1 8 + <---- V1.666 has four more: 1 BFALL4 BFALL1 8 + 1 SFALL4 SFALL1 8 + 1 WFALL4 WFALL1 8 + 1 DBRAIN4 DBRAIN1 8 + + Obviously the 0/1 means floor or wall. The first string is the name of +the animation cycle's LAST listed texture, the second string is the FIRST +listed texture. The cycle includes them and all entries between them in +whichever wad file is in effect (It doesn't have to be DOOM.WAD, a pwad +with new TEXTURE1 and 2 resources works quite nicely). The final 8 +doesn't seem to mean much. + +85dc8 + + A -1 then a bunch of zeros, maybe space for another animation cycle? + +85de4 *** 95a64 + + SWITCH WALL NAMES. Each is 20 bytes: an 8-byte string, 00, another +string, 00, and a 2-byte short integer. There are 28 switch names here +in v1.2 and 39 switch names in v1.666. When a switch is pulled, the game +checks to see if the wall texture is on this list. If it is, it changes +the wall texture to the corresponding alternate texture. The +is 1, 2, or 3. 1 means it's in all versions, 2 means only registered +DOOM 1 and DOOM 2, 3 means DOOM 2 only. + +86028 + + 20 zeros, again, room for one more? + +8603c *** + + 48 integers: 3 0 2 1 3 0 2 0 3 1 2 0 0 0 0 0 + 2 0 2 1 0 0 0 0 3 1 3 0 0 0 0 0 + 2 0 3 1 2 1 3 1 2 1 3 0 0 0 0 0 + +860fc *** + + 50 integers, all are either 50 or -50. + +861d0 *** + + 5 sets of 256 bytes, each is a COLORMAP, for the gamma correction +settings OFF, 1, 2, 3, 4. + +866d0 *** + + 5 integers: 1, 0, -1, 0, 0 + +866e4 *** + + 13 sets of 5 - 10 bytes, each set terminated by a $FF + +8675e *** + + $74 $20 + +86760 *** + + 13 pointers to the stuff at 866e4. An integer '0' between each pointer. + +867c8 *** + + 6 integers: -1, -1, 0, -1, 0, 1 + +867e0 *** + + 10 pointers to the 10 default chatmacros, then 4 pointers, to "Green:", +"Indigo:", "Brown:", "Red:" + +86820 *** + + AUTOMAP LEVEL NAMES. 27 pointers to the level names used on the automap. + +8689c *** + + The ascii letters "gibr" - the keys for sending messages in multiplayer. + +868a8 *** + + SPLAT MARK COORDINATES. At what screen coordinates to place the WISPLAT +picture on the end-level screen, for th 27 levels. 54 integers, 27 pairs. +e1m1 x, e1m1 y, ..., e3m9 y. + +86980, 86bb0, 86da8 *** + + END-LEVEL MAP ANIMATIONS. Each is 14 integers. The first one is (0, 11, +3, 224, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0). The first number is 0 for all the +ones on maps 0 and 2 (episodes 1 and 3), and it's 2 for map 1. The 11 is +always 11 except the last one of map 2 is 8. The 3 means 3 pictures are +involved in the animation, e.g WIA00100, WIA00101, and WIA00102. 224 and 104 +are the x and y coordinates. The sixth number is not 0 for map 1 - it's +from 1 to 8. This controls the way the Tower of Mystery "appears". All the +other numbers are always 0. + +86ef8 *** + + Three integers, how many animations for WIMAP0, 1, 2 respectively. + +86f04 *** + + Three pointers, to the starts of the animations for WIMAP0, 1, 2 +respectively. + +8714c *** + + SOUND TABLE. 61 and 1/2 sounds are listed here. Each is 9 integers: a +pointer to the string which is the sound's "name", then a 0 or 1, then +a value ranging from 32 to 128, then 0, -1, -1, 0, 0, 0. The names are +"pistol", "shotgn", ... "hoof", "metal", "chgun". Prefix DS or DP and you +get the entries in DOOM.WAD for the sound data. The "chgun" is the 1/2 - +there's no "DSCHGUN" in doom.wad, and the entry in this table is incomplete +anyway, lacking the all-important 0, -1, -1, 0, 0, 0 ending :-). There seem +to be a few glitches in the way the sounds were fit into the whole scheme, +this is just one of them. + +879ec *** + + pointer to start of SOUND TABLE. + +879f0 *** + + Integer = 150. 150 whats? + +87a04 *** + + SPRITE NAME POINTERS. 105 pointers to the strings "TROO", "SHTG", ..., +"SMRT". + +87ba8 *** 9834c + + STATE TABLE. 512 entries in v1.2, 967 entries in v1.666. Each entry +is 28 bytes in 7 integers: + +(1) sprite number 0-..., lookup in sprite name pointers list. +(2) sprite frame, 0="A" in a sprite lump, 1="B", etc. +(3) duration, how many gametics this state is displayed until + it looks for the next. -1 (0xffffffff) is forever. +(4) a "code pointer" which indicates what action(s) accompany + the displaying of this state. +(5) next state in sequence. 0 means no next state, sequence is done. +(6) always 0, has no effect. +(7) always 0, has no effect. + + +8b3a8 *** + + Two integers: 1, 0, then 6 code-pointers. + +8b3c8 *** 9ed10 + + THING TABLE. 103 entries in v1.2 which are each 88 bytes = 22 integers. +136 entries in v1.666, which are each 92 bytes = 23 integers. + +(1) Thing number, as used in maps. See [4-2-1]. Some of them are + equal to -1, e.g. the players' entry, and all projectiles. +(2) "Spawn" state. State number (from STATE TABLE) for when this + thing first appears. +(3) Health. Inanimates can't be killed, so it doesn't apply to them. +(4) "Moving" state. First state # of monsters pursuing, etc. +(5) "See player" sound. For monsters who become activated. Also for + projectiles' first sound. Note that sounds are 1-..., not 0-... + 0 indicates no sound. +(6) Reaction Time. Lower is faster. +(7) "Attack" sound. +(8) "Pain" state. +(9) Painchance. The chance out of 256 that a monster will be disrupted + when it gets hurt. Otherwise, they keep attacking. +(10) "Pain" sound. +(11) "Close attack" state. +(12) "Distance attack" state. +(13) "Death" state, or "explode" for projectiles. +(14) "Explosive death" state, only some monsters can be "mushed". +(15) "Death" sound, or "explode" for projectiles. +(16) Speed of movement. Projectiles' speed are * 65536. +(17) Horizontal size (radius) * 65536 +(18) Height * 65536 +(19) Mass +(20) Missile damage. Also, the Lost Soul has a 3 here, for it's attack. +(21) "Act" sound, for wandering monsters. +(22) Flags, see below +(23) "Respawn" state, for monsters being ressurected. VERSION 1.666 ONLY + + Flags. 0 = condition is false. 1 = condition is true. + + bit flagname effect on thing + + 0 Special it is a gettable thing (ammo, health, etc.) + 1 Solid creatures can't pass through (but projectiles can) + 2 Shootable can be hurt (note barrels have this set) + 3 NoSector totally invisible + 4 NoBlockmap + 5 + 6 (InPain) ? + 7 + 8 SpawnCeiling hung from ceiling + 9 NoGravity floating monsters and not-on-ground things + 10 Dropoff doesn't automatically hug floor if "jump" off ledge + 11 Pickup can pick up gettable items + 12 (NoClip) walks through walls + 13 + 14 Float floating monsters + 15 (Semi-NoClip) climb tall steps + 16 Missile projectiles + 17 (Disappearing ? + Weapon) + 18 Shadow semi-invisible like Spectres + 19 NoBlood uses PUFF instead of BLUD when hurt (e.g. barrels) + 20 (SlideHelpless) ? + 21 + 22 CountKill Monster: counts toward KILLS ratio on inter-level + 23 CountItem Artifact: counts toward ITEMS on inter-level screen + 24 (Running) ? + 25 NotDMatch this thing doesn't get spawned in deathmatch modes + 26 Color0 \ 00 = green stays green 01 = change to dark greys + 27 Color1 / 10 = change to browns 11 = change to dark reds + 28- unused + +8d730 *** n/a + + Misc junk I can't figure out. + +8db27 *** a7b99 + + End of DOOM.EXE + + +------------------------------------------------------------ +APPENDIX [A-1]: Backus-Naur Form definitions of WAD elements +------------------------------------------------------------ + + The descriptions below use a modified Backus-Naur Form (BNF) notation. +Each entry looks like + + := description ;type or comment (optional) + description cont'd. ;type or comment (optional) + + Descriptions composed of more than one sequential keyword or element +are usually listed with one element per line. This is for clarity and also +allows each succesive element to be assigned different types without extra +lines. + + := ; + + is a shorthand for + + := + := + + The description is one or more of the following predefined types, +and/or previously or subsequently defined keywords. + + is an unsigned 8-bit integer (0 to 255). + is a signed 8-bit integer (-128 to 127). + is an unsigned 16-bit integer in lo-hi format (0 to 65535) + is a signed 16-bit integer (-32768 to 32767). + is a signed 32-bit integer (-2147483648 to 2147483647). + is an ASCII string of from 1 to 8 bytes. If its length is + less than 8 bytes, the remainder are zeros (hex 00). + + Any of these may be followed by a range: means a byte +restricted to the range 1 to 99 inclusive. A single number means that +value is literally included: inserts that 8-bit value. + + { } are used to enclose a group of elements. + + | is used to separate choices - exactly one of the choices applies. + + [ ] are used following an element or group of elements to indicate +an array. Usually a literal value or a keyword will be used to denote +how many members the array has. [666] means that the element + is repeated 666 times in sequence. { } [zeus] +means that whatever the value of is, there are that many pairs +of and . [1..16] indicates the value may be from +1 to 16 inclusive, and [...] indicates an indefinite number. + + A literal string "ABCD" may appear, in which case those ASCII characters +are directly inserted. + +------ + + := "PWAD"|"IWAD" + + + + + + := ;number of lumps in WAD file + := ;file offset to directory start + + := [numlumps] + := ;see different kinds below + + := { | } [numlumps] + := ; + ; + ; + + := |