From a665663c15650e0089c42bbabac95db80c53c5d7 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 23 Mar 2008 00:23:47 +0000 Subject: [PATCH] - Added sector type translation to xlat_parser and removed the old sectorx lump. SVN r841 (trunk) --- docs/rh-log.txt | 2 + src/p_lnspec.h | 13 + src/p_xlat.cpp | 140 ++-------- src/xlat/parse_xlat.cpp | 46 +++- src/xlat/xlat.h | 21 ++ src/xlat/xlat_parser.h | 6 + src/xlat/xlat_parser.y | 42 +++ wadsrc/sectorx.txt | 30 --- wadsrc/xlat/base.txt | 538 ++++++++++++++++++++++++++++++++++++++ wadsrc/xlat/defines.i | 121 +++++++++ wadsrc/xlat/doom.txt | 559 ++-------------------------------------- wadsrc/xlat/heretic.txt | 57 +++- wadsrc/xlat/strife.txt | 30 ++- wadsrc/zdoom.lst | 3 +- 14 files changed, 912 insertions(+), 696 deletions(-) delete mode 100644 wadsrc/sectorx.txt create mode 100644 wadsrc/xlat/base.txt diff --git a/docs/rh-log.txt b/docs/rh-log.txt index 4bb4073a2..efb25e6e8 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,6 @@ March 22, 2008 (Changes by Graf Zahl) +- Added sector type translation to xlat_parser and removed the old sectorx + lump. - Changed DEHSUPP loader so that it reads the text file directly. As a result the DEHSUPP compiler is gone now. Unlike XLATCC I'm using FScanner though. A fully featured parser seems like overkill for this simple text file. diff --git a/src/p_lnspec.h b/src/p_lnspec.h index 6d1d8c892..e298adcb2 100644 --- a/src/p_lnspec.h +++ b/src/p_lnspec.h @@ -60,6 +60,19 @@ typedef enum { Stairs_Special1 = 26, Stairs_Special2 = 27, + + Wind_East_Weak=40, + Wind_East_Medium, + Wind_East_Strong, + Wind_North_Weak, + Wind_North_Medium, + Wind_North_Strong, + Wind_South_Weak, + Wind_South_Medium, + Wind_South_Strong, + Wind_West_Weak, + Wind_West_Medium, + Wind_West_Strong, // [RH] Equivalents for DOOM's sector specials dLight_Flicker = 65, diff --git a/src/p_xlat.cpp b/src/p_xlat.cpp index 9c5724d4f..9fae187b1 100644 --- a/src/p_xlat.cpp +++ b/src/p_xlat.cpp @@ -326,123 +326,9 @@ void P_TranslateTeleportThings () } } -static short sectortables[2][256]; -static int boommask=0, boomshift=0; -static bool secparsed; - -void P_ReadSectorSpecials() -{ - secparsed=true; - for(int i=0;i<256;i++) - { - sectortables[0][i]=-1; - sectortables[1][i]=i; - } - - int lastlump=0, lump; - - lastlump = 0; - while ((lump = Wads.FindLump ("SECTORX", &lastlump)) != -1) - { - FScanner sc(lump, "SECTORX"); - sc.SetCMode(true); - while (sc.GetString()) - { - if (sc.Compare("IFDOOM")) - { - sc.MustGetStringName("{"); - if (gameinfo.gametype != GAME_Doom) - { - do - { - if (!sc.GetString()) - { - sc.ScriptError("Unexpected end of file"); - } - } - while (!sc.Compare("}")); - } - } - else if (sc.Compare("IFHERETIC")) - { - sc.MustGetStringName("{"); - if (gameinfo.gametype != GAME_Heretic) - { - do - { - if (!sc.GetString()) - { - sc.ScriptError("Unexpected end of file"); - } - } - while (!sc.Compare("}")); - } - } - else if (sc.Compare("IFSTRIFE")) - { - sc.MustGetStringName("{"); - if (gameinfo.gametype != GAME_Strife) - { - do - { - if (!sc.GetString()) - { - sc.ScriptError("Unexpected end of file"); - } - } - while (!sc.Compare("}")); - } - } - else if (sc.Compare("}")) - { - // ignore - } - else if (sc.Compare("BOOMMASK")) - { - sc.MustGetNumber(); - boommask = sc.Number; - sc.MustGetStringName(","); - sc.MustGetNumber(); - boomshift = sc.Number; - } - else if (sc.Compare("[")) - { - int start; - int end; - - sc.MustGetNumber(); - start = sc.Number; - sc.MustGetStringName(","); - sc.MustGetNumber(); - end = sc.Number; - sc.MustGetStringName("]"); - sc.MustGetStringName(":"); - sc.MustGetNumber(); - for(int j = start; j <= end; j++) - { - sectortables[!!boommask][j]=sc.Number + j - start; - } - } - else if (IsNum(sc.String)) - { - int start; - - start = atoi(sc.String); - sc.MustGetStringName(":"); - sc.MustGetNumber(); - sectortables[!!boommask][start] = sc.Number; - } - else - { - sc.ScriptError(NULL); - } - } - } -} - int P_TranslateSectorSpecial (int special) { - int high; + int mask = 0; // Allow any supported sector special by or-ing 0x8000 to it in Doom format maps // That's for those who like to mess around with existing maps. ;) @@ -450,16 +336,24 @@ int P_TranslateSectorSpecial (int special) { return special & 0x7fff; } - - if (!secparsed) P_ReadSectorSpecials(); - - if (special>=0 && special<=255) + + for(unsigned i = 0; i < SectorMasks.Size(); i++) { - if (sectortables[0][special]>=0) return sectortables[0][special]; + int newmask = special & SectorMasks[i].mask; + if (newmask) + { + special &= ~newmask; + if (SectorMasks[i].op == 1) newmask <<= SectorMasks[i].shift; + else if (SectorMasks[i].op == -1) newmask >>= SectorMasks[i].shift; + mask |= newmask; + } } - high = (special & boommask) << boomshift; - special &= (~boommask) & 255; - return sectortables[1][special] | high; + if (special>=0 && special SimpleLineTranslations; FBoomTranslator Boomish[MAX_BOOMISH]; int NumBoomish; +TAutoGrowArray SectorTranslations; +TArray SectorMasks; // Token types not used in the grammar enum @@ -154,16 +156,18 @@ struct XlatParseContext //========================================================================== bool FindToken (char *tok, int *type) { - static const char tokens[][8] = + static const char tokens[][10] = { "include", "define", "enum", - "arg5", "arg4", "arg3", "arg2", "flags", "lineid", "tag" + "arg5", "arg4", "arg3", "arg2", "flags", "lineid", "tag", + "sector", "bitmask", "nobitmask" }; static const short types[] = { INCLUDE, DEFINE, ENUM, - ARG5, ARG4, ARG3, ARG2, FLAGS, TAG, TAG + ARG5, ARG4, ARG3, ARG2, FLAGS, TAG, TAG, + SECTOR, BITMASK, NOBITMASK }; int i; @@ -316,7 +320,7 @@ struct XlatParseContext if (c == '"') { int tokensize = 0; - while ((c = *sourcep++) != '"' && c != EOF) + while ((c = *sourcep++) != '"' && c != 0) { yylval->string[tokensize++] = c; } @@ -331,6 +335,38 @@ struct XlatParseContext sourcep--; return OR; } + if (c == '<') + { + c = *sourcep++; + if (c == '<') + { + c = *sourcep++; + if (c == '=') + { + return LSHASSIGN; + } + sourcep--; + return 0; + } + c--; + return 0; + } + if (c == '>') + { + c = *sourcep++; + if (c == '>') + { + c = *sourcep++; + if (c == '=') + { + return RSHASSIGN; + } + sourcep--; + return 0; + } + c--; + return 0; + } switch (c) { case '^': return XOR; @@ -344,7 +380,7 @@ struct XlatParseContext case '{': return LBRACE; case '}': return RBRACE; case '=': return EQUALS; - //case ';': return SEMICOLON; + case ';': return SEMICOLON; case ':': return COLON; case '[': return LBRACKET; case ']': return RBRACKET; diff --git a/src/xlat/xlat.h b/src/xlat/xlat.h index 22cba6c73..e5c497bf2 100644 --- a/src/xlat/xlat.h +++ b/src/xlat/xlat.h @@ -60,8 +60,29 @@ struct FBoomTranslator TArray Args; } ; +struct FSectorTrans +{ + int newtype; + bool bitmask_allowed; + + FSectorTrans(int t=0, bool bitmask = false) + { + newtype = t; + bitmask_allowed = bitmask; + } +}; + +struct FSectorMask +{ + int mask; + int op; + int shift; +}; + extern TAutoGrowArray SimpleLineTranslations; extern FBoomTranslator Boomish[MAX_BOOMISH]; extern int NumBoomish; +extern TAutoGrowArray SectorTranslations; +extern TArray SectorMasks; #endif diff --git a/src/xlat/xlat_parser.h b/src/xlat/xlat_parser.h index abb1be416..3fa54abce 100644 --- a/src/xlat/xlat_parser.h +++ b/src/xlat/xlat_parser.h @@ -28,3 +28,9 @@ #define ARG5 28 #define OR_EQUAL 29 #define COLON 30 +#define SECTOR 31 +#define SEMICOLON 32 +#define NOBITMASK 33 +#define BITMASK 34 +#define LSHASSIGN 35 +#define RSHASSIGN 36 diff --git a/src/xlat/xlat_parser.y b/src/xlat/xlat_parser.y index 0d83357e1..b3b9f9482 100644 --- a/src/xlat/xlat_parser.y +++ b/src/xlat/xlat_parser.y @@ -15,6 +15,8 @@ external_declaration ::= define_statement. external_declaration ::= enum_statement. external_declaration ::= linetype_declaration. external_declaration ::= boom_declaration. +external_declaration ::= sector_declaration. +external_declaration ::= sector_bitmask. external_declaration ::= NOP. @@ -449,3 +451,43 @@ list_val(A) ::= exp(B) COLON exp(C). A.value = C; } +//========================================================================== +// +// sector types +// +//========================================================================== + +%type sector_op {int} + +sector_declaration ::= SECTOR exp(from) EQUALS exp(to) SEMICOLON. +{ + FSectorTrans tr(to, true); + SectorTranslations.SetVal(from, tr); +} + +sector_declaration ::= SECTOR exp EQUALS SYM(sy) SEMICOLON. +{ + Printf("Unknown constant '%s'\n", sy.sym); +} + +sector_declaration ::= SECTOR exp(from) EQUALS exp(to) NOBITMASK SEMICOLON. +{ + FSectorTrans tr(to, false); + SectorTranslations.SetVal(from, tr); +} + +sector_bitmask ::= SECTOR BITMASK exp(mask) sector_op(op) exp(shift) SEMICOLON. +{ + FSectorMask sm = { mask, op, shift}; + SectorMasks.Push(sm); +} + +sector_bitmask ::= SECTOR BITMASK exp(mask) SEMICOLON. +{ + FSectorMask sm = { mask, 0, 0}; + SectorMasks.Push(sm); +} + +sector_op(A) ::= LSHASSIGN. { A = 1; } +sector_op(A) ::= RSHASSIGN. { A = -1; } + diff --git a/wadsrc/sectorx.txt b/wadsrc/sectorx.txt deleted file mode 100644 index 630c85c69..000000000 --- a/wadsrc/sectorx.txt +++ /dev/null @@ -1,30 +0,0 @@ -9: 1024 // this is done before masking out the Boom bits. - -ifdoom -{ - boommask 0xfe0, 3 - [1,20] : 65 - [21,40] : 1 -} - -ifheretic -{ - boommask 0xfc0, 3 - - [1,19] : 65 - [20,40] :225 - 5 : 82 - 16 : 83 - 4 : 84 -} - -ifstrife -{ - boommask 0xfe0, 3 - [1,20] : 65 - [21,40] : 1 - [4,5] : 104 - [15,16] : 115 - 18: 118 -} - diff --git a/wadsrc/xlat/base.txt b/wadsrc/xlat/base.txt new file mode 100644 index 000000000..ca13bc244 --- /dev/null +++ b/wadsrc/xlat/base.txt @@ -0,0 +1,538 @@ +include "xlat/defines.i" + + 1 = USE|MONST|REP, Door_Raise (0, D_SLOW, VDOORWAIT, tag) + 2 = WALK, Door_Open (tag, D_SLOW) + 3 = WALK, Door_Close (tag, D_SLOW) + 4 = WALK|MONST, Door_Raise (tag, D_SLOW, VDOORWAIT) + 5 = WALK, Floor_RaiseToLowestCeiling (tag, F_SLOW) + 6 = WALK, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) + 7 = USE, Stairs_BuildUpDoom (tag, ST_SLOW, 8) + 8 = WALK, Stairs_BuildUpDoom (tag, ST_SLOW, 8) + 9 = USE, Floor_Donut (tag, DORATE, DORATE) + 10 = WALK|MONST, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) + 11 = USE, Exit_Normal (0) + 12 = WALK, Light_MaxNeighbor (tag) + 13 = WALK, Light_ChangeToValue (tag, 255) + 14 = USE, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) + 15 = USE, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) + 16 = WALK, Door_CloseWaitOpen (tag, D_SLOW, 240) + 17 = WALK, Light_StrobeDoom (tag, 5, 35) + 18 = USE, Floor_RaiseToNearest (tag, F_SLOW) + 19 = WALK, Floor_LowerToHighest (tag, F_SLOW, 128) + 20 = USE, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) + 21 = USE, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT) + 22 = WALK, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) + 23 = USE, Floor_LowerToLowest (tag, F_SLOW) + 24 = SHOOT, Floor_RaiseToLowestCeiling (tag, F_SLOW) + 25 = WALK, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) + 26 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, BCard | CardIsSkull, tag) + 27 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, YCard | CardIsSkull, tag) + 28 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, RCard | CardIsSkull, tag) + 29 = USE, Door_Raise (tag, D_SLOW, VDOORWAIT) + 30 = WALK, Floor_RaiseByTexture (tag, F_SLOW) + 31 = USE, Door_Open (0, D_SLOW, tag) + 32 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, BCard | CardIsSkull, tag) + 33 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, RCard | CardIsSkull, tag) + 34 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, YCard | CardIsSkull, tag) + 35 = WALK, Light_ChangeToValue (tag, 35) + 36 = WALK, Floor_LowerToHighest (tag, F_FAST, 136) + 37 = WALK, Floor_LowerToLowestTxTy (tag, F_SLOW) + 38 = WALK, Floor_LowerToLowest (tag, F_SLOW) + 39 = WALK|MONST, Teleport (0, tag) + 40 = WALK, Generic_Ceiling (tag, C_SLOW, 0, 1, 8) + 41 = USE, Ceiling_LowerToFloor (tag, C_SLOW) + 42 = USE|REP, Door_Close (tag, D_SLOW) + 43 = USE|REP, Ceiling_LowerToFloor (tag, C_SLOW) + 44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0) + 45 = USE|REP, Floor_LowerToHighest (tag, F_SLOW, 128) + 46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW) + 47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) + 48 = 0, Scroll_Texture_Left (SCROLL_UNIT) + 49 = USE, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) + 50 = USE, Door_Close (tag, D_SLOW) + 51 = USE, Exit_Secret (0) + 52 = WALK, Exit_Normal (0) + 53 = WALK, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) + 54 = WALK, Plat_Stop (tag) + 55 = USE, Floor_RaiseAndCrush (tag, F_SLOW, 10) + 56 = WALK, Floor_RaiseAndCrush (tag, F_SLOW, 10) + 57 = WALK, Ceiling_CrushStop (tag) + 58 = WALK, Floor_RaiseByValue (tag, F_SLOW, 24) + 59 = WALK, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) + 60 = USE|REP, Floor_LowerToLowest (tag, F_SLOW) + 61 = USE|REP, Door_Open (tag, D_SLOW) + 62 = USE|REP, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) + 63 = USE|REP, Door_Raise (tag, D_SLOW, VDOORWAIT) + 64 = USE|REP, Floor_RaiseToLowestCeiling (tag, F_SLOW) + 65 = USE|REP, Floor_RaiseAndCrush (tag, F_SLOW, 10) + 66 = USE|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) + 67 = USE|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) + 68 = USE|REP, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) + 69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW) + 70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136) + 71 = USE, Floor_LowerToHighest (tag, F_FAST, 136) + 72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0) + 73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) + 74 = WALK|REP, Ceiling_CrushStop (tag) + 75 = WALK|REP, Door_Close (tag, D_SLOW) + 76 = WALK|REP, Door_CloseWaitOpen (tag, D_SLOW, 240) + 77 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) + 78 = USE|REP, Floor_TransferNumeric (tag) // <- BOOM special + 79 = WALK|REP, Light_ChangeToValue (tag, 35) + 80 = WALK|REP, Light_MaxNeighbor (tag) + 81 = WALK|REP, Light_ChangeToValue (tag, 255) + 82 = WALK|REP, Floor_LowerToLowest (tag, F_SLOW) + 83 = WALK|REP, Floor_LowerToHighest (tag, F_SLOW, 128) + 84 = WALK|REP, Floor_LowerToLowestTxTy (tag, F_SLOW) + 85 = 0, Scroll_Texture_Right (SCROLL_UNIT) // <- BOOM special + 86 = WALK|REP, Door_Open (tag, D_SLOW) + 87 = WALK|REP, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) + 88 = WALK|REP|MONST, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) + 89 = WALK|REP, Plat_Stop (tag) + 90 = WALK|REP, Door_Raise (tag, D_SLOW, VDOORWAIT) + 91 = WALK|REP, Floor_RaiseToLowestCeiling (tag, F_SLOW) + 92 = WALK|REP, Floor_RaiseByValue (tag, F_SLOW, 24) + 93 = WALK|REP, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) + 94 = WALK|REP, Floor_RaiseAndCrush (tag, F_SLOW, 10) + 95 = WALK|REP, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) + 96 = WALK|REP, Floor_RaiseByTexture (tag, F_SLOW) + 97 = WALK|REP|MONST, Teleport (0, tag) + 98 = WALK|REP, Floor_LowerToHighest (tag, F_FAST, 136) + 99 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull) +100 = WALK, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) +101 = USE, Floor_RaiseToLowestCeiling (tag, F_SLOW) +102 = USE, Floor_LowerToHighest (tag, F_SLOW, 128) +103 = USE, Door_Open (tag, D_SLOW) +104 = WALK, Light_MinNeighbor (tag) +105 = WALK|REP, Door_Raise (tag, D_FAST, VDOORWAIT) +106 = WALK|REP, Door_Open (tag, D_FAST) +107 = WALK|REP, Door_Close (tag, D_FAST) +108 = WALK, Door_Raise (tag, D_FAST, VDOORWAIT) +109 = WALK, Door_Open (tag, D_FAST) +110 = WALK, Door_Close (tag, D_FAST) +111 = USE, Door_Raise (tag, D_FAST, VDOORWAIT) +112 = USE, Door_Open (tag, D_FAST) +113 = USE, Door_Close (tag, D_FAST) +114 = USE|REP, Door_Raise (tag, D_FAST, VDOORWAIT) +115 = USE|REP, Door_Open (tag, D_FAST) +116 = USE|REP, Door_Close (tag, D_FAST) +117 = USE|REP, Door_Raise (0, D_FAST, VDOORWAIT, tag) +118 = USE, Door_Open (0, D_FAST, tag) +119 = WALK, Floor_RaiseToNearest (tag, F_SLOW) +120 = WALK|REP, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) +121 = WALK, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) +122 = USE, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) +123 = USE|REP, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) +124 = WALK, Exit_Secret (0) +125 = MONWALK, Teleport (0, tag) +126 = MONWALK|REP, Teleport (0, tag) +127 = USE, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) +128 = WALK|REP, Floor_RaiseToNearest (tag, F_SLOW) +129 = WALK|REP, Floor_RaiseToNearest (tag, F_FAST) +130 = WALK, Floor_RaiseToNearest (tag, F_FAST) +131 = USE, Floor_RaiseToNearest (tag, F_FAST) +132 = USE|REP, Floor_RaiseToNearest (tag, F_FAST) +133 = USE, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull) +134 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, RCard | CardIsSkull) +135 = USE, Door_LockedRaise (tag, D_FAST, 0, RCard | CardIsSkull) +136 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, YCard | CardIsSkull) +137 = USE, Door_LockedRaise (tag, D_FAST, 0, YCard | CardIsSkull) +138 = USE|REP, Light_ChangeToValue (tag, 255) +139 = USE|REP, Light_ChangeToValue (tag, 35) +140 = USE, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) +141 = WALK, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) + +/****** The following are all new to BOOM ******/ + +142 = WALK, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) +143 = WALK, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) +144 = WALK, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) +145 = WALK, Ceiling_LowerToFloor (tag, C_SLOW) +146 = WALK, Floor_Donut (tag, DORATE, DORATE) +147 = WALK|REP, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) +148 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) +149 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) +150 = WALK|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) +151 = WALK|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) +152 = WALK|REP, Ceiling_LowerToFloor (tag, C_SLOW) +153 = WALK, Floor_TransferTrigger (tag) +154 = WALK|REP, Floor_TransferTrigger (tag) +155 = WALK|REP, Floor_Donut (tag, DORATE, DORATE) +156 = WALK|REP, Light_StrobeDoom (tag, 5, 35) +157 = WALK|REP, Light_MinNeighbor (tag) +158 = USE, Floor_RaiseByTexture (tag, F_SLOW) +159 = USE, Floor_LowerToLowestTxTy (tag, F_SLOW) +160 = USE, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) +161 = USE, Floor_RaiseByValue (tag, F_SLOW, 24) +162 = USE, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) +163 = USE, Plat_Stop (tag) +164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) +165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) +166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) +167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0) +168 = USE, Ceiling_CrushStop (tag) +169 = USE, Light_MaxNeighbor (tag) +170 = USE, Light_ChangeToValue (tag, 35) +171 = USE, Light_ChangeToValue (tag, 255) +172 = USE, Light_StrobeDoom (tag, 5, 35) +173 = USE, Light_MinNeighbor (tag) +174 = USE|MONST, Teleport (0, tag) +175 = USE, Door_CloseWaitOpen (tag, F_SLOW, 240) +176 = USE|REP, Floor_RaiseByTexture (tag, F_SLOW) +177 = USE|REP, Floor_LowerToLowestTxTy (tag, F_SLOW) +178 = USE|REP, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) +179 = USE|REP, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) +180 = USE|REP, Floor_RaiseByValue (tag, F_SLOW, 24) +181 = USE|REP, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) +182 = USE|REP, Plat_Stop (tag) +183 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) +184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) +185 = USE|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) +186 = USE|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) +187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0) +188 = USE|REP, Ceiling_CrushStop (tag) +189 = USE, Floor_TransferTrigger (tag) +190 = USE|REP, Floor_TransferTrigger (tag) +191 = USE|REP, Floor_Donut (tag, DORATE, DORATE) +192 = USE|REP, Light_MaxNeighbor (tag) +193 = USE|REP, Light_StrobeDoom (tag, 5, 35) +194 = USE|REP, Light_MinNeighbor (tag) +195 = USE|REP|MONST, Teleport (0, tag) +196 = USE|REP, Door_CloseWaitOpen (tag, D_SLOW, 240) +197 = SHOOT, Exit_Normal (0) +198 = SHOOT, Exit_Secret (0) +199 = WALK, Ceiling_LowerToLowest (tag, C_SLOW) +200 = WALK, Ceiling_LowerToHighestFloor (tag, C_SLOW) +201 = WALK|REP, Ceiling_LowerToLowest (tag, C_SLOW) +202 = WALK|REP, Ceiling_LowerToHighestFloor (tag, C_SLOW) +203 = USE, Ceiling_LowerToLowest (tag, C_SLOW) +204 = USE, Ceiling_LowerToHighestFloor (tag, C_SLOW) +205 = USE|REP, Ceiling_LowerToLowest (tag, C_SLOW) +206 = USE|REP, Ceiling_LowerToHighestFloor (tag, C_SLOW) +207 = WALK|MONST, Teleport_NoFog (0, 0, tag) +208 = WALK|REP|MONST, Teleport_NoFog (0, 0, tag) +209 = USE|MONST, Teleport_NoFog (0, 0, tag) +210 = USE|REP|MONST, Teleport_NoFog (0, 0, tag) +211 = USE|REP, Plat_ToggleCeiling (tag) +212 = WALK|REP, Plat_ToggleCeiling (tag) +213 = 0, Transfer_FloorLight (tag) +214 = 0, Scroll_Ceiling (tag, 6, 0, 0, 0) +215 = 0, Scroll_Floor (tag, 6, 0, 0, 0) +216 = 0, Scroll_Floor (tag, 6, 1, 0, 0) +217 = 0, Scroll_Floor (tag, 6, 2, 0, 0) +218 = 0, Scroll_Texture_Model (lineid, 2) +219 = WALK, Floor_LowerToNearest (tag, F_SLOW) +220 = WALK|REP, Floor_LowerToNearest (tag, F_SLOW) +221 = USE, Floor_LowerToNearest (tag, F_SLOW) +222 = USE|REP, Floor_LowerToNearest (tag, F_SLOW) +223 = 0, Sector_SetFriction (tag, 0) +224 = 0, Sector_SetWind (tag, 0, 0, 1) +225 = 0, Sector_SetCurrent (tag, 0, 0, 1) +226 = 0, PointPush_SetForce (tag, 0, 0, 1) +227 = WALK, Elevator_RaiseToNearest (tag, ELEVATORSPEED) +228 = WALK|REP, Elevator_RaiseToNearest (tag, ELEVATORSPEED) +229 = USE, Elevator_RaiseToNearest (tag, ELEVATORSPEED) +230 = USE|REP, Elevator_RaiseToNearest (tag, ELEVATORSPEED) +231 = WALK, Elevator_LowerToNearest (tag, ELEVATORSPEED) +232 = WALK|REP, Elevator_LowerToNearest (tag, ELEVATORSPEED) +233 = USE, Elevator_LowerToNearest (tag, ELEVATORSPEED) +234 = USE|REP, Elevator_LowerToNearest (tag, ELEVATORSPEED) +235 = WALK, Elevator_MoveToFloor (tag, ELEVATORSPEED) +236 = WALK|REP, Elevator_MoveToFloor (tag, ELEVATORSPEED) +237 = USE, Elevator_MoveToFloor (tag, ELEVATORSPEED) +238 = USE|REP, Elevator_MoveToFloor (tag, ELEVATORSPEED) +239 = WALK, Floor_TransferNumeric (tag) +240 = WALK|REP, Floor_TransferNumeric (tag) +241 = USE, Floor_TransferNumeric (tag) +242 = 0, Transfer_Heights (tag) +243 = WALK|MONST, Teleport_Line (tag, tag, 0) +244 = WALK|REP|MONST, Teleport_Line (tag, tag, 0) +245 = 0, Scroll_Ceiling (tag, 5, 0, 0, 0) +246 = 0, Scroll_Floor (tag, 5, 0, 0, 0) +247 = 0, Scroll_Floor (tag, 5, 1, 0, 0) +248 = 0, Scroll_Floor (tag, 5, 2, 0, 0) +249 = 0, Scroll_Texture_Model (lineid, 1) +250 = 0, Scroll_Ceiling (tag, 4, 0, 0, 0) +251 = 0, Scroll_Floor (tag, 4, 0, 0, 0) +252 = 0, Scroll_Floor (tag, 4, 1, 0, 0) +253 = 0, Scroll_Floor (tag, 4, 2, 0, 0) +254 = 0, Scroll_Texture_Model (lineid, 0) +255 = 0, Scroll_Texture_Offsets () +256 = WALK|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) +257 = WALK|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) +258 = USE|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) +259 = USE|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) +260 = 0, TranslucentLine (lineid, 168) // Changed to better reflect the BOOM default +261 = 0, Transfer_CeilingLight (tag) +262 = WALK|MONST, Teleport_Line (tag, tag, 1) +263 = WALK|REP|MONST, Teleport_Line (tag, tag, 1) +264 = MONWALK, Teleport_Line (tag, tag, 1) +265 = MONWALK|REP, Teleport_Line (tag, tag, 1) +266 = MONWALK, Teleport_Line (tag, tag, 0) +267 = MONWALK|REP, Teleport_Line (tag, tag, 0) +268 = MONWALK, Teleport_NoFog (0, 0, tag) +269 = MONWALK|REP, Teleport_NoFog (0, 0, tag) + +/****** MBF linetypes ******/ + +271 = 0, Static_Init (tag, Init_TransferSky, 0) +272 = 0, Static_Init (tag, Init_TransferSky, 1) + +/****** Legacy linetype ******/ + +280 = 0, Transfer_Heights (tag, 12) + +// No, I haven't actually looked at these in Legacy. But these look like they +// should give results equivalent to hardware Legacy rendering. +284 = 0, TranslucentLine (lineid, 128, 0) +285 = 0, TranslucentLine (lineid, 192, 0) +286 = 0, TranslucentLine (lineid, 48, 0) +287 = 0, TranslucentLine (lineid, 128, 1) + +281 = 0, ExtraFloor_LightOnly (tag, 0) // thick extra floor +301 = 0, ExtraFloor_LightOnly (tag, 1) // thick water +302 = 0, ExtraFloor_LightOnly (tag, 1) // fog +303 = 0, ExtraFloor_LightOnly (tag, 0) // light +304 = 0, ExtraFloor_LightOnly (tag, 1) // opaque water +305 = 0, ExtraFloor_LightOnly (tag, 1) // light block + +/****** ZDoom linetypes ******/ + +333 = 0, Static_Init (tag, Init_Gravity) +334 = 0, Static_Init (tag, Init_Color) +335 = 0, Static_Init (tag, Init_Damage) +336 = 0, Line_Mirror () +337 = 0, Line_Horizon () +338 = WALK, Floor_Waggle (tag, 24, 32, 0, 0) +339 = WALK, Floor_Waggle (tag, 12, 32, 0, 0) + +340 = 0, Plane_Align (1, 0) // Slope front floor +341 = 0, Plane_Align (0, 1) // Slope front ceiling +342 = 0, Plane_Align (1, 1) // Slope front floor and ceiling +343 = 0, Plane_Align (2, 0) // Slope back floor +344 = 0, Plane_Align (0, 2) // Slope back ceiling +345 = 0, Plane_Align (2, 2) // Slope back floor and ceiling +346 = 0, Plane_Align (2, 1) // Slope b.f. and f.c. +347 = 0, Plane_Align (1, 2) // Slope f.f. and b.c. + +348 = WALK, Autosave () +349 = USE, Autosave () + +350 = 0, Transfer_Heights (tag, 2) // Just fake the floor +351 = 0, Transfer_Heights (tag, 6) // Just fake the floor and clip it too + +/****** EDGE linetypes ******/ + +400 = 0, ExtraFloor_LightOnly (tag, 0) // thick +401 = 0, ExtraFloor_LightOnly (tag, 0) // thick, side_upper +402 = 0, ExtraFloor_LightOnly (tag, 0) // thick, side_lower +403 = 0, ExtraFloor_LightOnly (tag, 2) // opaque liquid, flooder +404 = 0, ExtraFloor_LightOnly (tag, 2) // 80% liquid, flooder +405 = 0, ExtraFloor_LightOnly (tag, 2) // 60% liquid, flooder +406 = 0, ExtraFloor_LightOnly (tag, 2) // 40% liquid, flooder +407 = 0, ExtraFloor_LightOnly (tag, 2) // 20% liquid, flooder +408 = 0, ExtraFloor_LightOnly (tag, 0) // light +413 = 0, ExtraFloor_LightOnly (tag, 0) // thin opaque floor +414 = 0, ExtraFloor_LightOnly (tag, 0) // thin 80% floor +415 = 0, ExtraFloor_LightOnly (tag, 0) // thin 60% floor +416 = 0, ExtraFloor_LightOnly (tag, 0) // thin 40% floor +417 = 0, ExtraFloor_LightOnly (tag, 0) // thin 20% floor + +409 = 0, TranslucentLine (lineid, 204) // 80% translucent +410 = 0, TranslucentLine (lineid, 153) // 60% translucent +411 = 0, TranslucentLine (lineid, 101) // 40% translucent +412 = 0, TranslucentLine (lineid, 50) // 20% translucent +422 = 0, Scroll_Texture_Right (SCROLL_UNIT) +423 = 0, Scroll_Texture_Up (SCROLL_UNIT) +424 = 0, Scroll_Texture_Down (SCROLL_UNIT) +425 = 0, Scroll_Texture_Both (0, SCROLL_UNIT, 0, 0, SCROLL_UNIT) +426 = 0, Scroll_Texture_Both (0, SCROLL_UNIT, 0, SCROLL_UNIT, 0) +427 = 0, Scroll_Texture_Both (0, 0, SCROLL_UNIT, 0, SCROLL_UNIT) +428 = 0, Scroll_Texture_Both (0, 0, SCROLL_UNIT, SCROLL_UNIT, 0) +434 = USE, Floor_RaiseByValue (tag, F_SLOW, 2) +435 = USE|REP, Floor_RaiseByValue (tag, F_SLOW, 2) +436 = WALK, Floor_RaiseByValue (tag, F_SLOW, 2) +437 = WALK|REP, Floor_RaiseByValue (tag, F_SLOW, 2) +438 = SHOOT, Floor_RaiseByValue (tag, F_SLOW, 2) +439 = SHOOT|REP, Floor_RaiseByValue (tag, F_SLOW, 2) + +/****** BOOM generalized linetypes ****** + * + * The general structure for a BOOM generalized translator is + * + * [ZDoom Line Special] (first line type for this, last line type for this) + * { + * one or more stores + * } + * + * Stores have the form: + * + * + * + * can be arg2, arg3, arg4, arg5, or flags. Arg1 will always + * be set to the line's tag, so it cannot be specified in a store. + * + * can be |= or =. If it is =, then is simply stored in + * . If it is |=, then is logically or'ed with + * whatever is already in . + * + * can be either a simple number, which will always be stored in + * based on , or it can be a list of numbers chosen + * by using a bitmask. When using a list, this form is used: + * + * mask [choices] + * + * There can be at most 15 choices in a list. (If you need more, use + * more than one list.) Each choice is separated from the other choices + * by a comma. Each individual choice has the form: + * + * : + * + * When ZDoom processes one of these lists, the linetype is logically + * and'ed with the mask. It then searches the list for a selector that + * matches the result of this operation. If it finds one, the selector's + * corresponding value is used as the value for to store into + * . + */ + + +// Generalized crusher (tag, dnspeed, upspeed, silent, damage) +[Generic_Crusher] (0x2f80, 0x2fff) +{ + flags |= 0x0020 [0x0020 : MONST] + arg2 = 0x0018 [0x0000 : C_SLOW, + 0x0008 : C_NORMAL, + 0x0010 : C_FAST, + 0x0018 : C_TURBO] + arg3 = 0x0018 [0x0000 : C_SLOW, + 0x0008 : C_NORMAL, + 0x0010 : C_FAST, + 0x0018 : C_TURBO] + arg4 = 0x0040 [0x0040 : 1] + arg5 = 10 +} + +// Generalized stairs (tag, speed, step, dir/igntxt, reset) +[Generic_Stairs] (0x3000, 0x33ff) +{ + flags |= 0x0020 [0x0020 : MONST] + arg2 = 0x0018 [0x0000 : ST_SLOW, + 0x0008 : ST_NORMAL, + 0x0010 : ST_FAST, + 0x0018 : ST_TURBO] + arg3 = 0x00c0 [0x0000 : 4, + 0x0040 : 8, + 0x0080 : 16, + 0x00c0 : 24] + arg4 = 0x0300 [0x0100 : 1, + 0x0200 : 2, + 0x0300 : 3] +} + +// Generalized lift (tag, speed, delay, target, height) +[Generic_Lift] (0x3400, 0x37ff) +{ + flags |= 0x0020 [0x0020 : MONST] + arg2 = 0x0018 [0x0000 : P_SLOW*2, + 0x0008 : P_NORMAL*2, + 0x0010 : P_FAST*2, + 0x0018 : P_TURBO*2] + arg3 = 0x00c0 [0x0000 : 8, + 0x0040 : 24, + 0x0080 : 40, + 0x00c0 : 80] + arg4 = 0x0300 [0x0000 : 1, + 0x0100 : 2, + 0x0200 : 3, + 0x0300 : 4] +} + +// Generalized locked door (tag, speed, kind, delay, lock) +[Generic_Door] (0x3800, 0x3bff) +{ + arg2 = 0x0018 [0x0000 : D_SLOW, + 0x0008 : D_NORMAL, + 0x0010 : D_FAST, + 0x0018 : D_TURBO] + arg3 = 0x0020 [0x0020 : 1] + arg4 = 0x0020 [0 : 34] + arg5 = 0x01c0 [0x0000 : AnyKey, + 0x0040 : RCard, + 0x0080 : BCard, + 0x00c0 : YCard, + 0x0100 : RSkull, + 0x0140 : BSkull, + 0x0180 : YSkull, + 0x01c0 : AllKeys] + arg5 |= 0x0200 [0x0200 : CardIsSkull] +} + +// Generalized door (tag, speed, kind, delay, lock) +[Generic_Door] (0x3c00, 0x3fff) +{ + flags |= 0x0080 [0x0080 : MONST] + arg2 = 0x0018 [0x0000 : D_SLOW, + 0x0008 : D_NORMAL, + 0x0010 : D_FAST, + 0x0018 : D_TURBO] + arg3 = 0x0060 [0x0000 : 0, + 0x0020 : 1, + 0x0040 : 2, + 0x0060 : 3] + arg4 = 0x0300 [0x0000 : 8, + 0x0100 : 34, + 0x0200 : 69, + 0x0300 : 240] +} + +// Generalized ceiling (tag, speed, height, target, change/model/direct/crush) +[Generic_Ceiling] (0x4000, 0x5fff) +{ + flags |= 0x0c20 [0x0020 : MONST] + arg2 = 0x0018 [0x0000 : F_SLOW, + 0x0008 : F_NORMAL, + 0x0010 : F_FAST, + 0x0018 : F_TURBO] + arg3 = 0x0380 [0x0300 : 24, + 0x0380 : 32] + arg4 = 0x0380 [0x0000 : 1, + 0x0080 : 2, + 0x0100 : 3, + 0x0180 : 4, + 0x0200 : 5, + 0x0280 : 6] + arg5 = 0x0c00 [0x0000 : 0, + 0x0400 : 1, + 0x0800 : 2, + 0x0c00 : 3] + arg5 |= 0x0060 [0x0020 : 4, + 0x0040 : 8, + 0x0060 : 12] + arg5 |= 0x1000 [0x1000 : 16] +} + +// Generalized floor (tag, speed, height, target, change/model/direct/crush) +[Generic_Floor] (0x6000, 0x7fff) +{ + flags |= 0x0c20 [0x0020 : MONST] + arg2 = 0x0018 [0x0000 : F_SLOW, + 0x0008 : F_NORMAL, + 0x0010 : F_FAST, + 0x0018 : F_TURBO] + arg3 = 0x0380 [0x0300 : 24, + 0x0380 : 32] + arg4 = 0x0380 [0x0000 : 1, + 0x0080 : 2, + 0x0100 : 3, + 0x0180 : 4, + 0x0200 : 5, + 0x0280 : 6] + arg5 = 0x0c00 [0x0000 : 0, + 0x0400 : 1, + 0x0800 : 2, + 0x0c00 : 3] + arg5 |= 0x0060 [0x0020 : 4, + 0x0040 : 8, + 0x0060 : 12] + arg5 |= 0x1000 [0x1000 : 16] +} diff --git a/wadsrc/xlat/defines.i b/wadsrc/xlat/defines.i index 18e6c9934..4d3ddba60 100644 --- a/wadsrc/xlat/defines.i +++ b/wadsrc/xlat/defines.i @@ -90,3 +90,124 @@ enum AllKeys = 101, CardIsSkull = 128 } + + +enum +{ + Light_Phased = 1, + LightSequenceStart = 2, + LightSequenceSpecial1 = 3, + LightSequenceSpecial2 = 4, + + Stairs_Special1 = 26, + Stairs_Special2 = 27, + + Wind_East_Weak=40, + Wind_East_Medium, + Wind_East_Strong, + Wind_North_Weak, + Wind_North_Medium, + Wind_North_Strong, + Wind_South_Weak, + Wind_South_Medium, + Wind_South_Strong, + Wind_West_Weak, + Wind_West_Medium, + Wind_West_Strong, + + // [RH] Equivalents for DOOM's sector specials + dLight_Flicker = 65, + dLight_StrobeFast = 66, + dLight_StrobeSlow = 67, + dLight_Strobe_Hurt = 68, + dDamage_Hellslime = 69, + dDamage_Nukage = 71, + dLight_Glow = 72, + dSector_DoorCloseIn30 = 74, + dDamage_End = 75, + dLight_StrobeSlowSync = 76, + dLight_StrobeFastSync = 77, + dSector_DoorRaiseIn5Mins = 78, + dFriction_Low = 79, + dDamage_SuperHellslime = 80, + dLight_FireFlicker = 81, + dDamage_LavaWimpy = 82, + dDamage_LavaHefty = 83, + dScroll_EastLavaDamage = 84, + Sector_Outside = 87, + + // And here are some for Strife + sLight_Strobe_Hurt = 104, + sDamage_Hellslime = 105, + Damage_InstantDeath = 115, + sDamage_SuperHellslime = 116, + Scroll_StrifeCurrent = 118 +} + +enum +{ + // Caverns of Darkness healing sector + Sector_Heal = 196, + + Light_OutdoorLightning = 197, + Light_IndoorLightning1 = 198, + Light_IndoorLightning2 = 199, + + Sky2 = 200, + + // Hexen-type scrollers + Scroll_North_Slow = 201, + Scroll_North_Medium, + Scroll_North_Fast, + Scroll_East_Slow, + Scroll_East_Medium, + Scroll_East_Fast, + Scroll_South_Slow, + Scroll_South_Medium, + Scroll_South_Fast, + Scroll_West_Slow, + Scroll_West_Medium, + Scroll_West_Fast, + Scroll_NorthWest_Slow, + Scroll_NorthWest_Medium, + Scroll_NorthWest_Fast, + Scroll_NorthEast_Slow, + Scroll_NorthEast_Medium, + Scroll_NorthEast_Fast, + Scroll_SouthEast_Slow, + Scroll_SouthEast_Medium, + Scroll_SouthEast_Fast, + Scroll_SouthWest_Slow, + Scroll_SouthWest_Medium, + Scroll_SouthWest_Fast, + + // Heretic-type scrollers + Carry_East5 = 225, + Carry_East10, + Carry_East25, + Carry_East30, + Carry_East35, + Carry_North5, + Carry_North10, + Carry_North25, + Carry_North30, + Carry_North35, + Carry_South5, + Carry_South10, + Carry_South25, + Carry_South30, + Carry_South35, + Carry_West5, + Carry_West10, + Carry_West25, + Carry_West30, + Carry_West35 +} + +// [RH] Equivalents for BOOM's generalized sector types +define DAMAGE_MASK (0x0300) +define SECRET_MASK (0x0400) +define FRICTION_MASK (0x0800) +define PUSH_MASK (0x1000) + + diff --git a/wadsrc/xlat/doom.txt b/wadsrc/xlat/doom.txt index ca13bc244..c07c9e3ab 100644 --- a/wadsrc/xlat/doom.txt +++ b/wadsrc/xlat/doom.txt @@ -1,538 +1,29 @@ -include "xlat/defines.i" - - 1 = USE|MONST|REP, Door_Raise (0, D_SLOW, VDOORWAIT, tag) - 2 = WALK, Door_Open (tag, D_SLOW) - 3 = WALK, Door_Close (tag, D_SLOW) - 4 = WALK|MONST, Door_Raise (tag, D_SLOW, VDOORWAIT) - 5 = WALK, Floor_RaiseToLowestCeiling (tag, F_SLOW) - 6 = WALK, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) - 7 = USE, Stairs_BuildUpDoom (tag, ST_SLOW, 8) - 8 = WALK, Stairs_BuildUpDoom (tag, ST_SLOW, 8) - 9 = USE, Floor_Donut (tag, DORATE, DORATE) - 10 = WALK|MONST, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) - 11 = USE, Exit_Normal (0) - 12 = WALK, Light_MaxNeighbor (tag) - 13 = WALK, Light_ChangeToValue (tag, 255) - 14 = USE, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) - 15 = USE, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) - 16 = WALK, Door_CloseWaitOpen (tag, D_SLOW, 240) - 17 = WALK, Light_StrobeDoom (tag, 5, 35) - 18 = USE, Floor_RaiseToNearest (tag, F_SLOW) - 19 = WALK, Floor_LowerToHighest (tag, F_SLOW, 128) - 20 = USE, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) - 21 = USE, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT) - 22 = WALK, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) - 23 = USE, Floor_LowerToLowest (tag, F_SLOW) - 24 = SHOOT, Floor_RaiseToLowestCeiling (tag, F_SLOW) - 25 = WALK, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) - 26 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, BCard | CardIsSkull, tag) - 27 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, YCard | CardIsSkull, tag) - 28 = USE|REP, Door_LockedRaise (0, D_SLOW, VDOORWAIT, RCard | CardIsSkull, tag) - 29 = USE, Door_Raise (tag, D_SLOW, VDOORWAIT) - 30 = WALK, Floor_RaiseByTexture (tag, F_SLOW) - 31 = USE, Door_Open (0, D_SLOW, tag) - 32 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, BCard | CardIsSkull, tag) - 33 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, RCard | CardIsSkull, tag) - 34 = USE|MONST, Door_LockedRaise (0, D_SLOW, 0, YCard | CardIsSkull, tag) - 35 = WALK, Light_ChangeToValue (tag, 35) - 36 = WALK, Floor_LowerToHighest (tag, F_FAST, 136) - 37 = WALK, Floor_LowerToLowestTxTy (tag, F_SLOW) - 38 = WALK, Floor_LowerToLowest (tag, F_SLOW) - 39 = WALK|MONST, Teleport (0, tag) - 40 = WALK, Generic_Ceiling (tag, C_SLOW, 0, 1, 8) - 41 = USE, Ceiling_LowerToFloor (tag, C_SLOW) - 42 = USE|REP, Door_Close (tag, D_SLOW) - 43 = USE|REP, Ceiling_LowerToFloor (tag, C_SLOW) - 44 = WALK, Ceiling_LowerAndCrush (tag, C_SLOW, 0) - 45 = USE|REP, Floor_LowerToHighest (tag, F_SLOW, 128) - 46 = SHOOT|REP|MONST, Door_Open (tag, D_SLOW) - 47 = SHOOT, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) - 48 = 0, Scroll_Texture_Left (SCROLL_UNIT) - 49 = USE, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) - 50 = USE, Door_Close (tag, D_SLOW) - 51 = USE, Exit_Secret (0) - 52 = WALK, Exit_Normal (0) - 53 = WALK, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) - 54 = WALK, Plat_Stop (tag) - 55 = USE, Floor_RaiseAndCrush (tag, F_SLOW, 10) - 56 = WALK, Floor_RaiseAndCrush (tag, F_SLOW, 10) - 57 = WALK, Ceiling_CrushStop (tag) - 58 = WALK, Floor_RaiseByValue (tag, F_SLOW, 24) - 59 = WALK, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) - 60 = USE|REP, Floor_LowerToLowest (tag, F_SLOW) - 61 = USE|REP, Door_Open (tag, D_SLOW) - 62 = USE|REP, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) - 63 = USE|REP, Door_Raise (tag, D_SLOW, VDOORWAIT) - 64 = USE|REP, Floor_RaiseToLowestCeiling (tag, F_SLOW) - 65 = USE|REP, Floor_RaiseAndCrush (tag, F_SLOW, 10) - 66 = USE|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) - 67 = USE|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) - 68 = USE|REP, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) - 69 = USE|REP, Floor_RaiseToNearest (tag, F_SLOW) - 70 = USE|REP, Floor_LowerToHighest (tag, F_FAST, 136) - 71 = USE, Floor_LowerToHighest (tag, F_FAST, 136) - 72 = WALK|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0) - 73 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) - 74 = WALK|REP, Ceiling_CrushStop (tag) - 75 = WALK|REP, Door_Close (tag, D_SLOW) - 76 = WALK|REP, Door_CloseWaitOpen (tag, D_SLOW, 240) - 77 = WALK|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) - 78 = USE|REP, Floor_TransferNumeric (tag) // <- BOOM special - 79 = WALK|REP, Light_ChangeToValue (tag, 35) - 80 = WALK|REP, Light_MaxNeighbor (tag) - 81 = WALK|REP, Light_ChangeToValue (tag, 255) - 82 = WALK|REP, Floor_LowerToLowest (tag, F_SLOW) - 83 = WALK|REP, Floor_LowerToHighest (tag, F_SLOW, 128) - 84 = WALK|REP, Floor_LowerToLowestTxTy (tag, F_SLOW) - 85 = 0, Scroll_Texture_Right (SCROLL_UNIT) // <- BOOM special - 86 = WALK|REP, Door_Open (tag, D_SLOW) - 87 = WALK|REP, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) - 88 = WALK|REP|MONST, Plat_DownWaitUpStayLip (tag, P_FAST, PLATWAIT, 0) - 89 = WALK|REP, Plat_Stop (tag) - 90 = WALK|REP, Door_Raise (tag, D_SLOW, VDOORWAIT) - 91 = WALK|REP, Floor_RaiseToLowestCeiling (tag, F_SLOW) - 92 = WALK|REP, Floor_RaiseByValue (tag, F_SLOW, 24) - 93 = WALK|REP, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) - 94 = WALK|REP, Floor_RaiseAndCrush (tag, F_SLOW, 10) - 95 = WALK|REP, Plat_RaiseAndStayTx0 (tag, P_SLOW/2) - 96 = WALK|REP, Floor_RaiseByTexture (tag, F_SLOW) - 97 = WALK|REP|MONST, Teleport (0, tag) - 98 = WALK|REP, Floor_LowerToHighest (tag, F_FAST, 136) - 99 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull) -100 = WALK, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) -101 = USE, Floor_RaiseToLowestCeiling (tag, F_SLOW) -102 = USE, Floor_LowerToHighest (tag, F_SLOW, 128) -103 = USE, Door_Open (tag, D_SLOW) -104 = WALK, Light_MinNeighbor (tag) -105 = WALK|REP, Door_Raise (tag, D_FAST, VDOORWAIT) -106 = WALK|REP, Door_Open (tag, D_FAST) -107 = WALK|REP, Door_Close (tag, D_FAST) -108 = WALK, Door_Raise (tag, D_FAST, VDOORWAIT) -109 = WALK, Door_Open (tag, D_FAST) -110 = WALK, Door_Close (tag, D_FAST) -111 = USE, Door_Raise (tag, D_FAST, VDOORWAIT) -112 = USE, Door_Open (tag, D_FAST) -113 = USE, Door_Close (tag, D_FAST) -114 = USE|REP, Door_Raise (tag, D_FAST, VDOORWAIT) -115 = USE|REP, Door_Open (tag, D_FAST) -116 = USE|REP, Door_Close (tag, D_FAST) -117 = USE|REP, Door_Raise (0, D_FAST, VDOORWAIT, tag) -118 = USE, Door_Open (0, D_FAST, tag) -119 = WALK, Floor_RaiseToNearest (tag, F_SLOW) -120 = WALK|REP, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) -121 = WALK, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) -122 = USE, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) -123 = USE|REP, Plat_DownWaitUpStayLip (tag, P_TURBO, PLATWAIT, 0) -124 = WALK, Exit_Secret (0) -125 = MONWALK, Teleport (0, tag) -126 = MONWALK|REP, Teleport (0, tag) -127 = USE, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) -128 = WALK|REP, Floor_RaiseToNearest (tag, F_SLOW) -129 = WALK|REP, Floor_RaiseToNearest (tag, F_FAST) -130 = WALK, Floor_RaiseToNearest (tag, F_FAST) -131 = USE, Floor_RaiseToNearest (tag, F_FAST) -132 = USE|REP, Floor_RaiseToNearest (tag, F_FAST) -133 = USE, Door_LockedRaise (tag, D_FAST, 0, BCard | CardIsSkull) -134 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, RCard | CardIsSkull) -135 = USE, Door_LockedRaise (tag, D_FAST, 0, RCard | CardIsSkull) -136 = USE|REP, Door_LockedRaise (tag, D_FAST, 0, YCard | CardIsSkull) -137 = USE, Door_LockedRaise (tag, D_FAST, 0, YCard | CardIsSkull) -138 = USE|REP, Light_ChangeToValue (tag, 255) -139 = USE|REP, Light_ChangeToValue (tag, 35) -140 = USE, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) -141 = WALK, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) - -/****** The following are all new to BOOM ******/ - -142 = WALK, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) -143 = WALK, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) -144 = WALK, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) -145 = WALK, Ceiling_LowerToFloor (tag, C_SLOW) -146 = WALK, Floor_Donut (tag, DORATE, DORATE) -147 = WALK|REP, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) -148 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 3) -149 = WALK|REP, Plat_UpByValueStayTx (tag, P_SLOW/2, 4) -150 = WALK|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) -151 = WALK|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) -152 = WALK|REP, Ceiling_LowerToFloor (tag, C_SLOW) -153 = WALK, Floor_TransferTrigger (tag) -154 = WALK|REP, Floor_TransferTrigger (tag) -155 = WALK|REP, Floor_Donut (tag, DORATE, DORATE) -156 = WALK|REP, Light_StrobeDoom (tag, 5, 35) -157 = WALK|REP, Light_MinNeighbor (tag) -158 = USE, Floor_RaiseByTexture (tag, F_SLOW) -159 = USE, Floor_LowerToLowestTxTy (tag, F_SLOW) -160 = USE, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) -161 = USE, Floor_RaiseByValue (tag, F_SLOW, 24) -162 = USE, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) -163 = USE, Plat_Stop (tag) -164 = USE, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) -165 = USE, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) -166 = USE, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) -167 = USE, Ceiling_LowerAndCrush (tag, C_SLOW, 0) -168 = USE, Ceiling_CrushStop (tag) -169 = USE, Light_MaxNeighbor (tag) -170 = USE, Light_ChangeToValue (tag, 35) -171 = USE, Light_ChangeToValue (tag, 255) -172 = USE, Light_StrobeDoom (tag, 5, 35) -173 = USE, Light_MinNeighbor (tag) -174 = USE|MONST, Teleport (0, tag) -175 = USE, Door_CloseWaitOpen (tag, F_SLOW, 240) -176 = USE|REP, Floor_RaiseByTexture (tag, F_SLOW) -177 = USE|REP, Floor_LowerToLowestTxTy (tag, F_SLOW) -178 = USE|REP, Floor_RaiseByValueTimes8 (tag, F_SLOW, 64) -179 = USE|REP, Floor_RaiseByValueTxTy (tag, F_SLOW, 24) -180 = USE|REP, Floor_RaiseByValue (tag, F_SLOW, 24) -181 = USE|REP, Plat_PerpetualRaiseLip (tag, P_SLOW, PLATWAIT, 0) -182 = USE|REP, Plat_Stop (tag) -183 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_NORMAL, C_NORMAL, 10) -184 = USE|REP, Ceiling_CrushAndRaiseA (tag, C_SLOW, C_SLOW, 10) -185 = USE|REP, Ceiling_CrushAndRaiseSilentA (tag, C_SLOW, C_SLOW, 10) -186 = USE|REP, FloorAndCeiling_LowerRaise (tag, F_SLOW, C_SLOW) -187 = USE|REP, Ceiling_LowerAndCrush (tag, C_SLOW, 0) -188 = USE|REP, Ceiling_CrushStop (tag) -189 = USE, Floor_TransferTrigger (tag) -190 = USE|REP, Floor_TransferTrigger (tag) -191 = USE|REP, Floor_Donut (tag, DORATE, DORATE) -192 = USE|REP, Light_MaxNeighbor (tag) -193 = USE|REP, Light_StrobeDoom (tag, 5, 35) -194 = USE|REP, Light_MinNeighbor (tag) -195 = USE|REP|MONST, Teleport (0, tag) -196 = USE|REP, Door_CloseWaitOpen (tag, D_SLOW, 240) -197 = SHOOT, Exit_Normal (0) -198 = SHOOT, Exit_Secret (0) -199 = WALK, Ceiling_LowerToLowest (tag, C_SLOW) -200 = WALK, Ceiling_LowerToHighestFloor (tag, C_SLOW) -201 = WALK|REP, Ceiling_LowerToLowest (tag, C_SLOW) -202 = WALK|REP, Ceiling_LowerToHighestFloor (tag, C_SLOW) -203 = USE, Ceiling_LowerToLowest (tag, C_SLOW) -204 = USE, Ceiling_LowerToHighestFloor (tag, C_SLOW) -205 = USE|REP, Ceiling_LowerToLowest (tag, C_SLOW) -206 = USE|REP, Ceiling_LowerToHighestFloor (tag, C_SLOW) -207 = WALK|MONST, Teleport_NoFog (0, 0, tag) -208 = WALK|REP|MONST, Teleport_NoFog (0, 0, tag) -209 = USE|MONST, Teleport_NoFog (0, 0, tag) -210 = USE|REP|MONST, Teleport_NoFog (0, 0, tag) -211 = USE|REP, Plat_ToggleCeiling (tag) -212 = WALK|REP, Plat_ToggleCeiling (tag) -213 = 0, Transfer_FloorLight (tag) -214 = 0, Scroll_Ceiling (tag, 6, 0, 0, 0) -215 = 0, Scroll_Floor (tag, 6, 0, 0, 0) -216 = 0, Scroll_Floor (tag, 6, 1, 0, 0) -217 = 0, Scroll_Floor (tag, 6, 2, 0, 0) -218 = 0, Scroll_Texture_Model (lineid, 2) -219 = WALK, Floor_LowerToNearest (tag, F_SLOW) -220 = WALK|REP, Floor_LowerToNearest (tag, F_SLOW) -221 = USE, Floor_LowerToNearest (tag, F_SLOW) -222 = USE|REP, Floor_LowerToNearest (tag, F_SLOW) -223 = 0, Sector_SetFriction (tag, 0) -224 = 0, Sector_SetWind (tag, 0, 0, 1) -225 = 0, Sector_SetCurrent (tag, 0, 0, 1) -226 = 0, PointPush_SetForce (tag, 0, 0, 1) -227 = WALK, Elevator_RaiseToNearest (tag, ELEVATORSPEED) -228 = WALK|REP, Elevator_RaiseToNearest (tag, ELEVATORSPEED) -229 = USE, Elevator_RaiseToNearest (tag, ELEVATORSPEED) -230 = USE|REP, Elevator_RaiseToNearest (tag, ELEVATORSPEED) -231 = WALK, Elevator_LowerToNearest (tag, ELEVATORSPEED) -232 = WALK|REP, Elevator_LowerToNearest (tag, ELEVATORSPEED) -233 = USE, Elevator_LowerToNearest (tag, ELEVATORSPEED) -234 = USE|REP, Elevator_LowerToNearest (tag, ELEVATORSPEED) -235 = WALK, Elevator_MoveToFloor (tag, ELEVATORSPEED) -236 = WALK|REP, Elevator_MoveToFloor (tag, ELEVATORSPEED) -237 = USE, Elevator_MoveToFloor (tag, ELEVATORSPEED) -238 = USE|REP, Elevator_MoveToFloor (tag, ELEVATORSPEED) -239 = WALK, Floor_TransferNumeric (tag) -240 = WALK|REP, Floor_TransferNumeric (tag) -241 = USE, Floor_TransferNumeric (tag) -242 = 0, Transfer_Heights (tag) -243 = WALK|MONST, Teleport_Line (tag, tag, 0) -244 = WALK|REP|MONST, Teleport_Line (tag, tag, 0) -245 = 0, Scroll_Ceiling (tag, 5, 0, 0, 0) -246 = 0, Scroll_Floor (tag, 5, 0, 0, 0) -247 = 0, Scroll_Floor (tag, 5, 1, 0, 0) -248 = 0, Scroll_Floor (tag, 5, 2, 0, 0) -249 = 0, Scroll_Texture_Model (lineid, 1) -250 = 0, Scroll_Ceiling (tag, 4, 0, 0, 0) -251 = 0, Scroll_Floor (tag, 4, 0, 0, 0) -252 = 0, Scroll_Floor (tag, 4, 1, 0, 0) -253 = 0, Scroll_Floor (tag, 4, 2, 0, 0) -254 = 0, Scroll_Texture_Model (lineid, 0) -255 = 0, Scroll_Texture_Offsets () -256 = WALK|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) -257 = WALK|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) -258 = USE|REP, Stairs_BuildUpDoom (tag, ST_SLOW, 8, 0, 0) -259 = USE|REP, Stairs_BuildUpDoom (tag, ST_TURBO, 16, 0, 0) -260 = 0, TranslucentLine (lineid, 168) // Changed to better reflect the BOOM default -261 = 0, Transfer_CeilingLight (tag) -262 = WALK|MONST, Teleport_Line (tag, tag, 1) -263 = WALK|REP|MONST, Teleport_Line (tag, tag, 1) -264 = MONWALK, Teleport_Line (tag, tag, 1) -265 = MONWALK|REP, Teleport_Line (tag, tag, 1) -266 = MONWALK, Teleport_Line (tag, tag, 0) -267 = MONWALK|REP, Teleport_Line (tag, tag, 0) -268 = MONWALK, Teleport_NoFog (0, 0, tag) -269 = MONWALK|REP, Teleport_NoFog (0, 0, tag) - -/****** MBF linetypes ******/ - -271 = 0, Static_Init (tag, Init_TransferSky, 0) -272 = 0, Static_Init (tag, Init_TransferSky, 1) - -/****** Legacy linetype ******/ - -280 = 0, Transfer_Heights (tag, 12) - -// No, I haven't actually looked at these in Legacy. But these look like they -// should give results equivalent to hardware Legacy rendering. -284 = 0, TranslucentLine (lineid, 128, 0) -285 = 0, TranslucentLine (lineid, 192, 0) -286 = 0, TranslucentLine (lineid, 48, 0) -287 = 0, TranslucentLine (lineid, 128, 1) - -281 = 0, ExtraFloor_LightOnly (tag, 0) // thick extra floor -301 = 0, ExtraFloor_LightOnly (tag, 1) // thick water -302 = 0, ExtraFloor_LightOnly (tag, 1) // fog -303 = 0, ExtraFloor_LightOnly (tag, 0) // light -304 = 0, ExtraFloor_LightOnly (tag, 1) // opaque water -305 = 0, ExtraFloor_LightOnly (tag, 1) // light block - -/****** ZDoom linetypes ******/ - -333 = 0, Static_Init (tag, Init_Gravity) -334 = 0, Static_Init (tag, Init_Color) -335 = 0, Static_Init (tag, Init_Damage) -336 = 0, Line_Mirror () -337 = 0, Line_Horizon () -338 = WALK, Floor_Waggle (tag, 24, 32, 0, 0) -339 = WALK, Floor_Waggle (tag, 12, 32, 0, 0) - -340 = 0, Plane_Align (1, 0) // Slope front floor -341 = 0, Plane_Align (0, 1) // Slope front ceiling -342 = 0, Plane_Align (1, 1) // Slope front floor and ceiling -343 = 0, Plane_Align (2, 0) // Slope back floor -344 = 0, Plane_Align (0, 2) // Slope back ceiling -345 = 0, Plane_Align (2, 2) // Slope back floor and ceiling -346 = 0, Plane_Align (2, 1) // Slope b.f. and f.c. -347 = 0, Plane_Align (1, 2) // Slope f.f. and b.c. - -348 = WALK, Autosave () -349 = USE, Autosave () - -350 = 0, Transfer_Heights (tag, 2) // Just fake the floor -351 = 0, Transfer_Heights (tag, 6) // Just fake the floor and clip it too - -/****** EDGE linetypes ******/ - -400 = 0, ExtraFloor_LightOnly (tag, 0) // thick -401 = 0, ExtraFloor_LightOnly (tag, 0) // thick, side_upper -402 = 0, ExtraFloor_LightOnly (tag, 0) // thick, side_lower -403 = 0, ExtraFloor_LightOnly (tag, 2) // opaque liquid, flooder -404 = 0, ExtraFloor_LightOnly (tag, 2) // 80% liquid, flooder -405 = 0, ExtraFloor_LightOnly (tag, 2) // 60% liquid, flooder -406 = 0, ExtraFloor_LightOnly (tag, 2) // 40% liquid, flooder -407 = 0, ExtraFloor_LightOnly (tag, 2) // 20% liquid, flooder -408 = 0, ExtraFloor_LightOnly (tag, 0) // light -413 = 0, ExtraFloor_LightOnly (tag, 0) // thin opaque floor -414 = 0, ExtraFloor_LightOnly (tag, 0) // thin 80% floor -415 = 0, ExtraFloor_LightOnly (tag, 0) // thin 60% floor -416 = 0, ExtraFloor_LightOnly (tag, 0) // thin 40% floor -417 = 0, ExtraFloor_LightOnly (tag, 0) // thin 20% floor - -409 = 0, TranslucentLine (lineid, 204) // 80% translucent -410 = 0, TranslucentLine (lineid, 153) // 60% translucent -411 = 0, TranslucentLine (lineid, 101) // 40% translucent -412 = 0, TranslucentLine (lineid, 50) // 20% translucent -422 = 0, Scroll_Texture_Right (SCROLL_UNIT) -423 = 0, Scroll_Texture_Up (SCROLL_UNIT) -424 = 0, Scroll_Texture_Down (SCROLL_UNIT) -425 = 0, Scroll_Texture_Both (0, SCROLL_UNIT, 0, 0, SCROLL_UNIT) -426 = 0, Scroll_Texture_Both (0, SCROLL_UNIT, 0, SCROLL_UNIT, 0) -427 = 0, Scroll_Texture_Both (0, 0, SCROLL_UNIT, 0, SCROLL_UNIT) -428 = 0, Scroll_Texture_Both (0, 0, SCROLL_UNIT, SCROLL_UNIT, 0) -434 = USE, Floor_RaiseByValue (tag, F_SLOW, 2) -435 = USE|REP, Floor_RaiseByValue (tag, F_SLOW, 2) -436 = WALK, Floor_RaiseByValue (tag, F_SLOW, 2) -437 = WALK|REP, Floor_RaiseByValue (tag, F_SLOW, 2) -438 = SHOOT, Floor_RaiseByValue (tag, F_SLOW, 2) -439 = SHOOT|REP, Floor_RaiseByValue (tag, F_SLOW, 2) - -/****** BOOM generalized linetypes ****** - * - * The general structure for a BOOM generalized translator is - * - * [ZDoom Line Special] (first line type for this, last line type for this) - * { - * one or more stores - * } - * - * Stores have the form: - * - * - * - * can be arg2, arg3, arg4, arg5, or flags. Arg1 will always - * be set to the line's tag, so it cannot be specified in a store. - * - * can be |= or =. If it is =, then is simply stored in - * . If it is |=, then is logically or'ed with - * whatever is already in . - * - * can be either a simple number, which will always be stored in - * based on , or it can be a list of numbers chosen - * by using a bitmask. When using a list, this form is used: - * - * mask [choices] - * - * There can be at most 15 choices in a list. (If you need more, use - * more than one list.) Each choice is separated from the other choices - * by a comma. Each individual choice has the form: - * - * : - * - * When ZDoom processes one of these lists, the linetype is logically - * and'ed with the mask. It then searches the list for a selector that - * matches the result of this operation. If it finds one, the selector's - * corresponding value is used as the value for to store into - * . - */ +include "xlat/base.txt" -// Generalized crusher (tag, dnspeed, upspeed, silent, damage) -[Generic_Crusher] (0x2f80, 0x2fff) -{ - flags |= 0x0020 [0x0020 : MONST] - arg2 = 0x0018 [0x0000 : C_SLOW, - 0x0008 : C_NORMAL, - 0x0010 : C_FAST, - 0x0018 : C_TURBO] - arg3 = 0x0018 [0x0000 : C_SLOW, - 0x0008 : C_NORMAL, - 0x0010 : C_FAST, - 0x0018 : C_TURBO] - arg4 = 0x0040 [0x0040 : 1] - arg5 = 10 -} +sector bitmask 0xfe0 <<= 3; -// Generalized stairs (tag, speed, step, dir/igntxt, reset) -[Generic_Stairs] (0x3000, 0x33ff) -{ - flags |= 0x0020 [0x0020 : MONST] - arg2 = 0x0018 [0x0000 : ST_SLOW, - 0x0008 : ST_NORMAL, - 0x0010 : ST_FAST, - 0x0018 : ST_TURBO] - arg3 = 0x00c0 [0x0000 : 4, - 0x0040 : 8, - 0x0080 : 16, - 0x00c0 : 24] - arg4 = 0x0300 [0x0100 : 1, - 0x0200 : 2, - 0x0300 : 3] -} +sector 1 = dLight_Flicker; +sector 2 = dLight_StrobeFast; +sector 3 = dLight_StrobeSlow; +sector 4 = dLight_Strobe_Hurt; +sector 5 = dDamage_Hellslime; +sector 7 = dDamage_Nukage; +sector 8 = dLight_Glow; +sector 9 = SECRET_MASK nobitmask; +sector 10 = dSector_DoorCloseIn30; +sector 11 = dDamage_End; +sector 12 = dLight_StrobeSlowSync; +sector 13 = dLight_StrobeFastSync; +sector 14 = dSector_DoorRaiseIn5Mins; +sector 15 = dFriction_Low; +sector 16 = dDamage_SuperHellslime; +sector 17 = dLight_FireFlicker; +sector 18 = dDamage_LavaWimpy; +sector 19 = dDamage_LavaHefty; +sector 20 = dScroll_EastLavaDamage; +sector 21 = Light_Phased; +sector 22 = LightSequenceStart; +sector 23 = LightSequenceSpecial1; +sector 24 = LightSequenceSpecial2; -// Generalized lift (tag, speed, delay, target, height) -[Generic_Lift] (0x3400, 0x37ff) -{ - flags |= 0x0020 [0x0020 : MONST] - arg2 = 0x0018 [0x0000 : P_SLOW*2, - 0x0008 : P_NORMAL*2, - 0x0010 : P_FAST*2, - 0x0018 : P_TURBO*2] - arg3 = 0x00c0 [0x0000 : 8, - 0x0040 : 24, - 0x0080 : 40, - 0x00c0 : 80] - arg4 = 0x0300 [0x0000 : 1, - 0x0100 : 2, - 0x0200 : 3, - 0x0300 : 4] -} - -// Generalized locked door (tag, speed, kind, delay, lock) -[Generic_Door] (0x3800, 0x3bff) -{ - arg2 = 0x0018 [0x0000 : D_SLOW, - 0x0008 : D_NORMAL, - 0x0010 : D_FAST, - 0x0018 : D_TURBO] - arg3 = 0x0020 [0x0020 : 1] - arg4 = 0x0020 [0 : 34] - arg5 = 0x01c0 [0x0000 : AnyKey, - 0x0040 : RCard, - 0x0080 : BCard, - 0x00c0 : YCard, - 0x0100 : RSkull, - 0x0140 : BSkull, - 0x0180 : YSkull, - 0x01c0 : AllKeys] - arg5 |= 0x0200 [0x0200 : CardIsSkull] -} - -// Generalized door (tag, speed, kind, delay, lock) -[Generic_Door] (0x3c00, 0x3fff) -{ - flags |= 0x0080 [0x0080 : MONST] - arg2 = 0x0018 [0x0000 : D_SLOW, - 0x0008 : D_NORMAL, - 0x0010 : D_FAST, - 0x0018 : D_TURBO] - arg3 = 0x0060 [0x0000 : 0, - 0x0020 : 1, - 0x0040 : 2, - 0x0060 : 3] - arg4 = 0x0300 [0x0000 : 8, - 0x0100 : 34, - 0x0200 : 69, - 0x0300 : 240] -} - -// Generalized ceiling (tag, speed, height, target, change/model/direct/crush) -[Generic_Ceiling] (0x4000, 0x5fff) -{ - flags |= 0x0c20 [0x0020 : MONST] - arg2 = 0x0018 [0x0000 : F_SLOW, - 0x0008 : F_NORMAL, - 0x0010 : F_FAST, - 0x0018 : F_TURBO] - arg3 = 0x0380 [0x0300 : 24, - 0x0380 : 32] - arg4 = 0x0380 [0x0000 : 1, - 0x0080 : 2, - 0x0100 : 3, - 0x0180 : 4, - 0x0200 : 5, - 0x0280 : 6] - arg5 = 0x0c00 [0x0000 : 0, - 0x0400 : 1, - 0x0800 : 2, - 0x0c00 : 3] - arg5 |= 0x0060 [0x0020 : 4, - 0x0040 : 8, - 0x0060 : 12] - arg5 |= 0x1000 [0x1000 : 16] -} - -// Generalized floor (tag, speed, height, target, change/model/direct/crush) -[Generic_Floor] (0x6000, 0x7fff) -{ - flags |= 0x0c20 [0x0020 : MONST] - arg2 = 0x0018 [0x0000 : F_SLOW, - 0x0008 : F_NORMAL, - 0x0010 : F_FAST, - 0x0018 : F_TURBO] - arg3 = 0x0380 [0x0300 : 24, - 0x0380 : 32] - arg4 = 0x0380 [0x0000 : 1, - 0x0080 : 2, - 0x0100 : 3, - 0x0180 : 4, - 0x0200 : 5, - 0x0280 : 6] - arg5 = 0x0c00 [0x0000 : 0, - 0x0400 : 1, - 0x0800 : 2, - 0x0c00 : 3] - arg5 |= 0x0060 [0x0020 : 4, - 0x0040 : 8, - 0x0060 : 12] - arg5 |= 0x1000 [0x1000 : 16] -} diff --git a/wadsrc/xlat/heretic.txt b/wadsrc/xlat/heretic.txt index 3f2d09db4..0632a9ae5 100644 --- a/wadsrc/xlat/heretic.txt +++ b/wadsrc/xlat/heretic.txt @@ -1,4 +1,4 @@ -include "xlat/doom.txt" +include "xlat/base.txt" 7 = USE, Stairs_BuildUpDoom (tag, F_SLOW, 8) 8 = WALK, Stairs_BuildUpDoom (tag, F_SLOW, 8) @@ -9,3 +9,58 @@ include "xlat/doom.txt" 105 = WALK, Exit_Secret (0) 106 = WALK, Stairs_BuildUpDoom (tag, F_SLOW, 16) 107 = USE, Stairs_BuildUpDoom (tag, F_SLOW, 16) + +sector bitmask 0xfc0 <<= 3; + +sector 1 = dLight_Flicker; +sector 2 = dLight_StrobeFast; +sector 3 = dLight_StrobeSlow; +sector 4 = dScroll_EastLavaDamage; +sector 5 = dDamage_LavaWimpy; +sector 7 = dDamage_Nukage; +sector 8 = dLight_Glow; +sector 9 = SECRET_MASK nobitmask; +sector 10 = dSector_DoorCloseIn30; +sector 11 = dDamage_End; +sector 12 = dLight_StrobeSlowSync; +sector 13 = dLight_StrobeFastSync; +sector 14 = dSector_DoorRaiseIn5Mins; +sector 15 = dFriction_Low; +sector 16 = dDamage_LavaHefty; +sector 17 = dLight_FireFlicker; +sector 18 = dDamage_LavaWimpy; +sector 19 = dDamage_LavaHefty; +sector 20 = Carry_East5; +sector 21 = Carry_East10; +sector 22 = Carry_East25; +sector 23 = Carry_East30; +sector 24 = Carry_East35; +sector 25 = Carry_North5; +sector 26 = Carry_North10; +sector 27 = Carry_North25; +sector 28 = Carry_North30; +sector 29 = Carry_North35; +sector 30 = Carry_South5; +sector 31 = Carry_South10; +sector 32 = Carry_South25; +sector 33 = Carry_South30; +sector 34 = Carry_South35; +sector 35 = Carry_West5; +sector 36 = Carry_West10; +sector 37 = Carry_West25; +sector 38 = Carry_West30; +sector 39 = Carry_West35; +sector 40 = Wind_East_Weak; +sector 41 = Wind_East_Medium; +sector 42 = Wind_East_Strong; +sector 43 = Wind_North_Weak; +sector 44 = Wind_North_Medium; +sector 45 = Wind_North_Strong; +sector 46 = Wind_South_Weak; +sector 47 = Wind_South_Medium; +sector 48 = Wind_South_Strong; +sector 49 = Wind_West_Weak; +sector 50 = Wind_West_Medium; +sector 51 = Wind_West_Strong; + + diff --git a/wadsrc/xlat/strife.txt b/wadsrc/xlat/strife.txt index 9121a519f..bd9e9056a 100644 --- a/wadsrc/xlat/strife.txt +++ b/wadsrc/xlat/strife.txt @@ -322,4 +322,32 @@ RetailOnly = 121 214 = USE|REP, ACS_ExecuteWithResult (0, 214, tag) 229 = USE|REP, ACS_ExecuteWithResult (0, 229, tag) 233 = USE|REP, ACS_ExecuteWithResult (0, 233, tag) -234 = USE|REP, ACS_ExecuteWithResult (0, 234, tag) \ No newline at end of file +234 = USE|REP, ACS_ExecuteWithResult (0, 234, tag) + +sector bitmask 0xfe0 <<= 3; + +sector 1 = dLight_Flicker; +sector 2 = dLight_StrobeFast; +sector 3 = dLight_StrobeSlow; +sector 4 = sLight_Strobe_Hurt; +sector 5 = sDamage_Hellslime; +sector 7 = dDamage_Nukage; +sector 8 = dLight_Glow; +sector 9 = SECRET_MASK nobitmask; +sector 10 = dSector_DoorCloseIn30; +sector 11 = dDamage_End; +sector 12 = dLight_StrobeSlowSync; +sector 13 = dLight_StrobeFastSync; +sector 14 = dSector_DoorRaiseIn5Mins; +sector 15 = Damage_InstantDeath; +sector 16 = sDamage_SuperHellslime; +sector 17 = dLight_FireFlicker; +sector 18 = Scroll_StrifeCurrent; +sector 19 = dDamage_LavaHefty; +sector 20 = dScroll_EastLavaDamage; +sector 21 = Light_Phased; +sector 22 = LightSequenceStart; +sector 23 = LightSequenceSpecial1; +sector 24 = LightSequenceSpecial2; + + diff --git a/wadsrc/zdoom.lst b/wadsrc/zdoom.lst index 4d68e7f58..cd435fc7f 100644 --- a/wadsrc/zdoom.lst +++ b/wadsrc/zdoom.lst @@ -69,6 +69,7 @@ sbarinfo.txt sbarinfo.txt xlat/doom.txt xlat/doom.txt xlat/heretic.txt xlat/heretic.txt xlat/strife.txt xlat/strife.txt +xlat/base.txt xlat/base.txt xlat/defines.i xlat/defines.i @@ -77,8 +78,6 @@ xlat/defines.i xlat/defines.i dehsupp.txt dehsupp.txt -sectorx.txt sectorx.txt - animated.lmp animated.lmp spaldoom.lmp spaldoom.lmp spalhtic.lmp spalhtic.lmp