#include "xlat/doom.txt" // xlat file for Eternity levels. // Many specials are unsupported, especially portal stuff. // Some unsupported linedefs wouldn't be hard to add to ZDoom, // or are already there but implemented differently. Others are // practically impossible, or aren't worth the effort. define Unsupported (0) // The tag for such a line is actually a key to find, in an ExtraData lump // indicated for the current level by the EMAPINFO lump, what line special // to actually use. This is how parameterized linedefs are used by Eternity // in the Doom format. "xlating" this would thus be quite complicated... 270 = 0, Unsupported() // "ExtraDataSpecial" // These two are standard MBF specials, no need to redefine them, they're in xlat/doom.txt // 271 = 0, Static_Init (tag, Init_TransferSky, 0) // 272 = 0, Static_Init (tag, Init_TransferSky, 1) // Small script starters. Small is considered deprecated now anyway. 273 = 0, Unsupported() // "WR_StartScript_1S" 274 = 0, Unsupported() // "W1_StartScript" 275 = 0, Unsupported() // "W1_StartScript_1S" 276 = 0, Unsupported() // "SR_StartScript" 277 = 0, Unsupported() // "S1_StartScript" 278 = 0, Unsupported() // "GR_StartScript" 279 = 0, Unsupported() // "G1_StartScript" 280 = 0, Unsupported() // "WR_StartScript" // 3D mid-textures 281 = 0, Sector_Attach3DMidtex(tag, 0, 0) // "3DMidTex_MoveWithFloor" 282 = 0, Sector_Attach3DMidtex(tag, 0, 1) // "3DMidTex_MoveWithCeiling" // Plane portals are not supported in ZDoom, though they probably wouldn't be too hard to implement. 283 = 0, Sector_SetPortal(tag,3, 1, 0, 0) // "Portal_PlaneCeiling" 284 = 0, Sector_SetPortal(tag,3, 0, 0, 0) // "Portal_PlaneFloor" 285 = 0, Sector_SetPortal(tag,3, 2, 0, 0) // "Portal_PlaneFloorCeiling" 286 = 0, Sector_SetPortal(tag,4, 1, 0, 0) // "Portal_HorizonCeiling" 287 = 0, Sector_SetPortal(tag,4, 0, 0, 0) // "Portal_HorizonFloor" 288 = 0, Sector_SetPortal(tag,4, 2, 0, 0) // "Portal_HorizonFloorCeiling" 289 = 0, Unsupported() // "Portal_LineTransfer" // Skybox portals 290 = 0, Sector_SetPortal(tag, 2, 1, 1, 0) // "Portal_SkyboxCeiling" 291 = 0, Sector_SetPortal(tag, 2, 0, 1, 0) // "Portal_SkyboxFloor" 292 = 0, Sector_SetPortal(tag, 2, 2, 1, 0) // "Portal_SkyboxFloorCeiling" // Sector specials 293 = 0, Sector_SetWind(tag, 0, 0, 1) // "TransferHereticWind" 294 = 0, Sector_SetCurrent(tag, 0, 0, 1) // "TransferHereticCurrent" // Anchored portals -- Sector_SetPortal needs to allow to set both floor and ceiling, though. 295 = 0, Sector_SetPortal(tag, 0, 1, 1, 0) // "Portal_AnchoredCeiling" 296 = 0, Sector_SetPortal(tag, 0, 0, 1, 0) // "Portal_AnchoredFloor" 297 = 0, Sector_SetPortal(tag, 0, 2, 1, 0) // "Portal_AnchoredFloorCeiling" 298 = 0, Sector_SetPortal(tag, 0, 1, 0, 0) // "Portal_AnchorLine" 299 = 0, Sector_SetPortal(tag, 0, 0, 0, 0) // "Portal_AnchorLineFloor" // Parameterized linedefs // They are never used directly in Doom-format maps. Instead, it passes through ExtraData and 270. // Hexen format is incomplete; and Quasar wants to use ZDoom-compatible special values for UDMF. // So there is no need to bother with them and they are listed only for completeness' sake. /* 300: "Door_Raise" 301: "Door_Open" 302: "Door_Close" 303: "Door_CloseWaitOpen" 304: "Door_WaitRaise" 305: "Door_WaitClose" 306: "Floor_RaiseToHighest" 307: "Floor_LowerToHighest" 308: "Floor_RaiseToLowest" 309: "Floor_LowerToLowest" 310: "Floor_RaiseToNearest" 311: "Floor_LowerToNearest" 312: "Floor_RaiseToLowestCeiling" 313: "Floor_LowerToLowestCeiling" 314: "Floor_RaiseToCeiling" 315: "Floor_RaiseByTexture" 316: "Floor_LowerByTexture" 317: "Floor_RaiseByValue" 318: "Floor_LowerByValue" 319: "Floor_MoveToValue" 320: "Floor_RaiseInstant" 321: "Floor_LowerInstant" 322: "Floor_ToCeilingInstant" 323: "Ceiling_RaiseToHighest" 324: "Ceiling_ToHighestInstant" 325: "Ceiling_RaiseToNearest" 326: "Ceiling_LowerToNearest" 327: "Ceiling_RaiseToLowest" 328: "Ceiling_LowerToLowest" 329: "Ceiling_RaiseToHighestFloor" 330: "Ceiling_LowerToHighestFloor" 331: "Ceiling_ToFloorInstant" 332: "Ceiling_LowerToFloor" 333: "Ceiling_RaiseByTexture" 334: "Ceiling_LowerByTexture" 335: "Ceiling_RaiseByValue" 336: "Ceiling_LowerByValue" 337: "Ceiling_MoveToValue" 338: "Ceiling_RaiseInstant" 339: "Ceiling_LowerInstant" 340: "Stairs_BuildUpDoom" 341: "Stairs_BuildDownDoom" 342: "Stairs_BuildUpDoomSync" 343: "Stairs_BuildDownDoomSync" */ // Two-way portals are not supported yet either 344 = 0, Unsupported() // "Portal_TwowayCeiling" 345 = 0, Unsupported() // "Portal_TwowayFloor" 346 = 0, Unsupported() // "Portal_TwowayAnchorLine" 347 = 0, Unsupported() // "Portal_TwowayAnchorLineFloor" // More parameterized linedefs /* 348: "Polyobj_StartLine" 349: "Polyobj_ExplicitLine" 350: "Polyobj_DoorSlide" 351: "Polyobj_DoorSwing" 352: "Polyobj_Move" 353: "Polyobj_OR_Move" 354: "Polyobj_RotateRight" 355: "Polyobj_OR_RotateRight" 356: "Polyobj_RotateLeft" 357: "Polyobj_OR_RotateLeft" */ // Eternity's linked portals, vertical link version (floor-to-ceiling) 358 = 0, Unsupported() // "Portal_LinkedCeiling" 359 = 0, Unsupported() // "Portal_LinkedFloor" 360 = 0, Unsupported() // "Portal_LinkedAnchorLine" 361 = 0, Unsupported() // "Portal_LinkedAnchorLineFloor" // Even more parameterized linedefs /* 362: "Pillar_Build" 363: "Pillar_BuildAndCrush" 364: "Pillar_Open" 365: "ACS_Execute" 366: "ACS_Suspend" 367: "ACS_Terminate" 368: "Light_RaiseByValue" 369: "Light_LowerByValue" 370: "Light_ChangeToValue" 371: "Light_Fade" 372: "Light_Glow" 373: "Light_Flicker" 374: "Light_Strobe" 375: "Radius_Quake" */ // Eternity's linked portals, horizontal link version (wall-to-wall) 376 = 0, Unsupported() // "Portal_LinkedLineToLine" 377 = 0, Unsupported() // "Portal_LinkedLineToLineAnchor" // The famous Hexen linedef // 378 = Line_SetIdentification // Attached sectors == linked sectors; However, the implementation in Eternity // is based on front sectors of tagged lines, not on sector tags. So instead // of Sector_SetLink, we pass through Static_Init to translate those. 379 = 0, Static_Init(tag, 3, 1) // "Attach_SetCeilingControl" 380 = 0, Static_Init(tag, 3, 0) // "Attach_SetFloorControl" 381 = 0, Static_Init(0, 3, 0, 1) // "Attach_FloorToControl" 382 = 0, Static_Init(0, 3, 1, 2) // "Attach_CeilingToControl" 383 = 0, Static_Init(0, 3, 0, 5) // "Attach_MirrorFloorToControl" 384 = 0, Static_Init(0, 3, 0, 10) // "Attach_MirrorCeilingToControl" // Attach tagged portal to front sector 385 = 0, Sector_SetPortal(0, 1, 3, tag) // "Apply_PortalToFrontsector" // Slopes! 386 = 0, Plane_Align (1, 0) // "Slope_FrontsectorFloor" 387 = 0, Plane_Align (0, 1) // "Slope_FrontsectorCeiling" 388 = 0, Plane_Align (1, 1) // "Slope_FrontsectorFloorAndCeiling" 389 = 0, Plane_Align (2, 0) // "Slope_BacksectorFloor" 390 = 0, Plane_Align (0, 2) // "Slope_BacksectorCeiling" 391 = 0, Plane_Align (2, 2) // "Slope_BacksectorFloorAndCeiling" 392 = 0, Plane_Align (2, 1) // "Slope_BackFloorAndFrontCeiling" 393 = 0, Plane_Align (1, 2) // "Slope_BackCeilingAndFrontFloor" 394 = 0, Plane_Copy (tag, 0) // "Slope_FrontFloorToTaggedSlope" 395 = 0, Plane_Copy (0, tag) // "Slope_FrontCeilingToTaggedSlope" 396 = 0, Plane_Copy(tag, tag)// "Slope_FrontFloorAndCeilingToTaggedSlope" // Last parameterized linedefs // 397 = Floor_Waggle // 398 = Thing_Spawn // 399 = Thing_SpawnNoFog // 400 = Teleport_EndGame