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, 2)
 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, 2)
 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, 2)
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, 2)
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]
}
