Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 1392-2-2-15-attempting-to-draw-a-hud-graphic-with-the-same-lump-name-as-a-lua-script-crashes-the
  • 21-installer-nodd
  • 2210-pre1
  • 2210-pre2
  • 2210-rc1
  • 2210-rc2
  • 2210-rc3
  • 2211-pre1
  • 2211-pre2
  • 2211-rc1
  • 2212-pre1
  • 2212-pre2
  • 2212-pre3
  • 2212-rc1
  • 2213
  • 2214-pre1
  • 2214-pre2
  • 2214-pre3
  • 2214-pre4
  • 2_2_12
  • 64-gl-log
  • COM_ImmedExecute-lua
  • DJGPP
  • accel-momentum
  • acs
  • action-args
  • alpha-fixes
  • any-resolution
  • appveyor
  • blend-locking
  • blentran
  • blua-unary-not-fix
  • boost-tickrate
  • bustablesoundz
  • cleanup-opengl
  • cleanupmusic
  • clipmidtex
  • cmake-valgrind
  • crawlacommander-sprites
  • custom-map-names
  • custom-teams
  • cutscene-cleanup
  • dd-music-bypass
  • dd-music-fix
  • delfile2
  • deprecate-lua-dedicated-server
  • dpl-2
  • dropshadows-spawning
  • dynabsp
  • emblem-drawing
  • exchndl-xp-fix
  • extra-textures
  • few-kart-lua-changes
  • ffloorclip
  • fix-167
  • fix-cvar-conflicts
  • fix-opengl-parameter-crash
  • fix-opengl-shear-roll
  • flipfuncpointers
  • fof-lightlist-fixes
  • font-FUCK
  • frictionrefactor
  • fuck-macros-1
  • gamepad-luakeydown
  • gamepad-morefixes
  • gamepad_experiments
  • gametype-refactor
  • gametype-refactor-1
  • gametype-refactor-player-spawns
  • ghost-networking
  • gif-splitting
  • grr-lj
  • hitboxviewer
  • hwr-texture-cache-refactor
  • hwrender2
  • improve-439
  • increase-maxconditionsets
  • increase-packet-tics
  • input-display
  • input-display-translucency
  • io
  • joystick-juggling-maz
  • just-in-case
  • keycodes-only
  • ksf-wadfiles
  • ld413-mp-fix
  • levelstruct
  • libpng-version-support
  • linedef-actions
  • lj-test
  • lol-states
  • loopedsounds
  • lower-unpegged-fix
  • lua-change-gametype
  • lua-command-netids
  • lua-gfx-2
  • lua-gfx-sprites
  • lua-local
  • makefile-auto-mingw-gcc
  • makefile-tinkering
  • SRB2_release_2.1
  • SRB2_release_2.1.1
  • SRB2_release_2.1.10
  • SRB2_release_2.1.11
  • SRB2_release_2.1.12
  • SRB2_release_2.1.14
  • SRB2_release_2.1.15
  • SRB2_release_2.1.16
  • SRB2_release_2.1.16a
  • SRB2_release_2.1.17
  • SRB2_release_2.1.18
  • SRB2_release_2.1.19
  • SRB2_release_2.1.2
  • SRB2_release_2.1.20
  • SRB2_release_2.1.21
  • SRB2_release_2.1.22
  • SRB2_release_2.1.23
  • SRB2_release_2.1.24
  • SRB2_release_2.1.25
  • SRB2_release_2.1.3
  • SRB2_release_2.1.4
  • SRB2_release_2.1.5
  • SRB2_release_2.1.6
  • SRB2_release_2.1.7
  • SRB2_release_2.1.8
  • SRB2_release_2.1.9
  • SRB2_release_2.2.0
  • SRB2_release_2.2.1
  • SRB2_release_2.2.10
  • SRB2_release_2.2.11
  • SRB2_release_2.2.12
  • SRB2_release_2.2.13
  • SRB2_release_2.2.15
  • SRB2_release_2.2.2
  • SRB2_release_2.2.3
  • SRB2_release_2.2.4
  • SRB2_release_2.2.5
  • SRB2_release_2.2.6
  • SRB2_release_2.2.7
  • SRB2_release_2.2.8
  • SRB2_release_2.2.9
  • td-release-v1.0.0
142 results

Target

Select target project
  • STJr/SRB2
  • Sryder/SRB2
  • wolfy852/SRB2
  • Alpha2244/SRB2
  • Inuyasha/SRB2
  • yoshibot/SRB2
  • TehRealSalt/SRB2
  • PrisimaTF/SRB2
  • Hatninja/SRB2
  • SteelT/SRB2
  • james/SRB2
  • ShaderWraith/SRB2
  • SinnamonLat/SRB2
  • mazmazz_/SRB2
  • filpAM/SRB2
  • chaoloveicemdboy/SRB2
  • Whooa21/SRB2
  • Machturne/SRB2
  • Golden/SRB2
  • Tatsuru/SRB2
  • Snu/SRB2
  • Zwip-Zwap_Zapony/SRB2
  • fickleheart/SRB2
  • alphaRexJames/SRB2
  • JJK/SRB2
  • diskpoppy/SRB2
  • Hannu_Hanhi/SRB2
  • ZipperQR/SRB2
  • kays/SRB2
  • spherallic/SRB2
  • Zippy_Zolton/SRB2
  • namiishere/SRB2
  • Ors/SRB2
  • SMS_Alfredo/SRB2
  • sonic_edge/SRB2
  • lavla/SRB2
  • ashi/SRB2
  • X.organic/SRB2
  • Fafabis/SRB2
  • Meziu/SRB2
  • v-rob/SRB2
  • tertu/SRB2
  • bitten2up/SRB2
  • flarn2006/SRB2
  • Krabs/SRB2
  • clairebun/SRB2
  • Lactozilla/SRB2
  • thehackstack/SRB2
  • Spice/SRB2
  • win8linux/SRB2
  • JohnFrostFox/SRB2
  • talktoneon726/SRB2
  • Wane/SRB2
  • Lamibe/SRB2
  • spectrumuk2/srb-2
  • nerdyminer18/srb-2
  • 256nil/SRB2
  • ARJr/SRB2
  • Alam/SRB2
  • Zenya/srb-2-marathon-demos
  • Acelite/srb-2-archivedmodifications
  • MIDIMan/SRB2
  • Lach/SRB2
  • Frostiikin/bounce-tweaks
  • Jaden/SRB2
  • Tyron/SRB2
  • Astronight/SRB2
  • Mari0shi06/SRB2
  • aiire/SRB2
  • Galactice/SRB2
  • srb2-ports/srb2-dreamcast
  • sdasdas/SRB2
  • chreas/srb-2-vr
  • StarManiaKG/the-story-of-sinically-rocketing-and-botching-the-2nd
  • LoganAir/SRB2
  • NepDisk/srb-2
  • alufolie91/SRB2
  • Felicia.iso/SRB2
  • twi/SRB2
  • BarrelsOFun/SRB2
  • Speed2411/SRB2
  • Leather_Realms/SRB2
  • Ayemar/SRB2
  • Acelite/SRB2
  • VladDoc/SRB2
  • kaldrum/model-features
  • strawberryfox417/SRB2
  • Lugent/SRB2
  • Jisk/SRB2
  • Rem/SRB2
  • Refrag/SRB2
  • Henry_3230/srb-3230
  • TehPuertoRicanSpartan2/tprs-srb2
  • Leminn/srb-2-marathon-stuff
  • chromaticpipe2/SRB2
  • MiguelGustavo15/SRB2
  • Maru/srb-2-tests
  • SilicDev/SRB2
  • UnmatchedBracket/SRB2
  • HybridDog/SRB2
  • xordspar0/SRB2
  • jsjhbewfhh/SRB2
  • Fancy2209/SRB2
  • Lorsoen/SRB2
  • shindoukin/SRB2
  • GamerOfDays/SRB2
  • Craftyawesome/SRB2
  • tenshi-tensai-tennoji/SRB2
  • Scarfdudebalder/SRB2
  • luigi-budd/srb-2-fix-interplag-lockon
  • mskluesner/SRB2
  • johnpetersa19/SRB2
  • Pheazant/SRB2
  • chromaticpipe2/srb2classic
  • romoney5/SRB2
  • PAS/SRB2Classic
  • BlueStaggo/SRB2
117 results
Select Git revision
  • 21-installer-nodd
  • 64-gl-log
  • DJGPP
  • S_SKIN-missing-flag
  • angle-for-spawn-object
  • appveyor
  • better-refusal
  • blend-locking
  • boost-tickrate
  • cleanup-opengl
  • colorstesting
  • colorstesting-224
  • comparepolygons-fix
  • continue_tweaks
  • crawlacommander-sprites
  • cutscene-cleanup
  • dd-music-bypass
  • dd-music-fix
  • delete-lua
  • delete-slopes
  • depth-buffer-24
  • disable-titlemap-in-netgames
  • dropshadows-spawning
  • dynres
  • exchndl-xp-fix
  • fix-allowjoin
  • fix-ded-servers
  • fix-fire-shield
  • fix-keepbody-ping
  • fix-major-issue
  • fix-mouse-controls-setup
  • fix-mouse-grabbing
  • fix-node-player-mixups
  • fix-nohw-perfstats-next
  • fix-nonslope-slopes
  • fix-perfstats-3
  • fix-playernode-crash
  • fix-portals
  • fix-splitscreen
  • flipfuncpointers
  • flipfuncpointers-master
  • float-stepup
  • fof-lightlist-fixes
  • fuck-macros-1
  • g_findmap-lua
  • gamepad_experiments
  • gl-deletetexture-fix
  • gles2-desktop-stuff
  • grr-lj
  • gtr-fixes
  • hide-useless-1p-menu-options
  • hmods-dev
  • hwcleanupstuff
  • hwportals
  • hwportalswip
  • ignore-glsegs
  • increase-input-buffer
  • input-display
  • input-display-translucency
  • io
  • joystick-juggling-maz
  • keep-body
  • keycodes-only
  • larger-chat
  • ld413-mp-fix
  • libpng-version-support
  • lol-states
  • lower-unpegged-fix
  • lua-hook-cleanup
  • lua-io
  • lua-local
  • lua-opt-dev
  • lua-opt-dev-alt-cache
  • lua-opt-dev-baseline
  • lua-opt-dev-optoption2
  • lua-optimized-constants
  • lua-timestamp
  • makefile-tinkering
  • map-components-signedness-fixes
  • master
  • master-use-sse3
  • more-cleanup
  • more-lua-map-names
  • more-stats
  • musicdef-lua
  • netcode-tests
  • next
  • ogl-batching
  • ogl-better-gpu-error
  • ogl-big-room-fix
  • ogl-blend-var-fix
  • ogl-compileshaders-bug
  • ogl-driver-error
  • ogl-fof-wall-slope-fix
  • ogl-fof-wall-slope-fix-test
  • ogl-fof-wall-slope-fix2
  • ogl-fog-block-fix
  • ogl-linkdraw
  • ogl-midtexture-zfighting-fix
  • ogl-midtexture-zfix-test
  • SRB2_release_2.1
  • SRB2_release_2.1.1
  • SRB2_release_2.1.10
  • SRB2_release_2.1.11
  • SRB2_release_2.1.12
  • SRB2_release_2.1.14
  • SRB2_release_2.1.15
  • SRB2_release_2.1.16
  • SRB2_release_2.1.16a
  • SRB2_release_2.1.17
  • SRB2_release_2.1.18
  • SRB2_release_2.1.19
  • SRB2_release_2.1.2
  • SRB2_release_2.1.20
  • SRB2_release_2.1.21
  • SRB2_release_2.1.22
  • SRB2_release_2.1.23
  • SRB2_release_2.1.24
  • SRB2_release_2.1.25
  • SRB2_release_2.1.3
  • SRB2_release_2.1.4
  • SRB2_release_2.1.5
  • SRB2_release_2.1.6
  • SRB2_release_2.1.7
  • SRB2_release_2.1.8
  • SRB2_release_2.1.9
  • SRB2_release_2.2.0
  • SRB2_release_2.2.1
  • SRB2_release_2.2.2
  • td-release-v1.0.0
130 results
Show changes
Showing
with 4905 additions and 5099 deletions
@echo off @echo off
set BRA=Unknown set BRA=Unknown
set REV=illegal set REV=illegal
set GL1=Dummy
copy nul: /b +%1\comptime.c tmp.$$$ > nul copy nul: /b +%1\comptime.c tmp.$$$ > nul
move tmp.$$$ %1\comptime.c > nul move tmp.$$$ %1\comptime.c > nul
...@@ -13,8 +14,9 @@ goto filwri ...@@ -13,8 +14,9 @@ goto filwri
:gitrev :gitrev
set GIT=%2 set GIT=%2
if "%GIT%"=="" set GIT=git if "%GIT%"=="" set GIT=git
for /f "usebackq" %%s in (`%GIT% rev-parse --abbrev-ref HEAD`) do @set BRA=%%s for /f "tokens=* usebackq" %%s in (`%GIT% rev-parse --abbrev-ref HEAD`) do @set BRA=%%s
for /f "usebackq" %%s in (`%GIT% rev-parse HEAD`) do @set REV=%%s for /f "tokens=* usebackq" %%s in (`%GIT% rev-parse HEAD`) do @set REV=%%s
for /f "tokens=* usebackq" %%s in (`%GIT% log -1 --format^=%%f`) do @set GL1=%%s
set REV=%REV:~0,8% set REV=%REV:~0,8%
goto filwri goto filwri
...@@ -30,3 +32,4 @@ echo // by the %0 batch file >> %1\comptime.h ...@@ -30,3 +32,4 @@ echo // by the %0 batch file >> %1\comptime.h
echo // >> %1\comptime.h echo // >> %1\comptime.h
echo const char* compbranch = "%BRA%"; >> %1\comptime.h echo const char* compbranch = "%BRA%"; >> %1\comptime.h
echo const char* comprevision = "%REV%"; >> %1\comptime.h echo const char* comprevision = "%REV%"; >> %1\comptime.h
echo const char* compnote = "%GL1%"; >> %1\comptime.h
#!/bin/bash -e #!/bin/sh
path="." path="."
if [ x"$1" != x ]; then if [ x"$1" != x ]; then
path="$1" path="$1"
fi fi
versiongit() { version() {
gitbranch=`git rev-parse --abbrev-ref HEAD` cat <<EOF > "$path/comptime.h"
gitversion=`git rev-parse HEAD`
cat <<EOF > $path/comptime.h
// Do not edit! This file was autogenerated // Do not edit! This file was autogenerated
// by the $0 script with git // by the $0 script with git
// //
const char* compbranch = "$gitbranch"; const char* compbranch = "$1";
const char* comprevision = "${gitversion:0:8}"; const char* comprevision = "$2";
const char* compnote = "$3";
EOF EOF
exit 0
} }
versionsvn() { versiongit() {
svnrevision=`svnversion -n $1` gitbranch="$(git rev-parse --abbrev-ref HEAD)"
cat <<EOF > $path/comptime.h gitversion="$(git rev-parse HEAD | cut -c -8)"
gitsubject="$(git log -1 --format=%f)"
version "$gitbranch" "$gitversion" "$gitsubject";
exit 0
}
// Do not edit! This file was autogenerated versionsvn() {
// by the $0 script with subversion svnrevision="$(svnversion -n "$1")"
// version "Subversion" "r$svnrevision" "dummy";
const char* compbranch = "Subversion"; exit 0
const char* comprevision = "r$svnrevision";
EOF
exit 0
} }
versionfake() { versionfake() {
cat <<EOF > $path/comptime.h version "Unknown" "illegal" "dummy";
// Do not edit! This file was autogenerated
// by the $0 script with an unknown or nonexist SCM
//
const char* compbranch = "Unknown";
const char* comprevision = "illegal";
EOF
} }
compversion() { compversion() {
touch $path/comptime.c touch "$path/comptime.c"
versionfake versionfake
test -d $path/.svn && versionsvn [ -d "$path/.svn" ] && versionsvn "$@"
test -d $path/../.git && versiongit [ -d "$path/../.git" ] && versiongit
exit 1 exit 1
} }
test -f $path/comptime.c && compversion [ -f "$path/comptime.c" ] && compversion "$@"
exit 2 exit 2
...@@ -3,12 +3,12 @@ ifdef ComSpec ...@@ -3,12 +3,12 @@ ifdef ComSpec
COMSPEC=$(ComSpec) COMSPEC=$(ComSpec)
endif endif
ifdef COMSPEC ifdef COMSPEC
OBJCOPY=objcopy.exe OBJCOPY?=objcopy.exe
OBJDUMP=objdump.exe OBJDUMP?=objdump.exe
GZIP?=gzip.exe GZIP?=gzip.exe
else else
OBJCOPY=objcopy OBJCOPY?=objcopy
OBJDUMP=objdump OBJDUMP?=objdump
GZIP?=gzip GZIP?=gzip
endif endif
DBGNAME=$(BIN).debug DBGNAME=$(BIN).debug
......
...@@ -12,7 +12,7 @@ Upstream Author(s): ...@@ -12,7 +12,7 @@ Upstream Author(s):
Copyright: Copyright:
Copyright (C) 1998-2018 by Sonic Team Junior Copyright (C) 1998-2025 by Sonic Team Junior
License: License:
...@@ -21,7 +21,7 @@ License: ...@@ -21,7 +21,7 @@ License:
The Debian packaging is: The Debian packaging is:
Copyright (C) 2010 Callum Dickinson <gcfreak_ag20@hotmail.com> Copyright (C) 2010 Callum Dickinson <gcfreak_ag20@hotmail.com>
Copyright (C) 2010-2018 by Sonic Team Junior <stjr@srb2.org> Copyright (C) 2010-2025 by Sonic Team Junior <stjr@srb2.org>
and is licensed under the GPL version 2, and is licensed under the GPL version 2,
see "/usr/share/common-licenses/GPL-2". see "/usr/share/common-licenses/GPL-2".
================================================================
How to add Low-res modes to your XF86Config under Linux MANUALLY
================================================================
I TAKE NO RESPONSIBILITY FOR ANY DAMAGE DONE TO YOUR EQUIPMENT!!!
This document explains how to add low-res modes like 320x200 to your
X-Server configuration, because some new setup tools for the X-Server
do not support this. ONLY RECOMMENDED FOR USERS WHO KNOW WHAT THEY DO!
I do not take any responsibility for damage done to your monitor, your
videocard, your harddisk, your cat, your dog or anything else!!!
IMPORTANT IS, THAT YOUR "HorizSync" AND "VertRefresh" VALUES REALLY
MATCH YOUR MONITOR! OTHERWISE YOUR MONITOR CAN BLOW UP!!!
OK, if you have read up to here, you either know what you do or really
die-hard want those low-res modes. Here is what to do:
Look up your XF86Config. Is is either in /etc or in /etc/X11. Here is
what you have to add to the definition of your modeslines:
# Low-res Doublescan modes
# If your chipset does not support doublescan, you get a 'squashed'
# resolution like 320x400.
# 320x200 @ 70 Hz, 31.5 kHz hsync, 8:5 aspect ratio
Modeline "320x200" 12.588 320 336 384 400 200 204 205 225 Doublescan
# 320x240 @ 60 Hz, 31.5 kHz hsync, 4:3 aspect ratio
Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan
# 320x240 @ 72 Hz, 36.5 kHz hsync
Modeline "320x240" 15.750 320 336 384 400 240 244 246 262 Doublescan
# 400x300 @ 56 Hz, 35.2 kHz hsync, 4:3 aspect ratio
ModeLine "400x300" 18 400 416 448 512 300 301 302 312 Doublescan
# 400x300 @ 60 Hz, 37.8 kHz hsync
Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan
# 400x300 @ 72 Hz, 48.0 kHz hsync
Modeline "400x300" 25 400 424 488 520 300 319 322 333 Doublescan
If your video card only supports a specific set of discrete dotclocks
(RAMDAC) you may have to replace the dotclocks given here by one of the
specified (e.g in the first modeline the dotclock is 12.588 MHz). I believe
that nowadays all cards and monitors should work with these settings, but
if you have outdated hardware you better check the frequencies yourself. If
there is any uncertainty, please check the "XFree86 Video Timings HOWTO".
Then have a look at the section "Screen" with the appropriate driver
(usually either "svga" or "accel"). Under Subsection "Display" there
are modes for the given color depth. Add the desired modes. As an
example I give you my screens definition here with low-res modes in
16 bit color depth:
Section "Screen"
Driver "accel"
Device "3D Charger"
Monitor "Iiyama Pro 450"
DefaultColorDepth 16
Subsection "Display"
Depth 8
Modes "1280x1024" "1024x768" "800x600" "640x480"
ViewPort 0 0
Virtual 1280 1024
EndSubsection
Subsection "Display"
Depth 16
Modes "1152x864" "1024x768" "800x600" "640x480" "400x300" "320x200" <- THIS IS ACTUALLY WHAT YOU WANT!!!
ViewPort 0 0 ^^^^^^^^^^^^^^^^^^^
Virtual 1152 864
EndSubsection
Subsection "Display"
Depth 24
Modes "800x600" "640x480"
ViewPort 0 0
Virtual 800 600
EndSubsection
Subsection "Display"
Depth 32
Modes "800x600" "640x480"
ViewPort 0 0
Virtual 800 600
EndSubsection
EndSection
Once again: important is, that you edit the correct Screen section.
If you use the SVGA Server and edit the ACCEL Server, you might
wonder where your new modes have gone.
If everything went fine and you want to say thank you, just write
to "metzgermeister@users.sourceforge.net". If your monitor blew
up and you want to kill me, find me playing Legacy or Q3A on the net
and frag me (with your second monitor, hehe).
- metzgermeister
1-99 : Player Starts
1 - Player 1 Start 1
2 - Player 2 Start 2
3 - Player 3 Start 3
4 - Player 4 Start 4
5 - Player 5 Start 4001
6 - Player 6 Start 4002
7 - Player 7 Start 4003
8 - Player 8 Start 4004
9 - Player 9 Start 4005
10 - Player 10 Start 4006
11 - Player 11 Start 4007
12 - Player 12 Start 4008
13 - Player 13 Start 4009
14 - Player 14 Start 4010
15 - Player 15 Start 4011
16 - Player 16 Start 4012
17 - Player 17 Start 4013
18 - Player 18 Start 4014
19 - Player 19 Start 4015
20 - Player 20 Start 4016
21 - Player 21 Start 4017
22 - Player 22 Start 4018
23 - Player 23 Start 4019
24 - Player 24 Start 4020
25 - Player 25 Start 4021
26 - Player 26 Start 4022
27 - Player 27 Start 4023
28 - Player 28 Start 4024
29 - Player 29 Start 4025
30 - Player 30 Start 4026
31 - Player 31 Start 4027
32 - Player 32 Start 4028
33 - Player Match Start 11
34 - Red Team Start 87
35 - Blue Team Start 89
36 - Tag start New
100 - 199 : Enemies
100 - Blue Crawla 3004
101 - Red Crawla 9
102 - GFZ Fish 58
103 - Gold Buzz 5005
104 - Red Buzz 5006
105 - Jetty-Syn Bomber 3005
106 - Jetty-Syn Gunner 22
107 - Crawla Commander 21
108 - Deton 71
109 - Skim 56
110 - THZ Turret 2004
111 - Pop-up Turret 42
200 - 299 : Bosses and their associated items (if any)
200 - Boss 1 16
201 - Boss 2 2008
290 - Boss Fly Point 17
291 - EggTrap Center 2049
300 - 399 : Collectibles
300 - Ring 2014
301 - Homing Ring 69
302 - Rail Ring 3003
303 - Infinity Ring 80
304 - Automatic Ring 26
305 - Explosion Ring 54
306 - Red CTF Flag 31
307 - Blue CTF Flag 34
308 - Special Stage Token 2013
309 - Emerald 1 420
310 - Emerald 2 421
311 - Emerald 3 422
312 - Emerald 4 423
313 - Emerald 5 424
314 - Emerald 6 425
315 - Emerald 7 426
316 - Hunting Emerald 1 64
317 - Hunting Emerald 2 3002
318 - Hunting Emerald 3 3001
400 - 499 : Boxes
400 - Super Ring Box 2011
401 - Grey Ring Box 2012
402 - Ring Shield Box 48
403 - Fire Shield Box 2002
404 - Bomb Shield Box 2018
405 - Jump Shield Box 35
406 - Water Shield Box 2028
407 - Sneaker Box 25
408 - Invincibility Box 2022
409 - 1-Up Box 41
410 - Eggman Box 2005
411 - Mixup Box 78
412 - Question Box 3000
500 - 599 : Interactive Objects (friendly or otherwise - includes springs)
500 - Bubble Patch 33
501 - Level End Sign 86
502 - Starpost 3006
520 - Spike Ball -1
521 - Special Stage Spike Ball 23
522 - Ceiling Spike 67
523 - Floor Spike 68
540 - Fan 32
541 - Steam Riser 30
550 - Yellow Spring 28
551 - Red Spring 79
552 - Blue Spring 5004
553 - Yellow Spring Down 65
554 - Red Spring Down 66
555 - Yellow Diagonal Spring 2015
556 - Red Diagonal Spring 38
557 - Yellow Diag Spring Down 20
558 - Red Diag Spring Down 39
600 - 699 : Special placement patterns
600 - Vertical Rigns - Stack of 5 (suitable for Yellow Spring) 84
601 - Vertical Rings - Stack of 5 (suitable for Red Spring) 44
602 - Diagonal rings (5) 76
603 - Diagonal rings (10) 77
604 - A ring of rings 47
605 - A BIGGER ring of rings 2007
606 - A ring of wing items 2048
607 - A BIGGER ring of wing items 2010
608 - A ring of rings and wings (alternating) 2046
609 - A BIGGER ring of rings and wings (alternating) 2047
700 - 799 : Powerup indicators/environmental effects/miscellany
700 - Ambient Water 1a (S) 2026
701 - Ambient Water 1b (S) 2024
702 - Ambient Water 2a (M) 2023
703 - Ambient Water 2b (M) 2045
704 - Ambient Water 3a (L) 83
705 - Ambient Water 3b (L) 2019
706 - Ambient Water 4a (XL) 2025
707 - Ambient Water 4b (XL) 27
708 - Random Ambient 1 14
709 - Random Ambient 2 43
750 - Chaos Spawner 8
751 - Teleport Point 5003
752 - Alternate View Point 5007
753 - Zoom Tube Waypoint 18
754 - Pusher 5001
755 - Puller 5002
756 - Street Light 2003
800 - 899 : Greenflower Scenery
800 - Flower 1 36
801 - Flower 2 70
802 - Flower 3 73
804 - Berry Bush 74
805 - Bush 75
900 - 999 : Techno Hill Scenery
900 - THZ Plant 2035
901 - Alarm 2006
1000 - 1099 : Deep Sea Scenery
1000 - Gargoyle 81
1100 - 1199 : Castle Eggman Scenery
1100 - Ceiling Chain 49
1101 - Torch Flame 24
1102 - Eggman Statue 52
1103 - CEZ Flower 2001
1200 - 1299 : Arid Canyon Scenery
1300 - 1399 : Red Volcano Scenery
1400 - 1499 : Dark City Scenery
1500 - 1599 : Doom Ship Scenery
1600 - 1699 : Egg Rock/Final Fight Scenery
1700 - 1799 : NiGHTS Items
1700 - Axis 72
1701 - Axis Transfer (Normal) 61
1702 - Axis Transfer (Line) 46
1703 - Nights Drone 60
1704 - Nights Bumper 82
1705 - Hoop 57
1706 - Nights Wing 37
1707 - Super Loop Powerup 3007
1708 - Drill Refill Powerup 3008
1709 - Helper Powerup 3009
1710 - Egg Capsule 40
1800 - 1849 : Mario Items
1800 - Coin 10005
1801 - Goomba 10000
1802 - Blue Goomba 10001
1803 - FireFlower 50
1804 - Shell 10
1805 - Puma 29
1806 - Koopa 19
1807 - Axe 12
1808 - Mario Bush 1 10002
1809 - Mario Bush 2 10003
1810 - Toad 10004
1850 - 1899 : Christmas Items
1850 - Xmas Pole 5
1851 - Candy Cane 13
1852 - Snowman 6
1900 - 1999 : Misc Scenery
1900 - Stalagmite 0
1901 - Stalagmite 1
1902 - Stalagmite 2
1903 - Stalagmite 3
1904 - Stalagmite 4
1905 - Stalagmite 5
1906 - Stalagmite 6
1907 - Stalagmite 7
1908 - Stalagmite 8
1909 - Stalagmite 9
Description OldNum NewNum Description
Old Water 14 Removed
Level Parameters/Misc:
Per-Sector Gravity 64 1
Custom Exit 71 2
Zoom Tube Parameters 18 3
Speed Pad 65 4
Camera Scanner 63 5
Disable Linedef 73 6
Flat Alignment 66 7
Sector Special Parameters New 8
Mace Parameters New 9
Sprite Cull Height New 10
Rope Hang Parameters New 11
Rock Spawner Parameters New 12
PolyObjects
Marks first line in PolyObject New 20
Explicitly includes a PolyObject line New 21
PolyObject: Parameters New 22
PolyObject: Waving Flag New 31
Level-Load Effects:
Instant Floor Lower 26 50
Instant Ceiling Raise 24 51
Continuously Falling Sector 88 52
Continuous Floor/Ceiling Mover 2 53
Continuous Floor Mover 3 54
Continuous Ceiling Mover 4 55
Continuous Two-Speed Floor/Ceiling Mover 6 56
Continuous Two-Speed Floor Mover 7 57
Continuous Two-Speed Ceiling Mover 8 58
Activate Floating Platform 232 59
Activate Floating Platform (Adjustable Speed) 233 60
Crusher 1 (Ceiling to Floor) 43 61
Crusher 2 (Floor to Ceiling) 50 62
Fake Floor/Ceiling 242 63
Appearing/Disappearing FOF New 64
Bridge Thinker New 65
Floor Over Floors:
"Floor Over Floor: Solid, Opaque, Shadowcasting " 25 100
"Floor Over Floor: Solid, Opaque, Non-Shadowcasting " 33 101
"Floor Over Floor: Solid, Translucent " 44 102
"Floor Over Floor: Solid, Sides Only " 69 103
"Floor Over Floor: Solid, No Sides " 51 104
"Floor Over Floor: Solid, Invisible " 57 105
"Floor Over Floor: Water, Opaque " 48 120
"Floor Over Floor: Water, Translucent " 45 121
"Floor Over Floor: Water, Opaque, No Sides " 75 122
"Floor Over Floor: Water, Translucent, No Sides " 74 123
"Floor Over Floor: Platform, Opaque " 59 140
"Floor Over Floor: Platform, Translucent " 81 141
"Floor Over Floor: Platform, Translucent, No Sides " 77 142
Floor Over Floor: Bobbing (Air) 38 150
Floor Over Floor: Adjustable Bobbing (Air) 68 151
Floor Over Floor: Reverse Adjustable Bobbing (Air) 72 152
"Floor Over Floor: Floating, Bobbing " 34 160
Floor Over Floor: Crumbling (Respawn) 36 170
Floor Over Floor: Crumbling (No Respawn) 35 171
"Floor Over Floor: Crumbling (Respawn), Platform " 79 172
"Floor Over Floor: Crumbling (No Respawn), Platform " 80 173
"Floor Over Floor: Crumbling (Respawn), Platform, Translucent " 82 174
"Floor Over Floor: Crumbling (No Respawn), Platform, Translucent " 83 175
"Floor Over Floor: Crumbling (Respawn), Floating, Bobbing " 39 176
"Floor Over Floor: Crumbling (No Respawn), Floating, Bobbing " 1 177
"Floor Over Floor: Crumbling (Respawn), Floating " 37 178
"Floor Over Floor: Crumbling (No Respawn), Floating " 42 179
"Floor Over Floor: Crumbling (Respawn), Bobbing (Air) " 40 180
"Floor Over Floor: Rising Platform, Solid, Opaque, Shadowcasting " 89 190
"Floor Over Floor: Rising Platform, Solid, Opaque, Non-Shadowcasting " 90 191
"Floor Over Floor: Rising Platform, Solid, Translucent " 91 192
"Floor Over Floor: Rising Platform, Solid, Invisible " 94 193
"Floor Over Floor: Rising Platform, Platform, Opaque " 92 194
"Floor Over Floor: Rising Platform, Platform, Translucent " 93 195
Floor Over Floor: Light Block 49 200
Floor Over Floor: Half Light Block 47 201
Floor Over Floor: Fog Block 46 202
"Floor Over Floor: Intangible, Opaque " 62 220
"Floor Over Floor: Intangible, Translucent " 52 221
"Floor Over Floor: Intangible, Sides Only " 67 222
"Floor Over Floor: Intangible, Invisible " 58 223
Floor Over Floor: Mario Block 41 250
Floor Over Floor: Thwomp Block 54 251
Floor Over Floor: Shatter Block 76 252
"Floor Over Floor: Shatter Block, Translucent " 86 253
Floor Over Floor: Bustable Block 55 254
Floor Over Floor: Spin Bust Block 78 255
"Floor Over Floor: Spin Bust Block, Translucent " 84 256
Floor Over Floor: Quicksand Block 56 257
Floor Over Floor: Laser Block 53 258
Floor Over Floor: Custom 87 259
Linedef Executor Triggers:
Trigger Linedef Executor (Continuous) 96 300
Trigger Linedef Executor (Each Time) 97 301
Trigger Linedef Executor (Once) 98 302
Trigger Linedef Executor (Ring Count - Continuous) 95 303
Trigger Linedef Executor (Ring Count - Once) 99 304
Trigger Linedef Executor (Character Ability - Continuous) 19 305
Trigger Linedef Executor (Character Ability - Each Time) 20 306
Trigger Linedef Executor (Character Ability - Once) 21 307
"Trigger Linedef Executor (Race Only, Once) " 9 308
Trigger Linedef Executor (CTF Red Team - Continuous) 10 309
Trigger Linedef Executor (CTF Red Team - Each Time) 11 310
Trigger Linedef Executor (CTF Blue Team - Continuous) 12 311
Trigger Linedef Executor (CTF Blue Team - Each Time) 13 312
Trigger Linedef Executor (No More Enemies - Once) 15 313
Trigger Linedef Executor (# of Pushables - Continuous) New 314
Trigger Linedef Executor (# of Pushables - Once) New 315
Trigger Linedef Executors (PolyObject - Land On) New 316
Trigger Linedef Executor (Level Load) New 399
Linedef Executor Options:
Linedef Executor: Set Tagged Sector's Floor Height/Pic 101 400
Linedef Executor: Set Tagged Sector's Ceiling Height/Pic 102 401
Linedef Executor: Set Tagged Sector's Light Level 103 402
Linedef Executor: Move Tagged Sector's Floor 106 403
Linedef Executor: Move Tagged Sector's Ceiling 107 404
Linedef Executor: Lower Floor by Line 108 405
Linedef Executor: Raise Floor by Line 109 406
Linedef Executor: Lower Ceiling by Line 110 407
Linedef Executor: Raise Ceiling by Line 111 408
Linedef Executor: Change Calling Sector's Tag 112 409
Linedef Executor: Change Front Sector's Tag 114 410
Linedef Executor: Stop Plane Movement 116 411
Linedef Executor: Teleport Player to Tagged Sector 104 412
Linedef Executor: Change Music 105 413
Linedef Executor: Play SFX 115 414
Linedef Executor: Run Script 113 415
Linedef Executor: Start Adjustable Fire Flicker 119 416
Linedef Executor: Start Adjustable Glowing Light 120 417
Linedef Executor: Start Adjustable Strobe Flash (unsynchronized) New 418
Linedef Executor: Start Adjustable Strobe Flash (synchronized) New 419
Linedef Executor: Fade Light Level 117 420
Linedef Executor: Stop Lighting Effect 118 421
Linedef Executor: Cut-Away View 121 422
Linedef Executor: Change Sky 123 423
Linedef Executor: Change Weather 124 424
Linedef Executor: Change Object State 125 425
Linedef Executor: Stop Object 122 426
Linedef Executor: Award Score 126 427
Linedef Executor: Start Platform Movement 127 428
Linedef Executor: Crush Ceiling Once New 429
Linedef Executor: Crush Floor Once New 430
Linedef Executor: Crush Floor & Ceiling Once New 431
Linedef Executor: Enable 2D Mode New 432
Linedef Executor: Disable 2D Mode New 433
Linedef Executor: Award Custom Power New 434
Linedef Executor: Stop Conveyor New 435
Linedef Executor: Start Conveyor New 436
Linedef Executor: Disable Player Movement New 437
Linedef Executor: Execute Linedef Executor New 450
Linedef Executor: PolyObject: Door Slide New 480
Linedef Executor: PolyObject: Door Swing New 481
Linedef Executor: PolyObject: Move XY New 482
Linedef Executor: PolyObject: Move XY w/ override New 483
Linedef Executor: PolyObject: Rotate Right New 484
Linedef Executor: PolyObject: Rotate Right w/ override New 485
Linedef Executor: PolyObject: Rotate Left New 486
Linedef Executor: PolyObject: Rotate Left w/ override New 487
Linedef Executor: PolyObject: Start waypoint movement New 488
Linedef Executor: PolyObject: Make Invisible New 489
Linedef Executor: PolyObject: Make Visible New 490
Scrollers/Pushers:
Scroll Wall First Side Left 100 500
Scroll Wall First Side Opposite Direction 85 501
Scroll Wall According to Linedef 254 502
Acc Scroll Wall According to Linedef 218 503
Disp Scroll Wall According to Linedef 249 504
Scroll Texture by Offsets 255 505
Scroll Floor Texture 251 510
Acc Scroll Floor Texture 215 511
Disp Scroll Floor Texture 246 512
Scroll Ceiling Texture 250 513
Acc Scroll Ceiling Texture 214 514
Disp Scroll Ceiling Texture 245 515
Carry Objects on Floor (no scroll) 252 520
Acc Carry Objects on Floor 216 521
Disp Carry Objects on Floor 247 522
Carry Objects on Ceiling 203 523
Acc Carry Objects on Ceiling 205 524
Disp Carry Objects on Ceiling 201 525
Scroll Floor Texture and Carry Objects 253 530
Acc Scroll Floor Texture and Carry Objects 217 531
Disp Scroll Floor Texture and Carry Objects 248 532
Scroll Ceiling Texture and Carry Objects 202 533
Acc Scroll Ceiling Texture and Carry Objects 204 534
Disp Scroll Ceiling Texture and Carry Objects 200 535
Friction 223 540
Horizontal Wind 224 541
Upwards Wind 229 542
Downwards Wind 230 543
Horizontal Current 225 544
Upwards Current 227 545
Downwards Current 228 546
Boom Push/Pull Thing 226 547
Lighting:
Floor Lighting 213 600
Ceiling Lighting 5 601
Adjustable Pulsating Light 60 602
Adjustable Flickering Light 61 603
Adjustable Blinking Light (unsynchronized) New 604
Adjustable Blinking Light (synchronized) New 605
Colormap 16 606
File deleted
Removed:
- Buttons 1-20 690-709
- Button 21 (THZ2 A/740 B/741 D/742 E/745 710
- Close Door Blazing (Tag 743) 711
- Raise Ceiling to Highest (Tag 744) 981
- THZ2 Slime Raise (B/712 W713 P714 D715 S716) 986
Stuff to Remove/Change:
- Light Blinks On Every 0.5 Seconds 2 Add Linedef Combine
- Light Blinks On Every 1 Second 3 Add Linedef Combine
- Light Pulses Smoothly 8 Remove
- Light Blinks On Every 0.5 Seconds (Sync) 12 Add Linedef Combine
- Lights Blinks On Every 1 Second (Sync) 13 Add Linedef Combine
- Light Flickers Like Fire 17 Remove
? - Damage (Fire) and Current 519 Remove (convert to combination)
? - Damage (Water) and Current 984 Remove (convert to combination)
Section 1:
1 - Damage (Generic) 11
2 - Damage (Water) 983
3 - Damage (Fire) 7
4 - Damage (Electrical) 18
5 - Spikes 4
6 - Death Pit (Camera Mod) 16
7 - Death Pit (No Camera Mod) 5
8 - Instant Kill 10
9 - Ring Drainer (Floor Touch) 978
10 - Ring Drainer (No Floor Touch) 980
11 - Special Stage Damage 9
12 - Space Countdown 6
13 - Ramp Sector (Increase step-up) 992
14 - Non-Ramp Sector (Don't step-down) 996
15 - Bouncy Sector (FOF Control Only) 14
Section 2: << 4
1 - Trigger Linedef Exec (Pushable Objects) 971
2 - Trigger LD Exec (Anywhere in Sec/All Pls) 972
3 - Trigger Linedef Exec (Floor Touch/All Pls) 973
4 - Trigger Linedef Exec (Anywhere in Sec) 974
5 - Trigger Linedef Exec (Floor Touch) 975
6 - Trigger Linedef Exec (Emerald Check) 967
7 - Trigger Linedef Exec (NiGHTS Mare) 968
8 - Check for linedef executor on FOFs (ANY) 970
9 - Egg Trap Capsule 666
10 - Special Stage Time/Rings, Par 990
11 - Custom Global Gravity 991
Section 3: << 8
1 - Ice/Sludge (required?!) 256
2 - Wind/Current (required?!) 512
3 - Ice/Sludge and Wind/Current 768
4 - Conveyor Belt 985
5 - Speed Pad (No Spin) 976
6 - Speed Pad (Spin) 977
7 - Bustable Block Sprite Parameter 1500-1515
8 - "
9 - "
10 - "
11 - "
12 - "
13 - "
14 - "
15 - "
Section 4: << 12
1 - Starpost Activator 993
2 - Special Stage Goal Combine 33
2 - Exit Sector Combine 982
2 - No Tag Zone Combine 987
2 - CTF: Flag Return Combine 995
3 - CTF: Red Team Base 988
4 - CTF: Blue Team Base 989
5 - Fan Sector 997
6 - Super Sonic Transform 969
7 - Spinner 979
8 - Zoom Tube Start 998
9 - Zoom Tube End 999
10 - Finish Line 994
\ No newline at end of file
SRB2
Release v1.09, ? 2005.
Last Updated: June 2005
Original game & sources by: Id Software.
Additions: (c)1998 by: Fabrice Denis & Boris Pereira
(c)1999 by: Fabrice Denis, Boris Pereira & Thierry Van Elsuwe
(c)2000 by: Boris Pereira & Thierry Van Elsuwe
(c)2004 By: AJ, Graue, Alam Arias, Logan Arias & Andrew Clunis
Special thanks to Steven McGranahan, Lee Killough, Robert Bäuml and Bell Kin for
their large contribution and to other DooM LEGACY & SRB2 Team members.
Web site: http://www.SRB2.org/
e-mail: none@none.com
OpenGL specific:
Web site: http://legacy.newdoom.com/gl
-----------------------------------------------------------------------
F.A.Q.
-----------------------------------------------------------------------
If you have any trouble with SRB2, you might find a solution
here.
If you find a solution to a problem that was not listed here,
please tell us so that we can update the FAQ and help other people!
Mail your hardware/software problems to:
None@none.com subject: FAQ
--------
CONTENTS
--------
[0] Miscellaneous
[1] Mouse/Joystick/Keyboard
[2] Video
[3] Sound
[4] Network
[5] Troubleshooting
-----------------
[0] MISCELLANEOUS
-----------------
* under win95 or OS/2, I don't have enough memory. How can i handle with ?
Tell win95 to put more dpmi memory for your dos box.
Or use the -mb option.
---------------------------
[1] MOUSE/JOYSTICK/KEYBOARD
---------------------------
* My mouse/joystick does not work in SRB2.
First, check that the mouse/joystick is activated : go at the
console and type either 'use_mouse' (or use the respective
menuitem) or 'use_joystick'.
If it tells '0' or off than the mouse/joystick is not used,
set the variable to 1. eg: 'use_mouse 1'.
For the joystick, different values will support different
types of joystick, check the console documentation for the
command 'use_joystick' for more.
Even if the mouse or joystick is activated, you have to
set up the contols into the Setup Controls menu. That is:
tell what use you will make of the mouse/joystick buttons.
---------
[2] VIDEO
---------
* Where are the other video modes ? I have only '320x200' in the
Video Modes menu.
DOS
---
SRB2 adds new video modes only if a VESA2 (or better) driver
is present. The VESA2 driver is a standard of 'talking' between a
program and the huge amount of different graphics cards
available today.
If you don't have a VESA2 driver, you can download UNIVBE, or
SMART DISPLAY DOCTOR from
http://www.scitechsoft.com/products/ent/free_titles.html
or if you have an S3 based card, you can download the free
software called 'S3VBE'.
ftp://ftp.externet.hu/pub/mirror/sac/graph/s3vbe318.zip
ftp://ftp.digsys.bg/pub/simtelnet/msdos/graphics/s3vbe318.zip
http://www.filesearching.com/cgi-bin/s?q=s3vbe318.zip
http://www.google.com/search?q=s3vbe318.zip
* The game doesn't restore the video mode I have chosen the last time
I played SRB2.
The current video mode has to be made the 'default' so that it is
saved to the config : press the key 'D' on the Video Options menu
to set the current video mode the default.
* I have some problems with OpenGL mode
Have a look at the FAQ for OpenGL on the glLegacy web site:
http://www.doomnation.com/gllegacy/faqe.htm
# Linux: I only have a 1024x768 (or 800x600, 1280x1024, ...) resolution
in fullscreen mode under X and SRB2 is really really slow. Can I
have lower resolutions like 320x200 in fullscreen mode as well?
Probably yes. SRB2 can only use the resolutions offered by the
X-Server. So if all fullscreen modes have a very high resolution you
have to modify /etc/XF86Config (or /etc/X11/XF86Config). Use XF86Setup
(or the appropriate tool coming with your distribution - sax,
xf86config, ...) to do this.
If you do not succeed there, you can enter them manually into your
XF86Config file. ONLY RECOMMENDED FOR USERS WHO KNOW WHAT THEY DO!
For a short guide on how to do this, have a look at the file
"Doublescan.txt".
In case of doubt consult the XFree86-HOWTO (or ask your system
administrator :).
# Linux: I cannot have any fullscreen modes at all!
You have only modes above 1024x768 in your XF86Config. Proceed as
described above.
# Linux: After a certain idle time my screensaver jams the display of
SRB2. I can still operate SRB2, but I do not see what's happening
and the screensaver won't go away.
You probably have KDE. The KDE screensaver does not obey the screensaver
rules (at least mine, version 1.1). The solution is to deactivate the
KDE screensaver and use another screensaver (like the xscreensaver,
e.g.). But the hell, when you started SRB2 you should have played it
as well and not left it alone!!!
---------
[3] SOUND
---------
+ DOS:I can't have CD audio music, why ?
Make sure that the MSCDEX driver version 2.0 or later is loaded.
If it says 'MSCDEX version xxx' at game startup, and you still
don't hear the cd music, then probably your card doesn't respond
when SRB2 tries to set the cd volume. If so, make sure your sound
card's mixer have the cd volume set up so that you can hear something.
+ When the CD plays, the game is very 'jerky'. It doesn't do that when
I type 'cd off' in the console.
You have an old/bad cd driver, that can take up to a second to
respond to cd driver commands. Either get the latest version of
your driver, or turn cd update off. Check 'cd_udpate' in the
console documentation for more.
* DOS:How can I *ALWAYS* disable the sounds or music of the game ?
Edit the allegro.cfg file and set digicard/midicard to 0 (none)
* DOS:My sterero sound is reversed, how can I set it the right way ?
Change the console variable 'stereoreverse' to either 1 or 0.
Or, you can edit the allegro.cfg file, and set the 'flip_pan' variable.
* DOS:The sounds are too 'slow', or 'low-pitched'
It seems to be a problem of the auto-detection of some 8bit sound
cards. You will have to set manually the 'sb_freq' value in the
allegro.cfg file to a lower value : 11906, 16129.
* DOS:SRB2 doesn't play any sound/music, but I have a sound
blaster genuine/compatible card.
If you have a genuine or compatible SoundBlaster card, it is very
important that you set the BLASTER environment variable.
If you are playing under DOS, and never installed your sound card
under DOS, run the setup of your sound card for DOS.
Check if the BLASTER variable was set: type 'SET' under dos
(or DOSbox)
Do you see something like 'BLASTER=A220 I5 D1 ...' ?
Yes? If you don't hear sounds/music, then tweak the settings in the
allegro.cfg file until you get something, first try changing the
type of the sound card, it is not always properly detected.
No? You have to set this variable in order that your sound card is
detected. Run the setup that was shipped with your sound card, and
make sure you run the setup for DOS too, it will usually add a
line of the type 'SET BLASTER=... ...' in the autoexec.bat file.
* DOS:How can I have better midi music on my 8bit sound card ?
Use the DIGMID driver, it is supported in SRB2.
What the hell is this? Well, the Gravis Ultrasound uses digital
samples to play midi music. On a simple 8bit card, you can use digital
samples too, which will sound usually better than what is output
by the poor fm synthesis chip of 8bit cards.
You will need to get a Gravis Ultrasound patch set, you can find
several ones for free on internet, it consists of a bunch of '.pat'
files which are the digital samples to play the midi instruments
(eg: piano, conga, guitar, ect.).
Check the Allegro homepage for some links to GUS patches:
http://alleg.sourceforge.net/digmid.html
http://alleg.sourceforge.net/
http://www.talula.demon.co.uk/allegro/digmid.html
http://www.talula.demon.co.uk/allegro/
Now to activate the DIGMID driver:
Set the 'midi_card' value to 8 (DIGMID) in the allegro.cfg file.
Make sure you leave the 'digi_voices' blank, or set it to a low
value, because the midi music will use digital voices.
At the end of the allegro.cfg file, set the 'patches' value
to the path, where you have installed a Gravis Ultrasound midi
patch set. eg: patches = d:\music\midipat\
# Linux: CD music does not work or only works when run as root.
We do not encourage you to run SRB2 as root (you never know
what SRB2 can do to your system - it's a mighty piece of code :).
There is a common problem with ATAPI CD-rom drives, which are
treated as harddisks. Usually there is a link /dev/cdrom pointing to
device hd[b,c,d]. As harddisks are not supposed to be read directly
via this device (especially not by a common user), there are no read
permissions for "all". For CD-roms you can savely set read permissions
unless you are very paranoid. Assuming your CD-rom drive is /dev/hdc,
set permissions with "chmod +r /dev/hdc" (as root). SCSI CD-rom drives
should not have this problem. But if they do, proceed as described
with ATAPI drives.
# Linux: The CD music volume is not set properly.
Go to the console and type "jigglecdvolume 1".
-----------
[4] NETWORK
-----------
* Where can I find Internet servers ?
For the moment there is one public server.
http://srb2.servegame.org/ Master server web page
srb2.servegame.org:28910 current Master Server
* When I start SRB2 with -server or -connect it say :
"BinToPort: Address already in use (EADDRINUSE)"
It appears only when SRB2 crashes or when you leave with ctrl-break.
use -udpport 12345 (or any other free slot) on both sides (client and
server).
This can also happens when there is already a SRB2 running on your
computer if you whant to try two SRB2 running on the same computer
use -clientport 12345 (or any other free slot). Then the second will
connect to the first one.
* Do you use the tcp protocol ?
No, we use the udp protocol which is faster, but don't worry udp is a
part of the internet protocol.
-------------------
[5] Troubleshooting
-------------------
# Linux: SRB2 is hung in fullscreen mode and won´t let me leave.
What shall I do?
Some people press the reset button, but hey, we are not in the
stoneage of operating systems! There are two "proper" ways to
get out: kill your X-Server. You can usually do this by pressing
"CTRL-ALT-BACKSPACE". But if you have other open applications with
important data (probably hacked away on your diploma thesis for 3
weeks without saving once) you can also kill SRB2 directly. Press
"CTRL-ALT-F2" and you will get to a console. Log in, type
"killall llxSRB2" and switch back to the X-Server with "CTRL-ALT-F7".
Some X-Server crash on this procedure - blame the X-Server for the
loss of 3 weeks work on your diploma thesis :)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>
Sonic Robo Blast 2 Manual
</title>
<link rel="stylesheet" type="text/css" href="srb2manstyle.css">
<!-- Borrowed some javascript code so the height of the iframe is equal to the size of the document - Sonict -->
<script type="text/javascript">
/* free code from dyn-web.com */
function getDocHeight(doc) {
doc = doc || document;
// from http://stackoverflow.com/questions/1145850/get-height-of-entire-document-with-javascript
var body = doc.body, html = doc.documentElement;
var height = Math.max( body.scrollHeight, body.offsetHeight,
html.clientHeight, html.scrollHeight, html.offsetHeight );
return height;
}
function setIframeHeight(id) {
var ifrm = document.getElementById(id);
var doc = ifrm.contentDocument? ifrm.contentDocument: ifrm.contentWindow.document;
ifrm.style.visibility = 'hidden';
ifrm.style.height = "10px"; // reset to minimal height in case going from longer to shorter doc
ifrm.style.height = getDocHeight( doc ) + "px";
ifrm.style.visibility = 'visible';
}
</script>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
</head>
<body>
<p class="c1">
<img src="manual_img/sonicname2.png" alt="SONIC" width="136" height="36">
<br>
<img src="manual_img/srb2banner.png" alt="ROBO BLAST 2" width="224" height="43">
</p>
<p class="c1">
<big><big><strong>Manual</strong></big></big>
</p>
<table class="cf" align="center">
<tr><td class="c">
<ul class="hmenu">
<li class="hmenu"><a class="hmenu" href="intro.htm" target="ifrm">Main</a></li>
<li class="hmenu"><a class="hmenu" href="items.htm" target="ifrm">Items</a></li>
<li class="hmenu"><a class="hmenu" href="playerabilities.htm" target="ifrm">Player Abilities</a></li>
<li class="hmenu"><a class="hmenu" href="basicplay.htm" target="ifrm">Gameplay</a></li>
<li class="hmenu"><a class="hmenu" href="surroundings.htm" target="ifrm">Surroundings</a></li>
</ul>
</td></tr>
<tr><td class="c">
<ul class="hmenu">
<li class="hmenu"><a class="hmenu" href="multiplayer.htm" target="ifrm">Multiplayer</a></li>
<li class="hmenu"><a class="hmenu" href="zones.htm" target="ifrm">Zones</a></li>
<li class="hmenu"><a class="hmenu" href="controls.htm" target="ifrm">Controls</a></li>
<li class="hmenu"><a class="hmenu" href="consolecommands.htm" target="ifrm">Console Commands</a></li>
<li class="hmenu"><a class="hmenu" href="misc.htm" target="ifrm">Misc</a></li>
</ul>
</td></tr>
</table>
<hr>
<p class="c1">
<!-- The "onload" property of the iframe makes an error when validated through the W3C validation checker. -->
<!-- This will not be fixed as it isn't worth the time to fix it up properly. - Sonict -->
<iframe id="ifrm" name="ifrm" src="intro.htm" onload="setIframeHeight(this.id)"> </iframe>
</p>
</body>
</html>
SVN-RULES
- As you can see, there is sub-directory in the repository, one for eatch
platform (djgpp (dos),win32,SDL) the root directory is for all platform,
so take care of the order we have put in.
- do not commit/upload tests of bugged code, try to fix a maximum of know
bugs and update know bugs list in source.txt. If you must commit your source
make your code in #ifdef so we can disable it
- SRB2 is a modification of doom/Doom Legacy source. We allow additionnal feature
and visual addition.
- Maximize communications between members, do not impose your changes, if your
are not sure about a feature/change, talk about it in irc://irc.esper.net/srb2 chat room.
CODE-RULES
- We use no tab, 4 space indent, and tab size 8 (in case some tab have filtred
and for makefile)
- Self documented code, variable and function must have a name that help
understand the code, so do not call variable and function a,b, a2, ...
- the usage of extern in a c file is prohibited, except for declaration of a
function with body (so it is like public keyword in c++)
Also function protos haren't allowed for external function, put it un the
corresponding h file.
- Try to minimize #ifdef usage for :
- code readability
- the main code is for all port so if something is good for a platform all
platform can benefit by this feature
- Take care of platform dependent code, we would like to have code that work
on Dos, Win32, SDL, ... little and big endian, software/Glide/OpenGl.
GOOD PRACTICE
- Try to put as mush static variable and function on module so it help to
understand the role of the varaible/function in the module also this
help the compiler to optimize
- minimise global variable
- make a log of your work, so you don't need to put a lot of comment in
the code, this will also help us to update the what's new section of doc
when doing final release
1. Compile SRB2
2. Explanation of the code
2.1 The memory model
2.2 Hardware Texture model
1. Compile SRB2
=================
DOS
---
need:
- djgpp 2.03 (http://www.delorie.com/djgpp/)
- allegro 3.12 (http://alleg.sourceforge.net/index.html)
(
- libsocket 0.7.4 (beta 4) or better
for use with Winsock 1.1 (example Windows 3.1)
(http://www.phekda.freeserve.co.uk/richdawe/lsck/lsck.htm)
OR
- Wattcp-32 v2.2 dev.rel 6 or better
For use with a packet driver
(http://www.bgnett.no/~giva/)
(http://groups.yahoo.com/group/watt-32/)
(http://groups.yahoo.com/group/watt-32/files/v2.2/)
)
- bcd 1.03 (inlcude in this package)
- gcc 2.95.2 is recommended
- nasm 0.98 (or better) (http://nasm.sourceforge.net/)
compile:
make
make WATTCP=1 (to make a Wattcp-32 version)
debug:
when craching SRB2 will return eip
type make asm, then you will have a 8 megs srb2.s (a assembler file)
the you can find the faulting instruction and function
------------------------------------------------------------------------
Linux/SDL
-----
need:
- tested with gcc 2.95 and 3.X.
- SDL 1.2
- SDL_mixer 1.2
- ibogg and libvorbis (http://Xiph.org/)
- nasm 0.98 (or better)(http://nasm.sourceforge.net/) only with 2.95, else add CC30=1
compile
make LINUX=1
debug:
gdb ?
------------------------------------------------------------------------
Win32
-----
need :
- glide 3.x sdk (optional) (http://www.3dfx.com)
- directx6 sdk (or higher) (http://www.micosoft.com/directx)
- nasm 0.98 (or better) (http://nasm.sourceforge.net/)
- use src\win32\wLegacy.dsp
- VC6 should also work with VC5, and VS.NET 200X
debug:
press on "step over" with the release version (there is some debug info
on it). Then change the eip in the regster window when you will type
enter the edi will go to the faulting instruction. don't forget that
you can follow the stack for calls.
You can also use trace with the debug version but add -win and -nomouse.
------------------------------------------------------------------------
Win32/minGW/SDL
-----
need:
- tested with gcc 2.95 and 3.X.
- can also use Dev-C++ 5.0 beta 9 (4.9.9.0) from http://www.bloodshed.net/dev/devcpp.html
- SDL 1.2
- SDL_mixer 1.2
compile
make minGW=1 SDL=1
or use src\SDL\Win32SDL.dev with Dev-C++ 4.9.9.0 or later
debug:
gdb ?
------------------------------------------------------------------------
WinCE/SDL WIP
-----
need:
- ActiveSync 3.8
http://www.microsoft.com/windowsmobile/downloads/activesync38.mspx
- ActiveSync 3.7.1, if 3.8 isn't available for your language
http://www.microsoft.com/windowsmobile/downloads/activesync37.mspx
- eMbedded Visual Tools 3.0 - 2002 Edition
http://www.microsoft.com/downloads/details.aspx?FamilyID=f663bf48-31ee-4cbe-aac5-0affd5fb27dd
- Pocket PC 2000 SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=bb3f4d7b-de2a-4e1a-a175-26a68c301ac4
- Pocket PC 2002 SDK (eMVT 3.0 2002 Ed. comes with this)
http://www.microsoft.com/downloads/details.aspx?FamilyID=2dbee84a-bd94-4167-b817-2b2e548b2e92
- Pocket PC 2002 SDK Emulator Images (eMVT 3.0 2002 Ed. comes with this)
http://www.microsoft.com/downloads/details.aspx?FamilyID=25f4de97-ae80-477a-9df1-496b85b3d3e3
- eMbedded Visual C++ 4.0
http://www.microsoft.com/downloads/details.aspx?familyid=1DACDB3D-50D1-41B2-A107-FA75AE960856
- eMbedded Visual C++ 4.0 SP3 (Win CE 4.0-4.2)
http://www.microsoft.com/downloads/details.aspx?FamilyID=5bb36f3e-5b3d-419a-9610-2fe53815ae3b
OR
- eMbedded Visual C++ 4.0 SP4 (No SH3 support,Win CE 4.0-5.0 support)
http://www.microsoft.com/downloads/details.aspx?FamilyID=4a4ed1f4-91d3-4dbe-986e-a812984318e5
- eMbedded Visual C++ 4.0 Update 5625 (SP4 only)
http://www.microsoft.com/downloads/details.aspx?FamilyID=aa282a6d-6f57-436d-8c10-0ec02d94f5b1
- Windows CE: Standard Software Development Kit
http://www.microsoft.com/downloads/details.aspx?familyid=a08f6991-16b0-4019-a174-0c40e6d25fe7
- SDK for Windows Mobile 2003-based Pocket PCs
http://www.microsoft.com/downloads/details.aspx?FamilyId=9996B314-0364-4623-9EDE-0B5FBB133652
- Emulator Images for Windows Mobile 2003 Second Edition software for Pocket PC
http://www.microsoft.com/downloads/details.aspx?familyid=5C53E3B5-F2A2-47D7-A41D-825FD68EBB6C
- Microsoft Device Emulator 1.0 Community Preview
http://beta.microsoft.com Use Guest ID "MSDEVICE" to access the Community Preview website
- Windows CE Utilities for Visual Studio .NET 2003 Add-on Pack 1.1
(if you also have VS 2003 installed, you need this to install Win CE 5.0 SDK, else no need)
http://www.microsoft.com/downloads/details.aspx?FamilyId=7EC99CA6-2095-4086-B0CC-7C6C39B28762
- Windows CE 5.0: Standard Software Development Kit (eMC++ 4 SP4 only)
http://www.microsoft.com/downloads/details.aspx?FamilyID=fa1a3d66-3f61-4ddc-9510-ae450e2318c3
- SDL 1.27 (use patch and zip in tools\SDL1.2.7_CE)
compile
use src\SDL\WinCE\SRB2CE.vcw
debug:
?
2. Explanation of the code
==========================
2.1 The memory model (original) (z_zone.c) (by BP)
--------------------
SRB2 allocate a heap of 6/32/48 megs at begining and provide a Z_Malloc function
to allocate in this heap.
Z_Malloc( int size,int tag,void* user )
size is the size in byte
tag can be : PU_STATIC allocated static (like malloc do)
call Z_Free to free it
PU_LEVEL same as static but the zone is "tagged" with the
tag PU_LEVEL, when calling
Z_FreeTag (PU_LEVEL, PU_LEVEL) all zone tagged
with PU_LEVEL are freed (at the end of the level)
PU_CACHE this one _can_ be freed automatiquely by one other
call to Z_Malloc. the *user point to a pointer
to this zone so when freed automatiquely the
pointer is set to NULL so eatch time you use it
you must check if the pointer is not NULL and
reload it.
(...)
2.2 Hardware Texture model (by BP)
--------------------------
Eatch texture/patch/flats/pic in SRB2 are converted to hardware texture at
runtime (the GlideMipmap_s structure (hw_data.h)). I will call hardware
texture a gr_texture so there is no confusion.
To remind you :
- Texture are set of patch and are associate to linedefs (walls) can be
upper, lower or middle texture. It can have hole on it.
- patch are sprites (the doom patch are run of vertical lines)
- flats are used for floors and ceiling of sectors and have size of 64x64
it can't have hole on it
- pic are new legacy format for picture, it can only handle plain texture
like flats it is now used for hud in full screen for the main picture
of legacy and for coronas (the format was extended to handle 32 bit color
or intensity + alpha, not all are implemented at this time)
Since patch, flat and pic are basic structure represented by only one lump in
the wad, the wad loader allocate for eatch lump a GlideMipmap_s (cache3Dfx)
and init data field to NULL. Since the data structure is allocated in
PU_3DFXCACHE (like PU_CACHE) the data will be initilised when needed
(hw_cache.c).
The GlideMipmap_s structures for textures are initialized on
HWR_PrepLevelCache (hw_cache.c) it is called in P_SetupLevel (load level)
the number of textures is computed with TEXTURE1, TEXTURE2 lumps since this
can be changed in runtime in SRB2 (load a wad while runing) it must be
reallocated. Well, at this time it is realloceted at eatch level start. We
can do better, since numtextures change only when a wad is loaded.
The 3dfx driver use glide3, it load gr_texture in gr_texture memory of the
card in fifo order when there is no more place it remove the first gr_texture,
the downloaded field of GlideMipmap_s go to false and when needed it is
reloaded in gr_texture memory. In OpenGl, since OpenGl keep texture in there
own memory and handle gr_texture memory of the card we no more need to
redownload it but if we not free time to time gr_texture memory in opengl,
it will get alot of memory, so the gr_texture memory is cleared at eatch
new level (same time of texture reallocation). Opengl and 3dfx link the
loaded gr_texture with the nextmipmap field of GlideMipmap_s so before clear
textures of the heap we MUST free gr_texture memory of OpenGl or 3dfx !
SRB2 can also draw patch with a differant colormap (thanks to Hurdler).
When needed it create the same gr_texture but just with a differant colormap.
This one is linked with the original in the GlideMipmap_s with the
nextcolormap field.
So when a polygone with a gr_texture must be drawn, first we check if the
gr_textures is not allready loaded in hadware memory (downloaded field) if
not then we check if gr_texture data is there (not grabbed by z_malloc
function) if not we must recompute it eatch type of gr_texture (texture,
patch, flat, pic have there own methode) the we can send the gr_texture
to 3dfx or OpenGl.
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<title>Sonic Robo Blast II - Specials Reference Document</title>
</head>
<body bgcolor="white" text="black" link="blue" vlink="blue" alink="blue">
<h1><big>SRB2 Specials Reference Document</big></h1>
<p><i>Last updated May 27, 2008</i></p>
<p><i>For v1.1 Private Beta</i></p>
<p>This is the SRB2 Specials Reference Document. It is designed to be the ultimate
reference for effects used in SRB2. As such, it is rather technical in areas and quite
concise, and is not something a beginner with level design should be dealing with.</p>
<h1><a name="things"></a>Thing Types</h1>
<p>In general, thing bitsets have 4 flags and 3 digits for their height. The bitset is
0xAAAB, where AAA is the object's height above ground, and B are the Easy, Normal, Hard,
and Deaf flags. To get the bitset on a normal object, multiply the height desired by 16,
and then add the existant B. Some objects use 32 as this number, and they will be noted.
Objects that multiply by 16 can be placed up to 4095 units in the air, while objects that
multiply by 32 can be placed up to 2047 units in the air.
<ul>
<li><u><big><big>Player Starts</big></big></u><ol>
<h3><a name="t1"></a>1 - Player 01 Start</h3>
<p>This is the start for the first player in single player mode, cooperative mode, or race
mode. This start must be placed on every map, as it is what the game defaults to if the
start it is attempting to find isn't there. If there is no Player 1 Start on the map, and
the game is confused over where to spawn the player, the game will crash outright.</p>
<p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
multiplied by 32 to give height, not 16.</p>
<h3><a name="t2"></a>2 - Player 02 Start</h3>
<p>This is the start for the second player in cooperative and race mode.</p>
<p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
multiplied by 32 to give height, not 16.</p>
<h3><a name="t3"></a>3 - Player 03 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t4"></a>4 - Player 04 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t5"></a>5 - Player 05 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t6"></a>6 - Player 06 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t7"></a>7 - Player 07 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t8"></a>8 - Player 08 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t9"></a>9 - Player 09 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t10"></a>10 - Player 10 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t11"></a>11 - Player 11 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t12"></a>12 - Player 12 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t13"></a>13 - Player 13 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t14"></a>14 - Player 14 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t15"></a>15 - Player 15 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t16"></a>16 - Player 16 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t17"></a>17 - Player 17 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t18"></a>18 - Player 18 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t19"></a>19 - Player 19 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t20"></a>20 - Player 20 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t21"></a>21 - Player 21 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t22"></a>22 - Player 22 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t23"></a>23 - Player 23 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t24"></a>24 - Player 24 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t25"></a>25 - Player 25 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t26"></a>26 - Player 26 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t27"></a>27 - Player 27 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t28"></a>28 - Player 28 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t29"></a>29 - Player 29 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t30"></a>30 - Player 30 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t31"></a>31 - Player 31 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t32"></a>32 - Player 32 Start</h3>
<p>See Thing <a href="#t2">2</a> for more information.</p>
<h3><a name="t33"></a>33 - Player Match Start</h3>
<p>This is the start for players in Match and Chaos modes. They should also be placed in
Capture the Flag maps as well. There should be 32 of these in a map to assure proper
randomization. While it's unelegant, they can be stacked on top of each other without
negative effect.</p>
<p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
multiplied by 32 to give height, not 16.</p>
<h3><a name="t34"></a>34 - CTF Team Start (Red)</h3>
<p>This is the start for players on the red team in Capture the Flag mode. There should be
32 of these in a map to assure proper randomization. While it's unelegant, they can be
stacked on top of each other without negative effect.</p>
<p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
multiplied by 32 to give height, not 16.</p>
<h3><a name="t35"></a>35 - CTF Team Start (Blue)</h3>
<p>This is the start for players on the blue team in Capture the Flag mode. There should
be 32 of these in a map to assure proper randomization. While it's unelegant, they can be
stacked on top of each other without negative effect.</p>
<p>The Deaf tag will make the player spawn from the ceiling, and the object needs to be
multiplied by 32 to give height, not 16.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Enemies</big></big></u><ol>
<h3><a name="t100"></a>100 - Crawla (Blue)</h3>
<p>These are the blue ground enemies found in the one player stages. They can't move off
of cliffs and are exceedingly slow.</p>
<h3><a name="t101"></a>101 - Crawla (Red)</h3>
<p>These are the red ground enemies found in the one player stages. They can't move off
cliffs and are relatively slow.</p>
<h3><a name="t102"></a>102 - Stupid Dumb Unnamed RoboFish (tm)</h3>
<p>This is the little fish in Greenflower Zone. The angle determines the jump height, with
0 being the old jump style. Note that the jump height is based on force, not units, so
experimentation will be necessary to get the correct height.</p>
<h3><a name="t103"></a>103 - Yellow Buzz</h3>
<p>This enemy flies at a moderate speed directly at the player.</p>
<h3><a name="t104"></a>104 - Red Buzz</h3>
<p>This enemy flies at a relatively high speed directly at the player.</p>
<h3><a name="t105"></a>105 - Jetty-Syn Bomber</h3>
<p>This is a highly mobile flying enemy with a bomb that it drops on the player from
directly above. It is considered highly difficult to kill, and should only be used in
situations where the stage is supposed to be difficult.</p>
<h3><a name="t106"></a>106 - Jetty-Syn Gunner</h3>
<p>This is a highly mobile flying enemy with a gun that it fires at the player with high
accuracy. It is considered highly difficult to kill, and should only be used in situations
where the stage is supposed to be difficult.</p>
<h3><a name="t107"></a>107 - Crawla Commander</h3>
<p>This is the grey floating enemy in the opening room of Techno Hill Zone Act 2. It is
quite fast and will start bouncing after taking the first hit. It is significantly
challenging, although a spindash will kill it given time.</p>
<h3><a name="t108"></a>108 - Deton</h3>
<p>This is the red spherical enemy in Techno Hill Zone Act 2. Upon seeing the player, it
makes a mad dash straight for them. With the exception of the <a href="#t404">Armageddon
Shield</a>, Detons are invincible, and must be avoided by running behind a wall or another
enemy.</p>
<h3><a name="t109"></a>109 - Skim</h3>
<p>This is an enemy that floats on the surface of the water, dropping bombs into the water
below. It is not currently used in any of the Single Player stages, but it is fully
operational. The designer does not have to put them on the surface of the water, they know
where it is.</p>
<h3><a name="t110"></a>110 - THZ Turret</h3>
<p>This is the turret from Techno Hill Zone Act 2. It fires large bursts of laser fire at
the player with high accuracy. It is invincible unless it is somehow dipped into water.</p>
<h3><a name="t111"></a>111 - Popup Turret</h3>
<p>This is a small turret that pops up now and then and shoots. The object's angle is a
value defining the delay between shooting.</p>
<h3><a name="t112"></a>112 - Sharp</h3>
<p>This is a blue enemy with spikes on top if it. It starts off by slowly chasing the player,
then it fades to red and runs after the player, and is invincible until it fades back to red.</p>
<h3><a name="t113"></a>113 – Jet Jaw</h3>
<p>This is an underwater enemy that tries to bite at the player, which can be found in
Deep Sea Zone.</p>
<h3><a name="t114"></a>114 – Snailer</h3>
<p>This is an incomplete enemy.</p>
<h3><a name="t115"></a>115 – Bird Aircraft Strike Hazard (B.A.S.H.)</h3>
<p>This is the red vulture-like enemy in Arid Canyon Zone. If it sees a player, it lifts off and
charges at him. Collision with a wall will send it plummeting.</p>
<h3><a name="t116"></a>116 – Pointy</h3>
<p>This is the orbinaut enemy that has spikes circling around it. None of the single player stages
currently use him. You have to place him in a map by using a WAD editor, he can't be placed using
objectplace.</p>
<h3><a name="t117"></a>117 – Robo-Hood</h3>
<p>This is the green enemy from Castle Eggman Zone, which shoots arrows at the player.</p>
<h3><a name="t118"></a>118 – CastleBot FaceStabber</h3>
<p>This is the large grey enemy from Castle Eggman Zone. It slowly trudges towards the player,
and if the player in range, lunges at them with his sword.</p>
<h3><a name="t119"></a>119 – Egg Guard</h3>
<p>This is the enemy from Castle Eggman Zone that wields a protective shield.</p>
<h3><a name="t120"></a>120 – Green Snapper</h3>
<p>This is the green turtle enemy from Arid Canyon Zone. This enemy behaves exactly like a blue
crawla does. The circumference of its shell is covered with spikes, so the only way to destroy it
is by jumping on top of it.</p>
<h3><a name="t121"></a>121 – Minus</h3>
<p>This is the digging enemy from Arid Canyon Zone. It burrows underground towards the player, and
once it's directly underneath, it bursts out from under the ground, jumping up and hurting the player.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Bosses and their associated items (if any)</big></big></u><ol>
<h3><a name="t200"></a>200 - Egg Mobile (Boss 1)</h3>
<p>The boss of Greenflower Zone and Castle Eggman Zone. He moves around firing at the
player, and after taking six hits, he dashes at the player.</p>
<p>Giving the boss the Deaf flag will make him have spikeballs, like CEZ3, and giving him
the Multi flag will make the level end when he is dead. To place him above ground,
multiply by 32 to give height, not 16.</p>
<h3><a name="t201"></a>201 - Egg Slimer (Boss 2)</h3>
<p>This is the boss of Techno Hill Zone. It requires an axis point at the center to
function, and it goes in a circle around the axis point dropping slime. After 6 hits, he
stops going in a circle, and bouncing at the player, spewing a lot more slime.</p>
<p>The Multi flag will make the level end when he is dead.</p>
<h3><a name="t201"></a>202 - Sea Egg (Boss 3)</h3>
<p>This is the boss of Deep Sea Zone. More information will be supplied later.</p>
<p>The Multi flag will make the level end when he is dead.</p>
<h3>203 - Eggscalibur (Boss 4)</h3>
<p>This is the boss of Castle Eggman Zone. More information will be supplied later.</p>
<p>The Multi flag will make the level end when he is dead.</p>
<h3><a name="t290"></a>290 - Boss Flypoint</h3>
<p>This is the location the boss will fly to after being killed.</p>
<h3><a name="t291"></a>291 - Egg Capsule Center</h3>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Collectibles</big></big></u><ol>
<h3><a name="t300"></a>300 - Ring</h3>
<p>This is a normal ring. Pick this up to get one ring.</p>
<p>Giving the deaf tag to a ring will cause it to float 31 units above the ground. This
does stack with bitsets, allowing rings to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t301"></a>301 - Bounce Ring</h3>
<p>Picking this up gives you more ammo for this particular ring weapon. You cannot fire
the weapon, however, if you do not have the associated panel.
<h3><a name="t302"></a>302 - Rail Ring</h3>
<p>See thing <a href="#t301">#301</a>.</p>
<h3><a name="t304"></a>304 - Automatic Ring</h3>
<p>See thing <a href="#t301">#301</a>.</p>
<h3><a name="t305"></a>305 - Explosion Ring</h3>
<p>See thing <a href="#t301">#301</a>.</p>
<h3><a name="t305"></a>306 - Scatter Ring</h3>
<p>See thing <a href="#t301">#301</a>.</p>
<h3><a name="t305"></a>307 - Grenade Ring</h3>
<p>See thing <a href="#t301">#301</a>.</p>
<h3>310 - CTF Flag (Red)</h3>
<p>This is the red team's flag in capture the flag mode. If the blue team takes this to
their team base (sector type <a href="#s16384">16384</a>), they score a point.</p>
<h3><a name="t307"></a>311 - CTF Flag (Blue)</h3>
<p>This is the blue team's flag in capture the flag mode. If the red team takes this to
their team base (sector type <a href="#s12288">12288</a>), they score a point.</p>
<h3><a name="t308"></a>312 - Special Stage Token</h3>
<p>This token gives the player a chance at the special stage after the current stage has
ended. If more than one token is collected, the player gets that many chances at the
special stages, continuing until they run out of tokens or have all the emeralds.</p>
<h3><a name="t309"></a>313 - Emerald 1 (Green)</h3>
<p>This object gives the player the first emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t310"></a>314 - Emerald 2 (Orange)</h3>
<p>This object gives the player the second emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t311"></a>315 - Emerald 3 (Pink)</h3>
<p>This object gives the player the third emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t312"></a>316 - Emerald 4 (Blue)</h3>
<p>This object gives the player the fourth emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t313"></a>317 - Emerald 5 (Red)</h3>
<p>This object gives the player the fifth emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t314"></a>318 - Emerald 6 (Light Blue)</h3>
<p>This object gives the player the sixth emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t315"></a>319 - Emerald 7 (Grey)</h3>
<p>This object gives the player the seventh emerald as a pickup object, instead of by
completing a special stage.</p>
<h3><a name="t316"></a>320 - Emerald Hunt Location</h3>
<p>This is one of the three emeralds to be used in Hunting mode.</p>
<h3>323 - Emerald Spawn</h3>
<p>Spawn location for emeralds in Match mode.</p>
<h3><a name="t330"></a>330 - Bounce Ring Panel</h3>
<p>This is a match weapon panel. The Bounce Ring throws a slow ring that will bounce when
it hits walls.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t331"></a>331 - Rail Ring Panel</h3>
<p>This is a match weapon panel. The Rail Ring gives the player an instantaneous shot, that
strikes its target the instant its fired, however there is a long downtime between shots.
Being shot by a rail ring causes more kickback than normal.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t332"></a>332 - Automatic Ring Panel</h3>
<p>This is a match weapon panel. The Automatic Ring gives the player a fire rate of 17.5
rings per second.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t333"></a>333 - Explosion Ring Panel</h3>
<p>This is a match weapon panel. The Explosion Ring throws a slow ring that explodes into
many fragments upon striking a wall or another player. Being struck directly by the
Explosion Ring causes more kickback than usual.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t334"></a>334 - Scatter Ring Panel</h3>
<p>This is a match weapon panel. The Scatter Ring throws 5 rings in a plus-shape.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<h3><a name="t335"></a>335 - Grenade Ring Panel</h3>
<p>This is a match weapon panel. The Grenade Ring throws a grenade that will explode
if an opposing player gets too close to it. It will also explode automatically after a
while if left untouched.</p>
<p>Giving the deaf tag to a panel will cause it to float 31 units above the ground. This
does stack with bitsets, allowing panels to be a total of 4127 units above the ground at
maximum.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Boxes</big></big></u><ol>
<h3><a name="t400"></a>400 - Super Ring (10 Rings)</h3>
<p>This monitor gives the player ten rings.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t402"></a>402 - Attraction Shield</h3>
<p>Also known as the yellow shield and god shield, this shield protects the player from a
single hit, then disappears. It also attracts all normal rings, spilled or on the map to
the player with the shield. It also protects the player from electric damage.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t403"></a>403 - Force Shield</h3>
<p>Also known as the blue shield, this shield protects the player from two hits, then
disappears. If the spin&nbsp; button is pressed while jumping, it is also possible to
reflect many projectiles.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t404"></a>404 - Armageddon Shield</h3>
<p>Also known as the black shield, this shield protects the player from a single hit,
triggering upon a hit. The shield can also be triggered by jumping, and then hitting the
spin key in midair. When the shield is triggered, a flash of light damages everything
within a large radius, destroying the shield in the process.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t405"></a>405 - Whirlwind Shield</h3>
<p>This shield protects the player from a single hit, then disappears. If the player does
a jump-spin, they will do a second jump in midair, making the maximum height that the
player can jump with the shield 224.</p>
<p>Versions of SRB2 previous to 1.09 had the Basic Shield in this object number, so make
sure to note that if the player loads the map in an older version, that is what they will
see.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t406"></a>406 - Elemental Shield</h3>
<p>Also known as the green&nbsp; shield, this shield protects the player from a single
hit, then disappears. While this shield is active, the player cannot drown. It also
protects the player from water, fire, and other damage. When the player with this shield
spin-dashes, it leaves a trail of fire, which deals fire damage to any enemy that touches
it.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t407"></a>407 - Super Sneakers</h3>
<p>This is a monitor powerup that gives the player about 2x running speed for 20 seconds.</p>
<h3><a name="t408"></a>408 - Invincibility</h3>
<p>This is a monitor powerup that prevents all damage to the player for 20 seconds.</p>
<h3><a name="t409"></a>409 - Extra Life</h3>
<p>This powerup monitor features the player's face, and provides an extra life when
struck.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t410"></a>410 - Eggman</h3>
<p>This monitor damages the player if they strike it.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t411"></a>411 - Teleporter</h3>
<p>This monitor mixes up all locations of players, teleporting them to the location of a
random other player. It has no effect in Single Player or in multiplayer modes while only
one player is in the game.</p>
<p>If monitors are given the Deaf tag, they will respawn as a random monitor type (not a ?
monitor) from the weighted table in modes that support respawn. Elsewise, they will
respawn as the same monitor.</p>
<h3><a name="t412"></a>412 - Random Box</h3>
<p>Destroy this monitor and you will get a random powerup, like the boxes in Sonic 2 race
mode.</p>
<h3><a name="t412"></a>413 - Gravity Boots Box</h3>
<p>Destroy this monitor and the gravity will be flipped for a short time.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Interactive Objects (friendly or otherwise)</big></big></u><ol>
<h3><a name="t500"></a>500 - Air Bubble Patch</h3>
<p>This is the air bubble patch used underwater to give players air. It spawns big bubbles
randomly which replenish the player's air.</p>
<h3><a name="t501"></a>501 - End Level Sign</h3>
<p>This is the sign at the end of the stage. When the player enters the <a href="#s8192">Exit
Sector</a>, this sign will start to spin, and end on the face of the player. This sign
does not make the stage end, it's just a visual effect for it.</p>
<h3><a name="t502"></a>502 - Star Post</h3>
<p>Star Posts allow the player to respawn after dying at a point other than the beginning
of the stage. There can be up to 32 Star Posts in a map, and they work with the bitsets.</p>
<p>Instead of controlling the difficulty and deaf flags, the final digit of the bitset
determines the number of the Star Post. 0x0000 is the first one and 0x000f is the
sixteenth one. Note that since this overwrites all of the difficulty flags, they will
appear in all difficulties, even though 0x0000 would normally mean it wouldn't appear in
any difficulty level.</p>
<h3><a name="t520"></a>520 - Spikeball</h3>
<p>Just like thing <a href="#t521">521</a>, except they do normal damage to the player on
contact. </p>
<h3><a name="t521"></a>521 - Spikeball (Special Stage)</h3>
<p>These are the spikeballs used in the special stages. They harm the player for damage on
contact, but only if they are carrying rings.</p>
<h3><a name="t522"></a>522 - Ceiling Spike</h3>
<p>This is a downward pointing spike for use on the ceiling. Touching the pointy end of
the spike deals damage to the player.</p>
<p>By default, it attaches itself to the ceiling, and the height part of the bitset
measures how far down from the ceiling, instead of up from the floor.</p>
<h3><a name="t523"></a>523 - Floor Spike</h3>
<p>This is a upward pointing spike for use on the floor. Touching the pointy end of the
spike deals damage to the player.</p>
<h3><a name="t524"></a>524 - Big Floating Mine</h3>
<p>When you get close, this mine will start to follow you. Touches you, and it explodes.</p>
<h3><a name="t540"></a>540 - THZ Fan</h3>
<p>This is the fan used inside the secret passage in Techno Hill Zone Act 1. It pushes the
player slowly up until it reaches the maximum height it can. The maximum height is
determined by the angle, measured in normal fracunits (It can go above 360 just fine).</p>
<h3><a name="t541"></a>541 - THZ Gas Jet</h3>
<p>This is the gas jet used at the end of Techno Hill Zone Act 1. It launches the player
straight up on regular intervals about the same height as a yellow spring pointing up.</p>
<h3><a name="t550"></a>550 - Yellow Spring (Up)</h3>
<p>This is a yellow spring pointing straight up. It has a medium amount of force behind
it.</p>
<h3><a name="t551"></a>551 - Red Spring (Up)</h3>
<p>This is a red spring pointing straight up. It has a large amount of force behind it.</p>
<h3><a name="t552"></a>552 - Blue Spring</h3>
<p>This is a blue spring pointing straight up. It has a small amount of force behind it.
The intent is for this spring to be used underwater. It has about the same effect
underwater as a yellow spring does above water.</p>
<h3><a name="t553"></a>553 - Yellow Spring (Down)</h3>
<p>This is a yellow spring pointing straight down. It has a medium amount of force behind
it.</p>
<h3><a name="t554"></a>554 - Red Spring (Down)</h3>
<p>This is a red spring pointing straight down. It has a large amount of force behind it.</p>
<h3><a name="t555"></a>555 - Yellow Spring (Diagonal Up)</h3>
<p>This is a yellow spring pointing upwards and in the direction the thing is facing. It
has a medium amount of force behind it. When the player touches this spring, he will
automatically turn to face the direction the spring is launching the player.</p>
<h3><a name="t556"></a>556 - Red Spring (Diagonal Up)</h3>
<p>This is a red spring pointing upwards and in the direction the thing is facing. It has
a large amount of force behind it. When the player touches this spring, he will
automatically turn to face the direction the spring is launching the player.</p>
<h3><a name="t557"></a>557 - Yellow Spring (Diagonal Down)</h3>
<p>This is a yellow spring pointing downwards and in the direction the thing is facing. It
has a medium amount of force behind it. When the player touches this spring, he will
automatically turn to face the direction the spring is launching the player.</p>
<h3><a name="t558"></a>558 - Red Spring (Diagonal Down)</h3>
<p>This is a red spring pointing downward and in the direction the thing is facing. It has
a large amount of force behind it. When the player touches this spring, he will
automatically turn to face the direction the spring is launching the player.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Special placement patterns</big></big></u><ol>
<h3><a name="t600"></a>600 - 5 Vertical Rings (Yellow Spring)</h3>
<p>This is a chain of five rings intended to be used with thing <a href="#t550">550</a>.
Do not use ring chain objects in any mode where items respawn, because ring chains do not
respawn. Use bitsets to create chains in any mode with item respawn.</p>
<h3><a name="t601"></a>601 - 5 Vertical Rings (Red Spring)</h3>
<p>This is a chain of five rings intended to be used with thing <a href="#t551">551</a>.
Do not use ring chain objects in any mode where items respawn, because ring chains do not
respawn. Use bitsets to create chains in any mode with item respawn.</p>
<h3><a name="t602"></a>602 - 5 Diagonal Rings (Yellow Spring)</h3>
<p>This is a chain of five rings intended to be used with thing <a href="#t555">555</a>.
Do not use ring chain objects in any mode where items respawn, because ring chains do not
respawn. Use bitsets to create chains in any mode with item respawn.</p>
<h3><a name="t603"></a>603 - 10 Diagonal Rings (Red Spring)</h3>
<p>This is a chain of ten rings intended to be used with thing <a href="#t556">556</a>. Do
not use ring chain objects in any mode where items respawn, because ring chains do not
respawn. Use bitsets to create chains in any mode with item respawn.</p>
<h3><a name="t604"></a>604 - Nights: Circle of Rings</h3>
<h3><a name="t605"></a>605 - Nights: Circle of Rings (Big)</h3>
<h3><a name="t606"></a>606 - Nights: Circle of Wing Logos</h3>
<h3><a name="t607"></a>607 - Nights: Circle of Wing Logos (Big)</h3>
<h3><a name="t608"></a>608 - Nights: Circle of Rings and Wings</h3>
<h3><a name="t609"></a>609 - Nights: Circle of Rings and Wings (Big)</h3>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Powerup indicators/environmental effects/miscellany</big></big></u><ol>
<h3><a name="t700"></a>700 - Ambient Water SFX 1A (Small)</h3>
<h3><a name="t701"></a>701 - Ambient Water SFX 1B (Small)</h3>
<h3><a name="t702"></a>702 - Ambient Water SFX 2A (Medium)</h3>
<h3><a name="t703"></a>703 - Ambient Water SFX 2B (Medium)</h3>
<h3><a name="t704"></a>704 - Ambient Water SFX 3A (Large)</h3>
<h3><a name="t705"></a>705 - Ambient Water SFX 3B (Large)</h3>
<h3><a name="t706"></a>706 - Ambient Water SFX 4A (Extra Large)</h3>
<h3><a name="t707"></a>707 - Ambient Water SFX 4B (Extra Large)</h3>
<h3><a name="t708"></a>708 - Random Ambience 1</h3>
<h3><a name="t709"></a>709 - Random Ambience 2</h3>
<h3><a name="t750"></a>750 - Chaos Mode Enemy Spawn</h3>
<p>This is where the enemies spawn from in Chaos mode. There should be around 12 of these
points on a map with Chaos support.</p>
<h3><a name="t751"></a>751 - Teleport Destination</h3>
<p>This is the thing to be used with linedef type <a href="#l412">412</a>, the linedef
executor that teleports a player. This thing is where the player will spawn in the tagged
sector.</p>
<h3><a name="t752"></a>752 - Alternate View Point</h3>
<p>This is the thing to be used with linedef type <a href="#l422">422</a>, the linedef
executor that changes the camera view. This thing is where the camera will be moved to in
the tagged sector.</p>
<h3><a name="t753"></a>753 - Zoom Tube Waypoint</h3>
<p>Waypoints for zoom tubes. Think of Sonic 2's Metropolis Zone, Sonic 3 &amp; Knuckles's
Death Egg Zone, and Lava Reef Zone. The lower byte of the ANGLE field specifies the
waypoint's number in the sequence, and the upper byte specifies the sequence that the
waypoint belongs to. These are used in conjunction with sector type <a href="#s32768">32768</a>
and <a href="#s36864">36864</a>.</p>
<h3><a name="t754"></a>754 - Push</h3>
<h3><a name="t755"></a>755 - Pull</h3>
<h3><a name="t756"></a>756 - Street Light Source</h3>
<p>This produces a light in OpenGL. It is used in Starlit Warehouse Zone, one of the match
stages, as the street lights.</p>
<h3><a name="t760"></a>760 - PolyObject Anchor</h3>
<p>This is the first of the two points used to set up 'how much to move' a polyobject by
when creating it. Angle is the PolyObject ID#.</p>
<h3><a name="t761"></a>761 - PolyObject SpawnPoint</h3>
<p>This is the second of the two points used to set up 'how much to move' a polyobject by
when creating it. Angle is the PolyObject ID#.</p>
<h3><a name="t762"></a>762 - PolyObject SpawnPoint Crush</h3>
<p>This is the second of the two points used to set up 'how much to move' a polyobject by
when creating it. Angle is the PolyObject ID#. This item tells the PolyObject that it
should hurt the player.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Greenflower Scenery</big></big></u><ol>
<h3><a name="t800"></a>800 - GFZ Flower (Normal)</h3>
<p>This is a scenery object from Greenflower Zone. It is the orange flower seen all
throughout GFZ and most GFZ-themed custom maps.</p>
<h3><a name="t801"></a>801 - GFZ Sunflower</h3>
<p>This is a scenery object from Greenflower Zone. It is the large blue sunflower seen all
throughout GFZ and most GFZ-themed custom maps.</p>
<h3><a name="t802"></a>802 - GFZ Budding Flower</h3>
<p>This is a scenery object from Greenflower Zone. It is the small purple flower seen all
throughout GFZ and most GFZ-themed custom maps.</p>
<h3><a name="t804"></a>804 - Berry Bush</h3>
<p>This is a scenery object from Greenflower Zone. It is the green bush with red berries
seen all throughout GFZ and most GFZ-themed custom maps.</p>
<h3><a name="t805"></a>805 - Bush</h3>
<p>This is a scenery object from Greenflower Zone. It is the green bush without the
berries seen all throughout GFZ and most GFZ-themed custom maps.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Techno Hill Scenery</big></big></u><ol>
<h3><a name="t900"></a>900 - THZ Flower</h3>
<p>This is a scenery object from Techno Hill Zone Act 1. It is the metallic white flower.</p>
<h3><a name="t901"></a>901 - THZ Alarm</h3>
<p>This is a scenery object from Techno Hill Zone Act 2. It is the little alarm in the
passage with the first Star Post. It creates noise, but the red visual effect in THZ2 was
done with a colormap, not this object.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Deep Sea Scenery</big></big></u><ol>
<h3><a name="t1000"></a>1000 - Gargoyle</h3>
<p>Pushable gargoyle. Can be stood on top of as well.</p>
<p>Giving this the Deaf tag will prevent it from being pushable.</p>
<h3><a name="t1001"></a>1001 - Seaweed</h3>
<p>Animated seaweed. Intangible scenery.</p>
<h3><a name="t1002"></a>1002 - Dripping Water</h3>
<p>Water dripping from the ceiling. ANGLE value specifies start delay.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Castle Eggman Scenery</big></big></u><ol>
<h3><a name="t1100"></a>1100 - Hanging Chain</h3>
<p>This is a scenery object from Castle Eggman, a dungeon chain hanging from the ceiling.</p>
<p>By default, it attaches itself to the ceiling, and the height part of the bitset
measures how far down from the ceiling, instead of up from the floor.</p>
<h3><a name="t1101"></a>1101 - CEZ Torch</h3>
<p>This is the torch used in Castle Eggman Zone. It produces light in OpenGL, and it harms
the player for fire damage on contact.</p>
<h3><a name="t1102"></a>1102 - Eggman Statue </h3>
<p>This is the large Eggman statue in Castle Eggman Zone.</p>
<h3><a name="t1103"></a>1103 - CEZ Flower</h3>
<p>This is a scenery object from Castle Eggman Zone. It is the decaying flower.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Arid Canyon Scenery</big></big></u><ol>
<h3><a name="t1200"></a>1200 – Big Tumbleweed</h3>
<p>A large moveable tumbleweed that rolls along the floor.</p>
<h3><a name="t1201"></a>1201 – Little Tumbleweed</h3>
<p>A small movable tumbleweed that rolls along the floor.</p>
<h3><a name="t1202"></a>1202 – Rock Spawner</h3>
<p>An object which randomly spawns falling rocks, which damage the player on impact.<br>
Description on how to use goes here.</p>
</ol>
</li>
<li><u><big><big>Red Volcano Scenery</big></big></u><ol>
<h3><a name="t1300"></a>1300 – Horizontal Flame Jet</h3>
<p>A stready stream of flames comes out horizontally.</p>
<h3><a name="t1301"></a>1301 – Vertial Flame Jet</h3>
<p>A stready stream of flames comes out vertially.</p>
</ol>
</li>
<li><u><big><big>Dark City Scenery</big></big></u><ol>
</ol>
</li>
<li><u><big><big>Doom Ship Scenery</big></big></u><ol>
</ol>
</li>
<li><u><big><big>Egg Rock / Final Fight Scenery</big></big></u><ol>
</ol>
</li>
<li><u><big><big>NiGHTS Items</big></big></u><ol>
<h3><a name="t1700"></a>1700 - Nights: Axis</h3>
<p>Lower 10 bits: Axis number in the mare (0-based) Upper 6 bits: Mare that axis belongs
to (0-based). ANGLE value determines the size of the axis to rotate around. If 16384 is
added to the ANGLE value, the axis will be inverted.</p>
<h3><a name="t1701"></a>1701 - Nights: Axis Transfer (Normal)</h3>
<h3><a name="t1702"></a>1702 - Nights: Axis Transfer Line</h3>
<h3><a name="t1703"></a>1703 - Nights: Ideya Drone</h3>
<p>Angle value sets the NiGHTS timer, in seconds. </p>
<h3><a name="t1704"></a>1704 - Nights: Bumper</h3>
<p>Lower 4 bits of the flags specify the angle of the bumper in 30 degree increments.</p>
<h3><a name="t1705"></a>1705 - Nights: Hoop</h3>
<h3><a name="t1706"></a>1706 - Nights: Wing Logo</h3>
<h3><a name="t1707"></a>1707 - Nights: Super Loop</h3>
<h3><a name="t1708"></a>1708 - Nights: Drill Refill</h3>
<h3><a name="t1709"></a>1709 - Nights: Helper</h3>
<h3><a name="t1710"></a>1710 - Nights: Egg Capsule</h3>
<p>The capsule you need to collect rings to break in NiGHTS. The value of its ANGLE field
determines how many rings you need to break it. Just like the axis points, the upper bits
(value &gt;&gt; 10) determine the mare it belongs to. For example, an angle value of 1024
means it belongs to mare 1 (2nd mare, it's zero based), and requires 0 rings to break.
1030 would be mare 1, and 6 rings to break. 2048 would be mare 2, no rings.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Mario Items</big></big></u><ol>
<h3><a name="t1800"></a>1800 - Coin</h3>
<p>This is a coin, which is essentially a ring with Mario graphics and sound effects.</p>
<h3><a name="t1801"></a>1801 - Overworld Goomba</h3>
<p>These are the enemies in Mario Koopa Blast 1, and are essentially Crawlas with a Mario
graphic.</p>
<h3><a name="t1802"></a>1802 - Underworld Goomba</h3>
<p>These are the enemies in Mario Koopa Blast 2, and are essentially Crawlas with a Mario
graphic.</p>
<h3><a name="t1803"></a>1803 - Fire Flower</h3>
<p>This is the powerup from the Mario Koopa Blast stages. It changes the player to a white
palette, and allows the player to throw fireballs with the fire button. The fireballs fly
in a Mario-style bounce trajectory until they hit an enemy or a wall.</p>
<h3><a name="t1804"></a>1804 - Koopa Shell</h3>
<p>This is the Koopa Shell in Mario Koopa Blast 1. It will bounce around, striking enemies
and players.</p>
<h3><a name="t1805"></a>1805 - Puma (Mario Jumping Fireball)</h3>
<p>This is the fireball used in Mario Koopa Blast 3. The angle determines the jump height,
with 0 being the old jump style. Note that the jump height is based on force, not units,
so experimentation will be necessary to get the correct height.</p>
<h3><a name="t1806"></a>1806 - King Bowser</h3>
<h3><a name="t1807"></a>1807 - Axe</h3>
<p>The axe used to defeat Bowser in the third Mario level.</p>
<h3><a name="t1808"></a>1808 - Bush (Short)</h3>
<p>This is a scenery object from Mario Koopa Blast</p>
<h3><a name="t1809"></a>1809 - Bush (Tall)</h3>
<p>This is a scenery object from Mario Koopa Blast</p>
<h3><a name="t1810"></a>1810 - Toad</h3>
<p>This is Toad at the end of Mario Koopa Blast 3.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Xmas Items</big></big></u><ol>
<h3><a name="t1850"></a>1850 - Xmas Pole</h3>
<p>X-Mas scenery object. Looks like a little barber shop pole.</p>
<h3><a name="t1851"></a>1851 - Candy Cane</h3>
<p>X-Mas scenery object. Looks like a candy cane.</p>
<p>Note that Mystic Realm 4 replaces this object with the Sonic 1 palm tree, so any maps
loaded while Mystic Realm 4 is loaded will overwrite the image, making any candy canes
look like palm trees, which can look kinda stupid.</p>
<h3><a name="t1852"></a>1852 - Snowman</h3>
<p>X-Mas scenery object. Pushable snowman with a happy face. Can be stood on top of as
well. Acts the same as thing <a href="#t1000">1000</a>.</p>
<p>Giving this the Deaf tag will prevent it from being pushable.</p>
<p>&nbsp;</p>
</ol>
</li>
<h1><a name="linetypes"></a>Linedef Types</h1>
<p>Lines may have flags applied to them. The following is a reference of their values.
Unless specified otherwise in a line type, the flags behave as follows:</p>
<div align="left"><table border="1" width="83%">
<tr>
<td width="33%">NAME</td>
<td width="10%">VALUE</td>
<td width="57%">DESCRIPTION</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT6"></a>EFFECT6</td>
<td width="10%">1</td>
<td width="57%">Special use flag #6.</td>
</tr>
<tr>
<td width="33%"><a name="#BLOCKMONSTERS"></a>BLOCKMONSTERS</td>
<td width="10%">2</td>
<td width="57%">Prevents an enemy from crossing the line. May not work for especially
speedy enemies.</td>
</tr>
<tr>
<td width="33%"><a name="#TWOSIDED"></a>TWOSIDED</td>
<td width="10%">4</td>
<td width="57%">Flag used to indicate if a line is two sided. Do not modify.</td>
</tr>
<tr>
<td width="33%"><a name="#DONTPEGTOP"></a>DONTPEGTOP</td>
<td width="10%">8</td>
<td width="57%">Unpeg upper texture. Good for moving floors.</td>
</tr>
<tr>
<td width="33%"><a name="#DONTPEGBOTTOM"></a>DONTPEGBOTTOM</td>
<td width="10%">16</td>
<td width="57%">Unpeg bottom texture. Good for moving ceilings.</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT1"></a>EFFECT1</td>
<td width="10%">32</td>
<td width="57%">Special use flag #1.</td>
</tr>
<tr>
<td width="33%"><a name="#NOCLIMB"></a>NOCLIMB</td>
<td width="10%">64</td>
<td width="57%">Don't allow Knuckles to climb on this wall.</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT2"></a>EFFECT2</td>
<td width="10%">128</td>
<td width="57%">Special use flag #2.</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT3"></a>EFFECT3</td>
<td width="10%">256</td>
<td width="57%">Special use flag #3.</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT4"></a>EFFECT4</td>
<td width="10%">512</td>
<td width="57%">Special use flag #4.</td>
</tr>
<tr>
<td width="33%"><a name="#EFFECT5"></a>EFFECT5</td>
<td width="10%">1024</td>
<td width="57%">Special use flag #5.</td>
</tr>
<tr>
<td width="33%"><a name="#NOSONIC"></a>NOSONIC</td>
<td width="10%">2048</td>
<td width="57%">Disable line special if playing as Sonic (Single Player Only).</td>
</tr>
<tr>
<td width="33%"><a name="#NOTAILS"></a>NOTAILS</td>
<td width="10%">4096</td>
<td width="57%">Disable line special if playing as Tails (Single Player Only).</td>
</tr>
<tr>
<td width="33%"><a name="#NOKNUX"></a>NOKNUX</td>
<td width="10%">8192</td>
<td width="57%">Disable line special if playing as Knuckles (Single Player Only).</td>
</tr>
<tr>
<td width="33%"><a name="#BOUNCY"></a>BOUNCY</td>
<td width="10%">16384</td>
<td width="57%">Bounce the player off this line.</td>
</tr>
<tr>
<td width="33%"><a name="#TFERLINE"></a>TFERLINE</td>
<td width="10%">32768</td>
<td width="57%">Use this on a FOF line special to define the texture &amp; offsets for
each side of the FOF. The control sector must have at LEAST the same # of sides as the
target sector(s).</td>
</tr>
</table>
</div><hr>
<li><u><big><big>Level Parameters / Miscellany</big></big></u><ol>
<h3><a name="l1"></a>1 - Per-Sector Gravity</h3>
<p>Sets the gravity of the tagged sector or sectors, as a percentage of global gravity
(which can be set separately using sector type <a href="#s176">176</a>). The floor height
of the control sector is used. If it is 1000, then the target sector will have 100%
gravity. If it is 500, the target sector will have 50% of the global gravity. Negative
values work as well, but players can't jump down; they'll get stuck to the ceiling, unless
the <a href="#NOCLIMB">NOCLIMB</a> flag is checked.</p>
<p>You can apply this special to the control sector of an intangible FOF to change the
gravity only inside that FOF.</p>
<h3><a name="l2"></a>2 - Custom Exit</h3>
<p>Tag this to an Exit Sector (type <a href="#s8192">8192</a>) to exit to a custom level,
overriding the one set in the map header. The map number you go to is indicated by the
front sector's floor. Additionally, if the control linedef's bitset is set to disallow
climbing (with the <a href="#NOCLIMB">NOCLIMB</a> attribute, whose value is 64), skip the
score tally screen when switching to the new map.</p>
<p>If the control linedef has the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag set,
this effect does something super complicated and fun, going to a different level depending
on whether the player has all emeralds or not. If the player has seven emeralds, the
linedef's front sector's ceiling height will be used. Otherwise, go to the map number
indicated by the linedef's front sector's floor. That's <i>only</i> if you set the <a
href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag.</p>
<p>If the <a href="#EFFECT4">EFFECT4</a> flag is set, the linedef's front side x offset
will be used as the new gametype after the map change, providing it is in range (from 0 to
4, inclusive).</p>
<h3><a name="l3"></a>3 - Zoom Tube Parameters</h3>
<p>X length = speed. Y length = waypoint sequence #. See sector type <a href="#s32768">32768</a>
for more information.</p>
<h3><a name="l4"></a>4 - Speed Pad</h3>
<p>Creates a speed pad. The linedef direction and indicates the direction of the pad. The
target sector must have type <a href="#s1280">1280</a> or <a href="#s1536">1536</a> for
this to work.</p>
<p>If the <a href="#EFFECT4">EFFECT4</a> flag is set, you will not be teleported to the
center of the sector when the speed pad is activated.</p>
<h3><a name="l5"></a>5 - Camera Scanner</h3>
<p>Modifies camera position while the player is in the target sector. The floor and
ceiling of the control sector and the angle of the control linedef are the values for
CAM_HEIGHT, CAM_DIST, and CAM_ROTATE, respectively. Camera position is reset when the
player steps outside the sector.</p>
<h3><a name="l6"></a>6 - Disable Linedef</h3>
<p>Disables any linedef specials that share the same tag. Will be used in the future to
check if a particular level has been previously cleared or not.</p>
<h3><a name="l7"></a>7 - Flat Alignment</h3>
<p>Aligns floor and/or ceiling flats. The x alignment is specified by the control
linedef's x distance (the difference between the x values of its two vertices), and the y
alignment is specified by the control linedef's y distance.</p>
<p>By default, works on both the floor and ceiling (however, note that skies cannot be
&quot;aligned&quot; ;). Adding the <a href="#NOCLIMB">NOCLIMB</a> flag to the linedef will
align the floor only, while the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag will make
it align the ceiling only.</p>
<h3><a name="l8"></a>8 - Sector Special Parameters</h3>
<p>Sets special behavior of a sector's type depending on the flag(s) checked:</p>
<p><a href="#NOCLIMB">NOCLIMB</a> - Special only operates when touching ceiling</p>
<p><a href="#EFFECT4">EFFECT4</a> - Special operates when touching either the floor or the
ceiling</p>
<p><a href="#EFFECT3">EFFECT3</a> - Special operates by just touching the sector, rather
than having to be inside of it.</p>
<h3><a name="l9"></a>9 - Chain Parameters</h3>
<p>Sets special behavior of a moving chain as such:</p>
<p>x length - # of links on the chain</p>
<p>y length - Overall speed (0-15)</p>
<p>X offset - Rotation speed on the X axis (0-15)</p>
<p>Y offset - Rotation speed on the Z axis (0-15)</p>
<p>floorheight - angle to start at (0-15)</p>
<p>ceilingheight - maximum rotation speed</p>
<h3><a name="l10"></a>10 - Culling Plane</h3>
<p>Set like <a href="#l1">line 1</a>, this creates an invisible plane in the sector. If
your view is above this plane, lots of things drawn below the height of this plane will be
discarded, and if your view is below the plane, a lot of things drawn above the height of
the plane will be discarded. This is to tell the game to not draw stuff that you aren't
going to see anyway. Do note that the view doesn't have to be in the current sector, you
can also be viewing from the side, which may be undesirable. To prevent this problem, you
can check the <a href="#NOCLIMB">NOCLIMB</a> flag, which will allow you to 'group' a set
of sectors to one control sector in which the culling will only take effect. For example,
you have a control sector set up for culling, and have two culling lines in the control
sector, tagged to sectors 'A' and 'B'. If the player is in sector 'A' or 'B', the culling
will occur, but if the player is in sector 'C', it will not.</p>
<h3>11 - Rope Hang Parameters</h3>
<p>X length = speed. Y length = waypoint sequence #.</p>
<p>EFFECT1 - Don't wrap movement</p>
<p>See sector type 45056 for more information.</p>
<h3>12 - Rock Spawn Parameters</h3>
<p>Sets special behavior of a rock spawner (#1202) as such:</p>
<p>length - momentum strength</p>
<p>line angle - momentum angle</p>
<p>X offset - # of tics to wait until another is spawned</p>
<p>Y offset - Rock crumble sprite to use (0-15)</p>
<p>NOCLIMB - add some randomization to the momentum</p>
<p>&nbsp;</p>
<h3>13 - Heat Wave</h3>
<p>Applies a heat effect to the screen. Tag this to a sector, or to the control sector of a FOF.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Level Parameters / Miscellany</big></big></u><ol>
<h3><a name="l20"></a>20 - Marks first line in PolyObject</h3>
<p>Explain here.</p>
<h3><a name="l21"></a>21 - Explicitly include a PolyObject line</h3>
<p>Explain here.</p>
<h3><a name="l30"></a>30 - PolyObject Parameters</h3>
<p>Explain here.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Level-Load Effects</big></big></u><ol>
<h3><a name="l50"></a>50 - Instant Floor Lower</h3>
<p>Makes the floor instantly lower on level load to be at the same height as the lowest
floor of any bordering sector.</p>
<h3><a name="l51"></a>51 - Instant Ceiling Raise</h3>
<p>Makes the ceiling instantly rise on level load to be the same height as the highest
ceiling of any bordering sector.</p>
<h3><a name="l52"></a>52 - Continuously Falling Sector</h3>
<p>Requires two control sectors. Sector continuously falls until its ceiling reaches the
floor of the line's back sector, then returns to its original position and keeps falling.
Linedef length determines speed. Good for things like intermittently falling lava. If the <a
href="#NOCLIMB">NOCLIMB</a> flag is set, it falls upwards, instead of downwards.</p>
<h3><a name="l53"></a>53 - Continuous Floor/Ceiling Mover</h3>
<p>Must be a two-sided linedef, tagged to another sector on the map. The tagged sector's
floor and ceiling will move, first so that they're equal to the floor and ceiling of the
linedef's front sector, then so they're equal to the floor and ceiling of the linedef's
back sector, then the front sector again, and so on.</p>
<p>The speed of the movement is determined by the linedef's length and uses the same units
as linetype <a href="#l60">60</a>.</p>
<h3><a name="l54"></a>54 - Continuous Floor Mover</h3>
<p>Like linetype <a href="#l53">53</a>, but only moves the floor, not the ceiling. Can be
used to replace floating platforms in some cases, where only the floor was desired to
move.</p>
<h3><a name="l55"></a>55 - Continuous Ceiling Mover</h3>
<p>Like linetype <a href="#l53">53</a>, but only moves the ceiling, not the floor.</p>
<h3><a name="l56"></a>56 - Continuous Two-Speed Floor/Ceiling Mover</h3>
<p>Must be a two-sided linedef, tagged to another sector on the map. The tagged sector's
floor and ceiling will move, first so that they're equal to the floor and ceiling of the
linedef's front sector, then so they're equal to the floor and ceiling of the linedef's
back sector, then the front sector again, and so on.</p>
<p>The speed of the movement is determined by the linedef's x distance (the first way,
towards the front sector) and y distance (the second way, towards the back sector), using
the same units as linetype <a href="#l60">60</a>.</p>
<p>Unlike linetype <a href="#l53">53</a>, this effect does not slow down when it reaches
the end of its movement. Instead, it changes instantly from going in one direction to
going in the other. It's designed for making more sophisticated crushers than the crusher
type allows (i.e. crushers with varying rise/crush speeds, FOF crushers, crushers with
different start points).</p>
<h3><a name="l57"></a>57 - Continuous Two-Speed Floor Mover</h3>
<p>Like linetype <a href="#l56">56</a>, but only moves the floor, not the ceiling.</p>
<h3><a name="l58"></a>58 - Continuous Two-Speed Ceiling Mover</h3>
<p>Like linetype <a href="#l56">56</a>, but only moves the ceiling, not the floor.</p>
<h3><a name="l59"></a>59 - Activate Floating Platform</h3>
<p>This is used to make floating platforms (that move up and down) as well as moving
water. In fact, you can use this to make any type of block move vertically. The way it
works is somewhat confusing - You use three control sectors, all connected by at least one
linedef. Easiest thing to do is make three square sectors together in a row. One of the
linedefs on the middle sector should contain the Floor Over Floor line special that you
want. This will be the Floor Over Floor control sector. The other two sectors represent
the bottommost position you want the Floor Over Floor to reach, and the topmost position
you want the Floor Over Floor to reach. The 59 line can be on any of these sectors, as
long as you tag it to the middle one. If you still don't understand, look at Greenflower
Zone Act 2. If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the platform will begin
moving upwards, rather than downwards.</p>
<h3><a name="l60"></a>60 - Activate Floating Platform (Adjustable Speed)</h3>
<p>Speed is indicated by linedef length; one unit of speed here is 0.25 fracunits per tic.
(Floating platforms made with type <a href="#l59">59</a> move at 2 fracunits per tic.)
Aside from the linedef length controlling speed, works exactly like linedef type <a
href="#l59">59</a>.</p>
<h3><a name="l61"></a>61 - Crusher 1 (Ceiling to Floor)</h3>
<p>The crush motion is from the ceiling to the floor. Linedef length indicates crusher
speed. See also linetype <a href="#l62">62</a>, Crusher 2.</p>
<h3><a name="l62"></a>62 - Crusher 2 (Floor to Ceiling)</h3>
<p>Like linetype <a href="#l61">61</a>, Crusher 1, except that it starts in a different
place, not synchronised with any crushers that use the Crusher 1 type. The highest ceiling
this crusher reaches will be the highest ceiling height of any bordering sector.</p>
<h3><a name="l63"></a>63 - Fake Floor</h3>
<p>Creates two fake planes, fake floor and fake ceiling. Main textures are not affected,
but as far as above/below textures and floor/ceiling flats are concerned, the floor and
ceiling height are those of the control sector. As far as collisions, walking, etc. are
concerned, the floor and ceiling flats are whatever they normally would be.</p>
<p>Fake floor is useful for railings (THZRAIL and WOODRAIL; see THZ2 for examples) and
snow effects (making a fake floor of snow just a few units above normal floor, so it looks
like the player's feet are buried in the snow).</p>
<h3><a name="l64"></a>64 - Appearing/Disappearing FOF</h3>
<p>Tag this to any FOF <i>line</i> and this will cause it to appear and disappear
intermittently. The line's X length is the amount of time (in tics) that the FOF will
appear, and Y length is the amount of time (in tics) that the FOF will disappear. The
control sector's floor height allows you to specify an offset (in tics) of how much time
will pass before the appearing/disappearing kicks in.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Floor-Over-Floors (FOFs)</big></big></u><ol>
<h3><a name="l100"></a>100 - Floor Over Floor: Solid, Opaque, Shadowcasting</h3>
<p>This is just a regular old FOF. As with any block, the ceiling of the control sector is
the top of the block, and the floor of the control sector is the bottom.
&quot;Shadowcasting&quot; means that the light value used in the control sector is used
for the area below where the actual FOF appears, as opposed to above it.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL-->
<h3><a name="l101"></a>101 - Floor Over Floor: Solid, Opaque, Non-Shadowcasting</h3>
<p>See notes for <a href="#l100">100</a>. &quot;Non-shadowcasting&quot; means that the
light value you set in the control sector will be used for the area above the FOF, instead
of below it.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_NOSHADE|FF_CUTLEVEL-->
<h3><a name="l102"></a>102 - Floor Over Floor: Solid, Translucent</h3>
<p>Useful for windows. The GLASSTEX texture is good for this purpose. You can change the
alpha value of the translucency by setting the control linedef's Above texture to a #
followed by a three-digit decimal number, 000 to 255. #000 is most transparent, #255 is
most opaque. Note that in software mode, there are actually only ten different values that
serve as a 'best guess'.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_NOSHADE|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA-->
<h3><a name="l103"></a>103 - Floor Over Floor: Solid, Sides Only</h3>
<p>A solid FOF that renders sides only, not planes (floor and ceiling). You were supposed
to be able to use it to place railings (THZRAIL, WOODRAIL, etc.) on FOFs. It doesn't work
for that, because the railings use a different kind of transparency and software mode
won't draw them on FOFs. So this one is going on the list of useless effects, right next
to linetype <a href="#l104">104</a>.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERSIDES|FF_NOSHADE|FF_CUTLEVEL-->
<h3><a name="l104"></a>104 - Floor Over Floor: Solid, No Sides</h3>
<p>Like a 3D floor of type <a href="#l101">101</a>, except that sides are not drawn.
Supposedly a little bit faster than a normal 3D floor. You can use it when the sides
wouldn't be visible anyway.</p>
<p>This type of 3D floor will have shadows if and only if you set the control linedef's <a
href="#NOCLIMB">NOCLIMB</a> flag.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERPLANES|FF_CUTLEVEL
If the <a href="#NOCLIMB">NOCLIMB</a> flag is disabled, it also adds FF_NOSHADE-->
<h3><a name="l105"></a>105 - Floor Over Floor: Solid, Invisible</h3>
<p>For making invisible walls and other strange effects.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_NOSHADE-->
<hr>
<h3><a name="l120"></a>120 - Floor Over Floor: Water, Opaque</h3>
<p>This one looks exactly like linetype <a href="#l100">100</a> ingame, but is a block of
water instead of solid.</p>
<p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
<p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
flag.</p>
<p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
flag, you can still pass through the lava.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_SWIMMABLE|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
<h3><a name="l121"></a>121 - Floor Over Floor: Water, Translucent</h3>
<p>This one looks exactly like linetype <a href="#l102">102</a> ingame, but is a block of
water instead of solid.</p>
<p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
<p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
flag.</p>
<p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
flag, you can still pass through the lava.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_TRANSLUCENT|FF_SWIMMABLE|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|
FF_CUTSPRITES-->
<h3><a name="l122"></a>122 - Floor Over Floor: Water, Opaque, No Sides</h3>
<p>Like linetype <a href="#l120">120</a>, but doesn't render sides.</p>
<p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
<p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
flag.</p>
<p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
flag, you can still pass through the lava.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERPLANES|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
<h3><a name="l123"></a>123 - Floor Over Floor: Water, Translucent, No Sides</h3>
<p>Like linetype <a href="#l121">121</a>, but doesn't render sides. Most of the time this
won't make a difference. It can be useful, however, for windows that have water on one
side and not on the other.</p>
<p>The block will have the attribute of linetype <a href="#l200">200</a> if the <a
href="#NOCLIMB">NOCLIMB</a> flag is set.</p>
<p>To use the light level of the target sector, utilize the <a href="#EFFECT4">EFFECT4</a>
flag.</p>
<p>If this is used as lava (Fire Damage), and you set the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>
flag, you can still pass through the lava.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERPLANES|FF_TRANSLUCENT|FF_SWIMMABLE|FF_BOTHPLANES|FF_CUTEXTRA|FF_EXTRA|
FF_CUTSPRITES-->
<hr>
<h3><a name="l140"></a>140 - Floor Over Floor: Intangible from Bottom, Opaque </h3>
<p>This sector type is solid from the top and walls, but is not solid from the bottom.
This allows the designer to create one-way passages as well as simulate 2D design by
having platforms that players can jump up to from below.</p>
<p>This type of 3D floor will have shadows unless you set the control linedef's <a
href="#NOCLIMB">NOCLIMB</a> flag.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_BOTHPLANES|FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l141"></a>141 - Floor Over Floor: Intangible from Bottom, Translucent</h3>
<p>A copy of linetype <a href="#l140">140</a> that is also translucent.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_TRANSLUCENT|FF_BOTHPLANES|FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l142"></a>142 - Floor Over Floor: Intangible from Bottom, Translucent, No
Sides</h3>
<p>A platform you can jump up through, like linetype <a href="#l140">140</a> (and decides
the same way whether to have shadows or not), with translucency and that doesn't render
sides. Alpha value supported the same way as linetype <a href="#l102">102</a>.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_CUTLEVEL|FF_RENDERPLANES|FF_TRANSLUCENT|FF_PLATFORM|FF_BOTHPLANES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<hr>
<h3><a name="l150"></a>150 - Floor Over Floor: Bobbing (Air)</h3>
<p>FOF that moves down 16 units when you step on, then returns to its former position when
you step off. The control sector must be connected to another sector with the same floor
and ceiling height. This seemingly redundant sector is used for resetting the heights. (If
you forget to put it in, the bobbing floor when stepped on will go down, keep going down,
and never stop or come back up.) See also linetypes <a href="#l151">151</a> and <a
href="#l152">152</a>. This linedef is obsolete. Please use linetype 190-195.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
<h3><a name="l151"></a>151 - Floor Over Floor: Adjustable Bobbing (Air)</h3>
<p>Like linetype <a href="#l150">150</a>, except that instead of the floor moving down 16
units when you step on it, it moves down the number of units of the control linedef's
length. This linedef is obsolete. Please use linetype 190-195.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
<h3><a name="l152"></a>152 - Floor Over Floor: Reverse Bobbing (Air)</h3>
<p>Like linetype <a href="#l151">151</a>, except in reverse. The platform goes <i>up</i>
when you step on it and back <i>down</i> when you step off. This linedef is obsolete.
Please use linetype 190-195.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB-->
<hr>
<h3><a name="l160"></a>160 - Floor Over Floor: Floating, Bobbing</h3>
<p>Bobs and floats in water. The floating part means that if the water moves or rises,
this platform will rise with it.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB-->
<hr>
<h3><a name="l170"></a>170 - Floor Over Floor: Crumbling (Respawn)</h3>
<p>Crumbles and falls away, then reappears 15 seconds later.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE-->
<h3><a name="l171"></a>171 - Floor Over Floor: Crumbling (No Respawn)</h3>
<p>Crumbles and falls away and never comes back.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_NORETURN-->
<h3><a name="l172"></a>172 - Floor Over Floor: Crumbling (Respawn)</h3>
<p>A copy of linetype <a href="#l140">140</a> that also crumbles when stood on and
reappears after 15 seconds.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_BOTHPLANES|FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l173"></a>173 - Floor Over Floor: Crumbling (No Respawn)</h3>
<p>A copy of linetype <a href="#l172">172</a> that stays gone forever after crumbling.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_NORETURN|FF_BOTHPLANES|
FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l174"></a>174 - Floor Over Floor: Intangible from Bottom, Crumbling
(Respawn), Translucent</h3>
<p>A copy of linetype <a href="#l141">141</a> that also crumbles when stood on and
reappears after 15 seconds.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_TRANSLUCENT|FF_BOTHPLANES|
FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l175"></a>175 - Floor Over Floor: Intangible from Bottom, Crumbling (No
Respawn), Translucent</h3>
<p>A copy of linetype <a href="#l174">174</a> that stays gone forever after crumbling.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_PLATFORM|FF_CRUMBLE|FF_NORETURN|FF_TRANSLUCENT|
FF_BOTHPLANES|FF_ALLSIDES
If the <a href="#NOCLIMB">NOCLIMB</a> flag is enabled, it also adds FF_NOSHADE-->
<h3><a name="l176"></a>176 - Floor Over Floor: Crumbling (Respawn), Floating, Bobbing</h3>
<p>Crumbles and falls, then floats on water, then bobs when you step on it.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB|FF_AIRBOB|FF_CRUMBLE-->
<h3><a name="l177"></a>177 - Floor Over Floor: Crumbling (No Respawn), Floating, Bobbing</h3>
<p>Crumbles and falls, then floats on water, then bobs when you step on it. Unlike
linetype <a href="#l176">176</a>, does not return to its former position.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_FLOATBOB|FF_AIRBOB|FF_CRUMBLE|FF_NORETURN-->
<h3><a name="l178"></a>178 - Floor Over Floor: Crumbling (Respawn), Floating</h3>
<p>Crumbles and falls, then floats on water, then reappears up in the air 15 seconds
later.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_FLOATBOB-->
<h3><a name="l179"></a>179 - Floor Over Floor: Crumbling (No Respawn), Floating</h3>
<p>Crumbles and falls, then spends the rest of its days floating on water, never to
reappear up in the air.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_CRUMBLE|FF_FLOATBOB|FF_NORETURN-->
<h3><a name="l180"></a>180 - Floor Over Floor: Crumbling (Respawn), Bobbing (Air)</h3>
<p>Bobs, crumbles, and falls when stepped on.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_AIRBOB|FF_CRUMBLE-->
<hr>
<h3><a name="l190"></a>190 - Floor Over Floor: Rising Platform, Solid, Opaque,
Shadowcasting</h3>
<p>Just like <a href="#l100">100</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<h3><a name="l191"></a>191 - Floor Over Floor: Rising Platform, Solid, Opaque,
Non-Shadowcasting</h3>
<p>Just like <a href="#l101">101</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<h3><a name="l192"></a>192 - Floor Over Floor: Rising Platform, Solid, Translucent</h3>
<p>Just like <a href="#l102">102</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<h3><a name="l193"></a>193 - Floor Over Floor: Rising Platform, Solid, Invisible</h3>
<p>Just like <a href="#l105">105</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<h3><a name="l194"></a>194 - Floor Over Floor: Rising Platform, Intangible from Bottom,
Opaque</h3>
<p>Just like <a href="#l140">140</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<h3><a name="l195"></a>195 - Floor Over Floor: Rising Platform, Intangible from Bottom,
Translucent</h3>
<p>Just like <a href="#l141">141</a>, except when a player steps on it, it will rise up to
the control sector's highest adjacent sector. You set the control sectors for this up like
special <a href="#l59">59</a>. Linedef length controls speed like <a href="#l60">60</a>.
If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, it will require the player to spindash
to raise the platform.</p>
<hr>
<h3><a name="l200"></a>200 - Floor Over Floor: Light Block</h3>
<p>Like a half light block, but it's really an actual block. That is, the light only comes
down to the control sector's floor, not to the bottom of the level (as with linetype <a
href="#l201">201</a>.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_CUTSPRITES|FF_DOUBLESHADOW-->
<h3><a name="l201"></a>201 - Floor Over Floor: Half Light Block</h3>
<p>Light blocks can be used to set color maps and light values. The light value of the
control sector will be used and any colormap attached to it will be used also. Note that
only the ceiling of the control sector is used; the light goes all the way down to the
bottom of the level. If this isn't what you want, consider using linedef type <a
href="#l200">200</a> instead.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_CUTSPRITES
Note: Although it's not a true FOF, it does still have the same kind of definition, so
the FOF flags are included despite not being a real block.-->
<h3><a name="l202"></a>202 - Floor Over Floor: Fog Block</h3>
<p>Creates a block of colored fog. Attach a colormap (linetype <a href="#l606">606</a>) to
the control sector for the fog block; otherwise you won't see anything out of the
ordinary.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_FOG|FF_BOTHPLANES|FF_INVERTPLANES|FF_ALLSIDES|FF_INVERTSIDES|FF_CUTEXTRA|
FF_EXTRA|FF_DOUBLESHADOW|FF_CUTSPRITES-->
<hr>
<h3><a name="l220"></a>220 - Floor Over Floor: Intangible, Opaque </h3>
<p>Like <a href="#l120">opaque water</a>, but not swimmable. Good for a snow effect on
FOFs. Can also be used to make hidden rooms, like you would normally do by setting a Main
texture.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_BOTHPLANES|FF_ALLSIDES|FF_CUTEXTRA|FF_EXTRA|FF_CUTSPRITES-->
<h3><a name="l221"></a>221 - Floor Over Floor: Intangible, Translucent</h3>
<p>See linedef type <a href="#l102">102</a> for how to adjust the translucency, making the
3D floor more transparent or more opaque.</p>
<p>This type of 3D floor will have shadows if and only if you set the control linedef's <a
href="#NOCLIMB">NOCLIMB</a> flag.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_TRANSLUCENT|FF_EXTRA|FF_CUTEXTRA
If the <a href="#NOCLIMB">NOCLIMB</a> flag is disabled, it also adds FF_NOSHADE-->
<h3><a name="l222"></a>222 - Floor Over Floor: Intangible, Sides Only</h3>
<p>An intangible FOF that renders sides only, not planes (floor and ceiling). It renders
both inside sides and outside sides. You can use it to place sector borders (GFZGRASS,
etc.) on FOFs.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERSIDES|FF_NOSHADE|FF_ALLSIDES-->
<h3><a name="l223"></a>223 - Floor Over Floor: Intangible, Invisible</h3>
<p>Useful for setting effects, such as wind and gravity.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_NOSHADE-->
<hr>
<h3><a name="l250"></a>250 - Floor Over Floor: Mario Block</h3>
<p>Like a normal FOF, except that the control linedef's Above texture is used after the
block has been hit (the Main texture is used before this). Any things in the control
sector will pop out the top of the block in the order in which they were placed. Rings
will be obtained and the effects of monitors will begin as soon as the block has been hit.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL|FF_MARIO-->
<h3><a name="l251"></a>251 - Floor Over Floor: Thwomp Block</h3>
<p>The thwomps are the crazy platforms with faces in Mario Koopa Blast 3. They can crush
you, but you can also ride on them.</p>
<p>Control sector is set up like a <a href="#l100">normal FOF</a>. When a player steps
underneath the thwomp, it will crush down to the floor. You don't need to tell it where
the floor is. It knows.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_CUTLEVEL-->
<h3><a name="l252"></a>252 - Floor Over Floor: Shatter Block</h3>
<p>Like the bustable block, linetype <a href="#l254">254</a>, except that it shatters on
any sort of contact, whether it's a spindash or not (and whether you're Knuckles or not).</p>
<p>If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the block is only shatterable from
the bottom, like some things you spring up and break in Launch Base Zone from Sonic 3.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SHATTER-->
<h3><a name="l253"></a>253 - Floor Over Floor: Shatter Block, Translucent</h3>
<p>Translucent version of <a href="#l252">252</a> supporting alpha values.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SPINBUST|FF_TRANSLUCENT-->
<h3><a name="l254"></a>254 - Floor Over Floor: Bustable Block</h3>
<p>Bustable blocks can be destroyed by spindashing. Additionally, Knuckles can destroy
them by walking or jumping into them, since he is very strong. If the <a href="#NOCLIMB">NOCLIMB</a>
flag is set, only Knuckles can break the block.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP (|FF_ONLYKNUX if <a href="#NOCLIMB">NOCLIMB</a>)-->
<h3><a name="l255"></a>255 - Floor Over Floor: Spin Bust Block</h3>
<p>Like the bustable block, linetype <a href="#l254">254</a>, set off in a different way.
To break, jump onto it or fall down onto it while spinning. Similar to blocks found in
Marble Zone, as well as the ice cubes that would encase buttons and monitors in parts of
Ice Cap Zone.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_SOLID|FF_RENDERALL|FF_BUSTUP|FF_SPINBUST-->
<h3><a name="l256"></a>256 - Floor Over Floor: Spin Bust Block, Translucent</h3>
<p>Translucent version of <a href="#l255">255</a> supporting alpha values.</p>
<h3><a name="l257"></a>257 - Floor Over Floor: Quicksand Block</h3>
<p>It's set up like any block. You can, of course, sink and die in it. X length of the
linedef determines sink speed, Y length determines how &quot;sludgy&quot; movement in the
quicksand is.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_QUICKSAND|FF_RENDERALL|FF_ALLSIDES|FF_CUTSPRITES-->
<h3><a name="l258"></a>258 - Floor Over Floor: Laser Block</h3>
<p>Creates a blinking FOF that zaps you if you touch it. You can set the flats and texture
to whatever you want. For a red laser like in THZ2, use REDFLR for the flats and REDWALL
for the texture.</p>
<p>You can also make other colors using BLUEFLR/BLUWALL (blue laser), GREENFLR/GRNWALL
(green laser), and YELFLR/YELWALL (yellow laser). Of course, those colors of lasers are
very expensive, so Eggman doesn't have nearly as many of them. He usually goes with the
cheap red lasers.</p>
<!--Exact FOF flags:
FF_EXISTS|FF_RENDERALL|FF_NOSHADE|FF_EXTRA|FF_CUTEXTRA-->
<h3><a name="l259"></a>259 - Floor Over Floor: Custom</h3>
<p>Place the appropriate flag values in hex (do not include the 0x in front of it) in the
line's UPPER TEXTURE field on the 2nd side of the linedef.</p>
</ol>
</li>
<li><u><big><big>Linedef Executor Triggers</big></big></u><ol>
<h3><a name="l300"></a>300 - Trigger Linedef Executor (Continuous)</h3>
<p>Triggers linedef executor in the control sector when a player touches the tagged
sector's floor or steps in the sector (depending on the sector special used). The linedef
executor will keep being triggered over and over again as long as a player is there, hence
the word &quot;continuous&quot; in this linetype's name. Tagged sector must have one of
the <a href="#sCat2">Trigger Linedef Executor</a> types for this to work.</p>
<h3><a name="l301"></a>301 - Trigger Linedef Executor (Each Time)</h3>
<p>Like <a href="#l300">300</a>, except that it only gets triggered once for each time you
fall or jump onto the floor. Tagged sector must have one of the <a href="#sCat2">Trigger
Linedef Executor</a> types for this to work.</p>
<h3><a name="l302"></a>302 - Trigger Linedef Executor (Once)</h3>
<p>Like <a href="#l300">300</a>, except that after that linedef executor executes its
linedefs, it's done. It's over. The linedefs will never be executed again.</p>
<h3><a name="l303"></a>303 - Trigger Linedef Executor (Ring Count - Continuous)</h3>
<p>Triggers linedef executor in the control sector when a player touches the tagged
sector's floor or steps in the sector (depending on the sector special used). The linedef
executor will keep being triggered over and over again as long as a player is there, hence
the word &quot;continuous&quot; in this linetype's name. Tagged sector must have one of
the <a href="#sCat2">Trigger Linedef Executor</a> types for this to work. Executor will be
triggered depending on how many rings the player has:</p>
<p>No flags -&gt; Runs if (rings = line length)</p>
<p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (rings &lt;= line length)</p>
<p><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> -&gt; Runs if (rings &gt;= line length)</p>
<p><a href="#EFFECT4">EFFECT4</a> -&gt; Takes the rings of ALL players into account.</p>
<h3><a name="l304"></a>304 - Trigger Linedef Executor (Ring Count - Once)</h3>
<p>Like <a href="#l303">303</a>, except that after that linedef executor executes its
linedefs, it's done. It's over. The linedefs will never be executed again.</p>
<h3><a name="l305"></a>305 - Trigger Linedef Executor (Character Ability - Once)</h3>
<p>Like linetype <a href="#l302">302</a>, but is only activated when the character's
ability number matches the linedef length by multiples of 10. For example:</p>
<p>0-9 = Charability 0</p>
<p>10-19 = Charability 1</p>
<p>20-29 = Charability 2</p>
<p>etc...</p>
<h3><a name="l306"></a>306 - Trigger Linedef Executor (Character Ability - Continuous)</h3>
<p>Like <a href="#l300">300</a>, but only triggers when the character's ability number
matches the linedef length by multiples of 10. See linetype <a href="#l305">305</a> for a
futher description.</p>
<h3><a name="l307"></a>307 - Trigger Linedef Executor (Character Ability - Each Time)</h3>
<p>Like <a href="#l301">301</a>, but only triggers when the character's ability number
matches the linedef length by multiples of 10. See linetype <a href="#l305">305</a> for a
futher description.</p>
<h3><a name="l308"></a>308 - Trigger Linedef Executor (Race Only, Once)</h3>
<p>Like linetype <a href="#l302">302</a>, but is only activated when the gametype is Race.
Useful for doing things like opening doors, pre-solving puzzles, etc. to make race
smoother.</p>
<h3><a name="l309"></a>309 - Trigger Linedef Executor (CTF Red Team - Continuous)</h3>
<p>Like <a href="#l300">300</a>, but only triggers if you are in CTF and on the red team.</p>
<h3><a name="l310"></a>310 - Trigger Linedef Executor (CTF Red Team - Each Time)</h3>
<p>Like <a href="#l301">301</a>, but only triggers if you are in CTF and on the red team.</p>
<h3><a name="l311"></a>311 - Trigger Linedef Executor (CTF Blue Team - Continuous)</h3>
<p>Like <a href="#l300">300</a>, but only triggers if you are in CTF and on the blue team.</p>
<h3><a name="l312"></a>312 - Trigger Linedef Executor (CTF Blue Team - Each Time)</h3>
<p>Like <a href="#l301">301</a>, but only triggers if you are in CTF and on the blue team.</p>
<h3><a name="l313"></a>313 - Trigger Linedef Executor (No More Enemies - Once)</h3>
<p>Like linetype <a href="#l302">302</a>, but is only activated when no more objects of
type MF_ENEMY exist in its tagged area. Think &quot;destroy all enemies in this room for
the door to open to go to the next room&quot;. Tag this to a control sector. It will go
through the lines of the control sector, checking for any lines of type <a href="#l223">223</a>
and checking inside the area occupied by the invisible intangible FOF to see if any
enemies exist. If no alive enemies are in all of the type <a href="#l223">223</a> FOFs,
the linedef executor is run once. The line length is the tag number of the linedef
executor trigger to run.</p>
<h3><a name="l314"></a>314 - Trigger Linedef Executor (# of Pushables - Continuous)</h3>
<p>Like <a href="#l300">300</a>, but only triggers if the number of pushable objects in
the sector compared to the line length is:</p>
<p>No flags -&gt; Runs if (# pushables = line length)</p>
<p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (# pushables &gt;= line length)</p>
<p><a href="#EFFECT4">EFFECT4</a> -&gt; Runs if (# pushables &lt; line length)</p>
<h3><a name="l315"></a>315 - Trigger Linedef Executor (# of Pushables - Once)</h3>
<p>Like <a href="#l314">314</a>, but only triggers once.</p>
<h3><a name="l316"></a>316 - Trigger Linedef Executor (PolyObject - Land On)</h3>
<p>This will trigger every time you land on the polyobject. Line's tag # is 32000 + the
PolyObject ID #. You must also flag the PolyObject Start (#20) line with <a
href="#NOCLIMB">NOCLIMB</a> to tell the game it has a linedef executor associated with it.</p>
<p>So if you had a PolyObject with an ID of 1, this line would have a tag of 32001.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Linedef Executor Options</big></big></u><ol>
<h3><a name="l400"></a>400 - Linedef Executor: Set Tagged Sector's Floor Height/Pic</h3>
<p>When executed, instantly changes the tagged sector's floor height and flat to the floor
height and flat of the linedef's front sector.</p>
<h3><a name="l401"></a>401 - Linedef Executor: Set Tagged Sector's Ceiling Height/Pic</h3>
<p>When executed, instantly changes the tagged sector's ceiling height and flat to the
ceiling height and flat of the linedef's front sector.</p>
<h3><a name="l402"></a>402 - Linedef Executor: Set Tagged Sector's Light Level</h3>
<p>When executed, instantly changes the tagged sector's light level to that of the
linedef's front sector. Floor and ceiling light settings done with linetypes <a
href="#l601">601</a> and <a href="#l600">600</a> are transferred as well; colormaps are
not.</p>
<p>If there is a lighting effect active in the target sector or sectors at the time (glow,
fade, strobe, flicker), it will be stopped.</p>
<h3><a name="l403"></a>403 - Linedef Executor: Move Tagged Sector's Floor</h3>
<p>When executed, starts moving the tagged sector's floor until it is at the same height
as the linedef's front sector's floor. Speed is indicated in the same units used by
linetype <a href="#l60">60</a>.</p>
<p>If the line used has <a href="#NOCLIMB">NOCLIMB</a> flag, the floor flat will change
after the move, to that on the front sector's floor. This is like what linetype <a
href="#l400">400</a> does.</p>
<p>If the line used has <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag, another linedef
executor will be run when the floor movement is finished. (If multiple sectors finish at
different times, it goes by the lowest numbered sector, but you should probably try to
avoid this scenario.) The tag of the new linedef executor to run is specified by the X
alignment on the front side of the line. The tag number you use must be positive, and this
functionality cannot be combined with changing the floor flat using the <a href="#NOCLIMB">NOCLIMB</a>
flag. Running a linedef executor will take precedence over changing the floor flat.</p>
<h3><a name="l404"></a>404 - Linedef Executor: Move Tagged Sector's Ceiling</h3>
<p>When executed, starts moving the tagged sector's ceiling until it is at the same height
as the linedef's front sector's ceiling. Speed is indicated in the same units used by
linetype <a href="#l60">60</a>.</p>
<p>If the line used has <a href="#NOCLIMB">NOCLIMB</a> flag, the ceiling flat will change
after the move, to that on the front sector's ceiling. This is like what linetype <a
href="#l401">401</a> does.</p>
<p>If the line used has <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag, another linedef
executor will be run when the ceiling movement is finished. (If multiple sectors finish at
different times, it goes by the lowest numbered sector, but you should probably try to
avoid this scenario.) The tag of the new linedef executor to run is specified by the X
alignment on the front side of the line. The tag number you use must be positive, and this
functionality cannot be combined with changing the ceiling flat using the <a
href="#NOCLIMB">NOCLIMB</a> flag. Running a linedef executor will take precedence over
changing the ceiling flat.</p>
<h3><a name="l405"></a>405 - Linedef Executor: Lower Floor by Line</h3>
<p>Speed is indicated by x distance; amount to lower is indicated by y distance.</p>
<h3><a name="l406"></a>406 - Linedef Executor: Raise Floor by Line</h3>
<p>Speed is indicated by x distance; amount to raise is indicated by y distance.</p>
<h3><a name="l407"></a>407 - Linedef Executor: Lower Ceiling by Line</h3>
<p>Speed is indicated by x distance; amount to lower is indicated by y distance.</p>
<h3><a name="l408"></a>408 - Linedef Executor: Raise Ceiling by Line</h3>
<p>Speed is indicated by x distance; amount to raise is indicated by y distance.</p>
<h3><a name="l409"></a>409 - Linedef Executor: Change Calling Sector's Tag</h3>
<p>Changes the tag of the calling sector; that is, the sector on the map that activated
this linedef executor. The new tag is the linedef's length.</p>
<h3><a name="l410"></a>410 - Linedef Executor: Change Front Sector's Tag</h3>
<p>Changes the tag of the linedef's front sector. The new tag is the linedef's length.</p>
<h3><a name="l411"></a>411 - Linedef Executor: Stop Plane Movement</h3>
<p>Stops any and all floor, ceiling, or elevator movement in the tagged sector or sectors.</p>
<h2><a name="l412"></a>412 - Linedef Executor: Teleport Player to Tagged Sector</h2>
<p>The player who triggered the linedef executor will be teleported to the tagged sector.
The player's exact X, Y, Z, and angle are determined by a teleport destination thing, type
<a href="#t751">751</a>, somewhere in the tagged sector.</p>
<p>If the <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> flag is used, it won't flash and make
the teleport sound effects. If the <a href="#NOCLIMB">NOCLIMB</a> flag is used, it won't
reset the angle to the angle of the teleport destination thing, and if the <a
href="#EFFECT4">EFFECT4</a> flag is used, it will not kill your acceleration/speed upon
teleport.</p>
<h2><a name="l413"></a>413 - Linedef Executor: Change Music</h2>
<p>Linedef length indicates the music slot to use. If the linedef's <a href="#NOCLIMB">NOCLIMB</a>
flag is set, play the music once, otherwise loop it.</p>
<p>If the player dies and goes back to a starpost, the beginning of the level, or the
appropriate multiplayer start, the map music from before will be restored. The linedef
flag <a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> can be set to change this behavior, and
retain the new music even after dying.</p>
<p>If the linedef length isn't a valid music slot, the music is stopped.</p>
<h3><a name="l414"></a>414 - Linedef Executor: Play SFX</h3>
<p>Plays a sound effect. The line length is the sound number to use. The list of sound
effects can be found in sounds.h. The origin of the sound depends on which linedef flags
are set: <ul>
<li><a href="#NOCLIMB">NOCLIMB</a> : The sound is played from nowhere, but only for the
player who triggered it.</li>
<li><a href="#EFFECT4">EFFECT4</a>: The sound is played from nowhere for everyone.</li>
<li><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a>: The sound is played from the center of the
sector that triggered the linedef executor.</li>
</ul>
<p>Otherwise, the sound is played from the location of the player or thing who triggered
it.</p>
<h3><a name="l415"></a>415 - Linedef Executor: Run Script</h3>
<p>Runs a script, the same kind of script you can run on level load with the level header
scriptname attribute. The script that will be run should have a lumpname of the form SCR<i>xxyyy</i>,
where <i>xx</i> is the two-digit map number and <i>yyy</i> is the linedef's sector's floor
height in decimal, with leading zeroes as necessary (or 000 if the floor height exceeds
999 fracunits). For instance, if the linedef is in MAP31 and the floor of its sector is
337 fracunits, the script named SCR31337 will be run.</p>
<h3><a name="l416"></a>416 - Linedef Executor: Start Adjustable Fire Flicker</h3>
<p>Essentially a copy of linetype <a href="#l603">603</a> that waits to activate until the
linedef executor is triggered. It does have an extra feature, though. If you use a
two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
will be used as the maximum light level, allowing you to set the target sector (or
sectors) at a different starting light level entirely.</p>
<h3><a name="l417"></a>417 - Linedef Executor: Start Adjustable Glowing Light</h3>
<p>Essentially a copy of linetype <a href="#l602">602</a> that waits to activate until the
linedef executor is triggered. It does have an extra feature, though. If you use a
two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
will be used as the maximum light level, allowing you to set the target sector (or
sectors) at a different starting light level entirely.</p>
<h3><a name="l418"></a>418 - Linedef Executor: Start Adjustable Blinking Light
(unsynchronized)</h3>
<p>Essentially a copy of linetype <a href="#l604">604</a> that waits to activate until the
linedef executor is triggered. It does have an extra feature, though. If you use a
two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
will be used as the maximum light level, allowing you to set the target sector (or
sectors) at a different starting light level entirely.</p>
<h3><a name="l419"></a>419 - Linedef Executor: Start Adjustable Blinking Light
(synchronized)</h3>
<p>Essentially a copy of linetype <a href="#l605">605</a> that waits to activate until the
linedef executor is triggered. It does have an extra feature, though. If you use a
two-sided linedef with the <a href="#NOCLIMB">NOCLIMB</a> flag, the linedef's back sector
will be used as the maximum light level, allowing you to set the target sector (or
sectors) at a different starting light level entirely.</p>
<h3><a name="l420"></a>420 - Linedef Executor: Fade Light Level</h3>
<p>When executed, gradually fades the tagged sector's light level to that of the linedef's
front sector. Floor and ceiling light settings done with linetypes <a href="#l601">601</a>
and <a href="#l600">600</a> are not affected or used.</p>
<p>If there is a lighting effect already active in the target sector or sectors at the
time (glow, other fade, strobe, flicker), it will be halted in favor of this one.</p>
<p>Linedef length in fracunits indicates speed. Fading from 224 to 64 with a linedef
length of 4 will take 40 fracunits (224 - 64 = 160, 160 / 4 = 40). There are 35 fracunits
in a second.</p>
<h3><a name="l421"></a>421 - Linedef Executor: Stop Lighting Effect</h3>
<p>Stops any lighting effects active in the tagged sector or sectors: glow, fade, strobe,
flicker, etc. The light level, whatever it is at the moment this script line is run, will
be preserved until a new lighting effect or light level change is used.</p>
<p>Note that the lighting effects will all stop other lighting effects when activated. In
other words, you only need to use this when you really want the lighting effect to stop,
not when you want one effect to stop and another to start.</p>
<h3><a name="l422"></a>422 - Linedef Executor: Cut-Away View</h3>
<p>Cuts away to a view from a different place for a moment. Only works for linedef
executors triggered by a player. Tag the line to a sector with an alt view thing (map
thing type 5007) in it at the proper location with the proper Z and angle. The line length
indicates how long to stay in this view, in tics.</p>
<p>By giving the linedef a <a href="#NOCLIMB">NOCLIMB</a> flag, you can adjust the
vertical viewing angle from the cut-away view. Set the x offset on the linedef's front
side to an integer -90 to 90. In software mode the range of viewing angles is actually
about -68 to 68. This is in degrees.</p>
<h3><a name="l423"></a>423 - Linedef Executor: Change Sky</h3>
<p>Changes sky to the # of the control sector's floorheight. This only affects the player
who activates it. If you'd like it to affect all players, make sure you check the <a
href="#NOCLIMB">NOCLIMB</a> flag.</p>
<h3><a name="l424"></a>424 - Linedef Executor: Change Weather</h3>
<p>Changes weather to the control sector's floorheight in powers of 10.</p>
<p>Example:</p>
<div align="left"><table border="1" width="28%">
<tr>
<td width="50%">Linedef Length</td>
<td width="50%">Weather Type</td>
</tr>
<tr>
<td width="50%">10</td>
<td width="50%">None</td>
</tr>
<tr>
<td width="50%">20</td>
<td width="50%">Snow</td>
</tr>
<tr>
<td width="50%">30</td>
<td width="50%">Rain</td>
</tr>
<tr>
<td width="50%">40</td>
<td width="50%">Storm</td>
</tr>
</table>
</div><p>(higher numbers reserved for future use)</p>
<p>This only affects the player who activates it. If you'd like it to affect all players,
make sure you check the <a href="#NOCLIMB">NOCLIMB</a> flag.</p>
<h3><a name="l425"></a>425 - Linedef Executor: Change Object State</h3>
<p>Changes the animation frame of the activating object to the state # indicated by the
length of the control linedef. Be careful how you use this.</p>
<h3><a name="l426"></a>426 - Linedef Executor: Stop Object</h3>
<p>Makes the object that triggered the linedef executor stop moving, after being sent to
the center of the sector it's in (only if <a href="#NOCLIMB">NOCLIMB</a> flag is set), on
the floor. Although it comes to a complete stop, the object can begin moving right away
again. If the object is a player, the player will stop jumping, spinning, or anything
else.</p>
<h3><a name="l427"></a>427 - Linedef Executor: Award Score</h3>
<p>Adds to the score of the player who activated it. Control sector's floorheight = points
to award. This even works with negative values.</p>
<h3><a name="l428"></a>428 - Linedef Executor: Start Platform Movement</h3>
<p>Starts a moving platform in the nature of linetype <a href="#l59">59</a> or <a
href="#l60">60</a>. If the <a href="#NOCLIMB">NOCLIMB</a> flag is set, the platform will
begin moving upwards. Otherwise, it will start moving downwards. Speed of movement is set
just like with linetype <a href="#l60">60</a>.</p>
<h3><a name="l429"></a>429 - Linedef Executor: Crush Ceiling Once</h3>
<p>Ceiling moves down to the floor, then back up. Speed is determined by line length -
every 16 units equals 1 FRACUNIT/tic.</p>
<h3><a name="l430"></a>430 - Linedef Executor: Crush Floor Once</h3>
<p>Floor moves up to the ceiling, then back down. Speed is determined by line length -
every 16 units equals 1 FRACUNIT/tic.</p>
<h3><a name="l431"></a>431 - Linedef Executor: Crush Floor And Ceiling Once</h3>
<p>Floor and ceiling meet in the middle and then return, sandwiching anything that's
inbetween. Speed is determined by line length - every 16 units equals 1 FRACUNIT/tic.</p>
<h3><a name="l432"></a>432 - Linedef Executor: Enable 2D Mode</h3>
<p>Turns on 2D mode within the level. You'll probably only want to use this with a zoom
tube or teleport to guarantee that the player is in the correct position when it switches.</p>
<h3><a name="l433"></a>433 - Linedef Executor: Disable 2D Mode</h3>
<p>Turns off 2D mode within the level.</p>
<h3><a name="l434"></a>434 - Linedef Executor: Award Custom Power</h3>
<p>Awards (or removes!) a power to the calling player.</p>
<p>X length: Power Index + 1</p>
<p>Y length: Power Duration (in 35ths of a second)</p>
<h3><a name="l435"></a>435 - Linedef Executor: Change Scroller Direction</h3>
<p>Changes direction of a scroller (conveyor, texture). Also changes speed if this is not
an accelerative/displacement scroller.</p>
<h3><a name="l436"></a>436 - Linedef Executor: Shatter Block</h3>
<p>Shatters a FOF - of any type. Parameters are as follows:</p>
<p>Texture X Offset: Tag # of FOF target sector</p>
<p>Texture Y Offset: Tag # of FOF control sector</p>
<p>Note that the FOF should only have one target sector.</p>
<h3><a name="l437"></a>437 - Linedef Executor: Disable Player Control</h3>
<p>Disables the controls of the player that triggered the linedef executor. If the
<a href="#NOCLIMB">NOCLIMB</a> flag is set, they will be able to jump, however.</p>
<p>Giving the front texture of the linedef an X offset will make the effect last that amount
of time, in tics. Otherwise, it ends immediately, so you would need to use a continuous
trigger.</p>
<h3><a name="l438"></a>438 - Linedef Executor: Set Object's Scale</h3>
<p>Length of this line determines the scale size of an object, in percentage. Note that there is a max of 400%.</p>
<h3><a name="l450"></a>450 - Linedef Executor: Execute Linedef Executor</h3>
<p>Just what it says. Can be used for recursion. Be careful, because you CAN make a loop
out of this that will freeze the game.</p>
<p>Tag is the linedef executor trigger tag to run.</p>
<h3><a name="l488"></a>488 - Linedef Executor: PolyObject - Move by Waypoints</h3>
<p>Moves a polyobject along a sequence of Zoom Tube waypoints.</p>
<p>Texture X offset: Speed (8 = 1 FRACUNIT).</p>
<p>Texture Y offset: Sequence # of Zoom Tube waypoints.</p>
<p>The movement also depends on which linedef flags are set: <ul>
<li><a href="#EFFECT1">EFFECT1</a> : Moves from highest waypoint # to lowest waypoint #.</li>
<li><a href="#EFFECT2">EFFECT2</a> : Comes back the way it came when the end is reached.</li>
<li><a href="#EFFECT3">EFFECT3</a> : Wrap around the waypoints.</li>
<li><a href="#EFFECT4">EFFECT4</a>:&nbsp; Continuously move (used with EFFECT2 or EFFECT3).</li>
</ul>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Scrollers / Pushers</big></big></u><ol>
<h3><a name="l500"></a>500 - Scroll Wall First Side Left</h3>
<h3><a name="l501"></a>501 - Scroll Wall First Side Opposite Direction</h3>
<h3><a name="l502"></a>502 - Scroll Wall According to Linedef</h3>
<h3><a name="l503"></a>503 - Acc Scroll Wall According to Linedef</h3>
<p>Accelerative scrolling version of <a href="#l502">502</a>.</p>
<h3><a name="l504"></a>504 - Disp Scroll Wall According to Linedef</h3>
<p>Displacement scrolling version of <a href="#l502">502</a>.</p>
<h3><a name="l505"></a>505 - Scroll Texture by Offsets</h3>
<hr>
<h3><a name="l510"></a>510 - Scroll Floor Texture</h3>
<p>Linedef length and direction indicate speed and direction.</p>
<h3><a name="l511"></a>511 - Acc Scroll Floor Texture</h3>
<p>Accelerative scrolling version of <a href="#l510">510</a>.</p>
<h3><a name="l512"></a>512 - Disp Scroll Floor Texture</h3>
<p>Displacement scrolling version of <a href="#l510">510</a>.</p>
<h3><a name="l513"></a>513 - Scroll Ceiling Texture</h3>
<p>Linedef length and direction indicate speed and direction.</p>
<h3><a name="l514"></a>514 - Acc Scroll Ceiling Texture</h3>
<p>Accelerative scrolling version of <a href="#l513">513</a>.</p>
<h3><a name="l515"></a>515 - Disp Scroll Ceiling Texture</h3>
<p>Displacement scrolling version of <a href="#l513">513</a>.</p>
<hr>
<h3><a name="l520"></a>520 - Carry Objects on Floor</h3>
<p>Like linedef type <a href="#l530">530</a>, without scrolling the floor texture, so the
floor doesn't look like it's moving.</p>
<h3><a name="l521"></a>521 - Acc Carry Objects on Floor</h3>
<p>Accelerative scrolling version of <a href="#l520">520</a>.</p>
<h3><a name="l522"></a>522 - Disp Carry Objects on Floor</h3>
<p>Displacement scrolling version of <a href="#l520">520</a>.</p>
<h3><a name="l523"></a>523 - Carry Objects on Ceiling</h3>
<p>For FOF conveyor belts. Like <a href="#l533">533</a>, except without the scrolling to
accompany it.</p>
<h3><a name="l524"></a>524 - Acc Carry Objects on Ceiling</h3>
<p>Accelerative scrolling version of <a href="#l523">523</a>. Untested.</p>
<h3><a name="l525"></a>525 - Disp Carry Objects on Ceiling</h3>
<p>Displacement scrolling version of <a href="#l523">523</a>. Untested.</p>
<hr>
<h3><a name="l530"></a>530 - Scroll Floor Texture and Carry Objects</h3>
<p>Used for conveyor belts, in conjunction with sector type <a href="#s1024">1024</a>
(Conveyor Belt). Linedef length and direction indicate conveyor speed and direction,
respectively. This can also be used to convey items on the underneath of a FOF. See Egg
Rock Zone for an example.</p>
<h3><a name="l531"></a>531 - Acc Scroll Floor Texture and Carry Objects</h3>
<p>Accelerative scrolling version of <a href="#l530">530</a>.</p>
<h3><a name="l532"></a>532 - Disp Scroll Floor Texture and Carry Objects</h3>
<p>Displacement scrolling version of <a href="#l530">530</a>.</p>
<h3><a name="l533"></a>533 - Scroll Ceiling Texture and Carry Objects</h3>
<p>For conveyor belts on the top of FOFs, or for conveying items on a ceiling. Tag this to
the FOF control sector and give the FOF control sector a type of <a href="#s1024">1024</a>,
Conveyor Belt. For realism you might also want to scroll the control sector's floor
texture in the opposite direction (see linetype <a href="#l510">510</a>).</p>
<h3><a name="l534"></a>534 - Acc Scroll Ceiling Texture and Carry Objects</h3>
<p>Accelerative scrolling version of <a href="#l533">533</a>. Untested.</p>
<h3><a name="l535"></a>535 - Disp Scroll Ceiling Texture and Carry Objects</h3>
<p>Displacement scrolling version of <a href="#l533">533</a>. Untested.</p>
<hr>
<h3><a name="l540"></a>540 - Friction</h3>
<p>Linedef lengths greater than 100 indicate slippery ice, while linedef lengths less than
100 can be used for sludge, with extra friction.</p>
<p>If you want friction on a FOF, tag this line to the control sector of the FOF.
Otherwise, tag it to the sector of desired destination.</p>
<h3><a name="l541"></a>541 - Wind</h3>
<p>Speed and direction are indicated by linedef length and direction. The target sector
should be of type <a href="#s512">512</a>, Wind/Current. If being used in a 3D Floor, put
the 512/768 sector type in the control sector, not the target sector. Also tag the line to
the control sector, and not the target sector.</p>
<p>Special flags:</p>
<p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Only this pusher will affect the object - the
object can't have multiple 'pushings' due to being on the edge of a sector, etc.</p>
<p><a href="#EFFECT4">EFFECT4</a> -&gt; Player will go into slide with limited control
(similar to the water and oil slides in Labyrinth and Oil Ocean).</p>
<h3><a name="l542"></a>542 - Upwards Wind</h3>
<p>The length of the linedef is the wind speed. The target sector will need type <a
href="#s512">512</a> or <a href="#s768">768</a>. If being used in a 3D Floor, put the
512/768 sector type in the control sector, not the target sector. Also tag the line to the
control sector, and not the target sector.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<h3><a name="l543"></a>543 - Downwards Wind</h3>
<p>Wind speed is determined by the linedef's length. Type <a href="#s512">512</a> or <a
href="#s768">768</a> must be applied to the target sector. If being used in a 3D Floor,
put the 512/768 sector type in the control sector, not the target sector. Also tag the
line to the control sector, and not the target sector.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<h3><a name="l544"></a>544 - Current</h3>
<p>Speed and direction are indicated by linedef length and direction. The target sector
should have type <a href="#s512">512</a>, Wind/Current. If being used in a 3D Floor, put
the 512/768 sector type in the control sector, not the target sector. Also tag the line to
the control sector, and not the target sector.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<h3><a name="l545"></a>545 - Upwards Current</h3>
<p>Linedef length indicates speed. Target sector needs sector type <a href="#s512">512</a>
or <a href="#s768">768</a>. If being used in a 3D Floor, put the 512/768 sector type in
the control sector, not the target sector. Also tag the line to the control sector, and
not the target sector.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<h3><a name="l546"></a>546 - Downwards Current</h3>
<p>Speed is indicated by linedef length. Assign a type of <a href="#s512">512</a> or <a
href="#s768">768</a> to the target sector. If being used in a 3D Floor, put the 512/768
sector type in the control sector, not the target sector. Also tag the line to the control
sector, and not the target sector.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<h3><a name="l547"></a>547 - Boom Push/Pull Thing</h3>
<p>Creates a &quot;point pusher,&quot; or a point that pushes you away or pulls you toward
it if you get close enough. Tag the linedef to a sector with type <a href="#s512">512</a>,
Wind/Current, and with a thing on it of type 5001 (push) or 5002 (pull). The control
linedef's length indicates pushing/pulling strength; if length is L, the effect fades away
to nothing when you are 2L away from the point.</p>
<p>If you want to create multiple point pushers/pullers, you'll need to have them in
different target sectors, but they can share the same tag.</p>
<p>NOCLIMB/EFFECT4 flags operate the same as for line <a href="#l541">541</a>.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Lighting</big></big></u><ol>
<h3><a name="l600"></a>600 - Floor Lighting</h3>
<p>Sets the lighting for the floor only. The control sector's light value will be used for
the target sector's floor. Also see type <a href="#l601">601</a>.</p>
<h3><a name="l601"></a>601 - Ceiling Lighting</h3>
<p>Sets the lighting of the ceiling only. The light value of the control sector will be
used for the target sector's ceiling. Also see type <a href="#l600">600</a>.</p>
<h3><a name="l602"></a>602 - Adjustable Pulsating Light</h3>
<p>Linedef length indicates glow speed. The normal speed would be a linedef 32 units long.</p>
<p>The control sector (the linedef's front sector) is used to get what will be the minimum
light level for this effect, while the target sector's light level ends up being the
maximum.</p>
<h3><a name="l603"></a>603 - Adjustable Flickering Light</h3>
<p>Linedef length indicates flicker speed. Normal speed would be a 16 fracunit long
linedef. A longer linedef means more time in between flickers.</p>
<p>The control sector (the linedef's front sector) is used to get what will be the minimum
light level for this effect, while the target sector's light level ends up being the
maximum.</p>
<h3><a name="l604"></a>604 - Adjustable Blinking Light (unsynchronized)</h3>
<p>Line's X length is time for the light to be off, and Y length is the time for the light
to be on.</p>
<p>The control sector (the linedef's front sector) is used to get what will be the minimum
light level for this effect, while the target sector's light level ends up being the
maximum.</p>
<h3><a name="l605"></a>605 - Adjustable Blinking Light (synchronized)</h3>
<p>Line's X length is time for the light to be off, and Y length is the time for the light
to be on.</p>
<p>The control sector (the linedef's front sector) is used to get what will be the minimum
light level for this effect, while the target sector's light level ends up being the
maximum.</p>
<h3><a name="l606"></a>606 - Colormap</h3>
<p>Sets a colormap. Tag the linedef to the sector or sectors affected by the colormap. The
control linedef's front Above texture is used to determine the colormap. The format is
#rrggbba, where rr, gg, and bb are two hexadecimal digits for determining each color: red,
blue, and green. The a stands for alpha, and is a number or letter indicating the
translucency; from A-Z and 0-9, with A being most transparent and 9 being most opaque.</p>
<p>It does not generally matter what sector the colormap linedef belongs to. However, it
should not belong to the same sector as another colormap, as this can cause problems.</p>
</ol>
</li>
<h1><a name="sectortypes"></a>Sector Types</h1>
<p>You can apply up to four different types to one sector, provided that you only choose
ONE from EACH category. Add the numbers together to obtain the final value to use in level
editors.</p>
<li><u><big><big>Section 1</big></big></u><ol>
<h3><a name="s1"></a>1 - Damage (Generic)</h3>
<p>This special hurts, period. It doesn't matter whether you have a liquid shield, fire
shield, attraction shield, or whatever else; step on one of these and suffer.</p>
<h3><a name="s2"></a>2 - Damage (Water)</h3>
<p>Also known as Slime Hurt. Stepping here will be painful, as in shield/ring/life loss
(depending on how you are equipped), unless you happen to have the liquid shield.</p>
<h3><a name="s3"></a>3 - Damage (Fire)</h3>
<p>Stepping here will hurt, unless you happen to have a fire shield.</p>
<h3><a name="s4"></a>4 - Damage (Electrical)</h3>
<p>Hurts players whenever they're in the sector, unless they have the attraction shield.</p>
<p>Usage tip: Give the sector a floor flat that looks electrical and looks like it could
hurt you. </p>
<h3><a name="s5"></a>5 - Spikes</h3>
<p>Making spikes using sectors is rather tedious and difficult. You can use things instead
(<a href="#t523">Floor Spike</a> and <a href="#t522">Ceiling Spike</a>). But the sector
version DOES look cooler. ;)</p>
<h3><a name="s6"></a>6 - Death Pit (Camera Modifications)</h3>
<p>Used for bottomless pits. You'll probably want the sector's floor flat to be either
F_SKY1 (falling from the sky) or PIT (falling into a pit of complete blackness). The
camera modifications keep the camera from following you all the way down, for a Sonic
Adventure-style pit death. If you don't like the camera modifications, use sector type <a
href="#s7">5</a>.</p>
<h3><a name="s7"></a>7 - Death Pit (No Camera Modifications)</h3>
<p>For bottomless pits. Use if the camera modifications of sector type <a href="#s6">6</a>
are not to your taste.</p>
<h3><a name="s8"></a>8 - Instant Kill</h3>
<p>Die right away if you even step into this sector. No need to touch the floor as with
those sissy death pits.</p>
<h3><a name="s9"></a>9 - Ring Drainer (Floor Touch)</h3>
<p>Lose one ring per 15 tics while touching the floor.</p>
<h3><a name="s10"></a>10 - Ring Drainer (No Floor Touch)</h3>
<p>Like sector type <a href="#s9">9</a>, but doesn't require touching floor.</p>
<h3><a name="s11"></a>11 - Special Stage Damage</h3>
<p>If you have rings and no shield, and you step on it, you only lose 10 rings, maximum.
It's just like the special stages!</p>
<h3><a name="s12"></a>12 - Space Countdown</h3>
<p>In space, you have no chance to survive make your time, ha ha ha. Starts an immediate
five-second countdown, like when you drown.</p>
<h3><a name="s13"></a>13 - Ramp Sector</h3>
<p>Doubles the step-up height of the player. Default step-up height is 24 fracunits, but
with this, it becomes 48. Useful for steps and other things if your players seem to be
getting 'stopped' by the stairs while moving quickly.</p>
<h3><a name="s14"></a>14 - Non-Ramp Sector (Don't step down)</h3>
<p>Removes the 'step-down' that a player will normally do when moving to a nearby sector.</p>
<h3><a name="s15"></a>15 - Bouncy Sector (FOF Control Only)</h3>
<p>Use this on a 3D floor's control sector to make it bouncy. Players will bounce off the
top of it. If the 3D floor's control line has the BOUNCY flag set, the linedef length sets
the minimum bounce force. Otherwise, you will slowly come to a stop.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big><a name="sCat2"></a>Section 2</big></big></u><ol>
<h3><a name="s16"></a>16 - Trigger Linedef Executor (Pushable Objects)</h3>
<p>Works like <a href="#s80">80</a> but with a pushable object (gargoyle or snowman)
touching the floor rather than a player.</p>
<h3><a name="s32"></a>32 - Trigger Linedef Executor (Anywhere in Sector) (All Players)</h3>
<p>Sector type <a href="#s64">64</a> with the added requirement that all players who don't
have a game over need to be in the sector, not just one player. Currently does not work in
FOFs.</p>
<h3><a name="s48"></a>48 - Trigger Linedef Executor (Floor Touch) (All Players)</h3>
<p>Sector type <a href="#s80">80</a> with the added requirement that all players who don't
have a game over need to be in the sector, not just one player.</p>
<h3><a name="s64"></a>64 - Trigger Linedef Executor (Anywhere in Sector)</h3>
<p>Like sector type <a href="#s80">80</a>, but you don't have to be touching the floor to
do the triggering. You could be flying high in the air. You should also use this one for
linedef executors triggered by FOFs.</p>
<h3><a name="s80"></a>80 - Trigger Linedef Executor (Floor Touch)</h3>
<p>Required for any of the <a href="#ltriggers">Linedef Executor Triggers</a> to work in
the sector.</p>
<h3><a name="s96"></a>96 - Trigger Linedef Executor (Emerald Check)</h3>
<p>Sector type <a href="#s64">64</a> which will only execute if you have all 7 chaos
emeralds.</p>
<h3><a name="s112"></a>112 - Trigger Linedef Executor (NiGHTS Mare)</h3>
<p>Like sector type <a href="#s64">64</a>, but this is only triggered if you are in a
NiGHTS map, and checks what mare you're on using the following format, depending on what
flags you have set for this line:</p>
<p>No flags -&gt; Runs if (current mare = line length)</p>
<p><a href="#NOCLIMB">NOCLIMB</a> -&gt; Runs if (current mare &lt;= line length)</p>
<p><a href="#BLOCKMONSTERS">BLOCKMONSTERS</a> -&gt; Runs if (current mare &gt;= line
length)</p>
<h3><a name="s128"></a>128 - Check for linedef executor on 3D Floors (ANY object)</h3>
<p>For any item to detect sector type <a href="#l16">16</a> on a 3D floor, the target
sector on the map must have this type. This allows you to have any kind of object trigger
a linedef executor.</p>
<h3><a name="s144"></a>144 - Egg Trap Capsule</h3>
<h3><a name="s160"></a>160 - Special Stage Time/Rings, Par</h3>
<p>For special stages, floor height is time limit in seconds, and ceiling height is rings
required in seconds. If the ceiling height is 0, there is no ring requirement, only a time
limit to find an exit.</p>
<h3><a name="s176"></a>176 - Custom Global Gravity</h3>
<p>Floor height sets global gravity. 500 is normal. 1000 is twice the normal gravity, 250
is half. You can also set per-sector gravity with linetype <a href="#l1">1</a>. This can
also be adjusted in realtime, for some really cool effects.</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Section 3</big></big></u><ol>
<h3><a name="s256"></a>256 - Ice/Sludge</h3>
<p>See linedef type <a href="#l540">540</a>.</p>
<h3><a name="s512"></a>512 - Wind/Current</h3>
<p>See linedef types <a href="#l541">541</a> and <a href="#l544">544</a>.</p>
<h3><a name="s768"></a>768 - Ice/Sludge and Wind/Current</h3>
<p>Combination of sector specials 256 and 512.</p>
<h3><a name="s1024"></a>1024 - Conveyor Belt</h3>
<p>See linedef type <a href="#l520">520</a>.</p>
<h3><a name="s1280"></a>1280 - Speed Pad (No Spin)</h3>
<p>See linedef type <a href="#l4">4</a>.</p>
<h3><a name="s1536"></a>1536 - Speed Pad (Spin)</h3>
<p>See linedef type <a href="#l4">4</a>. This type of speed pad forces you into a spin.</p>
<h3><a name="s1792"></a>1792, 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840 - Bustable
Block Sprite Parameter</h3>
<p>Used in a control sector of a bustable block. Chooses which debris sprite to spawn.</p>
<p>1792 = ROIA</p>
<p>2048 = ROIB</p>
<p>2304 = ROIC</p>
<p>2560 = ROID</p>
<p>2816 = ROIE</p>
<p>3072 = ROIF</p>
<p>3328 = ROIG</p>
<p>3584 = ROIH</p>
<p>3840 = ROII</p>
<p>&nbsp;</p>
</ol>
</li>
<li><u><big><big>Section 4</big></big></u><ol>
<h3><a name="s4096"></a>4096 - Starpost Activator</h3>
<p>Whenever a player steps in the sector, a starpost in that sector will be searched for
and, if found, activated.</p>
<h3><a name="s8192"></a>8192 - Special Stage Goal</h3>
<p>This is like the &quot;GOAL&quot; buttons in Sonic 1's special stages. Ends the special
stage when stepped on.</p>
<h3><a name="s8192a"></a>8192 - Exit Sector</h3>
<p>In single-player, cooperative, or race mode, being in this sector ends the level. You
don't necessarily have to be touching the floor. (If you want the player to have to be
touching the floor, you can use linedef type <a href="#l223">223</a>, an invisible,
intangible FOF, to do the trick. Give the FOF control sector a type of <a href="#s8192">8192</a>.)</p>
<p>See linedef type <a href="#l2">2</a> for a way to exit to any map, not just the one
whose number is specified in the map header. Linedef 2 also allows you to skip the score
tally screen.</p>
<h3><a name="s8192b"></a>8192 - No Tag Zone</h3>
<p>In games of tag, this sector is a safe spot. You cannot be tagged while in it.</p>
<h3><a name="s8192c"></a>8192 - CTF: Flag Return</h3>
<p>In CTF, if the red or blue flag enters this sector, it will automatically return to
base, much like how it behaves when it falls in a pit. This can also be set as a special
on a 3D floor.</p>
<h3><a name="s12288"></a>12288 - CTF: Red Team Base</h3>
<p>The red team has to bring the <a href="#t307">blue flag</a> onto this sector to score.
It's generally a good idea to have the <a href="#t306">red flag</a> here and the <a
href="#t34">red team player starts</a> somewhere close by.</p>
<h3><a name="s16384"></a>16384 - CTF: Blue Team Base</h3>
<p>The blue team has to bring the <a href="#t306">red flag</a> onto this sector to score.
It's generally a good idea to have the <a href="#t307">blue flag</a> here and the <a
href="#t35">blue team player starts</a> somewhere close by.</p>
<h3><a name="s20480"></a>20480 - Fan Sector</h3>
<p>Acts like a fan, pushing the player up at constant speed and activating the proper
animation. Can be used on intangible FOFs.</p>
<h3><a name="s24576"></a>24576 - Super Sonic Transform</h3>
<p>Transforms you into Super Sonic and gives you 50 rings, providing you have all of the
chaos emeralds.</p>
<h3><a name="s28672"></a>28672 - Spinner</h3>
<p>Forces the player into a spin.</p>
<h3><a name="s32768"></a>32768 - Zoom Tube Start</h3>
<p>When the player touches this sector, a line type <a href="#l3">3</a> with the same tag
as the sector is searched for, and if found, the line's X length determines the speed at
which the tube operates, while its Y length determines which zoom tube sequence to use.
Then the player is immediately put into a spin, loses control, and gravitates toward the
first Zoom Tube Waypoint (thing type <a href="#t753">753</a>), which does not have to be
in the same sector. Once they reach the first waypoint, they begin traveling to the 2nd,
3rd, and so on, until the last waypoint is reached.</p>
<p>This can be used with Floor-Over-Floors, just use these specials in the control sector
instead. </p>
<h3><a name="s36864"></a>36864 - Zoom Tube End</h3>
<p>Just like sector type <a href="#s32768">32768</a>, but starts from the last waypoint
and goes to the first.</p>
<h3><a name="s40960"></a>40960 - Finish Line</h3>
<p>The finish line for a race circuit. This increments a lap when you pass it, after
hitting all the star posts in the stage in sequential order. Once the number of laps
specified by the server is reached, the level is completed.</p>
</ol>
</li>
</ul>
</body>
</html>
===============================================================================
Universal Doom Map Format Sonic Robo Blast 2 extensions v1.0 19.06.2024
Copyright (c) 2024 Sonic Team Junior
uses Universal Doom Map Format Specification v1.1 as a template,
original document Copyright (c) 2009 James Haley.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
===============================================================================
This document discusses the UDMF implementation found in Sonic Robo Blast 2's engine.
=======================================
I. Grammar / Syntax
=======================================
No changes.
=======================================
II. Implementation Semantics
=======================================
------------------------------------
II.A : Storage and Retrieval of Data
------------------------------------
No changes.
-----------------------------------
II.B : Storage Within Archive Files
-----------------------------------
No changes.
--------------------------------
II.C : Implementation Dependence
--------------------------------
The SRB2 engine only supports the following namespace:
"srb2"
The engine is allowed to refuse maps with an unsupported namespace,
or emit a warning.
=======================================
III. Standardized Fields
=======================================
The SRB2 engine ignores any user-defined fields.
All boolean fields default to false unless mentioned otherwise.
Sonic Robo Blast 2 defines the following standardized fields:
vertex
{
x = <float>; // X coordinate. No valid default.
y = <float>; // Y coordinate. No valid default.
zfloor = <float>; // Floor height at this vertex. Only applies to triangular sectors
zceiling = <float>; // Ceiling height at this vertex. Only applies to triangular sectors
}
linedef
{
id = <integer>; // ID of line. Interpreted as tag.
moreids = <string>; // Additional line IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
v1 = <integer>; // Index of first vertex. No valid default.
v2 = <integer>; // Index of second vertex. No valid default.
blocking = <bool>; // Line blocks things.
blockmonsters = <bool>; // Line blocks enemies.
twosided = <bool>; // Line is 2S.
dontpegtop = <bool>; // Upper texture unpegged.
dontpegbottom = <bool>; // Lower texture unpegged.
skewtd = <bool>; // Upper and lower textures are skewed.
noclimb = <bool>; // Line is not climbable.
noskew = <bool>; // Middle texture is not skewed.
midpeg = <bool>; // Middle texture is pegged.
midsolid = <bool>; // Middle texture is solid.
wrapmidtex = <bool>; // Line's mid textures are wrapped.
nonet = <bool>; // Special only takes effect in singleplayer games.
netonly = <bool>; // Special only takes effect in multiplayer games.
bouncy = <bool>; // Line is bouncy.
transfer = <bool>; // In 3D floor sides, uses the sidedef properties of the control sector.
alpha = <float>; // Translucency of this line. Default is 1.0
renderstyle = <string>; // Render style. Can be:
// - "translucent"
// - "add"
// - "subtract"
// - "reversesubtract"
// - "modulate"
// - "fog"
// Default is "translucent".
special = <integer>; // Linedef action. Default = 0.
arg0 = <integer>; // Argument 0. Default = 0.
arg1 = <integer>; // Argument 1. Default = 0.
arg2 = <integer>; // Argument 2. Default = 0.
arg3 = <integer>; // Argument 3. Default = 0.
arg4 = <integer>; // Argument 4. Default = 0.
arg5 = <integer>; // Argument 5. Default = 0.
arg6 = <integer>; // Argument 6. Default = 0.
arg7 = <integer>; // Argument 7. Default = 0.
arg8 = <integer>; // Argument 8. Default = 0.
arg9 = <integer>; // Argument 9. Default = 0.
stringarg0 = <string>; // String argument 0.
stringarg1 = <string>; // String argument 1.
sidefront = <integer>; // Sidedef 1 index. No valid default.
sideback = <integer>; // Sidedef 2 index. Default = -1.
comment = <string>; // A comment. Implementors should attach no special
// semantic meaning to this field.
}
sidedef
{
offsetx = <integer>; // X offset. Default = 0.
offsety = <integer>; // Y offset. Default = 0.
texturetop = <string>; // Upper texture. Default = "-".
texturebottom = <string>; // Lower texture. Default = "-".
texturemiddle = <string>; // Middle texture. Default = "-".
repeatcnt = <integer>; // Number of middle texture repetitions. Default = 0.
sector = <integer>; // Sector index. No valid default.
scalex_top = <float>; // X scale for upper texture. Default = 1.0.
scaley_top = <float>; // Y scale for upper texture. Default = 1.0.
scalex_mid = <float>; // X scale for mid texture. Default = 1.0.
scaley_mid = <float>; // Y scale for mid texture. Default = 1.0.
scalex_bottom = <float>; // X scale for lower texture. Default = 1.0.
scaley_bottom = <float>; // Y scale for lower texture. Default = 1.0.
offsetx_top = <float>; // X offset for upper texture. Default = 0.0.
offsety_top = <float>; // Y offset for upper texture. Default = 0.0.
offsetx_mid = <float>; // X offset for mid texture. Default = 0.0.
offsety_mid = <float>; // Y offset for mid texture. Default = 0.0.
offsetx_bottom = <float>; // X offset for lower texture. Default = 0.0.
offsety_bottom = <float>; // Y offset for lower texture. Default = 0.0.
light = <integer>; // Light level, relative to 'sector' light level. Default = 0.
lightabsolute = <bool>; // true = 'light' is an absolute value, ignoring 'sector' light level.
comment = <string>; // A comment. Implementors should attach no special
// semantic meaning to this field.
}
sector
{
heightfloor = <integer>; // Floor height. Default = 0.
heightceiling = <integer>; // Ceiling height. Default = 0.
texturefloor = <string>; // Floor flat. No valid default.
textureceiling = <string>; // Ceiling flat. No valid default.
lightlevel = <integer>; // Light level. Default = 255.
lightfloor = <integer>; // The floor's light level. Default is 0.
lightceiling = <integer>; // The ceiling's light level. Default is 0.
lightfloorabsolute = <bool>; // true = 'lightfloor' is an absolute value. Default is
// relative to the owning sector's light level.
lightceilingabsolute = <bool>; // true = 'lightceiling' is an absolute value. Default is
// relative to the owning sector's light level.
special = <integer>; // Sector special. Default = 0.
id = <integer>; // Sector tag/id. Default = 0.
moreids = <string>; // Additional sector IDs/tags, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
xpanningfloor = <float>; // X texture offset of floor texture. Default = 0.0.
ypanningfloor = <float>; // Y texture offset of floor texture. Default = 0.0.
xpanningceiling = <float>; // X texture offset of ceiling texture. Default = 0.0.
ypanningceiling = <float>; // Y texture offset of ceiling texture. Default = 0.0.
xscalefloor = <float>; // X texture scale of floor texture. Default = 1.0.
yscalefloor = <float>; // Y texture scale of floor texture. Default = 1.0.
xscaleceiling = <float>; // X texture scale of ceiling texture. Default = 1.0.
yscaleceiling = <float>; // Y texture scale of ceiling texture. Default = 1.0.
rotationfloor = <float>; // Rotation of floor texture in degrees. Default = 0.0.
rotationceiling = <float>; // Rotation of ceiling texture in degrees. Default = 0.0.
ceilingplane_a = <float>; // Define the plane equation for the sector's ceiling. Default is a horizontal plane at 'heightceiling'.
ceilingplane_b = <float>; // 'heightceiling' will still be used to calculate texture alignment.
ceilingplane_c = <float>; // The plane equation will only be used if all 4 values are given.
ceilingplane_d = <float>; // The plane is defined as a*x + b*y + c*z + d = 0 with the normal vector pointing downward.
floorplane_a = <float>; // Define the plane equation for the sector's floor. Default is a horizontal plane at 'heightfloor'.
floorplane_b = <float>; // 'heightfloor' will still be used to calculate texture alignment.
floorplane_c = <float>; // The plane equation will only be used if all 4 values are given.
floorplane_d = <float>; // The plane is defined as a*x + b*y + c*z + d = 0 with the normal vector pointing upward.
lightcolor = <integer>; // Sector's light color as RRGGBB value. Default = 0x000000.
lightalpha = <integer>; // Sector's light opacity. Default = 25.
fadecolor = <integer>; // Sector's fog color as RRGGBB value. Default = 0x000000.
fadealpha = <integer>; // Sector's fog opacity. Default = 25.
fadestart = <integer>; // Sector's fading range start. Default = 0.
fadeend = <integer>; // Sector's fading range end. Default = 31.
colormapfog = <bool>; // Sector's colormap uses fog lighting.
colormapfadesprites = <bool>; // Sector's colormap affects full-bright sprites.
colormapprotected = <bool>; // Sector's colormap is not affected by colormap change specials.
flipspecial_nofloor = <bool>; // Trigger effects that require a plane touch are not executed when the floor is touched.
flipspecial_ceiling = <bool>; // Trigger effects that require a plane touch are executed when the ceiling is touched.
triggerspecial_touch = <bool>; // Trigger effects are executed anywhere in the sector.
triggerspecial_headbump = <bool>; // Trigger effects are executed if the top of the triggerer object touches a plane.
triggerline_plane = <bool>; // Trigger effects require a plane touch to be executed.
triggerline_mobj = <bool>; // Trigger effects can be executed by non-pushable objects.
invertprecip = <bool>; // Inverts the precipitation effect; if the sector is considered to be indoors,
// precipitation is generated, and if the sector is considered to be outdoors,
// precipitation is not generated.
gravityflip = <bool>; // Sector flips any objects in it, if the sector has negative gravity.
heatwave = <bool>; // Sector has the heat wave effect.
noclipcamera = <bool>; // Sector is not tangible to the camera.
outerspace = <bool>; // Sector has the space countdown effect.
doublestepup = <bool>; // Sector has half the vertical height needed for objects to walk into it.
nostepdown = <bool>; // Sector has the staircase effect disabled.
speedpad = <bool>; // Sector is a speed pad.
starpostactivator = <bool>; // Sector activates any Star Posts in it when walked into by a plyer.
exit = <bool>; // Sector is an exit sector.
specialstagepit = <bool>; // Sector is a Special Stage pit.
returnflag = <bool>; // Sector returns any Capture the Flag flags that come in contact with it to their respective bases.
redteambase = <bool>; // Sector is a Red Team base.
blueteambase = <bool>; // Sector is Blue Team base.
fan = <bool>; // Sector is a fan sector.
supertransform = <bool>; // Sector transforms any players that come in contact with it into their 'super' mode.
forcespin = <bool>; // Sector forces any players that come in contact with it to roll.
zoomtubestart = <bool>; // Sector is the starting point of a zoom tube path.
zoomtubeend = <bool>; // Sector is the ending point of a zoom tube path.
finishline = <bool>; // Sector is a Circuit finish line.
ropehang = <bool>; // Sector is a rope hang. Must be applied to a 3D floor.
jumpflip = <bool>; // Sector flips the gravity of players who jump from it.
gravityoverride = <bool>; // Reverse gravity effect is only applied when an object is in the sector.
nophysics_floor = <bool>; // Disables floor slope physics if created through a plane equation.
nophysics_ceiling = <bool>; // Disables ceiling slope physics if created through a plane equation.
friction = <float>; // Sector's friction factor.
gravity = <float>; // Sector's gravity. Default is 1.0.
damagetype = <integer>; // Damage type for sector damage. Can be:
// - "None"
// - "Generic"
// - "Water"
// - "Fire"
// - "Lava"
// - "Electric"
// - "Spike"
// - "DeathPitTilt"
// - "DeathPitNoTilt"
// - "Instakill"
// - "SpecialStage"
// Default = "None".
triggertag = <integer>; // Tag to trigger when this sector is entered. Default = 0.
triggerer = <string>; // Who can execute the trigger tag when this sector is entered. Can be:
// - "Player"
// - "AllPlayers"
// - "Mobj"
// Default = "Player".
comment = <string>; // A comment. Implementors should attach no special
// semantic meaning to this field.
}
thing
{
id = <integer>; // Thing ID. Default = 0.
moreids = <string>; // Additional thing IDs, specified as a space separated list of numbers (e.g. "2 666 1003 4505")
x = <float>; // X coordinate. No valid default.
y = <float>; // Y coordinate. No valid default.
height = <float>; // Z height relative to floor.
// Relative to ceiling if flip = true.
// Absolute if absolutez = true.
// Default = 0.
angle = <integer>; // Map angle of thing in degrees. Default = 0 (East).
pitch = <integer>; // Pitch of thing in degrees. Default = 0 (horizontal).
roll = <integer>; // Roll of thing in degrees. Default = 0.
scalex = <float>; // Horizontal visual scaling on thing. Default = 1.0.
scaley = <float>; // Vertical visual scaling on thing. Default = 1.0.
scale = <float>; // Vertical and horizontal visual scaling on thing. Default = 1.0.
mobjscale = <float>; // Physical scale of the thing. Default = 1.0.
type = <integer>; // Thing type. No valid default.
flip = <bool>; // Thing spawns flipped, on the ceiling.
absolutez = <bool>; // If true, the thing height is absolute, instead of being relative to the floor or ceiling.
arg0 = <integer>; // Argument 0. Default = 0.
arg1 = <integer>; // Argument 1. Default = 0.
arg2 = <integer>; // Argument 2. Default = 0.
arg3 = <integer>; // Argument 3. Default = 0.
arg4 = <integer>; // Argument 4. Default = 0.
arg5 = <integer>; // Argument 5. Default = 0.
arg6 = <integer>; // Argument 6. Default = 0.
arg7 = <integer>; // Argument 7. Default = 0.
arg8 = <integer>; // Argument 8. Default = 0.
arg9 = <integer>; // Argument 9. Default = 0.
stringarg0 = <string>; // String argument 0.
stringarg1 = <string>; // String argument 1.
comment = <string>; // A comment. Implementors should attach no special
// semantic meaning to this field.
}
=======================================
Changelog
=======================================
1.0: 19.02.2024
Initial version.
===============================================================================
EOF
===============================================================================
\ No newline at end of file
...@@ -42,6 +42,9 @@ linetagindicatesectors = true; ...@@ -42,6 +42,9 @@ linetagindicatesectors = true;
// The format interface handles the map data format - DoomMapSetIO for SRB2DB2, SRB2MapSetIO for Zone Builder // The format interface handles the map data format - DoomMapSetIO for SRB2DB2, SRB2MapSetIO for Zone Builder
formatinterface = "SRB2MapSetIO"; formatinterface = "SRB2MapSetIO";
//Maximum safe map size check (0 means skip check)
safeboundary = 0;
//Sky textures for vanilla maps //Sky textures for vanilla maps
defaultskytextures defaultskytextures
{ {
...@@ -77,7 +80,7 @@ defaultskytextures ...@@ -77,7 +80,7 @@ defaultskytextures
defaultlumpname = "MAP01"; defaultlumpname = "MAP01";
// Default testing parameters // Default testing parameters
testparameters = "-file \"%AP\" \"%F\" -warp %L"; testparameters = "-folder \"%AF\" -file \"%AA\" \"%F\" -warp %L";
testshortpaths = true; testshortpaths = true;
// Default nodebuilder configurations // Default nodebuilder configurations
...@@ -425,21 +428,22 @@ sectortypes ...@@ -425,21 +428,22 @@ sectortypes
12 = "Space Countdown"; 12 = "Space Countdown";
13 = "Ramp Sector (double step-up/down)"; 13 = "Ramp Sector (double step-up/down)";
14 = "Non-Ramp Sector (no step-down)"; 14 = "Non-Ramp Sector (no step-down)";
15 = "Bouncy FOF"; 15 = "Bouncy FOF <deprecated>";
16 = "Trigger Line Ex. (Pushable Objects)"; 16 = "Trigger Line Ex. (Pushable Objects)";
32 = "Trigger Line Ex. (Anywhere, All Players)"; 32 = "Trigger Line Ex. (Anywhere, All Players)";
48 = "Trigger Line Ex. (Floor Touch, All Players)"; 48 = "Trigger Line Ex. (Floor Touch, All Players)";
64 = "Trigger Line Ex. (Anywhere in Sector)"; 64 = "Trigger Line Ex. (Anywhere in Sector)";
80 = "Trigger Line Ex. (Floor Touch)"; 80 = "Trigger Line Ex. (Floor Touch)";
96 = "Trigger Line Ex. (Emerald Check)"; 96 = "Trigger Line Ex. (Emerald Check) <deprecated>";
112 = "Trigger Line Ex. (NiGHTS Mare)"; 112 = "Trigger Line Ex. (NiGHTS Mare) <deprecated>";
128 = "Check for Linedef Executor on FOFs"; 128 = "Check for Linedef Executor on FOFs";
144 = "Egg Capsule"; 144 = "Egg Capsule";
160 = "Special Stage Time/Spheres Parameters"; 160 = "Special Stage Time/Spheres Parameters <deprecated>";
176 = "Custom Global Gravity"; 176 = "Custom Global Gravity <deprecated>";
512 = "Wind/Current"; 512 = "Wind/Current <deprecated>";
1024 = "Conveyor Belt"; 1024 = "Conveyor Belt <deprecated>";
1280 = "Speed Pad"; 1280 = "Speed Pad";
1536 = "Flip Gravity on Jump";
4096 = "Star Post Activator"; 4096 = "Star Post Activator";
8192 = "Exit/Special Stage Pit/Return Flag"; 8192 = "Exit/Special Stage Pit/Return Flag";
12288 = "CTF Red Team Base"; 12288 = "CTF Red Team Base";
...@@ -475,7 +479,7 @@ gen_sectortypes ...@@ -475,7 +479,7 @@ gen_sectortypes
12 = "Space Countdown"; 12 = "Space Countdown";
13 = "Ramp Sector (double step-up/down)"; 13 = "Ramp Sector (double step-up/down)";
14 = "Non-Ramp Sector (no step-down)"; 14 = "Non-Ramp Sector (no step-down)";
15 = "Bouncy FOF"; 15 = "Bouncy FOF <deprecated>";
} }
second second
...@@ -486,20 +490,21 @@ gen_sectortypes ...@@ -486,20 +490,21 @@ gen_sectortypes
48 = "Trigger Line Ex. (Floor Touch, All Players)"; 48 = "Trigger Line Ex. (Floor Touch, All Players)";
64 = "Trigger Line Ex. (Anywhere in Sector)"; 64 = "Trigger Line Ex. (Anywhere in Sector)";
80 = "Trigger Line Ex. (Floor Touch)"; 80 = "Trigger Line Ex. (Floor Touch)";
96 = "Trigger Line Ex. (Emerald Check)"; 96 = "Trigger Line Ex. (Emerald Check) <deprecated>";
112 = "Trigger Line Ex. (NiGHTS Mare)"; 112 = "Trigger Line Ex. (NiGHTS Mare) <deprecated>";
128 = "Check for Linedef Executor on FOFs"; 128 = "Check for Linedef Executor on FOFs";
144 = "Egg Capsule"; 144 = "Egg Capsule";
160 = "Special Stage Time/Spheres Parameters"; 160 = "Special Stage Time/Spheres Parameters <deprecated>";
176 = "Custom Global Gravity"; 176 = "Custom Global Gravity <deprecated>";
} }
third third
{ {
0 = "Normal"; 0 = "Normal";
512 = "Wind/Current"; 512 = "Wind/Current <deprecated>";
1024 = "Conveyor Belt"; 1024 = "Conveyor Belt <deprecated>";
1280 = "Speed Pad"; 1280 = "Speed Pad";
1536 = "Flip Gravity on Jump";
} }
fourth fourth
...@@ -580,6 +585,7 @@ linedeftypes ...@@ -580,6 +585,7 @@ linedeftypes
title = "Per-Sector Gravity"; title = "Per-Sector Gravity";
prefix = "(1)"; prefix = "(1)";
flags64text = "[6] Flip in reverse gravity"; flags64text = "[6] Flip in reverse gravity";
flags8192text = "[13] Cancel MF2_OBJECTFLIP";
} }
5 5
...@@ -640,6 +646,39 @@ linedeftypes ...@@ -640,6 +646,39 @@ linedeftypes
prefix = "(63)"; prefix = "(63)";
} }
96
{
title = "Add Front Sector Tag to Tagged Sectors";
prefix = "(96)";
flags1024text = "[10] Offsets are target tags";
flags8192text = "[13] Add front side offsets";
flags32768text = "[15] Add back side offsets";
}
97
{
title = "Add Tag to Front Sector";
prefix = "(97)";
flags8192text = "[13] Add front side offsets";
flags32768text = "[15] Add back side offsets";
}
98
{
title = "Add Tag to Back Sector";
prefix = "(98)";
flags8192text = "[13] Add front side offsets";
flags32768text = "[15] Add back side offsets";
}
99
{
title = "Add Tag to Front and Back Sectors";
prefix = "(99)";
flags8192text = "[13] Add front side offsets";
flags32768text = "[15] Add back side offsets";
}
540 540
{ {
title = "Floor Friction"; title = "Floor Friction";
...@@ -738,6 +777,12 @@ linedeftypes ...@@ -738,6 +777,12 @@ linedeftypes
flags2text = "[1] Use control sector tag"; flags2text = "[1] Use control sector tag";
flags64text = "[6] No sound effect"; flags64text = "[6] No sound effect";
} }
76
{
title = "Make FOF Bouncy";
prefix = "(76)";
}
} }
polyobject polyobject
...@@ -952,6 +997,7 @@ linedeftypes ...@@ -952,6 +997,7 @@ linedeftypes
flags128text = "[7] Only block non-players"; flags128text = "[7] Only block non-players";
3dfloor = true; 3dfloor = true;
3dfloorflags = "47"; 3dfloorflags = "47";
invisiblefof = true;
} }
140 140
...@@ -1058,6 +1104,7 @@ linedeftypes ...@@ -1058,6 +1104,7 @@ linedeftypes
{ {
title = "Water, Opaque"; title = "Water, Opaque";
prefix = "(120)"; prefix = "(120)";
flags2text = "[1] Make lava intangible";
flags8text = "[3] Slope skew sides"; flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
...@@ -1073,6 +1120,7 @@ linedeftypes ...@@ -1073,6 +1120,7 @@ linedeftypes
{ {
title = "Water, Translucent"; title = "Water, Translucent";
prefix = "(121)"; prefix = "(121)";
flags2text = "[1] Make lava intangible";
flags8text = "[3] Slope skew sides"; flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
...@@ -1089,6 +1137,7 @@ linedeftypes ...@@ -1089,6 +1137,7 @@ linedeftypes
{ {
title = "Water, Opaque, No Sides"; title = "Water, Opaque, No Sides";
prefix = "(122)"; prefix = "(122)";
flags2text = "[1] Make lava intangible";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect"; flags1024text = "[10] Ripple effect";
...@@ -1103,6 +1152,7 @@ linedeftypes ...@@ -1103,6 +1152,7 @@ linedeftypes
{ {
title = "Water, Translucent, No Sides"; title = "Water, Translucent, No Sides";
prefix = "(123)"; prefix = "(123)";
flags2text = "[1] Make lava intangible";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect"; flags1024text = "[10] Ripple effect";
...@@ -1118,6 +1168,7 @@ linedeftypes ...@@ -1118,6 +1168,7 @@ linedeftypes
{ {
title = "Goo Water, Translucent"; title = "Goo Water, Translucent";
prefix = "(124)"; prefix = "(124)";
flags2text = "[1] Make lava intangible";
flags8text = "[3] Slope skew sides"; flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
...@@ -1134,6 +1185,7 @@ linedeftypes ...@@ -1134,6 +1185,7 @@ linedeftypes
{ {
title = "Goo Water, Translucent, No Sides"; title = "Goo Water, Translucent, No Sides";
prefix = "(125)"; prefix = "(125)";
flags2text = "[1] Make lava intangible";
flags64text = "[6] Use two light levels"; flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level"; flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect"; flags1024text = "[10] Ripple effect";
...@@ -1183,6 +1235,7 @@ linedeftypes ...@@ -1183,6 +1235,7 @@ linedeftypes
prefix = "(223)"; prefix = "(223)";
3dfloor = true; 3dfloor = true;
3dfloorflags = "41"; 3dfloorflags = "41";
invisiblefof = true;
} }
} }
...@@ -1240,7 +1293,7 @@ linedeftypes ...@@ -1240,7 +1293,7 @@ linedeftypes
160 160
{ {
title = "Floating, Bobbing"; title = "Water Bobbing";
prefix = "(160)"; prefix = "(160)";
flags8text = "[3] Slope skew sides"; flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player"; flags32text = "[5] Only block player";
...@@ -1480,6 +1533,7 @@ linedeftypes ...@@ -1480,6 +1533,7 @@ linedeftypes
prefix = "(200)"; prefix = "(200)";
3dfloor = true; 3dfloor = true;
3dfloorflags = "20201"; 3dfloorflags = "20201";
invisiblefof = true;
} }
201 201
...@@ -1488,6 +1542,7 @@ linedeftypes ...@@ -1488,6 +1542,7 @@ linedeftypes
prefix = "(201)"; prefix = "(201)";
3dfloor = true; 3dfloor = true;
3dfloorflags = "201"; 3dfloorflags = "201";
invisiblefof = true;
} }
202 202
...@@ -1495,7 +1550,8 @@ linedeftypes ...@@ -1495,7 +1550,8 @@ linedeftypes
title = "Fog Block"; title = "Fog Block";
prefix = "(202)"; prefix = "(202)";
3dfloor = true; 3dfloor = true;
3dfloorflags = "3EF19"; 3dfloorflags = "3EF01";
invisiblefof = true;
} }
250 250
...@@ -1636,12 +1692,14 @@ linedeftypes ...@@ -1636,12 +1692,14 @@ linedeftypes
{ {
title = "Continuous"; title = "Continuous";
prefix = "(300)"; prefix = "(300)";
flags1024text = "[10] Use faster, unordered execution";
} }
301 301
{ {
title = "Each Time"; title = "Each Time";
prefix = "(301)"; prefix = "(301)";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Also trigger on exit"; flags16384text = "[14] Also trigger on exit";
} }
...@@ -1649,6 +1707,7 @@ linedeftypes ...@@ -1649,6 +1707,7 @@ linedeftypes
{ {
title = "Once"; title = "Once";
prefix = "(302)"; prefix = "(302)";
flags1024text = "[10] Use faster, unordered execution";
} }
303 303
...@@ -1658,6 +1717,7 @@ linedeftypes ...@@ -1658,6 +1717,7 @@ linedeftypes
flags2text = "[1] Rings greater or equal"; flags2text = "[1] Rings greater or equal";
flags64text = "[6] Rings less or equal"; flags64text = "[6] Rings less or equal";
flags512text = "[9] Consider all players"; flags512text = "[9] Consider all players";
flags1024text = "[10] Use faster, unordered execution";
} }
304 304
...@@ -1667,18 +1727,21 @@ linedeftypes ...@@ -1667,18 +1727,21 @@ linedeftypes
flags2text = "[1] Rings greater or equal"; flags2text = "[1] Rings greater or equal";
flags64text = "[6] Rings less or equal"; flags64text = "[6] Rings less or equal";
flags512text = "[9] Consider all players"; flags512text = "[9] Consider all players";
flags1024text = "[10] Use faster, unordered execution";
} }
305 305
{ {
title = "Character Ability - Continuous"; title = "Character Ability - Continuous";
prefix = "(305)"; prefix = "(305)";
flags1024text = "[10] Use faster, unordered execution";
} }
306 306
{ {
title = "Character Ability - Each Time"; title = "Character Ability - Each Time";
prefix = "(306)"; prefix = "(306)";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Also trigger on exit"; flags16384text = "[14] Also trigger on exit";
} }
...@@ -1686,24 +1749,28 @@ linedeftypes ...@@ -1686,24 +1749,28 @@ linedeftypes
{ {
title = "Character Ability - Once"; title = "Character Ability - Once";
prefix = "(307)"; prefix = "(307)";
flags1024text = "[10] Use faster, unordered execution";
} }
308 308
{ {
title = "Race Only - Once"; title = "Race Only - Once";
prefix = "(308)"; prefix = "(308)";
flags1024text = "[10] Use faster, unordered execution";
} }
309 309
{ {
title = "CTF Red Team - Continuous"; title = "CTF Red Team - Continuous";
prefix = "(309)"; prefix = "(309)";
flags1024text = "[10] Use faster, unordered execution";
} }
310 310
{ {
title = "CTF Red Team - Each Time"; title = "CTF Red Team - Each Time";
prefix = "(310)"; prefix = "(310)";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Also trigger on exit"; flags16384text = "[14] Also trigger on exit";
} }
...@@ -1711,12 +1778,14 @@ linedeftypes ...@@ -1711,12 +1778,14 @@ linedeftypes
{ {
title = "CTF Blue Team - Continuous"; title = "CTF Blue Team - Continuous";
prefix = "(311)"; prefix = "(311)";
flags1024text = "[10] Use faster, unordered execution";
} }
312 312
{ {
title = "CTF Blue Team - Each Time"; title = "CTF Blue Team - Each Time";
prefix = "(312)"; prefix = "(312)";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Also trigger on exit"; flags16384text = "[14] Also trigger on exit";
} }
...@@ -1724,6 +1793,7 @@ linedeftypes ...@@ -1724,6 +1793,7 @@ linedeftypes
{ {
title = "No More Enemies - Once"; title = "No More Enemies - Once";
prefix = "(313)"; prefix = "(313)";
flags1024text = "[10] Use faster, unordered execution";
} }
314 314
...@@ -1732,6 +1802,7 @@ linedeftypes ...@@ -1732,6 +1802,7 @@ linedeftypes
prefix = "(314)"; prefix = "(314)";
flags64text = "[6] Number greater or equal"; flags64text = "[6] Number greater or equal";
flags512text = "[9] Number less"; flags512text = "[9] Number less";
flags1024text = "[10] Use faster, unordered execution";
} }
315 315
...@@ -1740,30 +1811,35 @@ linedeftypes ...@@ -1740,30 +1811,35 @@ linedeftypes
prefix = "(315)"; prefix = "(315)";
flags64text = "[6] Number greater or equal"; flags64text = "[6] Number greater or equal";
flags512text = "[9] Number less"; flags512text = "[9] Number less";
flags1024text = "[10] Use faster, unordered execution";
} }
317 317
{ {
title = "Condition Set Trigger - Continuous"; title = "Condition Set Trigger - Continuous";
prefix = "(317)"; prefix = "(317)";
flags1024text = "[10] Use faster, unordered execution";
} }
318 318
{ {
title = "Condition Set Trigger - Once"; title = "Condition Set Trigger - Once";
prefix = "(318)"; prefix = "(318)";
flags1024text = "[10] Use faster, unordered execution";
} }
319 319
{ {
title = "Unlockable - Continuous"; title = "Unlockable - Continuous";
prefix = "(319)"; prefix = "(319)";
flags1024text = "[10] Use faster, unordered execution";
} }
320 320
{ {
title = "Unlockable - Once"; title = "Unlockable - Once";
prefix = "(320)"; prefix = "(320)";
flags1024text = "[10] Use faster, unordered execution";
} }
321 321
...@@ -1771,6 +1847,7 @@ linedeftypes ...@@ -1771,6 +1847,7 @@ linedeftypes
title = "Trigger After X Calls - Continuous"; title = "Trigger After X Calls - Continuous";
prefix = "(321)"; prefix = "(321)";
flags64text = "[6] Trigger more than once"; flags64text = "[6] Trigger more than once";
flags1024text = "[10] Use faster, unordered execution";
} }
...@@ -1779,6 +1856,7 @@ linedeftypes ...@@ -1779,6 +1856,7 @@ linedeftypes
title = "Trigger After X Calls - Each Time"; title = "Trigger After X Calls - Each Time";
prefix = "(322)"; prefix = "(322)";
flags64text = "[6] Trigger more than once"; flags64text = "[6] Trigger more than once";
flags1024text = "[10] Use faster, unordered execution";
} }
323 323
...@@ -1793,6 +1871,7 @@ linedeftypes ...@@ -1793,6 +1871,7 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Run if no more mares"; flags16384text = "[14] Run if no more mares";
flags32768text = "[15] Run if player is not NiGHTS"; flags32768text = "[15] Run if player is not NiGHTS";
} }
...@@ -1800,6 +1879,7 @@ linedeftypes ...@@ -1800,6 +1879,7 @@ linedeftypes
324 324
{ {
title = "NiGHTSerize - Once"; title = "NiGHTSerize - Once";
prefix = "(324)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run only if player is NiGHTS"; flags8text = "[3] Run only if player is NiGHTS";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
...@@ -1808,14 +1888,15 @@ linedeftypes ...@@ -1808,14 +1888,15 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Run if no more mares"; flags16384text = "[14] Run if no more mares";
flags32768text = "[15] Run if player is not NiGHTS"; flags32768text = "[15] Run if player is not NiGHTS";
prefix = "(324)";
} }
325 325
{ {
title = "De-NiGHTSerize - Each Time"; title = "De-NiGHTSerize - Each Time";
prefix = "(325)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run if anyone is NiGHTS"; flags8text = "[3] Run if anyone is NiGHTS";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
...@@ -1824,13 +1905,14 @@ linedeftypes ...@@ -1824,13 +1905,14 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags32768text = "[15] Run if no one is NiGHTS"; flags32768text = "[15] Run if no one is NiGHTS";
prefix = "(325)";
} }
326 326
{ {
title = "De-NiGHTSerize - Once"; title = "De-NiGHTSerize - Once";
prefix = "(326)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run if anyone is NiGHTS"; flags8text = "[3] Run if anyone is NiGHTS";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
...@@ -1839,13 +1921,14 @@ linedeftypes ...@@ -1839,13 +1921,14 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags32768text = "[15] Run if no one is NiGHTS"; flags32768text = "[15] Run if no one is NiGHTS";
prefix = "(326)";
} }
327 327
{ {
title = "NiGHTS Lap - Each Time"; title = "NiGHTS Lap - Each Time";
prefix = "(327)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset"; flags32text = "[5] Lap <= Front Y Offset";
...@@ -1853,12 +1936,13 @@ linedeftypes ...@@ -1853,12 +1936,13 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
prefix = "(327)"; flags1024text = "[10] Use faster, unordered execution";
} }
328 328
{ {
title = "NiGHTS Lap - Once"; title = "NiGHTS Lap - Once";
prefix = "(328)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset"; flags32text = "[5] Lap <= Front Y Offset";
...@@ -1866,12 +1950,13 @@ linedeftypes ...@@ -1866,12 +1950,13 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
prefix = "(328)"; flags1024text = "[10] Use faster, unordered execution";
} }
329 329
{ {
title = "Ideya Capture Touch - Each Time"; title = "Ideya Capture Touch - Each Time";
prefix = "(329)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run regardless of spheres"; flags8text = "[3] Run regardless of spheres";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
...@@ -1880,14 +1965,15 @@ linedeftypes ...@@ -1880,14 +1965,15 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Only if not enough spheres"; flags16384text = "[14] Only if not enough spheres";
flags32768text = "[15] Run when entering Capture"; flags32768text = "[15] Run when entering Capture";
prefix = "(329)";
} }
330 330
{ {
title = "Ideya Capture Touch - Once"; title = "Ideya Capture Touch - Once";
prefix = "(330)";
flags2text = "[1] Mare >= Front X Offset"; flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run regardless of spheres"; flags8text = "[3] Run regardless of spheres";
flags16text = "[4] Count from lowest of players"; flags16text = "[4] Count from lowest of players";
...@@ -1896,57 +1982,130 @@ linedeftypes ...@@ -1896,57 +1982,130 @@ linedeftypes
flags128text = "[7] Lap >= Front Y Offset"; flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time"; flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player"; flags512text = "[9] Count from triggering player";
flags1024text = "[10] Use faster, unordered execution";
flags16384text = "[14] Only if not enough spheres"; flags16384text = "[14] Only if not enough spheres";
flags32768text = "[15] Run when entering Capture"; flags32768text = "[15] Run when entering Capture";
prefix = "(330)";
} }
331 331
{ {
title = "Player Skin - Continuous"; title = "Player Skin - Continuous";
flags64text = "[6] Disable for this skin";
prefix = "(331)"; prefix = "(331)";
flags64text = "[6] Disable for this skin";
flags1024text = "[10] Use faster, unordered execution";
} }
332 332
{ {
title = "Player Skin - Each Time"; title = "Player Skin - Each Time";
flags64text = "[6] Disable for this skin";
prefix = "(332)"; prefix = "(332)";
flags64text = "[6] Disable for this skin";
flags1024text = "[10] Use faster, unordered execution";
} }
333 333
{ {
title = "Player Skin - Once"; title = "Player Skin - Once";
flags64text = "[6] Disable for this skin";
prefix = "(333)"; prefix = "(333)";
flags64text = "[6] Disable for this skin";
flags1024text = "[10] Use faster, unordered execution";
} }
334 334
{ {
title = "Object Dye - Continuous"; title = "Object Dye - Continuous";
flags64text = "[6] Disable for this color";
prefix = "(334)"; prefix = "(334)";
flags64text = "[6] Disable for this color";
flags1024text = "[10] Use faster, unordered execution";
} }
335 335
{ {
title = "Object Dye - Each Time"; title = "Object Dye - Each Time";
flags64text = "[6] Disable for this color";
prefix = "(335)"; prefix = "(335)";
flags64text = "[6] Disable for this color";
flags1024text = "[10] Use faster, unordered execution";
} }
336 336
{ {
title = "Object Dye - Once"; title = "Object Dye - Once";
flags64text = "[6] Disable for this color";
prefix = "(336)"; prefix = "(336)";
flags64text = "[6] Disable for this color";
flags1024text = "[10] Use faster, unordered execution";
}
337
{
title = "Emerald Check - Continuous";
prefix = "(337)";
}
338
{
title = "Emerald Check - Each Time";
prefix = "(338)";
}
339
{
title = "Emerald Check - Once";
prefix = "(339)";
}
340
{
title = "NiGHTS Mare - Continuous";
flags2text = "[1] Mare greater or equal";
flags64text = "[6] Mare less or equal";
prefix = "(340)";
}
341
{
title = "NiGHTS Mare - Each Time";
flags2text = "[1] Mare greater or equal";
flags64text = "[6] Mare less or equal";
prefix = "(341)";
}
342
{
title = "NiGHTS Mare - Once";
flags2text = "[1] Mare greater or equal";
flags64text = "[6] Mare less or equal";
prefix = "(342)";
}
343
{
title = "Gravity Check - Continuous";
flags2text = "[1] Check temporary reverse gravity";
flags64text = "[6] Check for reverse gravity";
prefix = "(343)";
}
344
{
title = "Gravity Check - Each Time";
flags2text = "[1] Check temporary reverse gravity";
flags64text = "[6] Check for reverse gravity";
prefix = "(344)";
}
345
{
title = "Gravity Check - Once";
flags2text = "[1] Check temporary reverse gravity";
flags64text = "[6] Check for reverse gravity";
prefix = "(345)";
} }
399 399
{ {
title = "Level Load"; title = "Level Load";
prefix = "(399)"; prefix = "(399)";
flags1024text = "[10] Use faster, unordered execution";
} }
} }
...@@ -1959,7 +2118,7 @@ linedeftypes ...@@ -1959,7 +2118,7 @@ linedeftypes
title = "Set Tagged Sector's Floor Height/Texture"; title = "Set Tagged Sector's Floor Height/Texture";
prefix = "(400)"; prefix = "(400)";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Keep floor flat"; flags64text = "[6] Don't change floor texture";
} }
401 401
...@@ -1967,27 +2126,40 @@ linedeftypes ...@@ -1967,27 +2126,40 @@ linedeftypes
title = "Set Tagged Sector's Ceiling Height/Texture"; title = "Set Tagged Sector's Ceiling Height/Texture";
prefix = "(401)"; prefix = "(401)";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't change ceiling texture";
} }
402 402
{ {
title = "Set Tagged Sector's Light Level"; title = "Copy Light Level to Tagged Sectors";
prefix = "(402)"; prefix = "(402)";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
} }
408
{
title = "Set Tagged Sector's Flats";
prefix = "(408)";
flags64text = "[6] Don't set floor flat";
flags512text = "[9] Don't set ceiling flat";
}
409 409
{ {
title = "Change Tagged Sector's Tag"; title = "Change Tagged Sector's Tag";
prefix = "(409)"; prefix = "(409)";
flags2text = "[1] Remove tag";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Add tag";
} }
410 410
{ {
title = "Change Front Sector's Tag"; title = "Change Front Sector's Tag";
prefix = "(410)"; prefix = "(410)";
flags2text = "[1] Remove tag";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Add tag";
} }
416 416
...@@ -2045,6 +2217,14 @@ linedeftypes ...@@ -2045,6 +2217,14 @@ linedeftypes
prefix = "(435)"; prefix = "(435)";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
} }
467
{
title = "Set Tagged Sector's Light Level";
prefix = "(467)";
flags8text = "[3] Set delay by backside sector";
flags256text = "[8] Set relative to current";
}
} }
linedefexecplane linedefexecplane
...@@ -2057,7 +2237,7 @@ linedeftypes ...@@ -2057,7 +2237,7 @@ linedeftypes
prefix = "(403)"; prefix = "(403)";
flags2text = "[1] Trigger linedef executor"; flags2text = "[1] Trigger linedef executor";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Change floor flat"; flags64text = "[6] Change floor texture";
} }
404 404
...@@ -2066,7 +2246,7 @@ linedeftypes ...@@ -2066,7 +2246,7 @@ linedeftypes
prefix = "(404)"; prefix = "(404)";
flags2text = "[1] Trigger linedef executor"; flags2text = "[1] Trigger linedef executor";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Change ceiling flat"; flags64text = "[6] Change ceiling texture";
} }
405 405
...@@ -2173,7 +2353,9 @@ linedeftypes ...@@ -2173,7 +2353,9 @@ linedeftypes
{ {
title = "Enable/Disable Gravity Flip"; title = "Enable/Disable Gravity Flip";
prefix = "(433)"; prefix = "(433)";
flags2text = "[1] Force MFE_VERTICALFLIP";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags32text = "[5] Invert current gravity";
flags64text = "[6] Return to normal"; flags64text = "[6] Return to normal";
} }
...@@ -2340,6 +2522,7 @@ linedeftypes ...@@ -2340,6 +2522,7 @@ linedeftypes
prefix = "(439)"; prefix = "(439)";
flags8text = "[3] Set delay by backside sector"; flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Only existing"; flags64text = "[6] Only existing";
flags8192text = "[13] Use backside textures";
} }
440 440
...@@ -2628,7 +2811,7 @@ linedeftypes ...@@ -2628,7 +2811,7 @@ linedeftypes
502 502
{ {
title = "Scroll Tagged Wall"; title = "Scroll Tagged Walls";
prefix = "(502)"; prefix = "(502)";
flags128text = "[7] Use texture offsets"; flags128text = "[7] Use texture offsets";
flags256text = "[8] Scroll back side"; flags256text = "[8] Scroll back side";
...@@ -2636,7 +2819,7 @@ linedeftypes ...@@ -2636,7 +2819,7 @@ linedeftypes
503 503
{ {
title = "Scroll Tagged Wall (Accelerative)"; title = "Scroll Tagged Walls (Accelerative)";
prefix = "(503)"; prefix = "(503)";
flags128text = "[7] Use texture offsets"; flags128text = "[7] Use texture offsets";
flags256text = "[8] Scroll back side"; flags256text = "[8] Scroll back side";
...@@ -2644,7 +2827,7 @@ linedeftypes ...@@ -2644,7 +2827,7 @@ linedeftypes
504 504
{ {
title = "Scroll Tagged Wall (Displacement)"; title = "Scroll Tagged Walls (Displacement)";
prefix = "(504)"; prefix = "(504)";
flags128text = "[7] Use texture offsets"; flags128text = "[7] Use texture offsets";
flags256text = "[8] Scroll back side"; flags256text = "[8] Scroll back side";
...@@ -2683,36 +2866,63 @@ linedeftypes ...@@ -2683,36 +2866,63 @@ linedeftypes
{ {
title = "Scroll Floor Texture"; title = "Scroll Floor Texture";
prefix = "(510)"; prefix = "(510)";
flags8192text = "[13] Use angle and X offset";
} }
511 511
{ {
title = "Scroll Floor Texture (Accelerative)"; title = "Scroll Floor Texture (Accelerative)";
prefix = "(511)"; prefix = "(511)";
flags8192text = "[13] Use angle and X offset";
} }
512 512
{ {
title = "Scroll Floor Texture (Displacement)"; title = "Scroll Floor Texture (Displacement)";
prefix = "(512)"; prefix = "(512)";
flags8192text = "[13] Use angle and X offset";
} }
513 513
{ {
title = "Scroll Ceiling Texture"; title = "Scroll Ceiling Texture";
prefix = "(513)"; prefix = "(513)";
flags8192text = "[13] Use angle and X offset";
} }
514 514
{ {
title = "Scroll Ceiling Texture (Accelerative)"; title = "Scroll Ceiling Texture (Accelerative)";
prefix = "(514)"; prefix = "(514)";
flags8192text = "[13] Use angle and X offset";
} }
515 515
{ {
title = "Scroll Ceiling Texture (Displacement)"; title = "Scroll Ceiling Texture (Displacement)";
prefix = "(515)"; prefix = "(515)";
flags8192text = "[13] Use angle and X offset";
}
516
{
title = "Scroll Floor and Ceiling Texture";
prefix = "(516)";
flags8192text = "[13] Use angle and X offset";
}
517
{
title = "Scroll Floor and Ceiling Texture (Accelerative)";
prefix = "(517)";
flags8192text = "[13] Use angle and X offset";
}
518
{
title = "Scroll Floor and Ceiling Texture (Displacement)";
prefix = "(518)";
flags8192text = "[13] Use angle and X offset";
} }
520 520
...@@ -2720,6 +2930,7 @@ linedeftypes ...@@ -2720,6 +2930,7 @@ linedeftypes
title = "Carry Objects on Floor"; title = "Carry Objects on Floor";
prefix = "(520)"; prefix = "(520)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
521 521
...@@ -2727,6 +2938,7 @@ linedeftypes ...@@ -2727,6 +2938,7 @@ linedeftypes
title = "Carry Objects on Floor (Accelerative)"; title = "Carry Objects on Floor (Accelerative)";
prefix = "(521)"; prefix = "(521)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
522 522
...@@ -2734,6 +2946,7 @@ linedeftypes ...@@ -2734,6 +2946,7 @@ linedeftypes
title = "Carry Objects on Floor (Displacement)"; title = "Carry Objects on Floor (Displacement)";
prefix = "(522)"; prefix = "(522)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
523 523
...@@ -2741,6 +2954,7 @@ linedeftypes ...@@ -2741,6 +2954,7 @@ linedeftypes
title = "Carry Objects on Ceiling"; title = "Carry Objects on Ceiling";
prefix = "(523)"; prefix = "(523)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
524 524
...@@ -2748,6 +2962,7 @@ linedeftypes ...@@ -2748,6 +2962,7 @@ linedeftypes
title = "Carry Objects on Ceiling (Accelerative)"; title = "Carry Objects on Ceiling (Accelerative)";
prefix = "(524)"; prefix = "(524)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
525 525
...@@ -2755,6 +2970,31 @@ linedeftypes ...@@ -2755,6 +2970,31 @@ linedeftypes
title = "Carry Objects on Ceiling (Displacement)"; title = "Carry Objects on Ceiling (Displacement)";
prefix = "(525)"; prefix = "(525)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
526
{
title = "Carry Objects on Floor and Ceiling";
prefix = "(526)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
527
{
title = "Carry Objects on Floor and Ceiling (Accelerative)";
prefix = "(527)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
528
{
title = "Carry Objects on Floor and Ceiling (Displacement)";
prefix = "(528)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
530 530
...@@ -2762,6 +3002,7 @@ linedeftypes ...@@ -2762,6 +3002,7 @@ linedeftypes
title = "Scroll Floor Texture and Carry Objects"; title = "Scroll Floor Texture and Carry Objects";
prefix = "(530)"; prefix = "(530)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
531 531
...@@ -2769,6 +3010,7 @@ linedeftypes ...@@ -2769,6 +3010,7 @@ linedeftypes
title = "Scroll Floor Texture and Carry Objects (Accelerative)"; title = "Scroll Floor Texture and Carry Objects (Accelerative)";
prefix = "(531)"; prefix = "(531)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
532 532
...@@ -2776,6 +3018,7 @@ linedeftypes ...@@ -2776,6 +3018,7 @@ linedeftypes
title = "Scroll Floor Texture and Carry Objects (Displacement)"; title = "Scroll Floor Texture and Carry Objects (Displacement)";
prefix = "(532)"; prefix = "(532)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
533 533
...@@ -2783,6 +3026,7 @@ linedeftypes ...@@ -2783,6 +3026,7 @@ linedeftypes
title = "Scroll Ceiling Texture and Carry Objects"; title = "Scroll Ceiling Texture and Carry Objects";
prefix = "(533)"; prefix = "(533)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
534 534
...@@ -2790,6 +3034,7 @@ linedeftypes ...@@ -2790,6 +3034,7 @@ linedeftypes
title = "Scroll Ceiling Texture and Carry Objects (Accelerative)"; title = "Scroll Ceiling Texture and Carry Objects (Accelerative)";
prefix = "(534)"; prefix = "(534)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
535 535
...@@ -2797,6 +3042,31 @@ linedeftypes ...@@ -2797,6 +3042,31 @@ linedeftypes
title = "Scroll Ceiling Texture and Carry Objects (Displacement)"; title = "Scroll Ceiling Texture and Carry Objects (Displacement)";
prefix = "(535)"; prefix = "(535)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
536
{
title = "Scroll Floor and Ceiling Texture and Carry Objects";
prefix = "(536)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
537
{
title = "Scroll Floor and Ceiling Texture and Carry Objects (Accelerative)";
prefix = "(537)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
}
538
{
title = "Scroll Floor and Ceiling Texture and Carry Objects (Displacement)";
prefix = "(538)";
flags64text = "[6] Exclusive";
flags8192text = "[13] Use angle and X offset";
} }
} }
...@@ -2808,48 +3078,54 @@ linedeftypes ...@@ -2808,48 +3078,54 @@ linedeftypes
{ {
title = "Wind"; title = "Wind";
prefix = "(541)"; prefix = "(541)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use angle and X offset";
} }
542 542
{ {
title = "Upwards Wind"; title = "Upwards Wind";
prefix = "(542)"; prefix = "(542)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use X offset";
} }
543 543
{ {
title = "Downwards Wind"; title = "Downwards Wind";
prefix = "(543)"; prefix = "(543)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use X offset";
} }
544 544
{ {
title = "Current"; title = "Current";
prefix = "(544)"; prefix = "(544)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use angle and X offset";
} }
545 545
{ {
title = "Upwards Current"; title = "Upwards Current";
prefix = "(545)"; prefix = "(545)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use X offset";
} }
546 546
{ {
title = "Downwards Current"; title = "Downwards Current";
prefix = "(546)"; prefix = "(546)";
flags512text = "[9] Player slides";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags512text = "[9] Player slides";
flags8192text = "[13] Use X offset";
} }
547 547
...@@ -2857,6 +3133,7 @@ linedeftypes ...@@ -2857,6 +3133,7 @@ linedeftypes
title = "Push/Pull"; title = "Push/Pull";
prefix = "(547)"; prefix = "(547)";
flags64text = "[6] Exclusive"; flags64text = "[6] Exclusive";
flags8192text = "[13] Use X offset";
} }
} }
...@@ -2917,8 +3194,10 @@ linedeftypes ...@@ -2917,8 +3194,10 @@ linedeftypes
prefix = "(700)"; prefix = "(700)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 1; slopeargs = 1;
copyslopeargs = 1;
} }
701 701
...@@ -2927,8 +3206,10 @@ linedeftypes ...@@ -2927,8 +3206,10 @@ linedeftypes
prefix = "(701)"; prefix = "(701)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 2; slopeargs = 2;
copyslopeargs = 4;
} }
702 702
...@@ -2937,8 +3218,10 @@ linedeftypes ...@@ -2937,8 +3218,10 @@ linedeftypes
prefix = "(702)"; prefix = "(702)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 3; slopeargs = 3;
copyslopeargs = 5;
} }
703 703
...@@ -2947,8 +3230,10 @@ linedeftypes ...@@ -2947,8 +3230,10 @@ linedeftypes
prefix = "(703)"; prefix = "(703)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 9; slopeargs = 9;
copyslopeargs = 8;
} }
704 704
...@@ -2979,8 +3264,10 @@ linedeftypes ...@@ -2979,8 +3264,10 @@ linedeftypes
prefix = "(710)"; prefix = "(710)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 4; slopeargs = 4;
copyslopeargs = 2;
} }
711 711
...@@ -2989,8 +3276,10 @@ linedeftypes ...@@ -2989,8 +3276,10 @@ linedeftypes
prefix = "(711)"; prefix = "(711)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 8; slopeargs = 8;
copyslopeargs = 8;
} }
712 712
...@@ -2999,8 +3288,10 @@ linedeftypes ...@@ -2999,8 +3288,10 @@ linedeftypes
prefix = "(712)"; prefix = "(712)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 12; slopeargs = 12;
copyslopeargs = 10;
} }
713 713
...@@ -3009,8 +3300,10 @@ linedeftypes ...@@ -3009,8 +3300,10 @@ linedeftypes
prefix = "(713)"; prefix = "(713)";
flags2048text = "[11] No physics"; flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic"; flags4096text = "[12] Dynamic";
flags32768text = "[15] Copy to other side";
slope = "regular"; slope = "regular";
slopeargs = 6; slopeargs = 6;
copyslopeargs = 6;
} }
714 714
...@@ -3059,16 +3352,89 @@ linedeftypes ...@@ -3059,16 +3352,89 @@ linedeftypes
slopeargs = 3; slopeargs = 3;
} }
723
{
title = "Copy Backside Floor Slope from Line Tag";
prefix = "(723)";
slope = "copy";
slopeargs = 4;
}
724
{
title = "Copy Backside Ceiling Slope from Line Tag";
prefix = "(724)";
slope = "copy";
slopeargs = 8;
}
725
{
title = "Copy Backside Floor and Ceiling Slope from Line Tag";
prefix = "(725)";
slope = "copy";
slopeargs = 12;
}
730
{
title = "Copy Frontside Floor Slope to Backside";
prefix = "(730)";
slope = "copy";
copyslopeargs = 1;
}
731
{
title = "Copy Frontside Ceiling Slope to Backside";
prefix = "(731)";
slope = "copy";
copyslopeargs = 4;
}
732
{
title = "Copy Frontside Floor and Ceiling Slope to Backside";
prefix = "(732)";
slope = "copy";
copyslopeargs = 5;
}
733
{
title = "Copy Backside Floor Slope to Frontside";
prefix = "(733)";
slope = "copy";
copyslopeargs = 2;
}
734
{
title = "Copy Backside Ceiling Slope to Frontside";
prefix = "(734)";
slope = "copy";
copyslopeargs = 8;
}
735
{
title = "Copy Backside Floor and Ceiling Slope to Frontside";
prefix = "(735)";
slope = "copy";
copyslopeargs = 10;
}
799 799
{ {
title = "Set Tagged Dynamic Slope Vertex to Front Sector Height"; title = "Set Tagged Dynamic Slope Vertex to Front Sector Height";
prefix = "(799)"; prefix = "(799)";
flags64text = "[6] Use relative heights";
} }
} }
transwall transwall
{ {
title = "Translucent Wall"; title = "Translucent Walls";
900 900
{ {
...@@ -3129,6 +3495,192 @@ linedeftypes ...@@ -3129,6 +3495,192 @@ linedeftypes
title = "Fog Wall"; title = "Fog Wall";
prefix = "(909)"; prefix = "(909)";
} }
910
{
title = "100% Additive";
prefix = "(910)";
}
911
{
title = "90% Additive";
prefix = "(911)";
}
912
{
title = "80% Additive";
prefix = "(912)";
}
913
{
title = "70% Additive";
prefix = "(913)";
}
914
{
title = "60% Additive";
prefix = "(914)";
}
915
{
title = "50% Additive";
prefix = "(915)";
}
916
{
title = "40% Additive";
prefix = "(916)";
}
917
{
title = "30% Additive";
prefix = "(917)";
}
918
{
title = "20% Additive";
prefix = "(918)";
}
919
{
title = "10% Additive";
prefix = "(919)";
}
920
{
title = "100% Subtractive";
prefix = "(920)";
}
921
{
title = "90% Subtractive";
prefix = "(921)";
}
922
{
title = "80% Subtractive";
prefix = "(922)";
}
923
{
title = "70% Subtractive";
prefix = "(923)";
}
924
{
title = "60% Subtractive";
prefix = "(924)";
}
925
{
title = "50% Subtractive";
prefix = "(925)";
}
926
{
title = "40% Subtractive";
prefix = "(926)";
}
927
{
title = "30% Subtractive";
prefix = "(927)";
}
928
{
title = "20% Subtractive";
prefix = "(928)";
}
929
{
title = "10% Subtractive";
prefix = "(929)";
}
930
{
title = "100% Reverse Subtractive";
prefix = "(930)";
}
931
{
title = "90% Reverse Subtractive";
prefix = "(931)";
}
932
{
title = "80% Reverse Subtractive";
prefix = "(932)";
}
933
{
title = "70% Reverse Subtractive";
prefix = "(933)";
}
934
{
title = "60% Reverse Subtractive";
prefix = "(934)";
}
935
{
title = "50% Reverse Subtractive";
prefix = "(935)";
}
936
{
title = "40% Reverse Subtractive";
prefix = "(936)";
}
937
{
title = "30% Reverse Subtractive";
prefix = "(937)";
}
938
{
title = "20% Reverse Subtractive";
prefix = "(938)";
}
939
{
title = "10% Reverse Subtractive";
prefix = "(939)";
}
940
{
title = "Modulate";
prefix = "(940)";
}
} }
} }
...@@ -3368,7 +3920,7 @@ thingtypes ...@@ -3368,7 +3920,7 @@ thingtypes
enemies enemies
{ {
color = 9; // Light_Blue color = 9; // Light Blue
arrow = 1; arrow = 1;
title = "Enemies"; title = "Enemies";
...@@ -3484,6 +4036,7 @@ thingtypes ...@@ -3484,6 +4036,7 @@ thingtypes
sprite = "ARCHA1"; sprite = "ARCHA1";
width = 24; width = 24;
height = 32; height = 32;
flags8text = "[8] Don't jump away";
} }
118 118
{ {
...@@ -3657,6 +4210,7 @@ thingtypes ...@@ -3657,6 +4210,7 @@ thingtypes
sprite = "BUMBA1"; sprite = "BUMBA1";
width = 16; width = 16;
height = 32; height = 32;
flags8text = "[8] Cannot move";
} }
124 124
{ {
...@@ -3676,7 +4230,7 @@ thingtypes ...@@ -3676,7 +4230,7 @@ thingtypes
bosses bosses
{ {
color = 8; // Dark_Gray color = 4; // Dark Red
arrow = 1; arrow = 1;
title = "Bosses"; title = "Bosses";
...@@ -3684,17 +4238,16 @@ thingtypes ...@@ -3684,17 +4238,16 @@ thingtypes
{ {
title = "Egg Mobile"; title = "Egg Mobile";
sprite = "EGGMA1"; sprite = "EGGMA1";
width = 24; width = 36;
height = 76; height = 84;
flags4text = "[4] End level on death"; flags4text = "[4] End level on death";
flags8text = "[8] Alternate laser attack";
} }
201 201
{ {
title = "Egg Slimer"; title = "Egg Slimer";
sprite = "EGGNA1"; sprite = "EGGNA1";
width = 24; width = 36;
height = 76; height = 84;
flags4text = "[4] End level on death"; flags4text = "[4] End level on death";
flags8text = "[8] Speed up when hit"; flags8text = "[8] Speed up when hit";
} }
...@@ -3702,7 +4255,7 @@ thingtypes ...@@ -3702,7 +4255,7 @@ thingtypes
{ {
title = "Sea Egg"; title = "Sea Egg";
sprite = "EGGOA1"; sprite = "EGGOA1";
width = 32; width = 36;
height = 116; height = 116;
flags4text = "[4] End level on death"; flags4text = "[4] End level on death";
} }
...@@ -3710,8 +4263,8 @@ thingtypes ...@@ -3710,8 +4263,8 @@ thingtypes
{ {
title = "Egg Colosseum"; title = "Egg Colosseum";
sprite = "EGGPA1"; sprite = "EGGPA1";
width = 24; width = 36;
height = 76; height = 84;
flags4text = "[4] End level on death"; flags4text = "[4] End level on death";
} }
204 204
...@@ -3722,6 +4275,7 @@ thingtypes ...@@ -3722,6 +4275,7 @@ thingtypes
height = 60; height = 60;
flags1text = "[1] Grayscale mode"; flags1text = "[1] Grayscale mode";
flags4text = "[4] End level on death"; flags4text = "[4] End level on death";
flags8text = "[8] Skip intro";
} }
206 206
{ {
...@@ -3775,6 +4329,7 @@ thingtypes ...@@ -3775,6 +4329,7 @@ thingtypes
sprite = "internal:capsule"; sprite = "internal:capsule";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
292 292
{ {
...@@ -3812,7 +4367,6 @@ thingtypes ...@@ -3812,7 +4367,6 @@ thingtypes
{ {
color = 14; // Yellow color = 14; // Yellow
title = "Rings and Weapon Panels"; title = "Rings and Weapon Panels";
width = 24;
height = 24; height = 24;
flags8height = 24; flags8height = 24;
flags8text = "[8] Float"; flags8text = "[8] Float";
...@@ -3822,7 +4376,6 @@ thingtypes ...@@ -3822,7 +4376,6 @@ thingtypes
{ {
title = "Ring"; title = "Ring";
sprite = "RINGA0"; sprite = "RINGA0";
width = 16;
} }
301 301
{ {
...@@ -3838,6 +4391,7 @@ thingtypes ...@@ -3838,6 +4391,7 @@ thingtypes
{ {
title = "Infinity Ring"; title = "Infinity Ring";
sprite = "RNGIA0"; sprite = "RNGIA0";
width = 24;
} }
304 304
{ {
...@@ -3862,53 +4416,63 @@ thingtypes ...@@ -3862,53 +4416,63 @@ thingtypes
308 308
{ {
title = "CTF Team Ring (Red)"; title = "CTF Team Ring (Red)";
sprite = "internal:TRNGA0r"; sprite = "internal:TRNGA0R";
width = 16;
} }
309 309
{ {
title = "CTF Team Ring (Blue)"; title = "CTF Team Ring (Blue)";
sprite = "internal:TRNGA0b"; sprite = "internal:TRNGA0B";
width = 16;
} }
330 330
{ {
title = "Bounce Ring Panel"; title = "Bounce Ring Panel";
sprite = "PIKBA0"; sprite = "PIKBA0";
width = 24;
height = 40;
} }
331 331
{ {
title = "Rail Ring Panel"; title = "Rail Ring Panel";
sprite = "PIKRA0"; sprite = "PIKRA0";
width = 24;
height = 40;
} }
332 332
{ {
title = "Automatic Ring Panel"; title = "Automatic Ring Panel";
sprite = "PIKAA0"; sprite = "PIKAA0";
width = 24;
height = 40;
} }
333 333
{ {
title = "Explosion Ring Panel"; title = "Explosion Ring Panel";
sprite = "PIKEA0"; sprite = "PIKEA0";
width = 24;
height = 40;
} }
334 334
{ {
title = "Scatter Ring Panel"; title = "Scatter Ring Panel";
sprite = "PIKSA0"; sprite = "PIKSA0";
width = 24;
height = 40;
} }
335 335
{ {
title = "Grenade Ring Panel"; title = "Grenade Ring Panel";
sprite = "PIKGA0"; sprite = "PIKGA0";
width = 24;
height = 40;
} }
} }
collectibles collectibles
{ {
color = 10; // Light_Green color = 10; // Light Green
title = "Other Collectibles"; title = "Other Collectibles";
width = 16; width = 16;
height = 32; height = 24;
sort = 1; sort = 1;
sprite = "CEMGA0"; sprite = "CEMGA0";
...@@ -3974,6 +4538,7 @@ thingtypes ...@@ -3974,6 +4538,7 @@ thingtypes
{ {
title = "Emerald Hunt Location"; title = "Emerald Hunt Location";
sprite = "SHRDA0"; sprite = "SHRDA0";
height = 32;
flags8height = 24; flags8height = 24;
flags8text = "[8] Float"; flags8text = "[8] Float";
} }
...@@ -4009,6 +4574,7 @@ thingtypes ...@@ -4009,6 +4574,7 @@ thingtypes
flags8text = "[8] Random (Weak)"; flags8text = "[8] Random (Weak)";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
400 400
{ {
...@@ -4141,6 +4707,7 @@ thingtypes ...@@ -4141,6 +4707,7 @@ thingtypes
flags1text = "[1] Run linedef executor on pop"; flags1text = "[1] Run linedef executor on pop";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
431 431
{ {
...@@ -4211,7 +4778,7 @@ thingtypes ...@@ -4211,7 +4778,7 @@ thingtypes
generic generic
{ {
color = 11; // Light_Cyan color = 11; // Light Cyan
title = "Generic Items & Hazards"; title = "Generic Items & Hazards";
500 500
...@@ -4317,7 +4884,7 @@ thingtypes ...@@ -4317,7 +4884,7 @@ thingtypes
springs springs
{ {
color = 12; // Light_Red color = 12; // Light Red
title = "Springs and Fans"; title = "Springs and Fans";
width = 20; width = 20;
height = 16; height = 16;
...@@ -4479,13 +5046,13 @@ thingtypes ...@@ -4479,13 +5046,13 @@ thingtypes
{ {
arrow = 0; arrow = 0;
title = "5 Vertical Rings (Yellow Spring)"; title = "5 Vertical Rings (Yellow Spring)";
sprite = "RINGA0"; sprite = "internal:ringverticalyellow";
} }
601 601
{ {
arrow = 0; arrow = 0;
title = "5 Vertical Rings (Red Spring)"; title = "5 Vertical Rings (Red Spring)";
sprite = "RINGA0"; sprite = "internal:ringverticalred";
height = 1024; height = 1024;
} }
602 602
...@@ -4503,7 +5070,7 @@ thingtypes ...@@ -4503,7 +5070,7 @@ thingtypes
604 604
{ {
title = "Circle of Rings"; title = "Circle of Rings";
sprite = "RINGA0"; sprite = "internal:circlering";
width = 96; width = 96;
height = 192; height = 192;
unflippable = true; unflippable = true;
...@@ -4512,7 +5079,7 @@ thingtypes ...@@ -4512,7 +5079,7 @@ thingtypes
605 605
{ {
title = "Circle of Rings (Big)"; title = "Circle of Rings (Big)";
sprite = "RINGA0"; sprite = "internal:circlebigring";
width = 192; width = 192;
unflippable = true; unflippable = true;
centerHitbox = true; centerHitbox = true;
...@@ -4520,7 +5087,7 @@ thingtypes ...@@ -4520,7 +5087,7 @@ thingtypes
606 606
{ {
title = "Circle of Blue Spheres"; title = "Circle of Blue Spheres";
sprite = "SPHRA0"; sprite = "internal:circlesphere";
width = 96; width = 96;
height = 192; height = 192;
unflippable = true; unflippable = true;
...@@ -4529,7 +5096,7 @@ thingtypes ...@@ -4529,7 +5096,7 @@ thingtypes
607 607
{ {
title = "Circle of Blue Spheres (Big)"; title = "Circle of Blue Spheres (Big)";
sprite = "SPHRA0"; sprite = "internal:circlebigsphere";
width = 192; width = 192;
unflippable = true; unflippable = true;
centerHitbox = true; centerHitbox = true;
...@@ -4537,7 +5104,7 @@ thingtypes ...@@ -4537,7 +5104,7 @@ thingtypes
608 608
{ {
title = "Circle of Rings and Spheres"; title = "Circle of Rings and Spheres";
sprite = "SPHRA0"; sprite = "internal:circleringsphere";
width = 96; width = 96;
height = 192; height = 192;
unflippable = true; unflippable = true;
...@@ -4546,86 +5113,84 @@ thingtypes ...@@ -4546,86 +5113,84 @@ thingtypes
609 609
{ {
title = "Circle of Rings and Spheres (Big)"; title = "Circle of Rings and Spheres (Big)";
sprite = "SPHRA0"; sprite = "internal:circlebigringsphere";
width = 192; width = 192;
unflippable = true; unflippable = true;
centerHitbox = true; centerHitbox = true;
} }
} }
invisible ambience
{ {
color = 15; // White color = 8; // Dark Gray
title = "Misc. Invisible"; title = "Ambience";
width = 8; width = 8;
height = 16; height = 16;
sprite = "UNKNA0"; sprite = "internal:ambiance";
700 700
{ {
title = "Water Ambience A (Large)"; title = "Water Ambience A (Large)";
sprite = "internal:ambiance";
} }
701 701
{ {
title = "Water Ambience B (Large)"; title = "Water Ambience B (Large)";
sprite = "internal:ambiance";
} }
702 702
{ {
title = "Water Ambience C (Medium)"; title = "Water Ambience C (Medium)";
sprite = "internal:ambiance";
} }
703 703
{ {
title = "Water Ambience D (Medium)"; title = "Water Ambience D (Medium)";
sprite = "internal:ambiance";
} }
704 704
{ {
title = "Water Ambience E (Small)"; title = "Water Ambience E (Small)";
sprite = "internal:ambiance";
} }
705 705
{ {
title = "Water Ambience F (Small)"; title = "Water Ambience F (Small)";
sprite = "internal:ambiance";
} }
706 706
{ {
title = "Water Ambience G (Extra Large)"; title = "Water Ambience G (Extra Large)";
sprite = "internal:ambiance";
} }
707 707
{ {
title = "Water Ambience H (Extra Large)"; title = "Water Ambience H (Extra Large)";
sprite = "internal:ambiance";
} }
708 708
{ {
title = "Disco Ambience"; title = "Disco Ambience";
sprite = "internal:ambiance";
} }
709 709
{ {
title = "Volcano Ambience"; title = "Volcano Ambience";
sprite = "internal:ambiance";
} }
710 710
{ {
title = "Machine Ambience"; title = "Machine Ambience";
sprite = "internal:ambiance";
} }
}
invisible
{
color = 15; // White
title = "Misc. Invisible";
width = 8;
height = 16;
sprite = "UNKNA0";
750 750
{ {
...@@ -4635,6 +5200,7 @@ thingtypes ...@@ -4635,6 +5200,7 @@ thingtypes
fixedrotation = 1; fixedrotation = 1;
parametertext = "Absolute?"; parametertext = "Absolute?";
flagsvaluetext = "Absolute Z"; flagsvaluetext = "Absolute Z";
tagthing = true;
} }
751 751
...@@ -4680,20 +5246,22 @@ thingtypes ...@@ -4680,20 +5246,22 @@ thingtypes
756 756
{ {
title = "Blast Linedef Executor"; title = "Blast Linedef Executor";
sprite = "TOADA0"; sprite = "internal:blastexec";
width = 32; width = 32;
height = 16; height = 16;
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
757 757
{ {
title = "Fan Particle Generator"; title = "Fan Particle Generator";
sprite = "PRTLA0"; sprite = "internal:fanparticles";
width = 8; width = 8;
height = 16; height = 16;
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
758 758
{ {
...@@ -4706,6 +5274,8 @@ thingtypes ...@@ -4706,6 +5274,8 @@ thingtypes
sprite = "internal:polyanchor"; sprite = "internal:polyanchor";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
unflippable = true;
} }
761 761
...@@ -4714,6 +5284,8 @@ thingtypes ...@@ -4714,6 +5284,8 @@ thingtypes
sprite = "internal:polycenter"; sprite = "internal:polycenter";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
unflippable = true;
} }
762 762
...@@ -4722,6 +5294,8 @@ thingtypes ...@@ -4722,6 +5294,8 @@ thingtypes
sprite = "internal:polycentercrush"; sprite = "internal:polycentercrush";
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
unflippable = true;
} }
780 780
{ {
...@@ -4735,7 +5309,7 @@ thingtypes ...@@ -4735,7 +5309,7 @@ thingtypes
greenflower greenflower
{ {
color = 10; // Green color = 2; // Green
title = "Greenflower"; title = "Greenflower";
800 800
...@@ -4840,7 +5414,7 @@ thingtypes ...@@ -4840,7 +5414,7 @@ thingtypes
technohill technohill
{ {
color = 10; // Green color = 2; // Green
title = "Techno Hill"; title = "Techno Hill";
900 900
...@@ -4884,7 +5458,7 @@ thingtypes ...@@ -4884,7 +5458,7 @@ thingtypes
deepsea deepsea
{ {
color = 10; // Green color = 2; // Green
title = "Deep Sea"; title = "Deep Sea";
1000 1000
...@@ -4923,7 +5497,7 @@ thingtypes ...@@ -4923,7 +5497,7 @@ thingtypes
width = 8; width = 8;
height = 16; height = 16;
hangs = 1; hangs = 1;
angletext = "Dripping interval"; angletext = "Dripping delay";
fixedrotation = 1; fixedrotation = 1;
} }
1003 1003
...@@ -5019,7 +5593,7 @@ thingtypes ...@@ -5019,7 +5593,7 @@ thingtypes
castleeggman castleeggman
{ {
color = 10; // Green color = 2; // Green
title = "Castle Eggman"; title = "Castle Eggman";
1100 1100
...@@ -5068,6 +5642,7 @@ thingtypes ...@@ -5068,6 +5642,7 @@ thingtypes
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1105 1105
{ {
...@@ -5080,6 +5655,7 @@ thingtypes ...@@ -5080,6 +5655,7 @@ thingtypes
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1106 1106
{ {
...@@ -5092,23 +5668,25 @@ thingtypes ...@@ -5092,23 +5668,25 @@ thingtypes
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1107 1107
{ {
title = "Chain Spawnpoint"; title = "Chain Spawnpoint";
sprite = "BMCHA0"; sprite = "BMCHB0";
width = 17; width = 17;
height = 34; height = 34;
flags8text = "[8] Double size"; flags8text = "[8] Double size";
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1108 1108
{ {
arrow = 1; arrow = 1;
title = "Hidden Chain Spawnpoint"; title = "Hidden Chain Spawnpoint";
sprite = "internal:chain3"; sprite = "SMCHA0";
width = 17; width = 17;
height = 34; height = 34;
flags8text = "[8] Double size"; flags8text = "[8] Double size";
...@@ -5124,6 +5702,7 @@ thingtypes ...@@ -5124,6 +5702,7 @@ thingtypes
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1110 1110
{ {
...@@ -5135,6 +5714,7 @@ thingtypes ...@@ -5135,6 +5714,7 @@ thingtypes
angletext = "Tag"; angletext = "Tag";
parametertext = "Spokes"; parametertext = "Spokes";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1111 1111
{ {
...@@ -5265,6 +5845,8 @@ thingtypes ...@@ -5265,6 +5845,8 @@ thingtypes
width = 20; width = 20;
height = 72; height = 72;
arrow = 1; arrow = 1;
flags4text = "[4] Move right";
flags8text = "[8] Move left";
} }
1128 1128
{ {
...@@ -5286,7 +5868,7 @@ thingtypes ...@@ -5286,7 +5868,7 @@ thingtypes
aridcanyon aridcanyon
{ {
color = 10; // Green color = 2; // Green
title = "Arid Canyon"; title = "Arid Canyon";
1200 1200
...@@ -5314,6 +5896,7 @@ thingtypes ...@@ -5314,6 +5896,7 @@ thingtypes
height = 16; height = 16;
angletext = "Tag"; angletext = "Tag";
fixedrotation = 1; fixedrotation = 1;
tagthing = true;
} }
1203 1203
{ {
...@@ -5417,6 +6000,7 @@ thingtypes ...@@ -5417,6 +6000,7 @@ thingtypes
width = 24; width = 24;
height = 63; height = 63;
arrow = 1; arrow = 1;
flags8text = "[8] Not pushable";
} }
1217 1217
{ {
...@@ -5504,7 +6088,7 @@ thingtypes ...@@ -5504,7 +6088,7 @@ thingtypes
redvolcano redvolcano
{ {
color = 10; // Green color = 2; // Green
title = "Red Volcano"; title = "Red Volcano";
1300 1300
...@@ -5552,6 +6136,7 @@ thingtypes ...@@ -5552,6 +6136,7 @@ thingtypes
height = 32; height = 32;
angletext = "Initial delay"; angletext = "Initial delay";
fixedrotation = 1; fixedrotation = 1;
hangs = 1;
flags8text = "[8] Double size"; flags8text = "[8] Double size";
} }
1305 1305
...@@ -5603,7 +6188,7 @@ thingtypes ...@@ -5603,7 +6188,7 @@ thingtypes
botanicserenity botanicserenity
{ {
color = 10; // Green color = 2; // Green
title = "Botanic Serenity"; title = "Botanic Serenity";
width = 16; width = 16;
height = 32; height = 32;
...@@ -5846,7 +6431,7 @@ thingtypes ...@@ -5846,7 +6431,7 @@ thingtypes
azuretemple azuretemple
{ {
color = 10; // Green color = 2; // Green
title = "Azure Temple"; title = "Azure Temple";
1500 1500
...@@ -5922,7 +6507,7 @@ thingtypes ...@@ -5922,7 +6507,7 @@ thingtypes
dreamhill dreamhill
{ {
color = 10; // Green color = 2; // Green
title = "Dream Hill"; title = "Dream Hill";
1600 1600
...@@ -5941,17 +6526,17 @@ thingtypes ...@@ -5941,17 +6526,17 @@ thingtypes
} }
1602 1602
{ {
title = "Pian"; title = "Nightopian";
sprite = "NTPNALAR"; sprite = "NTPNA1";
width = 16; width = 16;
height = 32; height = 40;
} }
} }
nightstrk nightstrk
{ {
color = 13; // Pink color = 16; // Light Pink
title = "NiGHTS Track"; title = "NiGHTS Track & Basics";
width = 8; width = 8;
height = 4096; height = 4096;
sprite = "UNKNA0"; sprite = "UNKNA0";
...@@ -5986,6 +6571,19 @@ thingtypes ...@@ -5986,6 +6571,19 @@ thingtypes
flagsvaluetext = "Order"; flagsvaluetext = "Order";
parametertext = "Mare"; parametertext = "Mare";
} }
1703
{
title = "Ideya Drone";
sprite = "NDRNA1";
width = 16;
height = 56;
flags1text = "[1] Align player to middle";
flags4text = "[4] Align player to top";
flags8text = "[8] Die upon time up";
angletext = "Time limit";
fixedrotation = 1;
parametertext = "Height";
}
1710 1710
{ {
title = "Ideya Capture"; title = "Ideya Capture";
...@@ -6003,20 +6601,6 @@ thingtypes ...@@ -6003,20 +6601,6 @@ thingtypes
title = "NiGHTS Items"; title = "NiGHTS Items";
width = 16; width = 16;
height = 32; height = 32;
1703
{
title = "Ideya Drone";
sprite = "NDRNA1";
width = 16;
height = 56;
flags1text = "[1] Align player to middle";
flags4text = "[4] Align player to top";
flags8text = "[8] Die upon time up";
angletext = "Time limit";
fixedrotation = 1;
parametertext = "Height";
}
1704 1704
{ {
arrow = 1; arrow = 1;
...@@ -6027,20 +6611,19 @@ thingtypes ...@@ -6027,20 +6611,19 @@ thingtypes
unflippable = true; unflippable = true;
flagsvaluetext = "Pitch"; flagsvaluetext = "Pitch";
angletext = "Yaw"; angletext = "Yaw";
fixedrotation = 1;
} }
1705 1705
{ {
arrow = 1; arrow = 1;
title = "Hoop (Generic)"; title = "Hoop (Generic)";
sprite = "HOOPA0"; sprite = "internal:nightshoop";
width = 80; width = 80;
height = 160; height = 160;
unflippable = true; unflippable = true;
centerHitbox = true; centerHitbox = true;
flagsvaluetext = "Height"; flagsvaluetext = "Height";
angletext = "Pitch/Yaw"; angletext = "Pitch/Yaw";
fixedrotation = 1; parametertext = "Degrees?";
} }
1706 1706
{ {
...@@ -6050,7 +6633,6 @@ thingtypes ...@@ -6050,7 +6633,6 @@ thingtypes
height = 24; height = 24;
flags8height = 24; flags8height = 24;
flags8text = "[8] Float"; flags8text = "[8] Float";
unflippable = true;
} }
1707 1707
{ {
...@@ -6095,11 +6677,13 @@ thingtypes ...@@ -6095,11 +6677,13 @@ thingtypes
flags2text = "[2] Radius +32"; flags2text = "[2] Radius +32";
flags4text = "[4] Radius +64"; flags4text = "[4] Radius +64";
flags8text = "[8] Radius +128"; flags8text = "[8] Radius +128";
sprite = "HOOPA0"; sprite = "internal:nightshoop";
width = 80; width = 80;
height = 160; height = 160;
unflippable = true; unflippable = true;
centerHitbox = true; centerHitbox = true;
angletext = "Pitch/Yaw";
parametertext = "Degrees?";
} }
1714 1714
{ {
...@@ -6203,7 +6787,7 @@ thingtypes ...@@ -6203,7 +6787,7 @@ thingtypes
christmasdisco christmasdisco
{ {
color = 10; // Green color = 2; // Green
title = "Christmas & Disco"; title = "Christmas & Disco";
1850 1850
...@@ -6306,7 +6890,7 @@ thingtypes ...@@ -6306,7 +6890,7 @@ thingtypes
stalagmites stalagmites
{ {
color = 10; // Green color = 2; // Green
title = "Stalagmites"; title = "Stalagmites";
width = 16; width = 16;
height = 40; height = 40;
...@@ -6385,7 +6969,7 @@ thingtypes ...@@ -6385,7 +6969,7 @@ thingtypes
hauntedheights hauntedheights
{ {
color = 10; // Green color = 2; // Green
title = "Haunted Heights"; title = "Haunted Heights";
2000 2000
...@@ -6474,7 +7058,7 @@ thingtypes ...@@ -6474,7 +7058,7 @@ thingtypes
frozenhillside frozenhillside
{ {
color = 10; // Green color = 2; // Green
title = "Frozen Hillside"; title = "Frozen Hillside";
2100 2100
...@@ -6523,9 +7107,24 @@ thingtypes ...@@ -6523,9 +7107,24 @@ thingtypes
} }
} }
tutorial
{
color = 2; // Green
title = "Tutorial";
799
{
title = "Tutorial Plant";
sprite = "TUPFH0";
width = 40;
height = 144;
parametertext = "Start frame";
}
}
flickies flickies
{ {
color = 10; // Green color = 3; // Teal
title = "Flickies"; title = "Flickies";
width = 8; width = 8;
height = 20; height = 20;
......
...@@ -15,7 +15,7 @@ common ...@@ -15,7 +15,7 @@ common
ignoredextensions = "wad pk3 pk7 bak backup1 backup2 backup3 zip rar 7z"; ignoredextensions = "wad pk3 pk7 bak backup1 backup2 backup3 zip rar 7z";
// Default testing parameters // Default testing parameters
testparameters = "-file \"%AP\" \"%F\" -warp %L"; testparameters = "-folder \"%AF\" -file \"%AA\" \"%F\" -warp %L";
testshortpaths = true; testshortpaths = true;
// Action special help // Action special help
...@@ -26,7 +26,7 @@ common ...@@ -26,7 +26,7 @@ common
generalizedsectors = true; generalizedsectors = true;
// Maximum safe map size check (0 means skip check) // Maximum safe map size check (0 means skip check)
safeboundary = 1; safeboundary = 0;
// Map boundaries. Map objects can only be placed within these boundaries // Map boundaries. Map objects can only be placed within these boundaries
leftboundary = -32768; leftboundary = -32768;
...@@ -39,6 +39,11 @@ common ...@@ -39,6 +39,11 @@ common
defaulttexturescale = 1.0f; defaulttexturescale = 1.0f;
defaultflatscale = 1.0f; defaultflatscale = 1.0f;
scaledtextureoffsets = true; scaledtextureoffsets = true;
scaledflatoffsets = true;
// Colormap/fade related options
maxcolormapalpha = 25;
// TODO: change to 255;
// Thing number for start position in 3D Mode // Thing number for start position in 3D Mode
start3dmode = 3328; start3dmode = 3328;
...@@ -68,131 +73,6 @@ common ...@@ -68,131 +73,6 @@ common
} }
} }
mapformat_doom
{
// The format interface handles the map data format
formatinterface = "DoomMapSetIO";
// Default nodebuilder configurations
defaultsavecompiler = "zennode_normal";
defaulttestcompiler = "zennode_fast";
/*
GAME DETECT PATTERN
Used to guess the game for which a WAD file is made.
1 = One of these lumps must exist
2 = None of these lumps must exist
3 = All of these lumps must exist
*/
gamedetect
{
EXTENDED = 2;
BEHAVIOR = 2;
E#M# = 2;
MAP?? = 1;
}
/*
MAP LUMP NAMES
Map lumps are loaded with the map as long as they are right after each other. When the editor
meets a lump which is not defined in this list it will ignore the map if not satisfied.
The order of items defines the order in which lumps will be written to WAD file on save.
To indicate the map header lump, use ~MAP
Legenda:
required = Lump is required to exist.
blindcopy = Lump will be copied along with the map blindly. (usefull for lumps Doom Builder doesn't use)
nodebuild = The nodebuilder generates this lump.
allowempty = The nodebuilder is allowed to leave this lump empty.
script = This lump is a text-based script. Specify the filename of the script configuration to use.
*/
maplumpnames
{
include("SRB222_misc.cfg", "doommaplumpnames");
}
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = true;
// Special linedefs
include("SRB222_misc.cfg", "speciallinedefs");
// Default flags for first new thing
defaultthingflags
{
}
// DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness
{
include("SRB222_misc.cfg", "sectorbrightness");
}
// SECTOR TYPES
sectortypes
{
include("SRB222_sectors.cfg", "sectortypes");
}
// GENERALISED SECTOR TYPES
gen_sectortypes
{
include("SRB222_sectors.cfg", "gen_sectortypes");
}
// LINEDEF FLAGS
linedefflags
{
include("SRB222_misc.cfg", "linedefflags");
}
// Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
include("SRB222_misc.cfg", "linedefflagstranslation");
}
// LINEDEF ACTIVATIONS
linedefactivations
{
}
// LINEDEF TYPES
linedeftypes
{
include("SRB222_linedefs.cfg", "doom");
}
// THING FLAGS
thingflags
{
include("SRB222_misc.cfg", "thingflags");
}
// Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
thingflagstranslation
{
include("SRB222_misc.cfg", "thingflagstranslation");
}
// THING FLAGS ERROR MASK
// Mask for the thing flags which indicates the options
// that make the same thing appear in the same modes
thingflagsmask1 = 7; // 1 + 2 + 4
thingflagsmask2 = 0;
}
mapformat_udmf mapformat_udmf
{ {
// The format interface handles the map data format // The format interface handles the map data format
...@@ -217,9 +97,29 @@ mapformat_udmf ...@@ -217,9 +97,29 @@ mapformat_udmf
include("SRB222_misc.cfg", "universalfields"); include("SRB222_misc.cfg", "universalfields");
} }
// Disable Doom-related modes that don't make sense for SRB2
soundsupport = false;
automapsupport = false;
// When this is set to true, sectors with the same tag will light up when a line is highlighted // When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = false; linetagindicatesectors = false;
// Enables support for individual offsets of upper/middle/lower sidedef textures
localsidedeftextureoffsets = true;
// Enables support for plane equation slopes
planeequationsupport = true;
// Enables support for vertex heights
vertexheightsupport = true;
// Enables setting distinct brightness for floor, ceiling, and walls
distinctfloorandceilingbrightness = true;
distinctwallbrightness = true;
// Enables setting distinct brightness for upper, middle, and lower sidedef parts
distinctsidedefpartbrightness = false;
// Special linedefs // Special linedefs
include("SRB222_misc.cfg", "speciallinedefs_udmf"); include("SRB222_misc.cfg", "speciallinedefs_udmf");
...@@ -234,23 +134,19 @@ mapformat_udmf ...@@ -234,23 +134,19 @@ mapformat_udmf
include("SRB222_misc.cfg", "sectorflags"); include("SRB222_misc.cfg", "sectorflags");
} }
// DEFAULT SECTOR BRIGHTNESS LEVELS sectorflagscategories
sectorbrightness
{ {
include("SRB222_misc.cfg", "sectorbrightness"); include("SRB222_misc.cfg", "sectorflagscategories");
} }
// SECTOR TYPES // DEFAULT SECTOR BRIGHTNESS LEVELS
sectortypes sectorbrightness
{ {
include("SRB222_sectors.cfg", "sectortypes"); include("SRB222_misc.cfg", "sectorbrightness");
} }
// GENERALISED SECTOR TYPES damagetypes = "Generic Water Fire Lava Electric Spike DeathPitTilt DeathPitNoTilt Instakill SpecialStage";
gen_sectortypes triggerertypes = "Player AllPlayers Mobj";
{
include("SRB222_sectors.cfg", "gen_sectortypes");
}
// LINEDEF FLAGS // LINEDEF FLAGS
linedefflags linedefflags
...@@ -264,10 +160,10 @@ mapformat_udmf ...@@ -264,10 +160,10 @@ mapformat_udmf
} }
// LINEDEF RENDERSTYLES // LINEDEF RENDERSTYLES
/*linedefrenderstyles linedefrenderstyles
{ {
include("SRB222_misc.cfg", "linedefrenderstyles"); include("SRB222_misc.cfg", "linedefrenderstyles");
}*/ }
// THING FLAGS // THING FLAGS
thingflags thingflags
...@@ -286,7 +182,12 @@ mapformat_udmf ...@@ -286,7 +182,12 @@ mapformat_udmf
// How to compare thing flags (for the stuck things error checker) // How to compare thing flags (for the stuck things error checker)
thingflagscompare thingflagscompare
{ {
include("UDMF_misc.cfg", "thingflagscompare"); }
// THING TYPES
thingtypes
{
include("SRB222_things.cfg", "udmf");
} }
// LINEDEF TYPES // LINEDEF TYPES
...@@ -294,4 +195,4 @@ mapformat_udmf ...@@ -294,4 +195,4 @@ mapformat_udmf
{ {
include("SRB222_linedefs.cfg", "udmf"); include("SRB222_linedefs.cfg", "udmf");
} }
} }
\ No newline at end of file
doom udmf
{ {
misc misc
{ {
...@@ -7,62 +7,102 @@ doom ...@@ -7,62 +7,102 @@ doom
0 0
{ {
title = "None"; title = "None";
prefix = "(0)";
}
1
{
title = "Per-Sector Gravity";
prefix = "(1)";
} }
5
6
{ {
title = "Camera Scanner"; title = "Sector Set Portal";
prefix = "(5)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Portal type";
type = 11;
enum
{
0 = "Link to portal with same tag";
1 = "Copy portal from second tag";
2 = "Skybox portal";
3 = "Plane portal";
4 = "Horizon portal";
5 = "Copy portal to line";
6 = "Interactive portal (unimplemented)";
7 = "Link to sector with second tag";
8 = "Link to object with second tag";
}
}
arg2
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
arg3
{
title = "Misc";
tooltip = "For type 0 portal: specifies whether the line belongs to the sector viewed\nthrough the portal (1) or the sector in which the portal is seen (0).\nFor type 1 portal: specifies the sector tag of the portal to copy.\nFor type 7 portal: specifies the sector tag to make a portal to.\nFor type 8 portal: specifies the object tag to make a portal to.";
}
} }
7 7
{ {
title = "Sector Flat Alignment"; title = "Sector Flat Alignment";
prefix = "(7)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
default = 2;
}
} }
10 10
{ {
title = "Culling Plane"; title = "Culling Plane";
prefix = "(10)"; arg0
} {
13 title = "Target sector tag";
{ type = 13;
title = "Heat Wave Effect"; }
prefix = "(13)"; arg1
{
title = "Culling behavior";
type = 11;
enum
{
0 = "Always";
1 = "Only while in sector";
}
}
} }
40 40
{ {
title = "Visual Portal Between Tagged Linedefs"; title = "Visual Portal Between Tagged Linedefs";
prefix = "(40)";
} }
41 41
{ {
title = "Horizon Effect"; title = "Horizon Effect";
prefix = "(41)"; id = "srb2_horizonline";
}
50
{
title = "Instantly Lower Floor on Level Load";
prefix = "(50)";
}
51
{
title = "Instantly Raise Ceiling on Level Load";
prefix = "(51)";
} }
63 63
{ {
title = "Fake Floor/Ceiling Planes"; title = "Fake Floor/Ceiling Planes";
prefix = "(63)"; arg0
} {
540 title = "Target sector tag";
{ type = 13;
title = "Floor Friction"; }
prefix = "(540)";
} }
} }
...@@ -73,62 +113,174 @@ doom ...@@ -73,62 +113,174 @@ doom
2 2
{ {
title = "Custom Exit"; title = "Custom Exit";
prefix = "(2)"; arg0
{
title = "Next map";
}
arg1
{
title = "Flags";
type = 12;
enum
{
1 = "Skip score tally";
2 = "Check emeralds";
}
}
arg2
{
title = "Next map (all emeralds)";
}
} }
3 3
{ {
title = "Zoom Tube Parameters"; title = "Zoom Tube Parameters";
prefix = "(3)"; arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
}
arg2
{
title = "Check player direction?";
type = 11;
enum = "yesno";
}
} }
4 4
{ {
title = "Speed Pad Parameters"; title = "Speed Pad Parameters";
prefix = "(4)"; arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
title = "Flags";
type = 12;
enum
{
1 = "No teleport to center";
2 = "Force spinning frames";
}
}
stringarg0
{
title = "Sound";
type = 2;
tooltip = "Takes a DS constant.\nExample: DSTHOK";
}
} }
8 8
{ {
title = "Special Sector Properties"; title = "Set Camera Collision Planes";
prefix = "(8)"; arg0
} {
9 title = "Target sector tag";
{ type = 13;
title = "Chain Parameters"; }
prefix = "(9)";
} }
11 11
{ {
title = "Rope Hang Parameters"; title = "Rope Hang Parameters";
prefix = "(11)"; arg0
} {
12 title = "Speed";
{ tooltip = "In fracunits per tic.";
title = "Rock Spawner Parameters"; }
prefix = "(12)"; arg1
{
title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
}
arg2
{
title = "Loop?";
type = 11;
enum = "yesno";
}
} }
14 14
{ {
title = "Bustable Block Parameters"; title = "Bustable Block Parameters";
prefix = "(14)"; arg0
{
title = "Debris spacing";
}
arg1
{
title = "Debris lifetime (tics)";
}
arg2
{
title = "Launch from center?";
type = 11;
enum = "noyes";
}
stringarg0
{
title = "Debris object type";
tooltip = "Uses a MT_ constant.\nExample: MT_ROCKCRUMBLE16\nDefaults to MT_ROCKCRUMBLE1.";
type = 2;
}
} }
15 15
{ {
title = "Fan Particle Spawner Parameters"; title = "Fan Particle Generator Heights";
prefix = "(15)";
} }
16 16
{ {
title = "Minecart Parameters"; title = "Minecart Parameters";
prefix = "(16)"; arg0
{
title = "Order";
}
} }
64 64
{ {
title = "Continuously Appearing/Disappearing FOF"; title = "Continuously Appearing/Disappearing FOF";
prefix = "(64)"; arg0
} {
65 title = "Control linedef tag";
{ type = 15;
title = "Bridge Thinker <disabled>"; }
prefix = "(65)"; arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "On time";
}
arg3
{
title = "Off time";
}
arg4
{
title = "Initial delay";
}
arg5
{
title = "Play sound?";
type = 11;
enum = "yesno";
}
} }
} }
...@@ -138,33 +290,107 @@ doom ...@@ -138,33 +290,107 @@ doom
20 20
{ {
title = "First Line"; title = "PolyObject First Line";
prefix = "(20)"; arg0
} {
21 title = "PolyObject tag";
{ type = 14;
title = "Explicitly Include Line <disabled>"; }
prefix = "(21)"; arg1
} {
22 title = "Parent PolyObject tag";
{ type = 14;
title = "Parameters"; }
prefix = "(22)"; arg2
{
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Don't render insides";
2 = "Intangible";
4 = "Stopped by pushables";
8 = "Don't render planes";
16 = "Trigger linedef executor on touch";
32 = "Crush player";
64 = "Cut cyan flat pixels";
}
}
arg4
{
title = "Trigger linedef tag";
type = 15;
}
} }
30 30
{ {
title = "Waving Flag"; title = "Waving PolyObject Flag";
prefix = "(30)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Distance";
tooltip = "How far to move in either direction, in fracunits.";
}
} }
31 31
{ {
title = "Displacement by Front Sector"; title = "Move PolyObject by Front Sector Displacement";
prefix = "(31)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Base speed";
tooltip = "How much the front sector displacement translates.\nA value of 256 amounts to a 1:1 translation.";
}
} }
32 32
{ {
title = "Angular Displacement by Front Sector"; title = "Rotate PolyObject by Front Sector Displacement";
prefix = "(32)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Plane factor";
default = 128;
}
arg2
{
title = "Rotation factor";
default = 90;
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Don't turn others";
2 = "Turn players";
}
}
} }
} }
...@@ -175,392 +401,853 @@ doom ...@@ -175,392 +401,853 @@ doom
52 52
{ {
title = "Continuously Falling Sector"; title = "Continuously Falling Sector";
prefix = "(52)"; arg0
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg1
{
title = "Direction";
type = 11;
enum
{
0 = "Fall";
1 = "Rise";
}
}
} }
53 53
{ {
title = "Continuous Floor/Ceiling Mover"; title = "Continuous Plane Mover (Slowdown)";
prefix = "(53)"; arg0
} {
54 title = "Target sector tag";
{ type = 13;
title = "Continuous Floor Mover"; }
prefix = "(54)"; arg1
} {
55 title = "Affected planes";
{ type = 11;
title = "Continuous Ceiling Mover"; enum = "floorceiling";
prefix = "(55)"; }
arg2
{
title = "Forward speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Return speed";
tooltip = "In fracunits per tic.";
}
arg4
{
title = "Starting delay";
}
arg5
{
title = "Delay before flip";
}
} }
56 56
{ {
title = "Continuous Two-Speed Floor/Ceiling Mover"; title = "Continuous Plane Mover (Constant)";
prefix = "(56)"; arg0
} {
57 title = "Target sector tag";
{ type = 13;
title = "Continuous Two-Speed Floor Mover"; }
prefix = "(57)"; arg1
} {
58 title = "Affected planes";
{ type = 11;
title = "Continuous Two-Speed Ceiling Mover"; enum = "floorceiling";
prefix = "(58)"; }
} arg2
59 {
{ title = "Forward speed";
title = "Activate Moving Platform"; tooltip = "In fracunits per tic.";
prefix = "(59)"; }
arg3
{
title = "Return speed";
tooltip = "In fracunits per tic.";
}
arg4
{
title = "Starting delay";
}
arg5
{
title = "Delay before flip";
}
} }
60 60
{ {
title = "Activate Moving Platform (Adjustable Speed)"; title = "Activate Moving Platform";
prefix = "(60)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Starting delay (tics)";
}
arg3
{
title = "Delay before flip";
}
arg4
{
title = "Starting direction";
type = 11;
enum = "downup";
}
} }
61 61
{ {
title = "Crusher (Ceiling to Floor)"; title = "Ceiling Crusher";
prefix = "(61)"; arg0
} {
62 title = "Target sector tag";
{ type = 13;
title = "Crusher (Floor to Ceiling)"; }
prefix = "(62)"; arg1
{
title = "Starting direction";
type = 11;
enum
{
0 = "Crush";
1 = "Retract";
}
}
arg2
{
title = "Crush speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Retract speed";
tooltip = "In fracunits per tic.";
}
} }
66 66
{ {
title = "Move Floor by Displacement"; title = "Move Planes by Front Sector Displacement";
prefix = "(66)"; arg0
} {
67 title = "Target sector tag";
{ type = 13;
title = "Move Ceiling by Displacement"; }
prefix = "(67)"; arg1
} {
68 title = "Affected planes";
{ type = 11;
title = "Move Floor and Ceiling by Displacement"; enum = "floorceiling";
prefix = "(68)"; }
arg2
{
title = "Translation factor";
default = 256;
}
} }
} }
fofsolid fofmodifiers
{ {
title = "FOF (solid)"; title = "FOF Modifiers";
100 70
{
title = "Solid, Opaque";
prefix = "(100)";
}
101
{
title = "Solid, Opaque, No Shadow";
prefix = "(101)";
}
102
{
title = "Solid, Translucent";
prefix = "(102)";
}
103
{
title = "Solid, Sides Only";
prefix = "(103)";
}
104
{
title = "Solid, No Sides";
prefix = "(104)";
}
105
{
title = "Solid, Invisible";
prefix = "(105)";
}
140
{ {
title = "Intangible from Bottom, Opaque"; title = "Add Raise Thinker";
prefix = "(140)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Destination height";
}
arg3
{
title = "Require spindash?";
type = 11;
enum = "noyes";
}
} }
141
71
{ {
title = "Intangible from Bottom, Translucent"; title = "Add Air Bobbing Thinker";
prefix = "(141)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Bobbing distance";
}
arg2
{
title = "Flags";
type = 12;
enum
{
1 = "Raise";
2 = "Require spindash";
4 = "Dynamic";
}
}
} }
142
72
{ {
title = "Intangible from Bottom, Translucent, No Sides"; title = "Add Thwomp Thinker";
prefix = "(142)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Falling speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Rising speed";
tooltip = "In fracunits per tic.";
}
stringarg0
{
title = "Crushing sound";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
} }
143
73
{ {
title = "Intangible from Top, Opaque"; title = "Add Laser Thinker";
prefix = "(143)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Damage bosses?";
type = 11;
enum = "yesno";
}
} }
144
74
{ {
title = "Intangible from Top, Translucent"; title = "Make FOF Bustable";
prefix = "(144)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Bustable type";
type = 11;
enum
{
0 = "Touch";
1 = "Spin";
2 = "Regular";
3 = "Strong";
}
}
arg2
{
title = "Flags";
type = 12;
enum
{
1 = "Bustable by pushables";
2 = "Trigger linedef executor";
4 = "Only bustable from below";
}
}
arg3
{
title = "Linedef executor tag";
type = 15;
}
} }
145
75
{ {
title = "Intangible from Top, Translucent, No Sides"; title = "Make FOF Quicksand";
prefix = "(145)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Sinking speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Friction";
}
} }
146
76
{ {
title = "Only Tangible from Sides"; title = "Make FOF Bouncy";
prefix = "(146)"; arg0
{
title = "Control linedef tag";
type = 15;
}
arg1
{
title = "Bounce strength";
}
} }
} }
fofintangible fof
{ {
title = "FOF (intangible)"; title = "FOF";
120 100
{
title = "Water, Opaque";
prefix = "(120)";
}
121
{ {
title = "Water, Translucent"; title = "Solid";
prefix = "(121)"; id = "srb2_fofsolid";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Appearance";
type = 12;
enum
{
1 = "Don't render planes";
2 = "Don't render sides";
4 = "Render insides";
8 = "Render only insides";
16 = "No shadow";
32 = "Cut cyan flat pixels";
}
}
arg4
{
title = "Tangibility";
type = 12;
enum = "tangibility";
}
} }
122
120
{ {
title = "Water, Opaque, No Sides"; title = "Water";
prefix = "(122)"; id = "srb2_fofwater";
} arg0
123 {
{ title = "Target sector tag";
title = "Water, Translucent, No Sides"; type = 13;
prefix = "(123)"; }
} arg1
124 {
{ title = "Alpha";
title = "Goo Water, Translucent"; default = 128;
prefix = "(124)"; tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
} }
125 arg2
{ {
title = "Goo Water, Translucent, No Sides"; title = "Blending mode";
prefix = "(125)"; type = 11;
} enum = "blendmodes";
220 }
{ arg3
title = "Intangible, Opaque"; {
prefix = "(220)"; title = "Flags";
} type = 12;
221 enum
{ {
title = "Intangible, Translucent"; 1 = "Don't render sides";
prefix = "(221)"; 2 = "Render separate light level";
} 4 = "Use target light level";
222 8 = "No ripple effect";
{ 16 = "Goo physics";
title = "Intangible, Sides Only"; 32 = "Cut cyan flat pixels";
prefix = "(222)"; }
} }
223
{
title = "Intangible, Invisible";
prefix = "(223)";
} }
}
fofmoving
{
title = "FOF (moving)";
150 150
{ {
title = "Air Bobbing"; title = "Air Bobbing";
prefix = "(150)"; id = "srb2_fofsolidopaque";
} arg0
151 {
{ title = "Target sector tag";
title = "Air Bobbing (Adjustable)"; type = 13;
prefix = "(151)"; }
} arg1
152 {
{ title = "Bobbing distance";
title = "Reverse Air Bobbing (Adjustable)"; }
prefix = "(152)"; arg2
} {
153 title = "Flags";
{ type = 12;
title = "Dynamically Sinking Platform"; enum
prefix = "(153)"; {
1 = "Raise";
2 = "Require spindash";
4 = "Dynamic";
}
}
} }
160 160
{ {
title = "Floating, Bobbing"; title = "Water Bobbing";
prefix = "(160)"; id = "srb2_fofsolidopaque";
} arg0
190 {
{ title = "Target sector tag";
title = "Rising Platform, Solid, Opaque"; type = 13;
prefix = "(190)"; }
}
191
{
title = "Rising Platform, Solid, Opaque, No Shadow";
prefix = "(191)";
}
192
{
title = "Rising Platform, Solid, Translucent";
prefix = "(192)";
}
193
{
title = "Rising Platform, Solid, Invisible";
prefix = "(193)";
}
194
{
title = "Rising Platform, Intangible from Bottom, Opaque";
prefix = "(194)";
}
195
{
title = "Rising Platform, Intangible from Bottom, Translucent";
prefix = "(195)";
} }
}
fofcrumbling
{
title = "FOF (crumbling)";
170 170
{ {
title = "Crumbling, Respawn"; title = "Crumbling";
prefix = "(170)"; id = "srb2_fofcrumbling";
} arg0
171 {
{ title = "Target sector tag";
title = "Crumbling, No Respawn"; type = 13;
prefix = "(171)"; }
} arg1
172 {
{ title = "Alpha";
title = "Crumbling, Respawn, Intangible from Bottom"; default = 255;
prefix = "(172)"; tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
} }
173 arg2
{ {
title = "Crumbling, No Respawn, Intangible from Bottom"; title = "Blending mode";
prefix = "(173)"; type = 11;
} enum = "blendmodes";
174 }
{ arg3
title = "Crumbling, Respawn, Int. from Bottom, Translucent"; {
prefix = "(174)"; title = "Tangibility";
} type = 12;
175 enum = "tangibility";
{ }
title = "Crumbling, No Respawn, Int. from Bottom, Translucent"; arg4
prefix = "(175)"; {
} title = "Flags";
176 type = 12;
{ enum
title = "Crumbling, Respawn, Floating, Bobbing"; {
prefix = "(176)"; 1 = "No shadow";
} 2 = "No respawn";
177 4 = "Air bobbing";
{ 8 = "Float on water";
title = "Crumbling, No Respawn, Floating, Bobbing"; 16 = "Cut cyan flat pixels";
prefix = "(177)"; }
} }
178
{
title = "Crumbling, Respawn, Floating";
prefix = "(178)";
}
179
{
title = "Crumbling, No Respawn, Floating";
prefix = "(179)";
} }
180
190
{ {
title = "Crumbling, Respawn, Air Bobbing"; title = "Rising";
prefix = "(180)"; id = "srb2_fofsolid";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Appearance";
type = 12;
enum
{
1 = "Don't render planes";
2 = "Don't render sides";
4 = "Render insides";
8 = "Render only insides";
16 = "No shadow";
32 = "Cut cyan flat pixels";
}
}
arg4
{
title = "Tangibility";
type = 12;
enum = "tangibility";
}
arg5
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg6
{
title = "Flags";
type = 12;
enum
{
1 = "Lower";
2 = "Require spindash";
}
}
} }
}
fofspecial
{
title = "FOF (special)";
200 200
{ {
title = "Light Block"; title = "Light Block";
prefix = "(200)"; id = "srb2_foflight";
} arg0
201 {
{ title = "Target sector tag";
title = "Half Light Block"; type = 13;
prefix = "(201)"; }
arg1
{
title = "Expand to bottom?";
type = 11;
enum = "noyes";
}
} }
202 202
{ {
title = "Fog Block"; title = "Fog Block";
prefix = "(202)"; id = "srb2_foffog";
arg0
{
title = "Target sector tag";
type = 13;
}
} }
250
220
{ {
title = "Mario Block"; title = "Intangible";
prefix = "(250)"; id = "srb2_fofintangible";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Appearance";
type = 12;
enum
{
1 = "Don't render planes";
2 = "Don't render sides";
4 = "Don't render insides";
8 = "Render only insides";
16 = "No shadow";
32 = "Cut cyan flat pixels";
}
}
} }
251
223
{ {
title = "Thwomp Block"; title = "Intangible, Invisible";
prefix = "(251)"; id = "srb2_fofintangibleinvisible";
arg0
{
title = "Target sector tag";
type = 13;
}
} }
252
250
{ {
title = "Shatter Block"; title = "Mario Block";
prefix = "(252)"; id = "srb2_fofsolidopaque";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Block type";
type = 12;
enum
{
1 = "Brick";
2 = "Invisible";
}
}
} }
253
251
{ {
title = "Shatter Block, Translucent"; title = "Thwomp Block";
prefix = "(253)"; id = "srb2_fofsolidopaque";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Falling speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Rising speed";
tooltip = "In fracunits per tic.";
}
stringarg0
{
title = "Crushing sound";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
} }
254 254
{ {
title = "Bustable Block"; title = "Bustable Block";
prefix = "(254)"; id = "srb2_fofbustable";
} arg0
255 {
{ title = "Target sector tag";
title = "Spin-Bustable Block"; type = 13;
prefix = "(255)"; }
} arg1
256 {
{ title = "Alpha";
title = "Spin-Bustable Block, Translucent"; default = 255;
prefix = "(256)"; tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Bustable type";
type = 11;
enum
{
0 = "Touch";
1 = "Spin";
2 = "Regular";
3 = "Strong";
}
}
arg4
{
title = "Flags";
type = 12;
enum
{
1 = "Bustable by pushables";
2 = "Trigger linedef executor";
4 = "Only bustable from below";
8 = "Cut cyan flat pixels";
}
}
arg5
{
title = "Linedef executor tag";
type = 15;
}
} }
257 257
{ {
title = "Quicksand"; title = "Quicksand";
prefix = "(257)"; id = "srb2_fofsolidopaque";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Ripple effect?";
type = 11;
enum = "yesno";
}
arg2
{
title = "Sinking speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Friction";
}
} }
258 258
{ {
title = "Laser"; title = "Laser";
prefix = "(258)"; id = "srb2_foflaser";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Alpha";
default = 128;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Don't damage bosses";
2 = "Cut cyan flat pixels";
}
}
} }
259 259
{ {
title = "Custom FOF"; title = "Custom";
prefix = "(259)"; id = "srb2_fofcustom";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Alpha";
default = 255;
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg2
{
title = "Blending mode";
type = 11;
enum = "blendmodes";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Exists";
2 = "Block player";
4 = "Block others";
8 = "Render sides";
16 = "Render planes";
32 = "Water";
64 = "No shadow";
128 = "Cut solid walls";
256 = "Cut extra walls";
512 = "Split sprites";
1024 = "Render inside planes";
2048 = "Extra";
8192 = "Fog";
16384 = "Only render inside planes";
32768 = "Render inside walls";
65536 = "Only render inside walls";
131072 = "Double shadow";
262144 = "Water bobbing";
524288 = "Don't respawn";
1048576 = "Crumbling";
2097152 = "Goo water";
4194304 = "Mario block";
33554432 = "Intangible from below";
67108864 = "Intangible from above";
134217728 = "Ripple effect";
268435456 = "Don't copy light level";
536870912 = "Bouncy";
1073741824 = "Cut cyan flat pixels";
}
}
} }
} }
...@@ -570,1207 +1257,2513 @@ doom ...@@ -570,1207 +1257,2513 @@ doom
300 300
{ {
title = "Continuous"; title = "Basic";
prefix = "(300)"; arg0
} {
301 title = "Trigger type";
{ type = 11;
title = "Each Time"; enum = "triggertype";
prefix = "(301)"; }
}
302
{
title = "Once";
prefix = "(302)";
} }
303 303
{ {
title = "Ring Count - Continuous"; title = "Ring Count";
prefix = "(303)"; arg0
} {
304 title = "Trigger type";
{ type = 11;
title = "Ring Count - Once"; enum = "triggertype";
prefix = "(304)"; }
arg1
{
title = "Rings";
}
arg2
{
title = "Comparison";
type = 11;
enum = "comparison";
}
arg3
{
title = "Count all players?";
type = 11;
enum = "noyes";
}
} }
305 305
{ {
title = "Character Ability - Continuous"; title = "Character Ability";
prefix = "(305)"; arg0
} {
306 title = "Trigger type";
{ type = 11;
title = "Character Ability - Each Time"; enum = "triggertype";
prefix = "(306)"; }
} arg1
307 {
{ title = "Ability";
title = "Character Ability - Once"; type = 11;
prefix = "(307)"; enum
{
0 = "None";
1 = "Thok";
2 = "Fly";
3 = "Glide and climb";
4 = "Homing attack";
5 = "Swim";
6 = "Double jump";
7 = "Float";
8 = "Float with slow descent";
9 = "Telekinesis";
10 = "Fall switch";
11 = "Jump boost";
12 = "Air drill";
13 = "Jump-thok";
14 = "Pogo bounce";
15 = "Twin spin";
}
}
} }
308 308
{ {
title = "Race Only - Once"; title = "Gametype";
prefix = "(308)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Rules";
type = 12;
enum
{
1 = "Campaign";
2 = "Ringslinger";
4 = "Spectators";
8 = "Lives";
16 = "Teams";
32 = "First person";
64 = "Match emeralds";
128 = "Team flags";
256 = "Coop";
512 = "Allow special stages";
1024 = "Spawn emerald tokens";
2048 = "Emerald hunt";
4096 = "Race";
8192 = "Tag";
16384 = "Point limit";
32768 = "Time limit";
65536 = "Overtime";
131072 = "Hurt messages";
262144 = "Friendly fire";
524288 = "Hide time countdown";
1048576 = "Frozen after hide time";
2097152 = "Blindfolded view";
4194304 = "Respawn delay";
8388608 = "Award pity shield";
16777216 = "Death score penalty";
33554432 = "No spectator spawn";
67108864 = "Use match starts";
134217728 = "Spawn invincibility";
268435456 = "Allow enemies";
536870912 = "Allow exit sectors";
1073741824 = "No title card";
2147483648 = "Allow cutscenes";
}
}
arg2
{
title = "Check if";
type = 11;
enum = "flagcheck";
}
} }
309 309
{ {
title = "CTF Red Team - Continuous"; title = "CTF Team";
prefix = "(309)"; arg0
} {
310 title = "Trigger type";
{ type = 11;
title = "CTF Red Team - Each Time"; enum = "triggertype";
prefix = "(310)"; }
} arg1
311 {
{ title = "Team";
title = "CTF Blue Team - Continuous"; type = 11;
prefix = "(311)"; enum = "team";
} }
312
{
title = "CTF Blue Team - Each Time";
prefix = "(312)";
} }
313 313
{ {
title = "No More Enemies - Once"; title = "No More Enemies";
prefix = "(313)"; arg0
{
title = "Target sector tag";
type = 13;
}
} }
314 314
{ {
title = "Number of Pushables - Continuous"; title = "Number of Pushables";
prefix = "(314)"; arg0
} {
315 title = "Trigger type";
{ type = 11;
title = "Number of Pushables - Once"; enum = "triggertype";
prefix = "(315)"; }
arg1
{
title = "Pushables";
}
arg2
{
title = "Comparison";
type = 11;
enum = "comparison";
}
} }
317 317
{ {
title = "Condition Set Trigger - Continuous"; title = "Condition Set Trigger";
prefix = "(317)"; arg0
} {
318 title = "Trigger type";
{ type = 11;
title = "Condition Set Trigger - Once"; enum = "triggertype";
prefix = "(318)"; }
arg1
{
title = "Trigger ID";
}
} }
319 319
{ {
title = "Unlockable - Continuous"; title = "Unlockable";
prefix = "(319)"; arg0
} {
320 title = "Trigger type";
{ type = 11;
title = "Unlockable - Once"; enum = "triggertype";
prefix = "(320)"; }
arg1
{
title = "Unlockable ID";
}
} }
321 321
{ {
title = "Trigger After X Calls - Continuous"; title = "Trigger After X Calls";
prefix = "(321)"; arg0
} {
322 title = "Trigger type";
{ type = 11;
title = "Trigger After X Calls - Each Time"; enum = "xtriggertype";
prefix = "(322)"; }
arg1
{
title = "Calls";
}
arg2
{
title = "Can retrigger?";
type = 11;
enum = "noyes";
}
arg3
{
title = "Starting calls";
}
} }
323 323
{ {
title = "NiGHTSerize - Each Time"; title = "NiGHTSerize";
prefix = "(323)"; arg0
} {
324 title = "Trigger type";
{ type = 11;
title = "NiGHTSerize - Once"; enum
prefix = "(324)"; {
} 0 = "Each time";
325 1 = "Once";
{ }
title = "De-NiGHTSerize - Each Time"; }
prefix = "(325)"; arg1
} {
326 title = "Mare number";
{ }
title = "De-NiGHTSerize - Once"; arg2
prefix = "(326)"; {
} title = "Lap number";
327 }
{ arg3
title = "NiGHTS Lap - Each Time"; {
prefix = "(327)"; title = "Mare comparison";
} type = 11;
328 enum = "comparison";
{ }
title = "NiGHTS Lap - Once"; arg4
prefix = "(328)"; {
} title = "Lap comparison";
329 type = 11;
{ enum = "comparison";
title = "Ideya Capture Touch - Each Time"; }
prefix = "(329)"; arg5
} {
330 title = "Compared player";
{ type = 11;
title = "Ideya Capture Touch - Once"; enum
prefix = "(330)"; {
} 0 = "Fastest";
331 1 = "Slowest";
{ 2 = "Triggerer";
title = "Player Skin - Continuous"; }
flags64text = "[6] Disable for this skin"; }
prefix = "(331)"; arg6
} {
332 title = "NiGHTS check";
{ type = 11;
title = "Player Skin - Each Time"; enum
prefix = "(332)"; {
} 0 = "No check";
333 1 = "Trigger if player was not NiGHTS";
{ 2 = "Trigger if player was already NiGHTS";
title = "Player Skin - Once"; }
prefix = "(333)"; }
} arg7
399 {
{ title = "Flags";
title = "Level Load"; type = 12;
prefix = "(399)"; enum
} {
} 1 = "Only count bonus time laps";
2 = "Only trigger if final mare completed";
linedefexecsector }
{ }
title = "Linedef Executor (sector)";
400
{
title = "Set Tagged Sector's Floor Height/Texture";
prefix = "(400)";
}
401
{
title = "Set Tagged Sector's Ceiling Height/Texture";
prefix = "(401)";
}
402
{
title = "Set Tagged Sector's Light Level";
prefix = "(402)";
}
409
{
title = "Change Tagged Sector's Tag";
prefix = "(409)";
}
410
{
title = "Change Front Sector's Tag";
prefix = "(410)";
}
416
{
title = "Start Adjustable Flickering Light";
prefix = "(416)";
}
417
{
title = "Start Adjustable Pulsating Light";
prefix = "(417)";
}
418
{
title = "Start Adjustable Blinking Light (unsynchronized)";
prefix = "(418)";
}
419
{
title = "Start Adjustable Blinking Light (synchronized)";
prefix = "(419)";
}
420
{
title = "Fade Light Level";
prefix = "(420)";
}
421
{
title = "Stop Lighting Effect";
prefix = "(421)";
}
435
{
title = "Change Plane Scroller Direction";
prefix = "(435)";
}
}
linedefexecplane
{
title = "Linedef Executor (plane movement)";
403
{
title = "Move Tagged Sector's Floor";
prefix = "(403)";
}
404
{
title = "Move Tagged Sector's Ceiling";
prefix = "(404)";
}
405
{
title = "Move Floor According to Front Texture Offsets";
prefix = "(405)";
}
407
{
title = "Move Ceiling According to Front Texture Offsets";
prefix = "(407)";
}
411
{
title = "Stop Plane Movement";
prefix = "(411)";
}
428
{
title = "Start Platform Movement";
prefix = "(428)";
}
429
{
title = "Crush Ceiling Once";
prefix = "(429)";
}
430
{
title = "Crush Floor Once";
prefix = "(430)";
}
431
{
title = "Crush Floor and Ceiling Once";
prefix = "(431)";
}
}
linedefexecplayer
{
title = "Linedef Executor (player/object)";
412
{
title = "Teleporter";
prefix = "(412)";
}
425
{
title = "Change Object State";
prefix = "(425)";
}
426
{
title = "Stop Object";
prefix = "(426)";
}
427
{
title = "Award Score";
prefix = "(427)";
}
432
{
title = "Enable/Disable 2D Mode";
prefix = "(432)";
}
433
{
title = "Enable/Disable Gravity Flip";
prefix = "(433)";
}
434
{
title = "Award Power-Up";
prefix = "(434)";
}
437
{
title = "Disable Player Control";
prefix = "(437)";
}
438
{
title = "Change Object Size";
prefix = "(438)";
}
442
{
title = "Change Object Type State";
prefix = "(442)";
}
457
{
title = "Track Object's Angle";
prefix = "(457)";
}
458
{
title = "Stop Tracking Object's Angle";
prefix = "(458)";
}
460
{
title = "Award Rings";
prefix = "(460)";
}
461
{
title = "Spawn Object";
prefix = "(461)";
}
462
{
title = "Stop Timer/Exit Stage in Record Attack";
prefix = "(462)";
}
}
linedefexecmisc
{
title = "Linedef Executor (misc.)";
413
{
title = "Change Music";
prefix = "(413)";
}
414
{
title = "Play Sound Effect";
prefix = "(414)";
}
415
{
title = "Run Script";
prefix = "(415)";
}
422
{
title = "Switch to Cut-Away View";
prefix = "(422)";
}
423
{
title = "Change Sky";
prefix = "(423)";
}
424
{
title = "Change Weather";
prefix = "(424)";
}
436
{
title = "Shatter FOF";
prefix = "(436)";
}
439
{
title = "Change Tagged Linedef's Textures";
prefix = "(439)";
}
440
{
title = "Start Metal Sonic Race";
prefix = "(440)";
}
441
{
title = "Condition Set Trigger";
prefix = "(441)";
}
443
{
title = "Call Lua Function";
prefix = "(443)";
}
444
{
title = "Earthquake";
prefix = "(444)";
}
445
{
title = "Make FOF Disappear/Reappear";
prefix = "(445)";
}
446
{
title = "Make FOF Crumble";
prefix = "(446)";
}
447
{
title = "Change Tagged Sector's Colormap";
prefix = "(447)";
}
448
{
title = "Change Skybox";
prefix = "(448)";
} }
449 325
{ {
title = "Enable Bosses with Parameter"; title = "De-NiGHTSerize";
prefix = "(449)"; arg0
{
title = "Trigger type";
type = 11;
enum
{
0 = "Each time";
1 = "Once";
}
}
arg1
{
title = "Mare number";
}
arg2
{
title = "Lap number";
}
arg3
{
title = "Mare comparison";
type = 11;
enum = "comparison";
}
arg4
{
title = "Lap comparison";
type = 11;
enum = "comparison";
}
arg5
{
title = "Compared player";
type = 11;
enum
{
0 = "Fastest";
1 = "Slowest";
2 = "Triggerer";
}
}
arg6
{
title = "NiGHTS check";
type = 11;
enum
{
0 = "No check";
1 = "Trigger if nobody is now NiGHTS";
2 = "Trigger if somebody is still NiGHTS";
}
}
arg7
{
title = "Only bonus laps?";
type = 11;
enum = "noyes";
}
} }
450 327
{ {
title = "Execute Linedef Executor (specific tag)"; title = "NiGHTS Lap";
prefix = "(450)"; arg0
{
title = "Trigger type";
type = 11;
enum
{
0 = "Each time";
1 = "Once";
}
}
arg1
{
title = "Mare number";
}
arg2
{
title = "Lap number";
}
arg3
{
title = "Mare comparison";
type = 11;
enum = "comparison";
}
arg4
{
title = "Lap comparison";
type = 11;
enum = "comparison";
}
arg5
{
title = "Compared player";
type = 11;
enum
{
0 = "Fastest";
1 = "Slowest";
2 = "Triggerer";
}
}
arg6
{
title = "Only bonus laps?";
type = 11;
enum = "noyes";
}
} }
451 329
{ {
title = "Execute Linedef Executor (random tag in range)"; title = "Ideya Capture Touch";
prefix = "(451)"; arg0
{
title = "Trigger type";
type = 11;
enum
{
0 = "Each time";
1 = "Once";
}
}
arg1
{
title = "Mare number";
}
arg2
{
title = "Lap number";
}
arg3
{
title = "Mare comparison";
type = 11;
enum = "comparison";
}
arg4
{
title = "Lap comparison";
type = 11;
enum = "comparison";
}
arg5
{
title = "Compared player";
type = 11;
enum
{
0 = "Fastest";
1 = "Slowest";
2 = "Triggerer";
}
}
arg6
{
title = "Spheres check";
type = 11;
enum
{
0 = "Trigger if enough spheres";
1 = "Trigger if not enough spheres";
2 = "Trigger regardless of spheres";
}
}
arg7
{
title = "Flags";
type = 12;
enum
{
1 = "Only count bonus time laps";
2 = "Trigger upon entering Ideya Capture";
}
}
} }
452
331
{ {
title = "Set FOF Translucency"; title = "Player Skin";
prefix = "(452)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Invert choice?";
type = 11;
enum = "noyes";
}
stringarg0
{
title = "Skin name";
type = 2;
}
} }
453
334
{ {
title = "Fade FOF"; title = "Object Dye";
prefix = "(453)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Invert choice?";
type = 11;
enum = "noyes";
}
stringarg0
{
title = "Color";
type = 2;
}
} }
454
337
{ {
title = "Stop Fading FOF"; title = "Emerald Check";
prefix = "(454)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Emeralds";
type = 12;
enum
{
1 = "Emerald 1";
2 = "Emerald 2";
4 = "Emerald 3";
8 = "Emerald 4";
16 = "Emerald 5";
32 = "Emerald 6";
64 = "Emerald 7";
}
}
arg2
{
title = "Check if";
type = 11;
enum = "flagcheck";
}
} }
455
340
{ {
title = "Fade Tagged Sector's Colormap"; title = "NiGHTS Mare";
prefix = "(455)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Mare";
}
arg2
{
title = "Comparison";
type = 11;
enum = "comparison";
}
} }
456
343
{ {
title = "Stop Fading Tagged Sector's Colormap"; title = "Gravity Check";
prefix = "(456)"; arg0
{
title = "Trigger type";
type = 11;
enum = "triggertype";
}
arg1
{
title = "Gravity";
type = 11;
enum
{
0 = "Normal gravity";
1 = "Reverse gravity";
2 = "Reverse gravity (no MF2_OBJECTFLIP)";
}
}
} }
459
399
{ {
title = "Control Text Prompt"; title = "Level Load";
prefix = "(459)";
} }
} }
linedefexecpoly linedefexecsector
{ {
title = "Linedef Executor (polyobject)"; title = "Linedef Executor (sector)";
480 400
{ {
title = "Door Slide"; title = "Set Tagged Sector's Heights/Textures";
prefix = "(480)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
arg2
{
title = "Set flats?";
type = 11;
enum = "noyes";
}
} }
481
402
{ {
title = "Door Swing"; title = "Copy Light Level to Tagged Sectors";
prefix = "(481)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Flags";
type = 12;
enum
{
1 = "Don't copy main light level";
2 = "Don't copy floor light level";
4 = "Don't copy ceiling light level";
}
}
} }
482
408
{ {
title = "Move"; title = "Set Tagged Sector's Flats";
prefix = "(482)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
} }
483
409
{ {
title = "Move, Override"; title = "Change Tagged Sector's Tag";
prefix = "(483)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Tag";
type = 13;
}
arg2
{
title = "Behavior";
type = 11;
enum
{
0 = "Add tag";
1 = "Remove tag";
2 = "Replace first tag";
3 = "Change trigger tag";
}
}
} }
484
410
{ {
title = "Rotate Right"; title = "Change Front Sector's Tag";
prefix = "(484)"; arg0
{
title = "Tag";
type = 13;
}
arg1
{
title = "Behavior";
type = 11;
enum
{
0 = "Add tag";
1 = "Remove tag";
2 = "Replace first tag";
3 = "Change trigger tag";
}
}
} }
485
416
{ {
title = "Rotate Right, Override"; title = "Start Adjustable Flickering Light";
prefix = "(485)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
}
arg2
{
title = "Brightness 1";
}
arg3
{
title = "Use target brightness?";
type = 11;
enum = "noyes";
}
arg4
{
title = "Brightness 2";
}
} }
486
417
{ {
title = "Rotate Left"; title = "Start Adjustable Pulsating Light";
prefix = "(486)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
}
arg2
{
title = "Brightness 1";
}
arg3
{
title = "Use target brightness?";
type = 11;
enum = "noyes";
}
arg4
{
title = "Brightness 2";
}
} }
487
418
{ {
title = "Rotate Left, Override"; title = "Start Adjustable Blinking Light";
prefix = "(487)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Brightness 1 tics";
}
arg2
{
title = "Brightness 2 tics";
}
arg3
{
title = "Brightness 1";
}
arg4
{
title = "Flags";
type = 12;
enum
{
1 = "Use target brightness";
2 = "Synchronized";
}
}
arg5
{
title = "Brightness 2";
}
} }
488
420
{ {
title = "Move by Waypoints"; title = "Fade Light Level";
prefix = "(488)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Destination light level";
}
arg2
{
title = "Fading speed";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Add to current light level";
2 = "Interrupt ongoing fades";
4 = "Speed is duration";
}
}
} }
489
421
{ {
title = "Turn Invisible, Intangible"; title = "Stop Lighting Effect";
prefix = "(489)"; arg0
{
title = "Target sector tag";
type = 13;
}
} }
490
435
{ {
title = "Turn Visible, Tangible"; title = "Change Plane Scroller Direction";
prefix = "(490)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
} }
491
467
{ {
title = "Set Translucency"; title = "Set Tagged Sector's Light Level";
prefix = "(491)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Light level";
}
arg2
{
title = "Affected area";
type = 11;
enum
{
0 = "Sector";
1 = "Floor";
2 = "Ceiling";
}
}
arg3
{
title = "Set/Add?";
type = 11;
enum = "setadd";
}
} }
492
469
{ {
title = "Fade Translucency"; title = "Change Tagged Sector's Gravity";
prefix = "(492)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Set/Multiply?";
type = 11;
enum
{
0 = "Set";
1 = "Multiply";
}
}
arg2
{
title = "Flip flag";
type = 11;
enum
{
0 = "Don't change";
1 = "Set";
2 = "Remove";
}
}
arg3
{
title = "Override gravity?";
type = 11;
enum
{
0 = "No";
1 = "Yes";
}
}
stringarg0
{
title = "Gravity value";
type = 2;
}
} }
} }
wallscroll linedefexecplane
{ {
title = "Wall Scrolling"; title = "Linedef Executor (plane movement)";
500 403
{
title = "Scroll Wall Front Side Left";
prefix = "(500)";
}
501
{
title = "Scroll Wall Front Side Right";
prefix = "(501)";
}
502
{ {
title = "Scroll Wall According to Linedef"; title = "Move Tagged Sector's Planes";
prefix = "(502)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
arg2
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Linedef executor tag";
type = 15;
}
arg4
{
title = "Set flats?";
type = 11;
enum = "noyes";
}
} }
503
405
{ {
title = "Scroll Wall According to Linedef (Accelerative)"; title = "Move Planes by Set Distance";
prefix = "(503)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
arg2
{
title = "Distance";
}
arg3
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg4
{
title = "Instant?";
type = 11;
enum = "noyes";
}
} }
504
411
{ {
title = "Scroll Wall According to Linedef (Displacement)"; title = "Stop Plane Movement";
prefix = "(504)"; arg0
{
title = "Target sector tag";
type = 13;
}
} }
505
428
{ {
title = "Scroll Texture by Front Side Offsets"; title = "Start Platform Movement";
prefix = "(505)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Starting delay (tics)";
}
arg3
{
title = "Delay before flip (tics)";
}
arg4
{
title = "Starting direction";
type = 11;
enum
{
0 = "Down";
1 = "Up";
}
}
} }
506
429
{ {
title = "Scroll Texture by Back Side Offsets"; title = "Crush Planes Once";
prefix = "(506)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
arg2
{
title = "Crush speed";
tooltip = "In fracunits per tic.";
}
arg3
{
title = "Retract speed";
tooltip = "In fracunits per tic.";
}
} }
} }
planescroll linedefexecplayer
{ {
title = "Plane Scrolling"; title = "Linedef Executor (player/object)";
510 412
{ {
title = "Scroll Floor Texture"; title = "Teleporter";
prefix = "(510)"; arg0
{
title = "Destination thing tag";
type = 14;
}
arg1
{
title = "Flags";
type = 12;
enum
{
1 = "Silent";
2 = "Keep angle";
4 = "Keep momentum";
8 = "Relative silent";
}
}
arg2
{
title = "X offset";
}
arg3
{
title = "Y offset";
}
arg4
{
title = "Z offset";
}
} }
511
425
{ {
title = "Scroll Floor Texture (Accelerative)"; title = "Change Object State";
prefix = "(511)"; stringarg0
{
title = "State";
type = 2;
}
} }
512
426
{ {
title = "Scroll Floor Texture (Displacement)"; title = "Stop Object";
prefix = "(512)"; arg0
{
title = "Move to center?";
type = 11;
enum = "noyes";
}
} }
513
427
{ {
title = "Scroll Ceiling Texture"; title = "Award Score";
prefix = "(513)"; arg0
{
title = "Score";
}
} }
514
432
{ {
title = "Scroll Ceiling Texture (Accelerative)"; title = "Enable/Disable 2D Mode";
prefix = "(514)"; arg0
{
title = "Mode";
type = 11;
enum
{
0 = "2D";
1 = "3D";
}
}
} }
515
433
{ {
title = "Scroll Ceiling Texture (Displacement)"; title = "Enable/Disable Gravity Flip";
prefix = "(515)"; arg0
{
title = "Set gravity";
type = 11;
enum
{
0 = "Reverse";
1 = "Normal";
}
}
arg1
{
title = "Invert current gravity";
type = 11;
enum
{
0 = "No";
1 = "Yes";
}
}
arg2
{
title = "Force MFE_VERTICALFLIP";
type = 11;
enum
{
0 = "No";
1 = "Yes";
}
}
} }
520
434
{ {
title = "Carry Objects on Floor"; title = "Award Power-Up";
prefix = "(520)"; stringarg0
{
title = "Power";
type = 2;
}
stringarg1
{
title = "Duration/Amount";
type = 2;
}
} }
521
437
{ {
title = "Carry Objects on Floor (Accelerative)"; title = "Disable Player Control";
prefix = "(521)"; arg0
{
title = "Time";
}
arg1
{
title = "Allow jumping?";
type = 11;
enum = "noyes";
}
} }
522
438
{ {
title = "Carry Objects on Floor (Displacement)"; title = "Change Object Size";
prefix = "(522)"; arg0
{
title = "Size (%)";
default = 100;
}
} }
523
442
{ {
title = "Carry Objects on Ceiling"; title = "Change Object Type State";
prefix = "(523)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Change to";
type = 11;
enum
{
0 = "Specified state";
1 = "Next state";
}
}
stringarg0
{
title = "Object type";
type = 2;
}
stringarg1
{
title = "State";
type = 2;
}
} }
524
457
{ {
title = "Carry Objects on Ceiling (Accelerative)"; title = "Track Object's Angle";
prefix = "(524)"; arg0
{
title = "Anchor tag";
type = 14;
}
arg1
{
title = "Angle tolerance";
type = 8;
}
arg2
{
title = "Time tolerance";
}
arg3
{
title = "Trigger linedef tag";
type = 15;
}
arg4
{
title = "Track after failure?";
type = 11;
enum = "noyes";
}
} }
525
458
{ {
title = "Carry Objects on Ceiling (Displacement)"; title = "Stop Tracking Object's Angle";
prefix = "(525)";
} }
530
460
{ {
title = "Scroll Floor Texture and Carry Objects"; title = "Award Rings";
prefix = "(530)"; arg0
{
title = "Rings";
}
arg1
{
title = "Periodicity";
}
} }
531
461
{ {
title = "Scroll Floor Texture and Carry Objects (Accelerative)"; title = "Spawn Object";
prefix = "(531)"; arg0
{
title = "X position";
}
arg1
{
title = "Y position";
}
arg2
{
title = "Z position";
}
arg3
{
title = "Angle";
type = 8;
}
arg4
{
title = "Randomize position?";
type = 11;
enum = "noyes";
}
arg5
{
title = "Max X position";
}
arg6
{
title = "Max Y position";
}
arg7
{
title = "Max Z position";
}
stringarg0
{
title = "Object type";
type = 2;
}
} }
532
462
{ {
title = "Scroll Floor Texture and Carry Objects (Displacement)"; title = "Stop Timer/Exit Stage in Record Attack";
prefix = "(532)";
} }
533
463
{ {
title = "Scroll Ceiling Texture and Carry Objects"; title = "Dye Object";
prefix = "(533)"; stringarg0
{
title = "Skin color";
type = 2;
}
} }
534
464
{ {
title = "Scroll Ceiling Texture and Carry Objects (Accelerative)"; title = "Trigger Egg Capsule";
prefix = "(534)"; arg0
{
title = "Egg Capsule tag";
type = 14;
}
arg1
{
title = "End level?";
type = 11;
enum = "yesno";
}
} }
535
466
{ {
title = "Scroll Ceiling Texture and Carry Objects (Displacement)"; title = "Set Level Failure State";
prefix = "(535)"; arg0
{
title = "State";
type = 11;
enum
{
0 = "Failure";
1 = "Success";
}
}
} }
} }
pusher linedefexecmisc
{ {
title = "Pusher"; title = "Linedef Executor (misc.)";
541 413
{
title = "Wind";
prefix = "(541)";
}
542
{
title = "Upwards Wind";
prefix = "(542)";
}
543
{ {
title = "Downwards Wind"; title = "Change Music";
prefix = "(543)"; arg0
{
title = "Flags";
type = 12;
enum
{
1 = "For all players";
2 = "Seek offset from current position";
4 = "Fade to custom volume";
8 = "Don't reload after death";
16 = "Force music reload";
32 = "Don't loop";
}
}
arg1
{
title = "Position";
}
arg2
{
title = "Fade out time";
}
arg3
{
title = "Fade in time";
}
arg4
{
title = "Fade destination volume";
}
arg5
{
title = "Fade start volume";
default = -1;
}
arg6
{
title = "Track number";
}
stringarg0
{
title = "Music name";
tooltip = "Takes a music lump name, without the O_ or D_ prefix. Use - to disable music.\nExample: GFZ1";
type = 2;
}
} }
544
414
{ {
title = "Current"; title = "Play Sound Effect";
prefix = "(544)"; arg0
{
title = "Source";
type = 11;
enum
{
0 = "Triggering object";
1 = "Trigger sector";
2 = "Nowhere";
3 = "Tagged sectors";
}
}
arg1
{
title = "Listener";
type = 11;
enum
{
0 = "Triggering player";
1 = "Everyone";
2 = "Everyone touching tagged sectors";
}
}
arg2
{
title = "Target sector tag";
type = 13;
}
stringarg0
{
title = "Sound name";
tooltip = "Takes a DS constant.\nExample: DSTHOK";
type = 2;
}
} }
545
415
{ {
title = "Upwards Current"; title = "Run Script";
prefix = "(545)"; stringarg0
{
title = "Lump name";
type = 2;
}
} }
546
422
{ {
title = "Downwards Current"; title = "Switch to Cut-Away View";
prefix = "(546)"; arg0
{
title = "Viewpoint tag";
type = 14;
}
arg1
{
title = "Time";
}
} }
547
423
{ {
title = "Push/Pull"; title = "Change Sky";
prefix = "(547)"; arg0
{
title = "Sky number";
}
arg1
{
title = "For all players?";
type = 11;
enum = "noyes";
}
} }
}
light
{
title = "Lighting";
600 424
{ {
title = "Floor Lighting"; title = "Change Weather";
prefix = "(600)"; arg0
{
title = "Weather";
type = 11;
enum
{
0 = "None";
1 = "Storm (thunder, lightning and rain)";
2 = "Snow";
3 = "Rain";
4 = "Preloaded";
5 = "Storm (no rain)";
6 = "Storm (no lightning)";
}
}
arg1
{
title = "For all players?";
type = 11;
enum = "noyes";
}
} }
601
436
{ {
title = "Ceiling Lighting"; title = "Shatter FOF";
prefix = "(601)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
} }
602
439
{ {
title = "Adjustable Pulsating Light"; title = "Change Tagged Linedef's Textures";
prefix = "(602)"; arg0
{
title = "Target linedef tag";
type = 15;
}
arg1
{
title = "Affected sides";
type = 11;
enum = "frontbackboth";
}
arg2
{
title = "Change unset textures?";
type = 11;
enum = "yesno";
}
arg3
{
title = "Use backside textures?";
type = 11;
enum = "noyes";
}
} }
603
440
{ {
title = "Adjustable Flickering Light"; title = "Start Metal Sonic Race";
prefix = "(603)";
} }
604
441
{ {
title = "Adjustable Blinking Light (unsynchronized)"; title = "Condition Set Trigger";
prefix = "(604)"; arg0
{
title = "Trigger number";
}
} }
605
443
{ {
title = "Adjustable Blinking Light (synchronized)"; title = "Call Lua Function";
prefix = "(605)"; stringarg0
{
title = "Function name";
type = 2;
}
} }
606
444
{ {
title = "Colormap"; title = "Earthquake";
prefix = "(606)"; arg0
{
title = "Duration";
}
arg1
{
title = "Intensity";
}
} }
}
slope
{
title = "Slope";
700 445
{ {
title = "Slope Frontside Floor"; title = "Make FOF Disappear/Reappear";
prefix = "(700)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "Effect";
type = 11;
enum
{
0 = "Disappear";
1 = "Reappear";
}
}
} }
701
446
{ {
title = "Slope Frontside Ceiling"; title = "Make FOF Crumble";
prefix = "(701)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "Respawn?";
type = 11;
enum
{
0 = "Yes";
1 = "No";
2 = "Unless FF_NORETURN";
3 = "Only if FF_NORETURN";
}
}
} }
702
447
{ {
title = "Slope Frontside Floor and Ceiling"; title = "Change Tagged Sector's Colormap";
prefix = "(702)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Colormap sector tag";
type = 13;
}
arg2
{
title = "Flags";
type = 12;
enum
{
1 = "Add to existing colormap";
2 = "Subtract light R";
4 = "Subtract light G";
8 = "Subtract light B";
16 = "Subtract light A";
32 = "Subtract fade R";
64 = "Subtract fade G";
128 = "Subtract fade B";
256 = "Subtract fade A";
512 = "Subtract fadestart";
1024 = "Subtract fadeend";
2048 = "Ignore flags";
}
}
} }
703
{ 448
title = "Slope Frontside Floor and Backside Ceiling";
prefix = "(703)";
´ }
704
{ {
title = "Slope Frontside Floor by 3 Tagged Vertex Things"; title = "Change Skybox";
prefix = "(704)"; arg0
{
title = "Viewpoint thing tag";
}
arg1
{
title = "Centerpoint thing tag";
}
arg2
{
title = "Change?";
type = 11;
enum
{
0 = "Viewpoint";
1 = "Centerpoint";
2 = "Both";
}
}
arg3
{
title = "For all players?";
type = 11;
enum = "noyes";
}
} }
705
449
{ {
title = "Slope Frontside Ceiling by 3 Tagged Vertex Things"; title = "Enable Bosses with Parameter";
prefix = "(705)"; arg0
{
title = "Boss ID";
}
arg1
{
title = "Effect";
type = 11;
enum
{
0 = "Enable";
1 = "Disable";
}
}
} }
710
450
{ {
title = "Slope Backside Floor"; title = "Execute Linedef Executor (specific tag)";
prefix = "(710)"; arg0
{
title = "Trigger linedef tag";
type = 15;
}
} }
711
451
{ {
title = "Slope Backside Ceiling"; title = "Execute Linedef Executor (random tag in range)";
prefix = "(711)"; arg0
{
title = "Start of tag range";
type = 15;
}
arg1
{
title = "End of tag range";
type = 15;
}
} }
712
452
{ {
title = "Slope Backside Floor and Ceiling"; title = "Set FOF Translucency";
prefix = "(712)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "Alpha";
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Add to current translucency";
2 = "Don't handle FF_TRANSLUCENT";
}
}
} }
713
453
{ {
title = "Slope Backside Floor and Frontside Ceiling"; title = "Fade FOF";
prefix = "(713)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "Alpha";
tooltip = "Ranges from 0 (fully transparent) to 255 (fully opaque).";
}
arg3
{
title = "Fading speed (tics)";
}
arg4
{
title = "Flags";
type = 12;
enum
{
1 = "Add to current translucency";
2 = "Interrupt ongoing fades";
4 = "Speed is duration";
8 = "Don't change collision";
16 = "No collision during fade";
32 = "Don't handle FF_TRANSLUCENT";
64 = "Don't handle FF_EXISTS";
128 = "Don't fade lighting";
256 = "Don't fade colormap";
512 = "Use exact alpha in OpenGL";
}
}
} }
714
454
{ {
title = "Slope Backside Floor by 3 Tagged Vertex Things"; title = "Stop Fading FOF";
prefix = "(714)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Control sector tag";
type = 13;
}
arg2
{
title = "Finalize collision?";
type = 11;
enum = "yesno";
}
} }
715
455
{ {
title = "Slope Backside Ceiling by 3 Tagged Vertex Things"; title = "Fade Tagged Sector's Colormap";
prefix = "(715)"; arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Colormap sector tag";
type = 13;
}
arg2
{
title = "Fade duration";
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Add to existing colormap";
2 = "Subtract light R";
4 = "Subtract light G";
8 = "Subtract light B";
16 = "Subtract light A";
32 = "Subtract fade R";
64 = "Subtract fade G";
128 = "Subtract fade B";
256 = "Subtract fade A";
512 = "Subtract fadestart";
1024 = "Subtract fadeend";
2048 = "Ignore flags";
4096 = "Fade from invisible black";
8192 = "Interrupt ongoing fades";
}
}
} }
720
456
{ {
title = "Copy Frontside Floor Slope from Line Tag"; title = "Stop Fading Tagged Sector's Colormap";
prefix = "(720)"; arg0
{
title = "Target sector tag";
type = 13;
}
} }
721
459
{ {
title = "Copy Frontside Ceiling Slope from Line Tag"; title = "Control Text Prompt";
prefix = "(721)"; arg0
{
title = "Prompt number";
}
arg1
{
title = "Page number";
}
arg2
{
title = "Flags";
type = 11;
enum
{
1 = "Close current text prompt";
2 = "Trigger linedef executor on close";
4 = "Find prompt by name";
8 = "Don't disable controls";
}
}
arg3
{
title = "Trigger linedef tag";
type = 15;
}
stringarg0
{
title = "Prompt name";
type = 2;
}
} }
722
465
{ {
title = "Copy Frontside Floor and Ceiling Slope from Line Tag"; title = "Set Linedef Executor Delay";
prefix = "(722)"; arg0
{
title = "Linedef tag";
type = 15;
}
arg1
{
title = "Value";
}
arg2
{
title = "Set/Add?";
type = 11;
enum = "setadd";
}
} }
799
468
{ {
title = "Set Tagged Dynamic Slope Vertex to Front Sector Height"; title = "Change Linedef Argument";
prefix = "(799)"; arg0
{
title = "Linedef tag";
type = 15;
}
arg1
{
title = "Argument";
}
arg2
{
title = "Value";
}
arg3
{
title = "Set/Add?";
type = 11;
enum = "setadd";
}
} }
} }
transwall linedefexecpoly
{ {
title = "Translucent Wall"; title = "Linedef Executor (polyobject)";
900 480
{
title = "90% Opaque";
prefix = "(900)";
}
901
{
title = "80% Opaque";
prefix = "(901)";
}
902
{
title = "70% Opaque";
prefix = "(902)";
}
903
{
title = "60% Opaque";
prefix = "(903)";
}
904
{
title = "50% Opaque";
prefix = "(904)";
}
905
{
title = "40% Opaque";
prefix = "(905)";
}
906
{
title = "30% Opaque";
prefix = "(906)";
}
907
{
title = "20% Opaque";
prefix = "(907)";
}
908
{ {
title = "10% Opaque"; title = "PolyObject Door Slide";
prefix = "(908)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Distance";
}
arg3
{
title = "Return delay (tics)";
}
} }
909
481
{ {
title = "Fog Wall"; title = "PolyObject Door Swing";
prefix = "(909)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Rotation";
type = 8;
}
arg3
{
title = "Return delay (tics)";
}
} }
}
}
udmf
{
misc
{
title = "Miscellaneous";
0 482
{ {
title = "None"; title = "Move PolyObject";
prefix = "(0)"; arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In fracunits per tic.";
}
arg2
{
title = "Distance";
}
arg3
{
title = "Override?";
type = 11;
enum = "noyes";
}
} }
}
polyobject 484
{ {
title = "PolyObject"; title = "Rotate PolyObject";
arg0
{
title = "PolyObject tag";
type = 14;
}
arg1
{
title = "Speed";
tooltip = "In degrees per tic.";
}
arg2
{
title = "Rotation";
tooltip = "How many degrees the PolyObject will rotate.";
type = 8;
}
arg3
{
title = "Flags";
type = 12;
enum
{
1 = "Don't turn others";
2 = "Turn players";
4 = "Continuous rotation";
8 = "Override";
}
}
}
20 488
{ {
title = "First Line"; title = "Move PolyObject by Waypoints";
prefix = "(20)";
arg0 arg0
{ {
title = "PolyObject ID"; title = "PolyObject tag";
type = 14; type = 14;
} }
arg1 arg1
{ {
title = "Parent ID"; title = "Speed";
type = 14; tooltip = "In fracunits per tic.";
} }
arg2 arg2
{ {
title = "Translucency"; title = "Waypoint sequence";
tooltip = "The sequence number of (zoom tube) waypoints to use.";
} }
arg3 arg3
{ {
title = "Flags"; title = "Return behavior";
type = 12; type = 11;
enum enum
{ {
1 = "Don't render insides"; 0 = "Don't return";
2 = "Intangible"; 1 = "Return to first waypoint";
4 = "Stopped by pushables"; 2 = "Repeat sequence in reverse";
8 = "Don't render planes";
16 = "Trigger linedef executor on touch";
32 = "Crush player";
64 = "Cut cyan flat pixels";
} }
} }
arg4 arg4
{ {
title = "Trigger linedef tag"; title = "Flags";
type = 15; type = 12;
enum
{
1 = "Move in reverse";
2 = "Loop movement";
}
} }
} }
}
fof
{
title = "FOF";
100 489
{ {
title = "Solid"; title = "Set PolyObject Visibility/Tangibility";
prefix = "(100)";
arg0 arg0
{ {
title = "Target sector tag"; title = "PolyObject tag";
type = 13; type = 14;
} }
arg1 arg1
{ {
title = "Visibility"; title = "Visibility";
type = 12; type = 11;
enum enum
{ {
1 = "Don't render planes"; 0 = "No change";
2 = "Don't render sides"; 1 = "Visible";
2 = "Invisible";
} }
} }
arg2 arg2
{ {
title = "Translucency"; title = "Tangibility";
type = 11; type = 11;
enum enum
{ {
0 = "Opaque"; 0 = "No change";
1 = "Translucent, no insides"; 1 = "Tangible";
2 = "Translucent, render insides"; 2 = "Intangible";
} }
} }
arg3 }
491
{
title = "Set PolyObject Translucency";
arg0
{ {
title = "Tangibility"; title = "PolyObject tag";
type = 12; type = 14;
enum = "tangibility";
} }
arg4 arg1
{
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg2
{ {
title = "Cast shadow?"; title = "Set/Add?";
type = 11; type = 11;
enum = "yesno"; enum = "setadd";
} }
} }
120 492
{ {
title = "Water"; title = "Fade PolyObject Translucency";
prefix = "(120)";
arg0 arg0
{ {
title = "Target sector tag"; title = "PolyObject tag";
type = 13; type = 14;
} }
arg1 arg1
{
title = "Translucency level";
tooltip = "Ranges from 0 (fully opaque) to 10 (fully transparent).";
}
arg2
{
title = "Fading speed";
}
arg3
{ {
title = "Flags"; title = "Flags";
type = 12; type = 12;
enum enum
{ {
1 = "Opaque"; 1 = "Add to current translucency";
2 = "Don't render sides"; 2 = "Interrupt ongoing fades";
4 = "Render separate light level"; 4 = "Speed is duration";
8 = "Use target light level"; 8 = "Don't change collision";
16 = "No ripple effect"; 16 = "No collision during fade";
32 = "Goo physics";
} }
} }
} }
} }
linedefexecmisc scrollpush
{ {
title = "Linedef Executor (misc.)"; title = "Scrollers and Pushers";
443 500
{ {
title = "Call Lua Function"; title = "Scroll Wall";
prefix = "(443)"; arg0
stringarg0
{ {
title = "Function name"; title = "Side";
type = 2; type = 11;
enum = "frontbackboth";
}
arg1
{
title = "Horizontal speed";
}
arg2
{
title = "Vertical speed";
} }
} }
447 502
{ {
title = "Change Tagged Sector's Colormap"; title = "Scroll Tagged Walls";
prefix = "(447)";
arg0 arg0
{ {
title = "Target sector tag"; title = "Linedef tag";
type = 13; type = 15;
} }
arg1 arg1
{ {
title = "Colormap sector tag"; title = "Side";
type = 11;
enum = "frontbackboth";
}
arg2
{
title = "Horizontal speed";
}
arg3
{
title = "Vertical speed";
}
arg4
{
title = "Type";
type = 11;
enum = "scrolltype";
}
}
510
{
title = "Scroll Planes";
arg0
{
title = "Sector tag";
type = 13; type = 13;
tooltip = "A tag of 0 will scroll the planes of this line's front sector.";
}
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
} }
arg2 arg2
{ {
title = "Flags"; title = "Scroll/Carry?";
type = 12; type = 11;
enum enum = "scrollcarry";
}
arg3
{
title = "Base speed";
}
arg4
{
title = "Type";
type = 26;
enum = "scrolltype";
flags
{ {
1 = "Add to existing colormap"; 4 = "Non-exclusive";
2 = "Subtract light R";
4 = "Subtract light G";
8 = "Subtract light B";
16 = "Subtract light A";
32 = "Subtract fade R";
64 = "Subtract fade G";
128 = "Subtract fade B";
256 = "Subtract fade A";
512 = "Subtract fadestart";
1024 = "Subtract fadeend";
2048 = "Ignore flags";
} }
} }
} }
455 541
{ {
title = "Fade Tagged Sector's Colormap"; title = "Wind/Current";
prefix = "(455)";
arg0 arg0
{ {
title = "Target sector tag"; title = "Sector tag";
type = 13; type = 13;
tooltip = "A tag of 0 will apply the effect to this line's front sector.";
} }
arg1 arg1
{ {
title = "Colormap sector tag"; title = "Horizontal speed";
type = 13;
} }
arg2 arg2
{ {
title = "Fade duration"; title = "Vertical speed";
} }
arg3 arg3
{
title = "Type";
type = 11;
enum
{
0 = "Wind";
1 = "Current";
}
}
arg4
{ {
title = "Flags"; title = "Flags";
type = 12; type = 12;
enum enum
{ {
1 = "Add to existing colormap"; 1 = "Slide";
2 = "Subtract light R"; 2 = "Non-exclusive";
4 = "Subtract light G";
8 = "Subtract light B";
16 = "Subtract light A";
32 = "Subtract fade R";
64 = "Subtract fade G";
128 = "Subtract fade B";
256 = "Subtract fade A";
512 = "Subtract fadestart";
1024 = "Subtract fadeend";
2048 = "Ignore flags";
4096 = "Fade from invisible black";
8192 = "Interrupt ongoing fades";
} }
} }
} }
}
456 light
{
title = "Lighting";
600
{ {
title = "Stop Fading Tagged Sector's Colormap"; title = "Copy Light Level to Tagged Sector's Planes";
prefix = "(456)";
arg0 arg0
{ {
title = "Target sector tag"; title = "Target sector tag";
type = 13; type = 13;
} }
arg1
{
title = "Affected planes";
type = 11;
enum = "floorceiling";
}
} }
465 602
{ {
title = "Set Linedef Executor Delay"; title = "Adjustable Pulsating Light";
prefix = "(465)";
arg0 arg0
{ {
title = "Linedef tag"; title = "Target sector tag";
type = 15; type = 13;
} }
arg1 arg1
{ {
title = "Value"; title = "Speed";
}
arg2
{
title = "Brightness 1";
}
arg3
{
title = "Use target brightness?";
type = 11;
enum = "noyes";
}
arg4
{
title = "Brightness 2";
}
}
603
{
title = "Adjustable Flickering Light";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Speed";
} }
arg2 arg2
{ {
title = "Set/add?"; title = "Brightness 1";
}
arg3
{
title = "Use target brightness?";
type = 11; type = 11;
enum = "noyes";
}
arg4
{
title = "Brightness 2";
}
}
604
{
title = "Adjustable Blinking Light";
arg0
{
title = "Target sector tag";
type = 13;
}
arg1
{
title = "Brightness 1 tics";
}
arg2
{
title = "Brightness 2 tics";
}
arg3
{
title = "Brightness 1";
}
arg4
{
title = "Flags";
type = 12;
enum enum
{ {
0 = "Set"; 1 = "Use target brightness";
1 = "Add"; 2 = "Synchronized";
} }
} }
arg5
{
title = "Brightness 2";
}
} }
}
light
{
606 606
{ {
title = "Copy Colormap"; title = "Copy Colormap";
prefix = "(606)";
arg0 arg0
{ {
title = "Target sector tag"; title = "Target sector tag";
...@@ -1791,7 +3784,6 @@ udmf ...@@ -1791,7 +3784,6 @@ udmf
700 700
{ {
title = "Create Sector-Based Slope"; title = "Create Sector-Based Slope";
prefix = "(700)";
id = "plane_align"; id = "plane_align";
arg0 arg0
{ {
...@@ -1813,6 +3805,7 @@ udmf ...@@ -1813,6 +3805,7 @@ udmf
{ {
1 = "No physics"; 1 = "No physics";
2 = "Dynamic"; 2 = "Dynamic";
4 = "Copy to other side";
} }
} }
} }
...@@ -1820,7 +3813,7 @@ udmf ...@@ -1820,7 +3813,7 @@ udmf
704 704
{ {
title = "Create Vertex-Based Slope"; title = "Create Vertex-Based Slope";
prefix = "(704)"; id = "srb2_vertexslope";
arg0 arg0
{ {
title = "Plane"; title = "Plane";
...@@ -1863,7 +3856,7 @@ udmf ...@@ -1863,7 +3856,7 @@ udmf
720 720
{ {
title = "Copy Slope"; title = "Copy Slope";
prefix = "(720)"; id = "plane_copy";
arg0 arg0
{ {
title = "Front floor tag"; title = "Front floor tag";
...@@ -1897,5 +3890,20 @@ udmf ...@@ -1897,5 +3890,20 @@ udmf
} }
} }
} }
799
{
title = "Set Tagged Dynamic Slope Vertex to Front Sector Height";
arg0
{
title = "Apply height";
type = 11;
enum
{
0 = "Absolute";
1 = "Relative";
}
}
}
} }
} }
\ No newline at end of file
linedefflags
{
1 = "[0] Impassable";
2 = "[1] Block Enemies";
4 = "[2] Double-Sided";
8 = "[3] Upper Unpegged";
16 = "[4] Lower Unpegged";
32 = "[5] Slope Skew (E1)";
64 = "[6] Not Climbable";
128 = "[7] No Midtexture Skew (E2)";
256 = "[8] Peg Midtexture (E3)";
512 = "[9] Solid Midtexture (E4)";
1024 = "[10] Repeat Midtexture (E5)";
2048 = "[11] Netgame Only";
4096 = "[12] No Netgame";
8192 = "[13] Effect 6";
16384 = "[14] Bouncy Wall";
32768 = "[15] Transfer Line";
}
// Linedef flags UDMF translation table // Linedef flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly // This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted // When the UDMF field name is prefixed with ! it is inverted
...@@ -42,7 +21,6 @@ linedefflagstranslation ...@@ -42,7 +21,6 @@ linedefflagstranslation
32768 = "transfer"; 32768 = "transfer";
} }
linedefflags_udmf linedefflags_udmf
{ {
blocking = "Impassable"; blocking = "Impassable";
...@@ -58,42 +36,103 @@ linedefflags_udmf ...@@ -58,42 +36,103 @@ linedefflags_udmf
wrapmidtex = "Repeat Midtexture"; wrapmidtex = "Repeat Midtexture";
netonly = "Netgame Only"; netonly = "Netgame Only";
nonet = "No Netgame"; nonet = "No Netgame";
effect6 = "Effect 6";
bouncy = "Bouncy Wall"; bouncy = "Bouncy Wall";
transfer = "Transfer Line"; transfer = "Transfer Line";
} }
/*linedefrenderstyles linedefrenderstyles
{ {
translucent = "Translucent"; translucent = "Translucent";
add = "Add";
subtract = "Subtract";
reversesubtract = "Reverse subtract";
modulate = "Modulate";
fog = "Fog"; fog = "Fog";
}*/ }
sectorflags sectorflags
{ {
colormapfog = "Fog Planes in Colormap"; invertprecip = "Invert Precipitation";
colormapfadesprites = "Fade Fullbright in Colormap"; gravityflip = "Flip Objects in Reverse Gravity";
colormapprotected = "Protected Colormap"; heatwave = "Heat Wave";
noclipcamera = "Intangible to the Camera";
colormapfog = "Fog Planes";
colormapfadesprites = "Fade Fullbright";
colormapprotected = "Protected from Tagging";
outerspace = "Space Countdown";
doublestepup = "Ramp Sector (double step-up/down)";
nostepdown = "Non-Ramp Sector (No step-down)";
speedpad = "Speed Pad";
starpostactivator = "Star Post Activator";
exit = "Exit";
specialstagepit = "Special Stage Pit";
returnflag = "Return Flag";
redteambase = "Red Team Base";
blueteambase = "Blue Team Base";
fan = "Fan Sector";
supertransform = "Super Sonic Transform";
forcespin = "Force Spin";
zoomtubestart = "Zoom Tube Start";
zoomtubeend = "Zoom Tube End";
finishline = "Circuit Finish Line";
ropehang = "Rope Hang";
jumpflip = "Flip Gravity on Jump";
gravityoverride = "Make Reverse Gravity Temporary";
nophysics_floor = "Disable Floor Slope Physics";
nophysics_ceiling = "Disable Ceiling Slope Physics";
flipspecial_nofloor = "No Trigger on Floor Touch";
flipspecial_ceiling = "Trigger on Ceiling Touch";
triggerspecial_touch = "Trigger on Edge Touch";
triggerspecial_headbump = "Trigger on Headbump";
triggerline_plane = "Linedef Trigger Requires Plane Touch";
triggerline_mobj = "Non-Pushables Can Trigger Linedef";
} }
thingflags sectorflagscategories
{ {
1 = "[1] Extra"; invertprecip = "regular";
2 = "[2] Flip"; gravityflip = "regular";
4 = "[4] Special"; heatwave = "regular";
8 = "[8] Ambush"; noclipcamera = "regular";
colormapfog = "colormap";
colormapfadesprites = "colormap";
colormapprotected = "colormap";
outerspace = "special";
doublestepup = "special";
nostepdown = "special";
speedpad = "special";
starpostactivator = "special";
exit = "special";
specialstagepit = "special";
returnflag = "special";
redteambase = "special";
blueteambase = "special";
fan = "special";
supertransform = "special";
forcespin = "special";
zoomtubestart = "special";
zoomtubeend = "special";
finishline = "special";
ropehang = "special";
jumpflip = "special";
gravityoverride = "special";
nophysics_floor = "special";
nophysics_ceiling = "special";
flipspecial_nofloor = "trigger";
flipspecial_ceiling = "trigger";
triggerspecial_touch = "trigger";
triggerspecial_headbump = "trigger";
triggerline_plane = "trigger";
triggerline_mobj = "trigger";
} }
// THING FLAGS // THING FLAGS
thingflags_udmf thingflags_udmf
{ {
extra = "Extra";
flip = "Flip"; flip = "Flip";
special = "Special"; absolutez = "Absolute Z height";
ambush = "Ambush";
} }
// Thing flags UDMF translation table // Thing flags UDMF translation table
// This is needed for copy/paste and prefabs to work properly // This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted // When the UDMF field name is prefixed with ! it is inverted
...@@ -103,9 +142,9 @@ thingflagstranslation ...@@ -103,9 +142,9 @@ thingflagstranslation
2 = "flip"; 2 = "flip";
4 = "special"; 4 = "special";
8 = "ambush"; 8 = "ambush";
16 = "absolutez";
} }
// DEFAULT SECTOR BRIGHTNESS LEVELS // DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness sectorbrightness
{ {
...@@ -144,6 +183,8 @@ sectorbrightness ...@@ -144,6 +183,8 @@ sectorbrightness
0; 0;
} }
numbrightnesslevels = 32;
/* /*
TEXTURES AND FLAT SOURCES TEXTURES AND FLAT SOURCES
This tells Doom Builder where to find the information for textures This tells Doom Builder where to find the information for textures
...@@ -192,74 +233,369 @@ Field data types: ...@@ -192,74 +233,369 @@ Field data types:
*/ */
universalfields universalfields
{ {
sector linedef
{ {
lightalpha alpha
{ {
type = 0; type = 1;
default = 25; default = 1.0;
} }
fadealpha comment
{ {
type = 0; type = 2;
default = 25; default = "";
} }
fadestart renderstyle
{
type = 2;
default = "";
}
stringarg0
{
type = 2;
default = "";
}
stringarg1
{
type = 2;
default = "";
}
executordelay
{ {
type = 0; type = 0;
default = 0; default = 0;
} }
}
fadeend sidedef
{
comment
{
type = 2;
default = "";
}
light
{ {
type = 0; type = 0;
default = 33; default = 0;
} }
foglighting lightabsolute
{ {
type = 3; type = 3;
default = false; default = false;
} }
//light_top
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_top
//{
// type = 3;
// default = false;
//}
//
//light_mid
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_mid
//{
// type = 3;
// default = false;
//}
//
//light_bottom
//{
// type = 0;
// default = 0;
//}
//
//lightabsolute_bottom
//{
// type = 3;
// default = false;
//}
offsetx_bottom
{
type = 1;
default = 0.0;
}
offsetx_mid
{
type = 1;
default = 0.0;
}
offsetx_top
{
type = 1;
default = 0.0;
}
offsety_bottom
{
type = 1;
default = 0.0;
}
offsety_mid
{
type = 1;
default = 0.0;
}
offsety_top
{
type = 1;
default = 0.0;
}
scalex_bottom
{
type = 1;
default = 1.0;
}
scalex_mid
{
type = 1;
default = 1.0;
}
scalex_top
{
type = 1;
default = 1.0;
}
scaley_bottom
{
type = 1;
default = 1.0;
}
scaley_mid
{
type = 1;
default = 1.0;
}
scaley_top
{
type = 1;
default = 1.0;
}
} }
linedef thing
{ {
arg5 comment
{
type = 2;
default = "";
}
pitch
{ {
type = 0; type = 0;
default = 0;
} }
roll
{
type = 0;
}
scalex
{
type = 1;
default = 1.0;
}
scaley
{
type = 1;
default = 1.0;
}
stringarg0 stringarg0
{ {
type = 2; type = 2;
default = ""; default = "";
} }
stringarg1 stringarg1
{ {
type = 2; type = 2;
default = ""; default = "";
} }
executordelay
mobjscale
{ {
type = 0; type = 1;
default = 0; default = 1.0;
managed = false;
} }
} }
sidedef sector
{ {
repeatcnt comment
{
type = 2;
default = "";
}
damagetype
{
type = 2;
default = "";
}
gravity
{
type = 1;
default = 1.0;
}
lightcolor
{ {
type = 0; type = 0;
default = 0; default = 0;
} }
}
thing fadecolor
{ {
type = 0;
default = 0;
}
lightalpha
{
type = 0;
default = 25;
}
fadealpha
{
type = 0;
default = 25;
}
fadestart
{
type = 0;
default = 0;
}
fadeend
{
type = 0;
default = 31;
}
xpanningfloor
{
type = 1;
default = 0.0;
}
ypanningfloor
{
type = 1;
default = 0.0;
}
rotationfloor
{
type = 1;
default = 0.0;
}
xscalefloor
{
type = 1;
default = 1.0;
}
yscalefloor
{
type = 1;
default = 1.0;
}
lightfloor
{
type = 0;
default = 0;
}
lightfloorabsolute
{
type = 3;
default = false;
}
xpanningceiling
{
type = 1;
default = 0.0;
}
ypanningceiling
{
type = 1;
default = 0.0;
}
rotationceiling
{
type = 1;
default = 0.0;
}
xscaleceiling
{
type = 1;
default = 1.0;
}
yscaleceiling
{
type = 1;
default = 1.0;
}
lightceiling
{
type = 0;
default = 0;
}
lightceilingabsolute
{
type = 3;
default = false;
}
triggertag
{
type = 0;
default = 0;
}
} }
} }
...@@ -278,87 +614,6 @@ allowempty = The nodebuilder is allowed to leave this lump empty. ...@@ -278,87 +614,6 @@ allowempty = The nodebuilder is allowed to leave this lump empty.
scriptbuild = This lump is a text-based script, which should be compiled using current script compiler; scriptbuild = This lump is a text-based script, which should be compiled using current script compiler;
script = This lump is a text-based script. Specify the filename of the script configuration to use. script = This lump is a text-based script. Specify the filename of the script configuration to use.
*/ */
doommaplumpnames
{
~MAP
{
required = true;
blindcopy = true;
nodebuild = false;
}
THINGS
{
required = true;
nodebuild = true;
allowempty = true;
}
LINEDEFS
{
required = true;
nodebuild = true;
allowempty = false;
}
SIDEDEFS
{
required = true;
nodebuild = true;
allowempty = false;
}
VERTEXES
{
required = true;
nodebuild = true;
allowempty = false;
}
SEGS
{
required = false;
nodebuild = true;
allowempty = false;
}
SSECTORS
{
required = false;
nodebuild = true;
allowempty = false;
}
NODES
{
required = false;
nodebuild = true;
allowempty = false;
}
SECTORS
{
required = true;
nodebuild = true;
allowempty = false;
}
REJECT
{
required = false;
nodebuild = true;
allowempty = false;
}
BLOCKMAP
{
required = false;
nodebuild = true;
allowempty = true;
}
}
udmfmaplumpnames udmfmaplumpnames
{ {
ZNODES ZNODES
...@@ -406,6 +661,12 @@ enums ...@@ -406,6 +661,12 @@ enums
1 = "Yes"; 1 = "Yes";
} }
setadd
{
0 = "Set";
1 = "Add";
}
onoff onoff
{ {
0 = "On"; 0 = "On";
...@@ -437,6 +698,13 @@ enums ...@@ -437,6 +698,13 @@ enums
2 = "Back"; 2 = "Back";
} }
frontbackboth
{
0 = "Front";
1 = "Back";
2 = "Front and back";
}
tangibility tangibility
{ {
1 = "Intangible from top"; 1 = "Intangible from top";
...@@ -444,6 +712,100 @@ enums ...@@ -444,6 +712,100 @@ enums
4 = "Don't block players"; 4 = "Don't block players";
8 = "Don't block non-players"; 8 = "Don't block non-players";
} }
floorceiling
{
0 = "Floor";
1 = "Ceiling";
2 = "Both";
}
scrollcarry
{
0 = "Scroll and carry";
1 = "Scroll";
2 = "Carry";
}
scrolltype
{
0 = "Regular";
1 = "Accelerative";
2 = "Displacement";
}
comparison
{
0 = "Equal";
1 = "Less than or equal";
2 = "Greater than or equal";
}
triggertype
{
0 = "Continuous";
1 = "Once";
2 = "Each time on entry";
3 = "Each time on entry/exit";
}
xtriggertype
{
0 = "Continuous";
1 = "Each time on entry";
2 = "Each time on entry/exit";
}
team
{
0 = "Red";
1 = "Blue";
}
flagcheck
{
0 = "Has all";
1 = "Has any";
2 = "Has exactly";
3 = "Doesn't have all";
4 = "Doesn't have any";
}
maceflags
{
1 = "Double size";
2 = "No sounds";
4 = "Player-turnable chain";
8 = "Swing instead of spin";
16 = "Make chain from end item";
32 = "Spawn link at origin";
64 = "Clip inside ground";
128 = "No distance check";
}
pushablebehavior
{
0 = "Normal";
1 = "Slide";
2 = "Immovable";
3 = "Classic";
}
monitorrespawn
{
0 = "Same item";
1 = "Random (Weak)";
2 = "Random (Strong)";
}
blendmodes
{
0 = "Translucent";
1 = "Add";
2 = "Subtract";
3 = "Reverse subtract";
4 = "Modulate";
}
} }
//Default things filters //Default things filters
...@@ -475,48 +837,32 @@ thingsfilters ...@@ -475,48 +837,32 @@ thingsfilters
} }
//filter3
filter3 //{
{ // name = "Normal Gravity";
name = "Normal Gravity"; // category = "";
category = ""; // type = -1;
type = -1; //
// fields
fields // {
{ // 2 = false;
2 = false; // }
} //}
} //filter4
//{
// name = "Reverse Gravity";
filter4 // category = "";
{ // type = -1;
name = "Reverse Gravity"; //
category = ""; // fields
type = -1; // {
// 2 = true;
fields // }
{ //}
2 = true;
}
}
} }
// Special linedefs // Special linedefs
speciallinedefs
{
soundlinedefflag = 64; // See linedefflags
singlesidedflag = 1; // See linedefflags
doublesidedflag = 4; // See linedefflags
impassableflag = 1;
upperunpeggedflag = 8;
lowerunpeggedflag = 16;
repeatmidtextureflag = 1024;
pegmidtextureflag = 256;
}
speciallinedefs_udmf speciallinedefs_udmf
{ {
soundlinedefflag = "noclimb"; soundlinedefflag = "noclimb";
...@@ -527,6 +873,8 @@ speciallinedefs_udmf ...@@ -527,6 +873,8 @@ speciallinedefs_udmf
lowerunpeggedflag = "dontpegbottom"; lowerunpeggedflag = "dontpegbottom";
repeatmidtextureflag = "wrapmidtex"; repeatmidtextureflag = "wrapmidtex";
pegmidtextureflag = "midpeg"; pegmidtextureflag = "midpeg";
slopeskewflag = "skewtd";
nomidtextureskewflag = "noskew";
} }
scriptlumpnames scriptlumpnames
...@@ -622,4 +970,4 @@ flats ...@@ -622,4 +970,4 @@ flats
start = "F_START"; start = "F_START";
end = "FF_END"; end = "FF_END";
} }
} }
\ No newline at end of file
sectortypes
{
0 = "Normal";
1 = "Damage";
2 = "Damage (Water)";
3 = "Damage (Fire)";
4 = "Damage (Electrical)";
5 = "Spikes";
6 = "Death Pit (Camera Tilt)";
7 = "Death Pit (No Camera Tilt)";
8 = "Instant Kill";
9 = "Ring Drainer (Floor Touch)";
10 = "Ring Drainer (Anywhere in Sector)";
11 = "Special Stage Damage";
12 = "Space Countdown";
13 = "Ramp Sector (double step-up/down)";
14 = "Non-Ramp Sector (no step-down)";
15 = "Bouncy FOF";
16 = "Trigger Line Ex. (Pushable Objects)";
32 = "Trigger Line Ex. (Anywhere, All Players)";
48 = "Trigger Line Ex. (Floor Touch, All Players)";
64 = "Trigger Line Ex. (Anywhere in Sector)";
80 = "Trigger Line Ex. (Floor Touch)";
96 = "Trigger Line Ex. (Emerald Check)";
112 = "Trigger Line Ex. (NiGHTS Mare)";
128 = "Check for Linedef Executor on FOFs";
144 = "Egg Capsule";
160 = "Special Stage Time/Spheres Parameters";
176 = "Custom Global Gravity";
512 = "Wind/Current";
1024 = "Conveyor Belt";
1280 = "Speed Pad";
4096 = "Star Post Activator";
8192 = "Exit/Special Stage Pit/Return Flag";
12288 = "CTF Red Team Base";
16384 = "CTF Blue Team Base";
20480 = "Fan Sector";
24576 = "Super Sonic Transform";
28672 = "Force Spin";
32768 = "Zoom Tube Start";
36864 = "Zoom Tube End";
40960 = "Circuit Finish Line";
45056 = "Rope Hang";
49152 = "Intangible to the Camera";
}
gen_sectortypes
{
first
{
0 = "Normal";
1 = "Damage";
2 = "Damage (Water)";
3 = "Damage (Fire)";
4 = "Damage (Electrical)";
5 = "Spikes";
6 = "Death Pit (Camera Tilt)";
7 = "Death Pit (No Camera Tilt)";
8 = "Instant Kill";
9 = "Ring Drainer (Floor Touch)";
10 = "Ring Drainer (Anywhere in Sector)";
11 = "Special Stage Damage";
12 = "Space Countdown";
13 = "Ramp Sector (double step-up/down)";
14 = "Non-Ramp Sector (no step-down)";
15 = "Bouncy FOF";
}
second
{
0 = "Normal";
16 = "Trigger Line Ex. (Pushable Objects)";
32 = "Trigger Line Ex. (Anywhere, All Players)";
48 = "Trigger Line Ex. (Floor Touch, All Players)";
64 = "Trigger Line Ex. (Anywhere in Sector)";
80 = "Trigger Line Ex. (Floor Touch)";
96 = "Trigger Line Ex. (Emerald Check)";
112 = "Trigger Line Ex. (NiGHTS Mare)";
128 = "Check for Linedef Executor on FOFs";
144 = "Egg Capsule";
160 = "Special Stage Time/Spheres Parameters";
176 = "Custom Global Gravity";
}
third
{
0 = "Normal";
512 = "Wind/Current";
1024 = "Conveyor Belt";
1280 = "Speed Pad";
}
fourth
{
0 = "Normal";
4096 = "Star Post Activator";
8192 = "Exit/Special Stage Pit/Return Flag";
12288 = "CTF Red Team Base";
16384 = "CTF Blue Team Base";
20480 = "Fan Sector";
24576 = "Super Sonic Transform";
28672 = "Force Spin";
32768 = "Zoom Tube Start";
36864 = "Zoom Tube End";
40960 = "Circuit Finish Line";
45056 = "Rope Hang";
49152 = "Intangible to the Camera";
}
}
\ No newline at end of file