- Added sector type translation to xlat_parser and removed the old sectorx

lump.


SVN r841 (trunk)
This commit is contained in:
Christoph Oelckers 2008-03-23 00:23:47 +00:00
parent 9c1fa19dd2
commit a665663c15
14 changed files with 912 additions and 696 deletions

View file

@ -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.

View file

@ -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,

View file

@ -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<SectorTranslations.Size())
{
if (SectorTranslations[special].bitmask_allowed && mask) special = 0;
else special = SectorTranslations[special].newtype;
}
return special | mask;
}

View file

@ -47,6 +47,8 @@
TAutoGrowArray<FLineTrans> SimpleLineTranslations;
FBoomTranslator Boomish[MAX_BOOMISH];
int NumBoomish;
TAutoGrowArray<FSectorTrans> SectorTranslations;
TArray<FSectorMask> 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;

View file

@ -60,8 +60,29 @@ struct FBoomTranslator
TArray<FBoomArg> 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<FLineTrans> SimpleLineTranslations;
extern FBoomTranslator Boomish[MAX_BOOMISH];
extern int NumBoomish;
extern TAutoGrowArray<FSectorTrans> SectorTranslations;
extern TArray<FSectorMask> SectorMasks;
#endif

View file

@ -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

View file

@ -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; }

View file

@ -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
}

538
wadsrc/xlat/base.txt Normal file
View file

@ -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:
*
* <destination> <op> <value>
*
* <destination> 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.
*
* <op> can be |= or =. If it is =, then <value> is simply stored in
* <destination>. If it is |=, then <value> is logically or'ed with
* whatever is already in <destination>.
*
* <value> can be either a simple number, which will always be stored in
* <destination> based on <op>, 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:
*
* <selector> : <value>
*
* 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 <op> to store into
* <destination>.
*/
// 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]
}

View file

@ -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)

View file

@ -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:
*
* <destination> <op> <value>
*
* <destination> 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.
*
* <op> can be |= or =. If it is =, then <value> is simply stored in
* <destination>. If it is |=, then <value> is logically or'ed with
* whatever is already in <destination>.
*
* <value> can be either a simple number, which will always be stored in
* <destination> based on <op>, 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:
*
* <selector> : <value>
*
* 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 <op> to store into
* <destination>.
*/
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]
}

View file

@ -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;

View file

@ -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)
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;

View file

@ -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