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
  • 21-installer-nodd
  • 64-gl-log
  • DJGPP
  • FALLTHRU
  • appveyor
  • blend-locking
  • boost-tickrate
  • changeskin_hook
  • cleanup-opengl
  • clear-sign-sprite
  • crawlacommander-sprites
  • cutscene-cleanup
  • dd-music-bypass
  • dd-music-fix
  • disable-titlemap-in-netgames
  • discord
  • discord_next
  • dynres
  • exchndl-xp-fix
  • file-param-error
  • fix-major-issue
  • fix-mouse-grabbing
  • fix-node-player-mixups
  • fix-nonslope-slopes
  • flipfuncpointers
  • fof-lightlist-fixes
  • g_findmap-lua
  • gamepad_experiments
  • grr-lj
  • ignore-glsegs
  • input-display
  • input-display-translucency
  • io
  • joystick-juggling-maz
  • keycodes
  • keycodes-only
  • keysyms
  • keywords-back-again
  • larger-chat
  • ld413-mp-fix
  • libpng-version-support
  • lower-unpegged-fix
  • makefile-tinkering
  • map-components-signedness-fixes
  • master
  • masterserver-fd-fix
  • models-mkii
  • more-cleanup
  • more-lua-map-names
  • mserv-is-dumb-and-what-else-is-new
  • musicdef
  • next
  • parser-fixes
  • pictureformats
  • pictureformats-depth
  • pictureformats-software
  • prescott-march
  • public_flatsprite
  • public_hexang
  • reduced_palette
  • refactor-kicks
  • snac-bruh
  • software-clownery-mkii
  • spawn_z_refactor
  • spawnmapthing-refactor
  • thokker
  • thokker_next
  • thokker_rebase
  • timedemo-revise
  • timer_sdl2
  • toast_fixes
  • tokentweaks
  • travis-deployer
  • udmf
  • udmf-base
  • udmf-next
  • udmf-specials
  • ungrab-mouse-in-menus
  • vanilla-hotplug
  • vanilla-hotplug-stableid
  • virtres
  • word
  • 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
  • td-release-v1.0.0
110 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
  • 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
  • Jisk/srb-2-beef-jerky
117 results
Select Git revision
  • 21-installer-nodd
  • 64-gl-log
  • DJGPP
  • FALLTHRU
  • appveyor
  • blend-locking
  • boost-tickrate
  • changeskin_hook
  • cleanup-opengl
  • clear-sign-sprite
  • crawlacommander-sprites
  • cutscene-cleanup
  • dd-music-bypass
  • dd-music-fix
  • disable-titlemap-in-netgames
  • discord
  • discord_next
  • dynres
  • exchndl-xp-fix
  • file-param-error
  • fix-major-issue
  • fix-mouse-grabbing
  • fix-node-player-mixups
  • fix-nonslope-slopes
  • flipfuncpointers
  • fof-lightlist-fixes
  • g_findmap-lua
  • gamepad_experiments
  • grr-lj
  • ignore-glsegs
  • input-display
  • input-display-translucency
  • io
  • joystick-juggling-maz
  • keycodes
  • keycodes-only
  • keysyms
  • keywords-back-again
  • larger-chat
  • ld413-mp-fix
  • libpng-version-support
  • lower-unpegged-fix
  • makefile-tinkering
  • map-components-signedness-fixes
  • master
  • masterserver-fd-fix
  • models-mkii
  • more-cleanup
  • more-lua-map-names
  • mserv-is-dumb-and-what-else-is-new
  • musicdef
  • next
  • parser-fixes
  • pictureformats
  • pictureformats-depth
  • pictureformats-software
  • prescott-march
  • public_flatsprite
  • public_hexang
  • reduced_palette
  • refactor-kicks
  • snac-bruh
  • software-clownery-mkii
  • spawn_z_refactor
  • spawnmapthing-refactor
  • thokker
  • thokker_next
  • thokker_rebase
  • timedemo-revise
  • timer_sdl2
  • toast_fixes
  • tokentweaks
  • travis-deployer
  • udmf
  • udmf-base
  • udmf-next
  • udmf-specials
  • ungrab-mouse-in-menus
  • vanilla-hotplug
  • vanilla-hotplug-stableid
  • virtres
  • word
  • 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
  • td-release-v1.0.0
110 results
Show changes
Showing
with 7771 additions and 35 deletions
# SRB2 Debian package control file. # SRB2 Debian package control file.
Source: srb2 Source: ${PACKAGE_NAME}
Section: games Section: games
Priority: extra Priority: extra
Maintainer: Callum Dickinson <gcfreak_ag20@hotmail.com> Maintainer: ${PACKAGE_GROUP_NAME_EMAIL}
Build-Depends: debhelper (>= 7.0.50~), libsdl1.2-dev (>= 1.2.7), libsdl-mixer1.2-dev (>= 1.2.7), libpng12-dev (>= 1.2.7), libglu1-dev | libglu-dev, libosmesa6-dev | libgl-dev, nasm [i386] Build-Depends: debhelper (>= 7.0.50~),
libsdl2-dev,
libsdl2-mixer-dev,
libpng-dev | libpng16-dev | libpng12-dev (>= 1.2.7),
zlib1g-dev,
libgme-dev,
libopenmpt-dev,
libglu1-dev | libglu-dev,
libosmesa6-dev | libgl-dev,
nasm [i386]
Standards-Version: 3.8.4 Standards-Version: 3.8.4
Homepage: http://www.srb2.org Homepage: ${PACKAGE_WEBSITE}
Package: srb2 Package: ${PACKAGE_NAME}
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, srb2-data (= 2.0.6) Depends: ${SHLIBS_DEPENDS}, ${MISC_DEPENDS},
${PACKAGE_NAME}-data (>> ${PACKAGE_ASSET_MINVERSION}), ${PACKAGE_NAME}-data (<< ${PACKAGE_ASSET_MAXVERSION}),
libsdl2-2.0-0,
libsdl2-mixer-2.0-0,
zlib1g,
libgme0,
libopenmpt | libopenmpt0,
libpng | libpng16-16 | libpng12-0
Description: A cross-platform 3D Sonic fangame Description: A cross-platform 3D Sonic fangame
Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog
fangame built using a modified version of the Doom Legacy fangame built using a modified version of the Doom Legacy
port of Doom. SRB2 is closely inspired by the original port of Doom. SRB2 is closely inspired by the original
Sonic games from the Sega Genesis, and attempts to recreate Sonic games from the Sega Genesis, and attempts to recreate
the design in 3D. While SRB2 isn't fully completed, it already the design in 3D. It features tons of levels, enemies, speed,
features tons of levels, enemies, speed, and quite a lot and quite a lot of the fun that the original Sonic games provided.
of the fun that the original Sonic games provided.
Package: srb2-dbg
Package: ${PACKAGE_NAME}-dbg
Architecture: any Architecture: any
# FIXME: should be Depends: ${shlibs:Depends}, ${misc:Depends}, srb2-data (= 2.0.6), srb2 but dh_shlibdeps is being an asshat # FIXME: should be Depends: ${SHLIBS_DEPENDS}, ${MISC_DEPENDS}, srb2-data (= 2.1.14), srb2 but dh_shlibdeps is being an asshat
Depends: libc6, ${misc:Depends}, srb2-data (= 2.0.6), srb2 Depends: libc6, ${MISC_DEPENDS}, ${PACKAGE_NAME}-data (>> ${PACKAGE_ASSET_MINVERSION}), ${PACKAGE_NAME}-data (<< ${PACKAGE_ASSET_MAXVERSION}), ${PACKAGE_NAME}
Description: A cross-platform 3D Sonic fangame Description: A cross-platform 3D Sonic fangame
Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog Sonic Robo Blast 2 is a 3D open-source Sonic the Hedgehog
fangame built using a modified version of the Doom Legacy fangame built using a modified version of the Doom Legacy
port of Doom. SRB2 is closely inspired by the original port of Doom. SRB2 is closely inspired by the original
Sonic games from the Sega Genesis, and attempts to recreate Sonic games from the Sega Genesis, and attempts to recreate
the design in 3D. While SRB2 isn't fully completed, it already the design in 3D. It features tons of levels, enemies, speed,
features tons of levels, enemies, speed, and quite a lot and quite a lot of the fun that the original Sonic games provided.
of the fun that the original Sonic games provided. This is a debug binary; its symbols will be loaded by gdb
This is a debug binary, its symbols will be loaded by gdb
when the user starts the game with gdb for debugging. when the user starts the game with gdb for debugging.
This work was packaged for Debian by: This work was packaged for Debian by:
Callum Dickinson <gcfreak_ag20@hotmail.com> on Fri, 26 Nov 2010 15:19:16 +1300 ${PACKAGE_NAME_EMAIL} ${__PACKAGE_DATETIME}
It was downloaded from: It was downloaded from:
<http://srb2.org> ${PACKAGE_WEBSITE}
Upstream Author(s): Upstream Author(s):
Sonic Team Junior <stjr@srb2.org> ${PACKAGE_GROUP_NAME_EMAIL}
Copyright: Copyright:
Copyright (C) 1998-2010 Sonic Team Junior Copyright (C) 1998-2018 by Sonic Team Junior
License: License:
...@@ -21,6 +21,7 @@ License: ...@@ -21,6 +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>
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".
README.md
assets/README.txt
assets/LICENSE.txt
assets/LICENSE-3RD-PARTY.txt
...@@ -23,6 +23,16 @@ ...@@ -23,6 +23,16 @@
# #
############################################################################# #############################################################################
#############################################################################
#
# !!!!!!!!!! DEPLOYER NOTE !!!!!!!!!!
#
# Variables to be templated are curly-braced ${PACKAGE_INSTALL_PATH}
# Variables used by the rules script are parenthese'd $(PKGDIR)
# See [repo-root]/debian_template.sh
#
#############################################################################
# Uncomment this to turn on verbose mode. # Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1 #export DH_VERBOSE=1
...@@ -50,25 +60,39 @@ DIR := $(shell pwd) ...@@ -50,25 +60,39 @@ DIR := $(shell pwd)
# FIXME: hate hate hate head/tail hack :( # FIXME: hate hate hate head/tail hack :(
CONTROLF = $(DIR)/debian/control CONTROLF = $(DIR)/debian/control
PACKAGE = srb2 PACKAGE = ${PACKAGE_NAME}
DBGPKG = $(PACKAGE)-dbg DBGPKG = ${PACKAGE}-dbg
TITLE = Sonic Robo Blast 2 TITLE = ${PROGRAM_NAME}
SECTION = Games/Action SECTION = Games/Action
EXENAME = srb2 EXENAME = ${PROGRAM_FILENAME}
DBGNAME = debug/$(EXENAME) DBGNAME = debug/$(EXENAME)
PKGDIR = usr/games PKGDIR = $(shell echo "${PACKAGE_INSTALL_PATH}" | sed -e 's/^\///')
DBGDIR = usr/lib/debug/$(PKGDIR) DBGDIR = usr/lib/debug/$(PKGDIR)
LINKDIR = $(shell echo "${PACKAGE_LINK_PATH}" | sed -e 's/^\///')
PIXMAPS_DIR = usr/share/pixmaps
DESKTOP_DIR = usr/share/applications
PREFIX = $(shell test "$(CROSS_COMPILE_BUILD)" != "$(CROSS_COMPILE_HOST)" && echo "PREFIX=$(CROSS_COMPILE_HOST)") PREFIX = $(shell test "$(CROSS_COMPILE_BUILD)" != "$(CROSS_COMPILE_HOST)" && echo "PREFIX=$(CROSS_COMPILE_HOST)")
OS = LINUX=1 OS = LINUX=1
NONX86 = $(shell test "`echo $(CROSS_COMPILE_HOST) | grep 'i[3-6]86'`" || echo "NONX86=1") NONX86 = $(shell test "`echo $(CROSS_COMPILE_HOST) | grep 'i[3-6]86'`" || echo "NONX86=1")
MAKEARGS = $(OS) $(NONX86) $(PREFIX) EXENAME=$(EXENAME) DBGNAME=$(DBGNAME) SDL_PKGCONFIG=sdl PNG_PKGCONFIG=libpng NOOBJDUMP=1 MAKEARGS = $(OS) $(NONX86) $(PREFIX) EXENAME=$(EXENAME) DBGNAME=$(DBGNAME) NOOBJDUMP=1 # SDL_PKGCONFIG=sdl2 PNG_PKGCONFIG=libpng
MENUFILE1 = ?package($(PACKAGE)):needs="X11" section="$(SECTION)" MENUFILE1 = ?package($(PACKAGE)):needs="X11" section="$(SECTION)"
MENUFILE2 = title="$(TITLE)" command="/$(PKGDIR)/$(PACKAGE)" MENUFILE2 = title="$(TITLE)" command="/$(PKGDIR)/$(PACKAGE)"
# FIXME pkg-config dir hacks
export PKG_CONFIG_LIBDIR = /usr/$(CROSS_COMPILE_HOST)/lib/pkgconfig
BINDIR := $(DIR)/bin/Linux/Release BINDIR := $(DIR)/bin/Linux/Release
LDFLAGS += "-Wl,-rpath=/usr/$(CROSS_COMPILE_HOST)/lib/"
# FIXME pkg-config dir hacks
# Launchpad doesn't need this; it actually makes i386 builds fail due to cross-compile
# export PKG_CONFIG_LIBDIR = /usr/lib/$(CROSS_COMPILE_HOST)/pkgconfig
LDFLAGS += "-Wl,-rpath=/usr/lib/$(CROSS_COMPILE_HOST)"
# Some libgme-dev packages don't use pkg-config yet, so include the linker flag ourselves
PKG_CONFIG?=pkg-config
LIBGME_PKGCONFIG?=libgme
LIBGME_LDFLAGS?=$(shell $(PKG_CONFIG) $(LIBGME_PKGCONFIG) --libs)
ifeq ($(LIBGME_LDFLAGS),)
MAKEARGS += LIBGME_LDFLAGS=-lgme
endif
build: build:
$(MKDIR) $(BINDIR)/debug $(MKDIR) $(BINDIR)/debug
...@@ -80,17 +104,26 @@ binary-indep: ...@@ -80,17 +104,26 @@ binary-indep:
echo "no need to do any arch-independent stuff" echo "no need to do any arch-independent stuff"
binary-arch: binary-arch:
# create ddirs
$(MKDIR) $(DIR)/debian/tmp/$(PKGDIR) $(DIR)/debian/tmp/$(DBGDIR) $(MKDIR) $(DIR)/debian/tmp/$(PKGDIR) $(DIR)/debian/tmp/$(DBGDIR)
$(MKDIR) $(DIR)/debian/tmp/$(PKGDIR) $(DIR)/debian/tmp/$(DESKTOP_DIR)
$(MKDIR) $(DIR)/debian/tmp/$(PKGDIR) $(DIR)/debian/tmp/$(PIXMAPS_DIR)
# install main binaries
$(INSTALL) $(BINDIR)/$(EXENAME) $(DIR)/debian/tmp/$(PKGDIR)/$(PACKAGE) $(INSTALL) $(BINDIR)/$(EXENAME) $(DIR)/debian/tmp/$(PKGDIR)/$(PACKAGE)
$(INSTALL) $(BINDIR)/$(DBGNAME) $(DIR)/debian/tmp/$(DBGDIR)/$(PACKAGE) $(INSTALL) $(BINDIR)/$(DBGNAME) $(DIR)/debian/tmp/$(DBGDIR)/$(PACKAGE)
# Install desktop file and banner image
$(INSTALL) $(DIR)/srb2.png $(DIR)/debian/tmp/usr/share/pixmaps/${PROGRAM_FILENAME}.png
$(INSTALL) $(DIR)/debian/srb2.desktop $(DIR)/debian/tmp/usr/share/applications/${PROGRAM_FILENAME}.desktop
# add compiled binaries to include-binaries # add compiled binaries to include-binaries
echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries
echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries echo $(BINDIR)/$(EXENAME) >> $(DIR)/debian/source/include-binaries
# Generate install folder files # Generate install folder files
echo $(PKGDIR) > $(DIR)/debian/$(PACKAGE).install echo $(PKGDIR) > $(DIR)/debian/$(PACKAGE).install
echo $(DESKTOP_DIR) >> $(DIR)/debian/$(PACKAGE).install
echo $(PIXMAPS_DIR) >> $(DIR)/debian/$(PACKAGE).install
echo $(DBGDIR) > $(DIR)/debian/$(DBGPKG).install echo $(DBGDIR) > $(DIR)/debian/$(DBGPKG).install
# Launchpad only calls binary-arch, so just move everything up
binary: binary-arch #binary: binary-arch
# Generate .desktop specifications # Generate .desktop specifications
echo "`echo '$(MENUFILE1)\\'`" > $(DIR)/debian/menu echo "`echo '$(MENUFILE1)\\'`" > $(DIR)/debian/menu
echo " `echo '$(MENUFILE2)'`" >> $(DIR)/debian/menu echo " `echo '$(MENUFILE2)'`" >> $(DIR)/debian/menu
...@@ -111,7 +144,7 @@ binary: binary-arch ...@@ -111,7 +144,7 @@ binary: binary-arch
# dh_installcron # dh_installcron
# dh_installinfo # dh_installinfo
# dh_installman # dh_installman
# dh_link dh_link $(PKGDIR)/$(EXENAME) $(LINKDIR)/$(EXENAME)
dh_compress dh_compress
dh_fixperms dh_fixperms
# dh_perl # dh_perl
...@@ -122,6 +155,8 @@ binary: binary-arch ...@@ -122,6 +155,8 @@ binary: binary-arch
dh_md5sums dh_md5sums
dh_builddeb dh_builddeb
binary: binary-arch
clean: clean:
$(MAKE) -C $(DIR)/src $(MAKEARGS) clean cleandep $(MAKE) -C $(DIR)/src $(MAKEARGS) clean cleandep
$(RM) $(BINDIR)/* $(RM) $(BINDIR)/*
...@@ -134,4 +169,4 @@ clean: ...@@ -134,4 +169,4 @@ clean:
$(RM) $(DIR)/debian/files $(RM) $(DIR)/debian/files
$(RM) $(DIR)/debian/source/include-binaries $(RM) $(DIR)/debian/source/include-binaries
.PHONY: all clean binary binary-arch binary-indep build .PHONY: all clean binary binary-indep build
3.0 (native)
tar-ignore = "assets/*.srb"
tar-ignore = "assets/*.pk3"
tar-ignore = "assets/*.dta"
tar-ignore = "assets/*.wad"
tar-ignore = "assets/debian/${PACKAGE_NAME}-data/*"
tar-ignore = "assets/debian/tmp/*"
tar-ignore = "*.obj"
tar-ignore = "*.dep"
tar-ignore = ".git/*"
tar-ignore = ".git*"
[Desktop Entry]
Name=${PROGRAM_NAME}
Comment=${PROGRAM_DESCRIPTION}
Encoding=UTF-8
Exec=${PACKAGE_INSTALL_PATH}/${PROGRAM_FILENAME}
Icon=/usr/share/pixmaps/${PROGRAM_FILENAME}.png
Terminal=false
Type=Application
StartupNotify=false
Categories=Application;Game;
srb2 for Debian
---------------
SRB2 Debian package!
Hi there, to rebuild these packages just use debuild in the root source directory (not /src!).
You can build these with or without a key if you want, but if you want to put these on a repo,
generate your own GnuPG key as per the https://help.ubuntu.com/community/GnuPrivacyGuardHowto
instructions and pass the -k<keyid> command to debuild. Make sure you export the key footprint
and give them to your users to install with apt-key add. Thanks!
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Fri, 26 Nov 2010 18:25:31 +1300
srb2 (2.0.6-5) maverick; urgency=high
* Initial proper release..
-- Callum Dickinson <gcfreak_ag20@hotmail.com> Sat, 29 Jan 2011 01:18:42 +1300
readme.txt
readme.txt
#!/bin/bash
# Deployer for Travis-CI
# Debian package templating
#
# Call this script BEFORE running debuild!
# source ./debian_template.sh [clean] [main/asset]
#
# Before running this script,
# you should also set PACKAGE_NAME_EMAIL="John Doe <jdoe@example.com>" to match
# the identity of the key you will use to sign the package.
#
# Get script's actual path
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
# Recursive function for directory crawling
# $1 = Directory root to crawl
# $2 = Code to eval on file
# $3 = Code to eval on directory
# Exposes $dirtails, $dirlevel, and $dirtailname
dirlevel=0 # initialize
dirtails=()
# Utility function to make dira/dirb/dirc string
makedirtailname () {
dirtailname=""
for tail in $dirtails; do
if [[ "$dirtailname" == "" ]]; then
dirtailname="/$tail";
else
dirtailname="$dirtailname/$tail";
fi;
done;
}
evaldirectory () {
if [ -d "$1" ]; then
# Set contextual variables
# dirtails is an array of directory basenames after the crawl root
if (( $dirlevel > 0 )); then
dirtails+=( "$(basename $1)" );
else
dirtails=();
fi;
dirlevel=$((dirlevel+1));
# Generate directory path after the crawl root
makedirtailname;
# Eval our directory with the latest contextual info
# Don't eval on root
if (( $dirlevel > 1 )) && [[ "$3" != "" ]]; then
eval "$3";
fi;
# Iterate entries
for name in $1/*; do
if [ -d "$name" ]; then
# Name is a directory, but don't eval yet
# Recurse so our vars are updated
evaldirectory "$name" "$2" "$3";
# Decrement our directory level and remove a dirtail
unset 'dirtails[ ${#dirtails[@]}-1 ]';
dirlevel=$((dirlevel-1));
makedirtailname;
else
# Name is a file
if [ -f "$name" ] && [[ "$2" != "" ]]; then
eval "$2";
fi;
fi;
done;
# Reset our variables; we're done iterating
if (( $dirlevel == 1 )); then
dirlevel=0;
fi;
fi;
}
#
# Initialize package parameter defaults
#
if [[ "$__DEBIAN_PARAMETERS_INITIALIZED" != "1" ]]; then
. ${DIR}/deployer/travis/deployer_defaults.sh;
fi;
# Clean up after ourselves; we only expect to run this script once
# during buildboting
__DEBIAN_PARAMETERS_INITIALIZED=0
# for envsubst
export __PACKAGE_DATETIME="$(date '+%a, %d %b %Y %H:%M:%S %z')"
export __PACKAGE_DATETIME_DIGIT="$(date -u '+%Y%m%d%H%M%S')"
if [[ "$PACKAGE_REVISION" == "" ]]; then
PACKAGE_REVISION="-$__PACKAGE_DATETIME_DIGIT";
__PACKAGE_REVISION_BY_DATE=1;
export PACKAGE_REVISION=${PACKAGE_REVISION}; # for envsubst
fi;
#
# Clean the old debian/ directories
#
if [[ "$1" == "clean" ]]; then
toclean=$2;
else
toclean=$1;
fi;
if [[ "$toclean" == "" ]] || [[ "$toclean" == "main" ]]; then
echo "Cleaning main package scripts";
if [[ ! -f ${DIR}/debian ]]; then
rm -rf ${DIR}/debian;
fi;
fi;
if [[ "$toclean" == "" ]] || [[ "$toclean" == "asset" ]]; then
echo "Cleaning asset package scripts";
if [[ ! -f ${DIR}/assets/debian ]]; then
rm -rf ${DIR}/assets/debian;
fi;
fi;
#
# Make new templates
#
if [[ "$1" != "clean" ]]; then
totemplate=$1;
# HACK: ${shlibs:Depends} in the templates make the templating fail
# So just define replacemment variables
export SHLIBS_DEPENDS=${SHLIBS_DEPENDS};
export MISC_DEPENDS=${MISC_DEPENDS};
export DEBFILEVAR='$$file'; # used in assets/debian/rules
# Package parameters are exported for envsubst in deployer_defaults.sh
if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "main" ]]; then
echo "Generating main package scripts";
fromroot=${DIR}/debian-template;
toroot=${DIR}/debian;
mkdir ${toroot};
evaldirectory ${fromroot} \
"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
"mkdir \"${toroot}\${dirtailname}\"";
fi;
if [[ "$totemplate" == "" ]] || [[ "$totemplate" == "asset" ]]; then
echo "Generating asset package scripts";
fromroot=${DIR}/assets/debian-template;
toroot=${DIR}/assets/debian;
mkdir ${toroot};
# Root dir to crawl; file eval; directory eval
evaldirectory ${fromroot} \
"cat \$name | envsubst > ${toroot}\${dirtailname}/\$( basename \$name )" \
"mkdir \"${toroot}\${dirtailname}\"";
fi;
fi;
if [[ "$__DPL_ACTIVE" != "1" ]] && [[ "$__PACKAGE_REVISION_BY_DATE" == "1" ]]; then
unset PACKAGE_REVISION; # so we can reset the date on subsequent runs
fi;
@setlocal enableextensions enabledelayedexpansion
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: Appveyor Deployer
: See appveyor.yml for default variables
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: Evaluate whether we should be deploying
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if not [%DPL_ENABLED%] == [1] (
echo Deployer is not enabled...
exit /b
)
: Don't do DD installs because fmodex DLL handling is not implemented.
if [%CONFIGURATION%] == [DD] (
echo Deployer does not support DD builds...
exit /b
)
if [%CONFIGURATION%] == [DD64] (
echo Deployer does not support DD builds...
exit /b
)
: Substring match from https://stackoverflow.com/questions/7005951/batch-file-find-if-substring-is-in-string-not-in-a-file
: The below line says "if deployer is NOT in string"
: Note that APPVEYOR_REPO_BRANCH for pull request builds is the BASE branch that PR is merging INTO
if x%APPVEYOR_REPO_BRANCH:deployer=%==x%APPVEYOR_REPO_BRANCH% (
if not [%APPVEYOR_REPO_TAG%] == [true] (
echo Deployer is enabled but we are not in a release tag or a 'deployer' branch...
exit /b
) else (
if not [%DPL_TAG_ENABLED%] == [1] (
echo Deployer is not enabled for release tags...
exit /b
)
)
)
: Release tags always get optional assets (music.dta)
if [%APPVEYOR_REPO_TAG%] == [true] (
set "ASSET_FILES_OPTIONAL_GET=1"
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: Get asset archives
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if exist "C:\Users\appveyor\srb2_cache\archives\" (
if [%ASSET_CLEAN%] == [1] (
echo Cleaning asset archives...
rmdir /s /q "C:\Users\appveyor\srb2_cache\archives"
)
)
if not exist "C:\Users\appveyor\srb2_cache\archives\" mkdir "C:\Users\appveyor\srb2_cache\archives"
goto EXTRACT_ARCHIVES
::::::::::::::::::::::::::::::::
: ARCHIVE_NAME_PARTS
: Call this like a function. %archivepath% is the path to extract parts from.
::::::::::::::::::::::::::::::::
for %%a in (%archivepath%) do (
set "file=%%~fa"
set "filepath=%%~dpa"
set "filename=%%~nxa"
)
set "localarchivepath=C:\Users\appveyor\srb2_cache\archives\%filename%"
goto EOF
::::::::::::::::::::::::::::::::
: EXTRACT_ARCHIVES
::::::::::::::::::::::::::::::::
set "archivepath=%ASSET_ARCHIVE_PATH%"
call :ARCHIVE_NAME_PARTS
set "ASSET_ARCHIVE_PATH_LOCAL=%localarchivepath%"
if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATH%" -FileName "%localarchivepath%"
set "archivepath=%ASSET_ARCHIVE_PATCH_PATH%"
call :ARCHIVE_NAME_PARTS
set "ASSET_ARCHIVE_PATCH_PATH_LOCAL=%localarchivepath%"
if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATCH_PATH%" -FileName "%localarchivepath%"
if not [%X86_64%] == [1] (
set "archivepath=%ASSET_ARCHIVE_X86_PATH%"
call :ARCHIVE_NAME_PARTS
set "ASSET_ARCHIVE_X86_PATH_LOCAL=!localarchivepath!"
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X86_PATH%" -FileName "!localarchivepath!"
)
if [%X86_64%] == [1] (
set "archivepath=%ASSET_ARCHIVE_X64_PATH%"
call :ARCHIVE_NAME_PARTS
set "ASSET_ARCHIVE_X64_PATH_LOCAL=!localarchivepath!"
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X64_PATH%" -FileName "!localarchivepath!"
)
if [%ASSET_FILES_OPTIONAL_GET%] == [1] (
set "archivepath=%ASSET_ARCHIVE_OPTIONAL_PATH%"
call :ARCHIVE_NAME_PARTS
set "ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL=!localarchivepath!"
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_OPTIONAL_PATH%" -FileName "!localarchivepath!"
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: Build the installers
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
mkdir "assets\installer"
mkdir "assets\patch"
7z x -y "%ASSET_ARCHIVE_PATH_LOCAL%" -o"assets\installer" >null
7z x -y "%ASSET_ARCHIVE_PATCH_PATH_LOCAL%" -o"assets\patch" >null
: Copy optional files to full installer (music.dta)
if [%ASSET_FILES_OPTIONAL_GET%] == [1] (
7z x -y "%ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL%" -o"assets\installer" >null
)
: Copy EXE -- BUILD_PATH is from appveyor.yml
robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\installer" /XF "*.debug" ".gitignore"
robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\patch" /XF "*.debug" ".gitignore"
: Are we building DD? (we were supposed to exit earlier!)
if [%CONFIGURATION%] == [DD] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" )
if [%CONFIGURATION%] == [DD64] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" )
: If we are not a release tag, suffix the filename
if not [%APPVEYOR_REPO_TAG%] == [true] (
set "INSTALLER_SUFFIX=-%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%"
) else (
set "INSTALLER_SUFFIX="
)
if not [%X86_64%] == [1] ( goto X86_INSTALL )
::::::::::::::::::::::::::::::::
: X64_INSTALL
::::::::::::::::::::::::::::::::
: Extract DLL binaries
7z x -y "%ASSET_ARCHIVE_X64_PATH_LOCAL%" -o"assets\installer" >null
if [%PACKAGE_PATCH_DLL_GET%] == [1] (
7z x -y "!ASSET_ARCHIVE_X64_PATH_LOCAL!" -o"assets\patch" >null
)
: Build the installer
7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\*
: Build the patch
7z a "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\*
: Upload artifacts
appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe"
appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip"
: We only do x86 OR x64, one at a time, so exit now.
goto EOF
::::::::::::::::::::::::::::::::
: X86_INSTALL
::::::::::::::::::::::::::::::::
: Extract DLL binaries
7z x -y "%ASSET_ARCHIVE_X86_PATH_LOCAL%" -o"assets\installer" >null
if [%PACKAGE_PATCH_DLL_GET%] == [1] (
7z x -y "!ASSET_ARCHIVE_X86_PATH_LOCAL!" -o"assets\patch" >null
)
: Build the installer
7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\*
: Build the patch
7z a "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\*
: Upload artifacts
appveyor PushArtifact "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe"
appveyor PushArtifact "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip"
: We only do x86 OR x64, one at a time, so exit now
goto EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
endlocal
#!/bin/bash
# Deployer for Travis-CI
# Initialization
#
# Performs validity checks to ensure that Deployer is allowed to run
# e.g., is an FTP hostname specified? Are we whitelisted by OSNAMES and BRANCHES?
#
# Set these environment variables in your Travis-CI settings, where they are stored securely.
# See other shell scripts for more options.
#
# DPL_ENABLED = 1 (leave blank to disable)
# DPL_TAG_ENABLED = 1 (run Deployer on all tags)
# DPL_JOB_ENABLE_ALL = 1 (run Deployer on all jobs; leave blank to act on specific jobs, see below)
# DPL_JOBNAMES = name1,name2 (whitelist of job names to allow uploading; leave blank to upload from all jobs)
# DPL_OSNAMES = osx (whitelist of OS names to allow uploading; leave blank to upload from all OSes)
# DPL_BRANCHES = master,branch1,branch2 (whitelist of branches to upload; leave blank to upload all branches)
#
# To enable Deployer on specific jobs, set _DPL_JOB_ENABLED=1 for that job. Example:
# - matrix:
# - os: osx
# env:
# - _DPL_JOB_ENABLED=1
#
# DO NOT set __DPL_ACTIVE, because that would bypass these validity checks.
# Validate Deployer state
if [[ "$DPL_ENABLED" == "1" ]] && [[ "$TRAVIS_PULL_REQUEST" == "false" ]]; then
# Test for base eligibility:
# Are we in a deployer branch? Or
# Are we in a release tag AND DPL_TAG_ENABLED=1?
if [[ $TRAVIS_BRANCH == *"deployer"* ]]; then
__DPL_BASE_ELIGIBLE=1;
__DPL_TERMINATE_EARLY_ELIGIBLE=1;
fi;
if [[ "$TRAVIS_TAG" != "" ]] && [[ "$DPL_TAG_ENABLED" == "1" ]]; then
__DPL_BASE_ELIGIBLE=1;
__DPL_TAG_ELIGIBLE=1;
__DPL_TERMINATE_EARLY_ELIGIBLE=1;
fi;
# Logging message for trigger word
if [[ "$__DPL_TAG_ELIGIBLE" != "1" ]] && [[ "$DPL_TRIGGER" != "" ]]; then
echo "Testing for trigger $DPL_TRIGGER, commit message: $TRAVIS_COMMIT_MESSAGE";
echo "[${DPL_TRIGGER}]";
echo "[${DPL_TRIGGER}-${_DPL_JOB_NAME}]";
echo "[${DPL_TRIGGER}-${TRAVIS_OS_NAME}]";
fi;
#
# Search for the trigger word
# Force enable if release tags are eligible
#
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_TRIGGER" == "" ]] \
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[$DPL_TRIGGER]"* ]] \
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[${DPL_TRIGGER}-${_DPL_JOB_NAME}]"* ]] \
|| [[ $TRAVIS_COMMIT_MESSAGE == *"[${DPL_TRIGGER}-${TRAVIS_OS_NAME}]"* ]]; then
#
# Whitelist by branch name
# Force enable if release tags are eligible
#
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_BRANCHES" == "" ]] || [[ $DPL_BRANCHES == *"$TRAVIS_BRANCH"* ]]; then
# Set this so we only early-terminate builds when we are specifically deploying
# Trigger string and branch are encompassing conditions; the rest are job-specific
# This check only matters for deployer branches and when DPL_TERMINATE_TESTS=1,
# because we're filtering non-deployer jobs.
#
# __DPL_TRY_TERMINATE_EARLY is invalidated in .travis.yml if __DPL_ACTIVE=1
if [[ "$__DPL_TERMINATE_EARLY_ELIGIBLE" == "1" ]] && [[ "$DPL_TERMINATE_TESTS" == "1" ]]; then
__DPL_TRY_TERMINATE_EARLY=1;
fi;
#
# Is the job enabled for deployment?
#
if [[ "$DPL_JOB_ENABLE_ALL" == "1" ]] || [[ "$_DPL_JOB_ENABLED" == "1" ]]; then
#
# Whitelist by job names
#
if [[ "$DPL_JOBNAMES" == "" ]] || [[ "$_DPL_JOB_NAME" == "" ]] || [[ $DPL_JOBNAMES == *"$_DPL_JOB_NAME"* ]]; then
#
# Whitelist by OS names
#
if [[ "$DPL_OSNAMES" == "" ]] || [[ $DPL_OSNAMES == *"$TRAVIS_OS_NAME"* ]]; then
# Base Deployer is eligible for becoming active
# Are we building for Linux?
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]] || [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]] || [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
__DPL_DEBIAN_ACTIVE=1;
fi;
fi;
fi;
# Now check for deployment targets
if [[ "$_DPL_FTP_TARGET" == "1" ]] && [[ "$DPL_FTP_HOSTNAME" != "" ]]; then
if [[ "$TRAVIS_OS_HOST" == "linux" ]] && [[ "$DPL_FTP_PROTOCOL" == "ftp" ]]; then
echo "Non-secure FTP will not work on Linux Travis-CI jobs!";
echo "Try SFTP or another target. Details:";
echo "https://blog.travis-ci.com/2018-07-23-the-tale-of-ftp-at-travis-ci";
else
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]] || [[ "$_DPL_PACKAGE_BINARY" == "1" ]] || [[ "$_DPL_BINARY" == "1" ]]; then
echo "Deployer FTP target is enabled";
__DPL_FTP_ACTIVE=1;
else
echo "Deployer FTP target cannot be enabled: You must specify _DPL_PACKAGE_BINARY=1,";
echo "and/or _DPL_BINARY=1 in your job's environment variables.";
fi;
fi;
fi;
if [[ "$_DPL_DPUT_TARGET" == "1" ]] && [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]] \
&& [[ "$DPL_DPUT_INCOMING" != "" ]]; then
if [[ "$DPL_DPUT_METHOD" == "ftp" ]]; then
echo "DPUT will not work with non-secure FTP on Linux Travis-CI jobs!";
echo "Try SFTP or another method for DPUT. Details:";
echo "https://blog.travis-ci.com/2018-07-23-the-tale-of-ftp-at-travis-ci";
else
echo "Deployer DPUT target is enabled";
__DPL_DPUT_ACTIVE=1;
fi;
fi;
# If any deployment targets are active, then so is the Deployer at large
if [[ "$__DPL_FTP_ACTIVE" == "1" ]] || [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
__DPL_ACTIVE=1;
fi;
fi;
fi;
fi;
fi;
else
if [[ "$DPL_TRIGGER" != "" ]]; then
echo "Testing for global trigger [$DPL_TRIGGER, commit message: $TRAVIS_COMMIT_MESSAGE";
fi;
if [[ "$DPL_TRIGGER" != "" ]] && [[ $TRAVIS_COMMIT_MESSAGE == *"[$DPL_TRIGGER"* ]]; then
if [[ "$__DPL_TAG_ELIGIBLE" == "1" ]] || [[ "$DPL_BRANCHES" == "" ]] || [[ $DPL_BRANCHES == *"$TRAVIS_BRANCH"* ]]; then
# This check only matters for deployer branches and when DPL_TERMINATE_TESTS=1,
# because we're filtering non-deployer jobs.
if [[ "$__DPL_TERMINATE_EARLY_ELIGIBLE" == "1" ]] && [[ "$DPL_TERMINATE_TESTS" == "1" ]]; then
# Assume that some job received the trigger, so mark this for early termination
__DPL_TRY_TERMINATE_EARLY=1;
fi;
fi;
fi;
fi;
fi;
if [[ "$__DPL_TRY_TERMINATE_EARLY" == "1" ]] && [[ "$__DPL_ACTIVE" != "1" ]]; then
echo "Deployer is active in another job";
fi;
if [[ "$__DPL_TRY_TERMINATE_EARLY" != "1" ]] && [[ "$__DPL_ACTIVE" != "1" ]]; then
echo "Deployer is not active";
fi;
#!/bin/bash
# Deployer for Travis-CI
# Build Script
#
# Builds the required targets depending on which sub-modules are enabled
if [[ "$__DPL_FTP_ACTIVE" == "1" ]] || [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]]; then
echo "Building Debian package(s)"
sudo apt-get install devscripts debhelper fakeroot secure-delete expect;
# Build source packages first, since they zip up the entire source folder,
# binaries and all
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
. ../debian_template.sh main;
OLDPWD=$PWD; # [repo]/build
cd ..; # repo root
if [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
echo "Building main source Debian package";
expect <(cat <<EOD
spawn debuild -S -us -uc;
expect "continue anyway? (y/n)"
send "y\r"
interact
EOD
);
fi;
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
echo "Building main binary Debian package";
expect <(cat <<EOD
spawn debuild -us -uc;
expect "continue anyway? (y/n)"
send "y\r"
interact
EOD
);
fi;
cd $OLDPWD;
fi;
# Also an asset package
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
. ../debian_template.sh asset;
OLDPWD=$PWD; # [repo]/build
cd ../assets;
# make sure the asset files exist, download them if they don't
#echo "Checking asset files for asset Debian package";
#debuild -T build;
if [[ "$_DPL_PACKAGE_SOURCE" == "1" ]]; then
echo "Building asset source Debian package";
expect <(cat <<EOD
spawn debuild -S -us -uc;
expect "continue anyway? (y/n)"
send "y\r"
interact
EOD
);
fi;
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
echo "Building asset binary Debian package";
expect <(cat <<EOD
spawn debuild -us -uc;
expect "continue anyway? (y/n)"
send "y\r"
interact
EOD
);
fi;
cd $OLDPWD;
fi;
# Now sign our packages
if [[ "$DPL_PGP_KEY_PRIVATE" != "" ]] && [[ "$DPL_PGP_KEY_PASSPHRASE" != "" ]]; then
# Get the key to sign
# Do this AFTER debuild so that we can specify the passphrase in command line
echo "$DPL_PGP_KEY_PRIVATE" | base64 --decode > key.asc;
echo "$DPL_PGP_KEY_PASSPHRASE" > phrase.txt;
gpg --import key.asc;
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
echo "Signing main package(s)";
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
$PACKAGEDBGFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGENIGHTLYDBGFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHDBGFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
#$PACKAGEPATCHNIGHTLYDBGFILENAME
);
# Main packages are in parent of root repo folder
OLDPWD=$PWD; # [repo]/build
cd ../..; # parent of repo root
for n in ${PACKAGEFILENAMES}; do
for f in ./$n*.changes; do
debsign --no-re-sign -p"gpg --passphrase-file $OLDPWD/phrase.txt --batch" "$f";
done;
done;
cd $OLDPWD;
fi;
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
echo "Signing asset package(s)";
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
)
# Asset packages are in root repo folder
OLDPWD=$PWD; # [repo]/build
cd ..; # repo root
for n in ${PACKAGEFILENAMES}; do
for f in ./$n*.changes; do
debsign --no-re-sign -p"gpg --passphrase-file $OLDPWD/phrase.txt --batch" "$f";
done;
done;
cd $OLDPWD;
fi;
# Delete the keys :eyes:
srm key.asc;
srm phrase.txt;
fi;
fi;
# all other OSes
if [[ "$TRAVIS_OS_NAME" != "linux" ]]; then
#
# Check for binary building
#
if [[ "$_DPL_BINARY" == "1" ]]; then
echo "Building a Binary";
make -k;
fi;
#
# Check for package building
#
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
echo "Building a Package";
# Make an OSX package; superuser is required for library bundling
#
# HACK: OSX packaging can't write libraries to .app package unless we're superuser
# because the original library files don't have WRITE permission
# Bug may be sidestepped by using CHMOD_BUNDLE_ITEMS=TRUE
# But I don't know where this is set. Not `cmake -D...` because this var is ignored.
# https://cmake.org/Bug/view.php?id=9284
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
sudo make -k package;
else
# Some day, when Windows is supported, we'll just make a standard package
make -k package;
fi;
fi;
fi;
fi;
#!/bin/bash
# Deployer for Travis-CI
# Default Variables
#
# Here are all of the user-set variables used by Deployer.
# See the "Cross-platform deployment" page on SRB2 Wiki for documentation.
# Core Parameters
: ${DPL_ENABLED} # Enable Deployer behavior; must be set for any deployment activity
: ${DPL_TAG_ENABLED} # Trigger Deployer for all tag releases
: ${DPL_JOB_ENABLE_ALL} # Enable all jobs for deployment
: ${DPL_TERMINATE_TESTS} # Terminate all build test jobs (used in .travis.yml)
: ${DPL_TRIGGER} # Use a [word] in the commit message to trigger Deployer
: ${DPL_JOBNAMES} # Trigger Deployer by job name
: ${DPL_OSNAMES} # Trigger Deployer by OS name (osx,linux)
: ${DPL_BRANCHES} # Trigger Deployer by git branch name
# Job Parameters
: ${_DPL_JOB_ENABLED} # Enable Deployer for this specific job. DPL_ENABLED must be set too.
: ${_DPL_JOB_NAME} # Identifier for the job, used for logging and trigger word matching
: ${_DPL_FTP_TARGET} # Deploy to FTP
: ${_DPL_DPUT_TARGET} # Deploy to DPUT
: ${_DPL_PACKAGE_SOURCE} # Build packages into a Source distribution. Linux only.
: ${_DPL_PACKAGE_BINARY} # Build packages into a Binary distribution.
: ${_DPL_PACKAGE_MAIN:=1} # Build main installation package. Linux only; OS X assumes this.
: ${_DPL_PACKAGE_ASSET} # Build asset installation package. Linux only.
# Asset File Parameters
: ${ASSET_ARCHIVE_PATH:=https://github.com/mazmazz/SRB2/releases/download/SRB2_assets_220/SRB2-v220-assets.7z}
: ${ASSET_ARCHIVE_OPTIONAL_PATH:=https://github.com/mazmazz/SRB2/releases/download/SRB2_assets_220/SRB2-v220-optional-assets.7z}
: ${ASSET_FILES_HASHED:=srb2.pk3 zones.pk3 player.dta} # POST v2.2 NOTE: Don't forget to add patch.pk3!
: ${ASSET_FILES_DOCS:=README.txt LICENSE.txt LICENSE-3RD-PARTY.txt README-SDL.txt}
: ${ASSET_FILES_OPTIONAL_GET:=0}
# FTP Parameters
: ${DPL_FTP_PROTOCOL}
: ${DPL_FTP_USER}
: ${DPL_FTP_PASS}
: ${DPL_FTP_HOSTNAME}
: ${DPL_FTP_PORT}
: ${DPL_FTP_PATH}
# DPUT Parameters
: ${DPL_DPUT_DOMAIN:=ppa.launchpad.net}
: ${DPL_DPUT_METHOD:=sftp}
: ${DPL_DPUT_INCOMING}
: ${DPL_DPUT_LOGIN:=anonymous}
: ${DPL_SSH_KEY_PRIVATE} # Base64-encoded private key file. Used to sign repository uploads
: ${DPL_SSH_KEY_PASSPHRASE} # Decodes the private key file.
# Package Parameters
: ${PACKAGE_NAME:=srb2}
: ${PACKAGE_VERSION:=2.2.0}
: ${PACKAGE_SUBVERSION} # Highly recommended to set this to reflect the distro series target (e.g., ~18.04bionic)
: ${PACKAGE_REVISION} # Defaults to UTC timestamp
: ${PACKAGE_INSTALL_PATH:=/usr/games/SRB2}
: ${PACKAGE_LINK_PATH:=/usr/games}
: ${PACKAGE_DISTRO:=trusty}
: ${PACKAGE_URGENCY:=high}
: ${PACKAGE_NAME_EMAIL:=Sonic Team Junior <stjr@srb2.org>}
: ${PACKAGE_GROUP_NAME_EMAIL:=Sonic Team Junior <stjr@srb2.org>}
: ${PACKAGE_WEBSITE:=<http://www.srb2.org>}
: ${PACKAGE_ASSET_MINVERSION:=2.1.26} # Number this the version BEFORE the actual required version, because we do a > check
: ${PACKAGE_ASSET_MAXVERSION:=2.2.1} # Number this the version AFTER the actual required version, because we do a < check
: ${PROGRAM_NAME:=Sonic Robo Blast 2}
: ${PROGRAM_VENDOR:=Sonic Team Junior}
: ${PROGRAM_VERSION:=2.2.0}
: ${PROGRAM_DESCRIPTION:=A free 3D Sonic the Hedgehog fangame closely inspired by the original Sonic games on the Sega Genesis.}
: ${PROGRAM_FILENAME:=srb2}
: ${DPL_PGP_KEY_PRIVATE} # Base64-encoded private key file. Used to sign Debian packages
: ${DPL_PGP_KEY_PASSPHRASE} # Decodes the private key file.
# Export Asset and Package Parameters for envsubst templating
export ASSET_ARCHIVE_PATH="${ASSET_ARCHIVE_PATH}"
export ASSET_ARCHIVE_OPTIONAL_PATH="${ASSET_ARCHIVE_OPTIONAL_PATH}"
export ASSET_FILES_HASHED="${ASSET_FILES_HASHED}"
export ASSET_FILES_DOCS="${ASSET_FILES_DOCS}"
export ASSET_FILES_OPTIONAL_GET="${ASSET_FILES_OPTIONAL_GET}"
export PACKAGE_NAME="${PACKAGE_NAME}"
export PACKAGE_VERSION="${PACKAGE_VERSION}"
export PACKAGE_SUBVERSION="${PACKAGE_SUBVERSION}" # in case we have this
export PACKAGE_REVISION="${PACKAGE_REVISION}"
export PACKAGE_ASSET_MINVERSION="${PACKAGE_ASSET_MINVERSION}"
export PACKAGE_ASSET_MAXVERSION="${PACKAGE_ASSET_MAXVERSION}"
export PACKAGE_INSTALL_PATH="${PACKAGE_INSTALL_PATH}"
export PACKAGE_LINK_PATH="${PACKAGE_LINK_PATH}"
export PACKAGE_DISTRO="${PACKAGE_DISTRO}"
export PACKAGE_URGENCY="${PACKAGE_URGENCY}"
export PACKAGE_NAME_EMAIL="${PACKAGE_NAME_EMAIL}"
export PACKAGE_GROUP_NAME_EMAIL="${PACKAGE_GROUP_NAME_EMAIL}"
export PACKAGE_WEBSITE="${PACKAGE_WEBSITE}"
export PROGRAM_NAME="${PROGRAM_NAME}"
export PROGRAM_VERSION="${PROGRAM_VERSION}"
export PROGRAM_DESCRIPTION="${PROGRAM_DESCRIPTION}"
export PROGRAM_FILENAME="${PROGRAM_FILENAME}"
# This file is called in debian_template.sh, so mark our completion so we don't run it again
__DEBIAN_PARAMETERS_INITIALIZED=1
#!/bin/bash
# Deployer for Travis-CI
# DPUT uploader (e.g., Launchpad PPA)
#
if [[ "$__DPL_DPUT_ACTIVE" == "1" ]]; then
# Install APT dependencies
# paramiko required for ssh
sudo apt-get install python-paramiko expect dput; # python-pip
#pip install paramiko;
# Output the DPUT config
# Dput only works if you're using secure FTP, so that's what we default to.
cat > "./dput.cf" << EOM
[deployer]
fqdn = ${DPL_DPUT_DOMAIN}
method = ${DPL_DPUT_METHOD}
incoming = ${DPL_DPUT_INCOMING}
login = ${DPL_DPUT_LOGIN}
allow_unsigned_uploads = 0
EOM
# Output SSH config
# Don't let SSH prompt us for untrusted hosts
cat >> "./ssh_config" << EOM
Host *
StrictHostKeyChecking no
UserKnownHostsFile=/dev/null
PubKeyAuthentication yes
IdentityFile ${PWD}/key.private
IdentitiesOnly yes
EOM
sudo sh -c "cat < ${PWD}/ssh_config >> /etc/ssh/ssh_config";
# Get the private key
echo "$DPL_SSH_KEY_PRIVATE" | base64 --decode > key.private;
chmod 700 ./key.private;
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
$PACKAGEDBGFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGENIGHTLYDBGFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHDBGFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
#$PACKAGEPATCHNIGHTLYDBGFILENAME
);
# Main packages are in parent of root repo folder
OLDPWD=$PWD; # [repo]/build
cd ../..;
# Enter passphrase if required
for n in ${PACKAGEFILENAMES}; do
for f in $n*.changes; do
# Binary builds also generate source builds, so exclude the source
# builds if desired
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
continue;
fi;
fi;
expect <(cat <<EOD
spawn dput -c "${OLDPWD}/dput.cf" deployer "$f";
expect "Enter passphrase for key"
send "${DPL_SSH_KEY_PASSPHRASE}\r"
interact
EOD
);
done;
done;
# Go back to [repo]/build folder
cd $OLDPWD;
fi;
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
)
# Asset packages are in root repo folder
OLDPWD=$PWD; # [repo]/build
cd ..;
# Enter passphrase if required
for n in ${PACKAGEFILENAMES}; do
for f in $n*.changes; do
# Binary builds also generate source builds, so exclude the source
# builds if desired
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
continue;
fi;
fi;
expect <(cat <<EOD
spawn dput -c "${OLDPWD}/dput.cf" deployer "$f";
expect "Enter passphrase for key"
send "${DPL_SSH_KEY_PASSPHRASE}\r"
interact
EOD
);
done;
done;
# Go back to [repo]/build folder
cd $OLDPWD;
fi;
srm ./key.private;
fi;
#!/bin/bash
# Deployer for Travis-CI
# FTP Uploader
#
# Package files are uploaded to, e.g., ftp://username:password@example.com:21/path/to/upload/STJr/SRB2/master/460873812-151.1
# With file `commit.txt` and folder(s) `bin` and `package`
#
# Set these environment variables in your Travis-CI settings, where they are stored securely.
# See other shell scripts for more options.
#
# DPL_FTP_PROTOCOL = ftp (ftp or sftp or ftps or however your FTP URI begins)
# DPL_FTP_USER = username
# DPL_FTP_PASS = password
# DPL_FTP_HOSTNAME = example.com
# DPL_FTP_PORT = 21
# DPL_FTP_PATH = path/to/upload (do not add trailing slash)
if [[ "$__DPL_FTP_ACTIVE" == "1" ]]; then
if [[ "$TRAVIS_JOB_NAME" != "" ]]; then
JOBNAME=$TRAVIS_JOB_NAME;
else
if [[ "$_DPL_JOB_NAME" != "" ]]; then
JOBNAME=$_DPL_JOB_NAME;
else
JOBNAME=$TRAVIS_OS_NAME;
fi;
fi;
# Generate commit.txt file
echo "Travis-CI Build $TRAVIS_OS_NAME - $TRAVIS_REPO_SLUG/$TRAVIS_BRANCH - $TRAVIS_JOB_NUMBER - $JOBNAME" > "commit.txt";
echo "Job ID $TRAVIS_JOB_ID" >> "commit.txt";
echo "" >> "commit.txt";
echo "Commit $TRAVIS_COMMIT" >> "commit.txt";
echo "$TRAVIS_COMMIT_MESSAGE" >> "commit.txt";
echo "" >> "commit.txt";
# Initialize FTP parameters
if [[ "$DPL_FTP_PORT" == "" ]]; then
DPL_FTP_PORT=21;
fi;
if [[ "$DPL_FTP_PROTOCOL" == "" ]]; then
DPL_FTP_PROTOCOL=ftp;
fi;
__DPL_FTP_LOCATION=$DPL_FTP_PROTOCOL://$DPL_FTP_HOSTNAME:$DPL_FTP_PORT/$DPL_FTP_PATH/$TRAVIS_REPO_SLUG/$TRAVIS_BRANCH/$TRAVIS_JOB_ID-$TRAVIS_JOB_NUMBER-$JOBNAME;
# Upload to FTP!
echo "Uploading to FTP...";
curl --ftp-create-dirs -T "commit.txt" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/commit.txt";
if [[ "$__DPL_DEBIAN_ACTIVE" == "1" ]]; then
if [[ "$_DPL_PACKAGE_MAIN" == "1" ]]; then
PACKAGEFILENAME=${PACKAGE_NAME}_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEDBGFILENAME=${PACKAGE_NAME}-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYDBGFILENAME=${PACKAGE_NAME}-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHDBGFILENAME=${PACKAGE_NAME}-patch-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYDBGFILENAME=${PACKAGE_NAME}-patch-nightly-dbg_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
$PACKAGEDBGFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGENIGHTLYDBGFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHDBGFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
#$PACKAGEPATCHNIGHTLYDBGFILENAME
);
# Main packages are in parent of root repo folder
OLDPWD=$PWD; # [repo]/build
cd ../..;
for n in ${PACKAGEFILENAMES}; do
for f in ./$n*; do
# Binary builds also generate source builds, so exclude the source
# builds if desired
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
continue;
fi;
fi;
curl --ftp-create-dirs -T "$f" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/package/main/$f";
done;
done;
# Go back to [repo]/build folder
cd $OLDPWD;
fi;
if [[ "$_DPL_PACKAGE_ASSET" == "1" ]]; then
PACKAGEFILENAME=${PACKAGE_NAME}-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGENIGHTLYFILENAME=${PACKAGE_NAME}-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHFILENAME=${PACKAGE_NAME}-patch-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
#PACKAGEPATCHNIGHTLYFILENAME=${PACKAGE_NAME}-patch-nightly-data_${PACKAGE_VERSION}${PACKAGE_SUBVERSION}${PACKAGE_REVISION};
PACKAGEFILENAMES=(
$PACKAGEFILENAME
#$PACKAGENIGHTLYFILENAME
#$PACKAGEPATCHFILENAME
#$PACKAGEPATCHNIGHTLYFILENAME
)
# Asset packages are in root repo folder
OLDPWD=$PWD; # [repo]/build
cd ..;
for n in ${PACKAGEFILENAMES}; do
for f in ./$n*; do
# Binary builds also generate source builds, so exclude the source
# builds if desired
if [[ "$_DPL_PACKAGE_SOURCE" != "1" ]]; then
if [[ "$f" == *"_source"* ]] || [[ "$f" == *".tar.xz"* ]]; then
continue;
fi;
fi;
curl --ftp-create-dirs -T "$f" -u $DPL_FTP_USER:$DPL_FTP_PASS "$__DPL_FTP_LOCATION/package/asset/$f";
done;
done;
# Go back to [repo]/build folder
cd $OLDPWD;
fi;
else
if [[ "$_DPL_BINARY" == "1" ]]; then
find bin -type f -exec curl -u $DPL_FTP_USER:$DPL_FTP_PASS --ftp-create-dirs -T {} $__DPL_FTP_LOCATION/{} \;;
fi;
if [[ "$_DPL_PACKAGE_BINARY" == "1" ]]; then
sudo rm -r package/_CPack_Packages
find package -type f -exec curl -u $DPL_FTP_USER:$DPL_FTP_PASS --ftp-create-dirs -T {} $__DPL_FTP_LOCATION/{} \;;
fi;
fi;
fi
/*********************************************************\
Zone Builder Game Configuration
For Sonic Robo Blast 2 Version 2.2
Contributors (alphabetical):
* Foxboy
* FuriousFox
* JJames19119
* Kalaron
* Kristos
* MascaraSnake
* mazmazz
* Morpheus
* Neo Chaotikal
* Nev3r
* Oogaland
* Rob
* Shadow Hog
* Spherallic
* SRB2-Playah
* SSNTails
* SteelT
* ST218
* toaster
* Viola
\*********************************************************/
// This is required to prevent accidental use of a different configuration
type = "Doom Builder 2 Game Configuration";
// This is the title to show for this game
game = "Sonic Robo Blast 2 - 2.2";
//GZDB specific. Don't try to load lumps that don't exist.
basegame = 0;
// This is the simplified game engine/sourceport name
engine = "zdoom";
// When this is set to true, sectors with the same tag will light up when a line is highlighted
linetagindicatesectors = true;
// The format interface handles the map data format - DoomMapSetIO for SRB2DB2, SRB2MapSetIO for Zone Builder
formatinterface = "SRB2MapSetIO";
//Sky textures for vanilla maps
defaultskytextures
{
SKY1 = "MAP01,MAP02,MAP03,MAP33,MAP50,MAP60,MAPF0,MAPM0";
SKY2 = "MAPM7,MAPMB";
SKY4 = "MAP04,MAP06,MAP61,MAPF6,MAPM1";
SKY6 = "MAP05,MAP51,MAPMA";
SKY7 = "MAPM2,MAPM5";
SKY8 = "MAP07,MAP08,MAP09,MAP52,MAP62,MAPF1";
SKY10 = "MAP10,MAP12,MAP53,MAP63,MAPM3";
SKY11 = "MAP11,MAPF7";
SKY13 = "MAP13,MAP64";
SKY14 = "MAP14";
SKY15 = "MAP15,MAP54";
SKY17 = "MAP70";
SKY20 = "MAP32,MAP55,MAP65,MAPF2,MAPF5";
SKY21 = "MAPM4";
SKY22 = "MAP22,MAP23,MAP25,MAP26,MAP27,MAP56,MAP66,MAPF4,MAPM6";
SKY30 = "MAP30";
SKY31 = "MAP31";
SKY35 = "MAP42";
SKY40 = "MAP41,MAP71,MAPM9";
SKY55 = "MAPF3,MAPM8";
SKY68 = "MAPF8";
SKY99 = "MAP57,MAPZ0";
SKY159 = "MAP16";
SKY172 = "MAP40";
SKY300 = "MAP72";
SKY301 = "MAP73";
}
// Default lump name for new map
defaultlumpname = "MAP01";
// Default testing parameters
testparameters = "-file \"%AP\" \"%F\" -warp %L";
testshortpaths = true;
// Default nodebuilder configurations
defaultsavecompiler = "zennode_normal";
defaulttestcompiler = "zennode_fast";
// Skill levels
skills
{
1 = "Normal";
}
// Skins
skins
{
Sonic;
Tails;
Knuckles;
Amy;
Fang;
Metalsonic;
}
// Gametypes
gametypes
{
-1 = "Single Player";
0 = "Co-op";
1 = "Competition";
2 = "Race";
3 = "Match";
4 = "Team Match";
5 = "Tag";
6 = "Hide and Seek";
7 = "CTF";
}
// Special linedefs
soundlinedefflag = 64; // See linedefflags
singlesidedflag = 1; // See linedefflags
doublesidedflag = 4; // See linedefflags
impassableflag = 1;
upperunpeggedflag = 8;
lowerunpeggedflag = 16;
repeatmidtextureflag = 1024;
pegmidtextureflag = 256;
// Generalized actions
generalizedlinedefs = false;
generalizedsectors = true;
// Texture loading options
defaultwalltexture = "GFZROCK";
defaultfloortexture = "GFZFLR01";
defaultceilingtexture = "F_SKY1";
mixtexturesflats = true;
defaulttexturescale = 1.0f;
defaultflatscale = 1.0f;
// Thing number for start position in 3D Mode
start3dmode = 3328;
/*
TEXTURES AND FLAT SOURCES
This tells Doom Builder where to find the information for textures
and flats in the IWAD file, Addition WAD file and Map WAD file.
Start and end lumps must be given in a structure (of which the
key name doesnt matter) and any textures or flats in between them
are loaded in either the textures category or flats category.
For textures: PNAMES, TEXTURE1 and TEXTURE2 are loaded by default.
Kalaron: and now TX_START
*/
// Texture sources
textures
{
zdoom1
{
start = "TX_START";
end = "TX_END";
}
}
// Patch sources
patches
{
standard1
{
start = "P_START";
end = "P_END";
}
standard2
{
start = "PP_START";
end = "PP_END";
}
}
// Sprite sources
sprites
{
standard1
{
start = "S_START";
end = "S_END";
}
standard2
{
start = "SS_START";
end = "SS_END";
}
}
// Flat sources
flats
{
standard1
{
start = "F_START";
end = "F_END";
}
standard2
{
start = "FF_START";
end = "FF_END";
}
standard3
{
start = "FF_START";
end = "F_END";
}
standard4
{
start = "F_START";
end = "FF_END";
}
}
/*
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
{
~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;
}
}
scriptlumpnames
{
MAINCFG
{
script = "SOC.cfg";
}
OBJCTCFG
{
script = "SOC.cfg";
}
SOC_
{
script = "SOC.cfg";
isprefix = true;
}
LUA_
{
script = "Lua.cfg";
isprefix = true;
}
}
// DEFAULT SECTOR BRIGHTNESS LEVELS
sectorbrightness
{
255;
248;
240;
232;
224;
216;
208;
200;
192;
184;
176;
168;
160;
152;
144;
136;
128;
120;
112;
104;
96;
88;
80;
72;
64;
56;
48;
40;
32;
24;
16;
8;
0;
}
// SECTOR TYPES-----------------------------------------------------------------
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/Rings 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";
}
// GENERALISED SECTOR TYPES-----------------------------------------------------------------
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/Rings 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";
}
}
// LINEDEF FLAGS
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
// This is needed for copy/paste and prefabs to work properly
// When the UDMF field name is prefixed with ! it is inverted
linedefflagstranslation
{
1 = "blocking";
2 = "blockmonsters";
4 = "twosided";
8 = "dontpegtop";
16 = "dontpegbottom";
32 = "secret";
64 = "blocksound";
128 = "dontdraw";
256 = "mapped";
}
// LINEDEF ACTIVATIONS
linedefactivations
{
}
// LINEDEF TYPES
linedeftypes
{
misc
{
title = "Miscellaneous";
0
{
title = "None";
prefix = "(0)";
}
1
{
title = "Per-Sector Gravity";
prefix = "(1)";
flags64text = "[6] Flip in reverse gravity";
}
5
{
title = "Camera Scanner";
prefix = "(5)";
}
7
{
title = "Sector Flat Alignment";
prefix = "(7)";
flags2048text = "[11] Don't align floor";
flags4096text = "[12] Don't align ceiling";
flags8192text = "[13] Use texture offsets";
}
10
{
title = "Culling Plane";
prefix = "(10)";
flags64text = "[6] Cull only while in sector";
}
13
{
title = "Heat Wave Effect";
prefix = "(13)";
}
40
{
title = "Visual Portal Between Tagged Linedefs";
prefix = "(40)";
}
41
{
title = "Horizon Effect";
prefix = "(41)";
}
50
{
title = "Instantly Lower Floor on Level Load";
prefix = "(50)";
}
51
{
title = "Instantly Raise Ceiling on Level Load";
prefix = "(51)";
}
63
{
title = "Fake Floor/Ceiling Planes";
prefix = "(63)";
}
540
{
title = "Floor Friction";
prefix = "(540)";
}
}
parameters
{
title = "Parameters";
2
{
title = "Custom Exit";
prefix = "(2)";
flags2text = "[1] Check emeralds";
flags64text = "[6] Skip score tally";
}
3
{
title = "Zoom Tube Parameters";
prefix = "(3)";
flags512text = "[9] Ignore player direction";
}
4
{
title = "Speed Pad Parameters";
prefix = "(4)";
flags512text = "[9] No teleport to center";
flags1024text = "[10] Force spinning frames";
}
8
{
title = "Special Sector Properties";
prefix = "(8)";
flags32text = "[5] Invert precipitation";
flags64text = "[6] Touch only ceiling";
flags128text = "[7] Allow opposite gravity";
flags256text = "[8] Touch sector edge";
flags512text = "[9] Touch floor or ceiling";
}
9
{
title = "Chain Parameters";
prefix = "(9)";
flags32text = "[5] Swing instead of spin";
flags128text = "[7] Make chain from end item";
flags64text = "[6] Player-turnable chain";
flags256text = "[8] Spawn link at origin";
flags512text = "[9] Don't clip inside ground";
flags1024text = "[10] No distance check";
}
11
{
title = "Rope Hang Parameters";
prefix = "(11)";
flags32text = "[5] Don't loop";
flags64text = "[6] Static";
}
12
{
title = "Rock Spawner Parameters";
prefix = "(12)";
flags64text = "[6] Randomize speed";
}
14
{
title = "Bustable Block Parameters";
prefix = "(14)";
flags32text = "[5] Particles launch from center";
}
15
{
title = "Fan Particle Spawner Parameters";
prefix = "(15)";
}
16
{
title = "Minecart Parameters";
prefix = "(16)";
}
64
{
title = "Continuously Appearing/Disappearing FOF";
prefix = "(64)";
flags2text = "[1] Use control sector tag";
flags64text = "[6] No sound effect";
}
65
{
title = "Bridge Thinker <disabled>";
prefix = "(65)";
}
}
polyobject
{
title = "PolyObject";
20
{
title = "First Line";
prefix = "(20)";
}
21
{
title = "Explicitly Include Line <disabled>";
prefix = "(21)";
}
22
{
title = "Parameters";
prefix = "(22)";
flags64text = "[6] Trigger linedef executor";
flags128text = "[7] Intangible";
flags256text = "[8] Stopped by pushables";
flags512text = "[9] Render flats";
}
30
{
title = "Waving Flag";
prefix = "(30)";
}
31
{
title = "Displacement by Front Sector";
prefix = "(31)";
}
32
{
title = "Angular Displacement by Front Sector";
prefix = "(32)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't turn players";
flags512text = "[9] Turn all objects";
}
}
planemove
{
title = "Plane Movement";
52
{
title = "Continuously Falling Sector";
prefix = "(52)";
flags64text = "[6] Continuously rising";
}
53
{
title = "Continuous Floor/Ceiling Mover";
prefix = "(53)";
}
54
{
title = "Continuous Floor Mover";
prefix = "(54)";
}
55
{
title = "Continuous Ceiling Mover";
prefix = "(55)";
}
56
{
title = "Continuous Two-Speed Floor/Ceiling Mover";
prefix = "(56)";
}
57
{
title = "Continuous Two-Speed Floor Mover";
prefix = "(57)";
}
58
{
title = "Continuous Two-Speed Ceiling Mover";
prefix = "(58)";
}
59
{
title = "Activate Moving Platform";
prefix = "(59)";
flags64text = "[6] Move upwards at start";
}
60
{
title = "Activate Moving Platform (Adjustable Speed)";
prefix = "(60)";
flags64text = "[6] Move upwards at start";
}
61
{
title = "Crusher (Ceiling to Floor)";
prefix = "(61)";
flags512text = "[9] Double, constant speed";
}
62
{
title = "Crusher (Floor to Ceiling)";
prefix = "(62)";
flags512text = "[9] Double, constant speed";
}
66
{
title = "Move Floor by Displacement";
prefix = "(66)";
flags64text = "[6] Inverse movement";
}
67
{
title = "Move Ceiling by Displacement";
prefix = "(67)";
flags64text = "[6] Inverse movement";
}
68
{
title = "Move Floor and Ceiling by Displacement";
prefix = "(68)";
flags64text = "[6] Inverse movement";
}
}
fofsolid
{
title = "FOF (solid)";
100
{
title = "Solid, Opaque";
prefix = "(100)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "19F";
}
101
{
title = "Solid, Opaque, No Shadow";
prefix = "(101)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1DF";
}
102
{
title = "Solid, Translucent";
prefix = "(102)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Render insides";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "195F";
flags643dfloorflagsadd = "7C80";
}
103
{
title = "Solid, Sides Only";
prefix = "(103)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1CF";
}
104
{
title = "Solid, No Sides";
prefix = "(104)";
flags32text = "[5] Only block player";
flags64text = "[6] Cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1D7";
flags643dfloorflagsremove = "40";
}
105
{
title = "Solid, Invisible";
prefix = "(105)";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "47";
}
140
{
title = "Intangible from Bottom, Opaque";
prefix = "(140)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "200841F";
flags643dfloorflagsadd = "40";
}
141
{
title = "Intangible from Bottom, Translucent";
prefix = "(141)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Render insides/block non-plr";
3dfloor = true;
3dfloorflags = "200191F";
flags1283dfloorflagsadd = "7C80";
flags643dfloorflagsadd = "40";
}
142
{
title = "Intangible from Bottom, Translucent, No Sides";
prefix = "(142)";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Render insides/block non-plr";
3dfloor = true;
3dfloorflags = "2001917";
flags1283dfloorflagsadd = "7C80";
flags643dfloorflagsadd = "40";
}
143
{
title = "Intangible from Top, Opaque";
prefix = "(143)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "400841F";
flags643dfloorflagsadd = "40";
}
144
{
title = "Intangible from Top, Translucent";
prefix = "(144)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Render insides/block non-plr";
3dfloor = true;
3dfloorflags = "400191F";
flags1283dfloorflagsadd = "7C80";
flags643dfloorflagsadd = "40";
}
145
{
title = "Intangible from Top, Translucent, No Sides";
prefix = "(145)";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Render insides/block non-plr";
3dfloor = true;
3dfloorflags = "4001917";
flags1283dfloorflagsadd = "7C80";
flags643dfloorflagsadd = "40";
}
146
{
title = "Only Tangible from Sides";
prefix = "(146)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "600800F";
}
}
fofintangible
{
title = "FOF (intangible)";
120
{
title = "Water, Opaque";
prefix = "(120)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "8F39";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
121
{
title = "Water, Translucent";
prefix = "(121)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "9F39";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
122
{
title = "Water, Opaque, No Sides";
prefix = "(122)";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "F31";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
123
{
title = "Water, Translucent, No Sides";
prefix = "(123)";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "1F31";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
124
{
title = "Goo Water, Translucent";
prefix = "(124)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "209F39";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
125
{
title = "Goo Water, Translucent, No Sides";
prefix = "(125)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Use two light levels";
flags512text = "[9] Use target light level";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "201F31";
flags643dfloorflagsadd = "20000";
flags5123dfloorflagsadd = "80000000";
flags10243dfloorflagsadd = "40000000";
}
220
{
title = "Intangible, Opaque";
prefix = "(220)";
flags8text = "[3] Slope skew sides";
3dfloor = true;
3dfloorflags = "8F19";
}
221
{
title = "Intangible, Translucent";
prefix = "(221)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Cast shadow";
3dfloor = true;
3dfloorflags = "1B59";
flags643dfloorflagsremove = "40";
}
222
{
title = "Intangible, Sides Only";
prefix = "(222)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Cast shadow";
3dfloor = true;
3dfloorflags = "8249";
flags643dfloorflagsremove = "240";
}
223
{
title = "Intangible, Invisible";
prefix = "(223)";
3dfloor = true;
3dfloorflags = "41";
}
}
fofmoving
{
title = "FOF (moving)";
150
{
title = "Air Bobbing";
prefix = "(150)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "19F";
}
151
{
title = "Air Bobbing (Adjustable)";
prefix = "(151)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "19F";
}
152
{
title = "Reverse Air Bobbing (Adjustable)";
prefix = "(152)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "19F";
}
160
{
title = "Floating, Bobbing";
prefix = "(160)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "4019F";
}
190
{
title = "Rising Platform, Solid, Opaque";
prefix = "(190)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "19F";
}
191
{
title = "Rising Platform, Solid, Opaque, No Shadow";
prefix = "(191)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1DF";
}
192
{
title = "Rising Platform, Solid, Translucent";
prefix = "(192)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "195F";
}
193
{
title = "Rising Platform, Solid, Invisible";
prefix = "(193)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "47";
}
194
{
title = "Rising Platform, Intangible from Bottom, Opaque";
prefix = "(194)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash, no shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "200841F";
flags643dfloorflagsadd = "40";
}
195
{
title = "Rising Platform, Intangible from Bottom, Translucent";
prefix = "(195)";
flags2text = "[1] Sink when stepped on";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash, no shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "2009D1F";
flags643dfloorflagsadd = "40";
}
}
fofcrumbling
{
title = "FOF (crumbling)";
170
{
title = "Crumbling, Respawn";
prefix = "(170)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "10019F";
}
171
{
title = "Crumbling, No Respawn";
prefix = "(171)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "80019F";
}
172
{
title = "Crumbling, Respawn, Intangible from Bottom";
prefix = "(172)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "210841F";
flags643dfloorflagsadd = "40";
}
173
{
title = "Crumbling, No Respawn, Intangible from Bottom";
prefix = "(173)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "218841F";
flags643dfloorflagsadd = "40";
}
174
{
title = "Crumbling, Respawn, Int. from Bottom, Translucent";
prefix = "(174)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "210959F";
flags643dfloorflagsadd = "40";
}
175
{
title = "Crumbling, No Respawn, Int. from Bottom, Translucent";
prefix = "(175)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Don't cast shadow";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "218959F";
flags643dfloorflagsadd = "40";
}
176
{
title = "Crumbling, Respawn, Floating, Bobbing";
prefix = "(176)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "14019F";
}
177
{
title = "Crumbling, No Respawn, Floating, Bobbing";
prefix = "(177)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1C019F";
}
178
{
title = "Crumbling, Respawn, Floating";
prefix = "(178)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "14019F";
}
179
{
title = "Crumbling, No Respawn, Floating";
prefix = "(179)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "1C019F";
}
180
{
title = "Crumbling, Respawn, Air Bobbing";
prefix = "(180)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags64text = "[6] Spindash to move";
flags128text = "[7] Only block non-players";
3dfloor = true;
3dfloorflags = "10019F";
}
}
fofspecial
{
title = "FOF (special)";
200
{
title = "Light Block";
prefix = "(200)";
3dfloor = true;
3dfloorflags = "20201";
}
201
{
title = "Half Light Block";
prefix = "(201)";
3dfloor = true;
3dfloorflags = "201";
}
202
{
title = "Fog Block";
prefix = "(202)";
3dfloor = true;
3dfloorflags = "3EF19";
}
250
{
title = "Mario Block";
prefix = "(250)";
flags32text = "[5] Invisible block";
flags64text = "[6] Brick block";
3dfloor = true;
3dfloorflags = "40019F";
}
251
{
title = "Thwomp Block";
prefix = "(251)";
flags512text = "[9] Custom crushing sound";
flags1024text = "[10] Custom speed";
3dfloor = true;
3dfloorflags = "19F";
}
252
{
title = "Shatter Block";
prefix = "(252)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Shatter only from below";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorflags = "8800019";
flags643dfloorflagsadd = "200006";
}
253
{
title = "Shatter Block, Translucent";
prefix = "(253)";
flags8text = "[3] Slope skew sides";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorflags = "8801019";
}
254
{
title = "Bustable Block";
prefix = "(254)";
flags8text = "[3] Slope skew sides";
flags64text = "[6] Strong characters only";
flags128text = "[7] Only block non-players";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorflags = "80001F";
flags643dfloorflagsadd = "20000000";
}
255
{
title = "Spin-Bustable Block";
prefix = "(255)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorflags = "1080001F";
}
256
{
title = "Spin-Bustable Block, Translucent";
prefix = "(256)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorflags = "1080101F";
}
257
{
title = "Quicksand";
prefix = "(257)";
flags8text = "[3] Slope skew sides";
flags1024text = "[10] Ripple effect";
3dfloor = true;
3dfloorflags = "1008219";
flags10243dfloorflagsadd = "40000000";
}
258
{
title = "Laser";
prefix = "(258)";
flags8text = "[3] Slope skew sides";
flags32text = "[5] Don't damage bosses";
3dfloor = true;
3dfloorflags = "959";
}
259
{
title = "Custom FOF";
prefix = "(259)";
flags32text = "[5] Only block player";
flags128text = "[7] Only block non-players";
flags512text = "[9] Shattered by pushables";
flags1024text = "[10] Trigger linedef executor";
3dfloor = true;
3dfloorcustom = true;
}
}
linedeftrigger
{
title = "Linedef Executor Trigger";
300
{
title = "Continuous";
prefix = "(300)";
}
301
{
title = "Each Time";
prefix = "(301)";
flags16384text = "[14] Also trigger on exit";
}
302
{
title = "Once";
prefix = "(302)";
}
303
{
title = "Ring Count - Continuous";
prefix = "(303)";
flags2text = "[1] Rings greater or equal";
flags64text = "[6] Rings less or equal";
flags512text = "[9] Consider all players";
}
304
{
title = "Ring Count - Once";
prefix = "(304)";
flags2text = "[1] Rings greater or equal";
flags64text = "[6] Rings less or equal";
flags512text = "[9] Consider all players";
}
305
{
title = "Character Ability - Continuous";
prefix = "(305)";
}
306
{
title = "Character Ability - Each Time";
prefix = "(306)";
flags16384text = "[14] Also trigger on exit";
}
307
{
title = "Character Ability - Once";
prefix = "(307)";
}
308
{
title = "Race Only - Once";
prefix = "(308)";
}
309
{
title = "CTF Red Team - Continuous";
prefix = "(309)";
}
310
{
title = "CTF Red Team - Each Time";
prefix = "(310)";
flags16384text = "[14] Also trigger on exit";
}
311
{
title = "CTF Blue Team - Continuous";
prefix = "(311)";
}
312
{
title = "CTF Blue Team - Each Time";
prefix = "(312)";
flags16384text = "[14] Also trigger on exit";
}
313
{
title = "No More Enemies - Once";
prefix = "(313)";
}
314
{
title = "Number of Pushables - Continuous";
prefix = "(314)";
flags64text = "[6] Number greater or equal";
flags512text = "[9] Number less";
}
315
{
title = "Number of Pushables - Once";
prefix = "(315)";
flags64text = "[6] Number greater or equal";
flags512text = "[9] Number less";
}
317
{
title = "Condition Set Trigger - Continuous";
prefix = "(317)";
}
318
{
title = "Condition Set Trigger - Once";
prefix = "(318)";
}
319
{
title = "Unlockable - Continuous";
prefix = "(319)";
}
320
{
title = "Unlockable - Once";
prefix = "(320)";
}
321
{
title = "Trigger After X Calls - Continuous";
prefix = "(321)";
flags64text = "[6] Trigger more than once";
}
322
{
title = "Trigger After X Calls - Each Time";
prefix = "(322)";
flags64text = "[6] Trigger more than once";
}
323
{
title = "NiGHTSerize - Each Time";
prefix = "(323)";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run only if player is NiGHTS";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags16384text = "[14] Run if no more mares";
flags32768text = "[15] Run if player is not NiGHTS";
}
324
{
title = "NiGHTSerize - Once";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run only if player is NiGHTS";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags16384text = "[14] Run if no more mares";
flags32768text = "[15] Run if player is not NiGHTS";
prefix = "(324)";
}
325
{
title = "De-NiGHTSerize - Each Time";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run if anyone is NiGHTS";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags32768text = "[15] Run if no one is NiGHTS";
prefix = "(325)";
}
326
{
title = "De-NiGHTSerize - Once";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run if anyone is NiGHTS";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags32768text = "[15] Run if no one is NiGHTS";
prefix = "(326)";
}
327
{
title = "NiGHTS Lap - Each Time";
flags2text = "[1] Mare >= Front X Offset";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
prefix = "(327)";
}
328
{
title = "NiGHTS Lap - Once";
flags2text = "[1] Mare >= Front X Offset";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
prefix = "(328)";
}
329
{
title = "Ideya Capture Touch - Each Time";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run regardless of spheres";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags16384text = "[14] Only if not enough spheres";
flags32768text = "[15] Run when entering Capture";
prefix = "(329)";
}
330
{
title = "Ideya Capture Touch - Once";
flags2text = "[1] Mare >= Front X Offset";
flags8text = "[3] Run regardless of spheres";
flags16text = "[4] Count from lowest of players";
flags32text = "[5] Lap <= Front Y Offset";
flags64text = "[6] Mare <= Front X Offset";
flags128text = "[7] Lap >= Front Y Offset";
flags256text = "[8] Count laps from Bonus Time";
flags512text = "[9] Count from triggering player";
flags16384text = "[14] Only if not enough spheres";
flags32768text = "[15] Run when entering Capture";
prefix = "(330)";
}
331
{
title = "Player Skin - Continuous";
flags64text = "[6] Disable for this skin";
prefix = "(331)";
}
332
{
title = "Player Skin - Each Time";
flags64text = "[6] Disable for this skin";
prefix = "(332)";
}
333
{
title = "Player Skin - Once";
flags64text = "[6] Disable for this skin";
prefix = "(333)";
}
399
{
title = "Level Load";
prefix = "(399)";
}
}
linedefexecsector
{
title = "Linedef Executor (sector)";
400
{
title = "Set Tagged Sector's Floor Height/Texture";
prefix = "(400)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Keep floor flat";
}
401
{
title = "Set Tagged Sector's Ceiling Height/Texture";
prefix = "(401)";
flags8text = "[3] Set delay by backside sector";
}
402
{
title = "Set Tagged Sector's Light Level";
prefix = "(402)";
flags8text = "[3] Set delay by backside sector";
}
409
{
title = "Change Tagged Sector's Tag";
prefix = "(409)";
flags8text = "[3] Set delay by backside sector";
}
410
{
title = "Change Front Sector's Tag";
prefix = "(410)";
flags8text = "[3] Set delay by backside sector";
}
416
{
title = "Start Adjustable Flickering Light";
prefix = "(416)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Second level from back";
}
417
{
title = "Start Adjustable Pulsating Light";
prefix = "(417)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Second level from back";
}
418
{
title = "Start Adjustable Blinking Light (unsynchronized)";
prefix = "(418)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Second level from back";
}
419
{
title = "Start Adjustable Blinking Light (synchronized)";
prefix = "(419)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Second level from back";
}
420
{
title = "Fade Light Level";
prefix = "(420)";
flags8text = "[3] Set delay by backside sector";
flags16text = "[4] Set params by X/Y offsets";
flags512text = "[9] Speed = Tic Duration";
flags1024text = "[10] Override existing fade";
}
421
{
title = "Stop Lighting Effect";
prefix = "(421)";
flags8text = "[3] Set delay by backside sector";
}
435
{
title = "Change Plane Scroller Direction";
prefix = "(435)";
flags8text = "[3] Set delay by backside sector";
}
}
linedefexecplane
{
title = "Linedef Executor (plane movement)";
403
{
title = "Move Tagged Sector's Floor";
prefix = "(403)";
flags2text = "[1] Trigger linedef executor";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Change floor flat";
}
404
{
title = "Move Tagged Sector's Ceiling";
prefix = "(404)";
flags2text = "[1] Trigger linedef executor";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Change ceiling flat";
}
405
{
title = "Move Floor According to Front Texture Offsets";
prefix = "(405)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Move instantly";
}
407
{
title = "Move Ceiling According to Front Texture Offsets";
prefix = "(407)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Move instantly";
}
411
{
title = "Stop Plane Movement";
prefix = "(411)";
flags8text = "[3] Set delay by backside sector";
}
428
{
title = "Start Platform Movement";
prefix = "(428)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Move upwards at start";
}
429
{
title = "Crush Ceiling Once";
prefix = "(429)";
flags8text = "[3] Set delay by backside sector";
flags512text = "[9] Double, constant speed";
}
430
{
title = "Crush Floor Once";
prefix = "(430)";
flags8text = "[3] Set delay by backside sector";
}
431
{
title = "Crush Floor and Ceiling Once";
prefix = "(431)";
flags8text = "[3] Set delay by backside sector";
flags512text = "[9] Double, constant speed";
}
}
linedefexecplayer
{
title = "Linedef Executor (player/object)";
412
{
title = "Teleporter";
prefix = "(412)";
flags2text = "[1] Silent";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Retain angle";
flags256text = "[8] Relative, silent";
flags512text = "[9] Retain momentum";
}
425
{
title = "Change Object State";
prefix = "(425)";
flags8text = "[3] Set delay by backside sector";
}
426
{
title = "Stop Object";
prefix = "(426)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Teleport to sector center";
}
427
{
title = "Award Score";
prefix = "(427)";
flags8text = "[3] Set delay by backside sector";
}
432
{
title = "Enable/Disable 2D Mode";
prefix = "(432)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Return to 3D";
}
433
{
title = "Enable/Disable Gravity Flip";
prefix = "(433)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Return to normal";
}
434
{
title = "Award Power-Up";
prefix = "(434)";
flags2text = "[1] Use back upper texture";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] No time limit";
}
437
{
title = "Disable Player Control";
prefix = "(437)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Allow jumping";
}
438
{
title = "Change Object Size";
prefix = "(438)";
flags8text = "[3] Set delay by backside sector";
}
442
{
title = "Change Object Type State";
prefix = "(442)";
flags8text = "[3] Set delay by backside sector";
}
457
{
title = "Track Object's Angle";
prefix = "(457)";
flags8text = "[3] Set delay by backside sector";
flags128text = "[7] Don't stop after first fail";
}
458
{
title = "Stop Tracking Object's Angle";
prefix = "(458)";
flags8text = "[3] Set delay by backside sector";
}
460
{
title = "Award Rings";
prefix = "(460)";
}
461
{
title = "Spawn Object";
prefix = "(461)";
flags64text = "[6] Spawn inside a range";
}
462
{
title = "Stop Timer/Exit Stage in Record Attack";
prefix = "(462)";
}
}
linedefexecmisc
{
title = "Linedef Executor (misc.)";
413
{
title = "Change Music";
prefix = "(413)";
flags2text = "[1] Keep after death";
flags8text = "[3] Set delay by backside sector";
flags32text = "[5] Seek to current song position";
flags64text = "[6] For everyone";
flags128text = "[7] Fade to custom volume";
flags512text = "[9] Don't loop";
flags16384text = "[14] Force music reload";
}
414
{
title = "Play Sound Effect";
prefix = "(414)";
flags2text = "[1] From calling sector";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] From nowhere for triggerer";
flags512text = "[9] For everyone";
flags1024text = "[10] From tagged sectors";
}
415
{
title = "Run Script";
prefix = "(415)";
flags8text = "[3] Set delay by backside sector";
}
422
{
title = "Switch to Cut-Away View";
prefix = "(422)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Adjust pitch";
}
423
{
title = "Change Sky";
prefix = "(423)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] For everyone";
}
424
{
title = "Change Weather";
prefix = "(424)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] For everyone";
}
436
{
title = "Shatter FOF";
prefix = "(436)";
flags8text = "[3] Set delay by backside sector";
}
439
{
title = "Change Tagged Linedef's Textures";
prefix = "(439)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Only existing";
}
440
{
title = "Start Metal Sonic Race";
prefix = "(440)";
flags8text = "[3] Set delay by backside sector";
}
441
{
title = "Condition Set Trigger";
prefix = "(441)";
flags8text = "[3] Set delay by backside sector";
}
443
{
title = "Call Lua Function";
prefix = "(443)";
flags8text = "[3] Set delay by backside sector";
}
444
{
title = "Earthquake";
prefix = "(444)";
flags8text = "[3] Set delay by backside sector";
}
445
{
title = "Make FOF Disappear/Reappear";
prefix = "(445)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Reappear";
}
446
{
title = "Make FOF Crumble";
prefix = "(446)";
flags2text = "[1] Flags determine respawn";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't respawn";
}
447
{
title = "Change Tagged Sector's Colormap";
prefix = "(447)";
flags8text = "[3] Set delay by backside sector";
flags16text = "[4] Front X/Y = Alpha";
flags32text = "[5] Subtract Red value";
flags64text = "[6] Subtract Green value";
flags128text = "[7] Subtract Blue value";
flags256text = "[8] Calc relative values";
flags32768text = "[15] Use back side colormap";
}
448
{
title = "Change Skybox";
prefix = "(448)";
flags2text = "[1] Change centerpoint";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] For everyone";
flags512text = "[9] Don't change viewpoint";
}
450
{
title = "Execute Linedef Executor (specific tag)";
prefix = "(450)";
flags8text = "[3] Set delay by backside sector";
}
451
{
title = "Execute Linedef Executor (random tag in range)";
prefix = "(451)";
flags8text = "[3] Set delay by backside sector";
}
452
{
title = "Set FOF Translucency";
prefix = "(452)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Do not handle FF_TRANS";
flags256text = "[8] Set relative to current val";
}
453
{
title = "Fade FOF";
prefix = "(453)";
flags2text = "[1] Do not handle FF_EXISTS";
flags8text = "[3] Set delay by backside sector";
flags32text = "[5] No collision during fade";
flags64text = "[6] Do not handle FF_TRANS";
flags128text = "[7] Do not handle lighting";
flags256text = "[8] Set relative to current val";
flags512text = "[9] Speed = Tic Duration";
flags1024text = "[10] Override existing fade";
flags16384text = "[14] Do not handle collision";
flags32768text = "[15] Use exact alpha in OGL";
}
454
{
title = "Stop Fading FOF";
prefix = "(454)";
flags2text = "[1] Do not finalize collision";
flags8text = "[3] Set delay by backside sector";
}
455
{
title = "Fade Tagged Sector's Colormap";
prefix = "(455)";
flags8text = "[3] Set delay by backside sector";
flags16text = "[4] Front X/Y = Alpha";
flags32text = "[5] Subtract Red value";
flags64text = "[6] Subtract Green value";
flags128text = "[7] Subtract Blue value";
flags256text = "[8] Calc relative values";
flags512text = "[9] Speed = Tic Duration";
flags1024text = "[10] Override existing fade";
flags16384text = "[14] Fade from invisible black";
flags32768text = "[15] Use back side colormap";
}
456
{
title = "Stop Fading Tagged Sector's Colormap";
prefix = "(456)";
flags8text = "[3] Set delay by backside sector";
}
459
{
title = "Control Text Prompt";
prefix = "(459)";
flags2text = "[1] Close text prompt";
flags8text = "[3] Set delay by backside sector";
flags32text = "[5] Run executor tag on close";
flags64text = "[6] For everyone";
flags128text = "[7] Do not block controls";
flags256text = "[8] Do not freeze time";
flags32768text = "[15] Find prompt by name";
}
}
linedefexecpoly
{
title = "Linedef Executor (polyobject)";
480
{
title = "Door Slide";
prefix = "(480)";
flags8text = "[3] Set delay by backside sector";
}
481
{
title = "Door Swing";
prefix = "(481)";
flags8text = "[3] Set delay by backside sector";
}
482
{
title = "Move";
prefix = "(482)";
flags8text = "[3] Set delay by backside sector";
}
483
{
title = "Move, Override";
prefix = "(483)";
flags8text = "[3] Set delay by backside sector";
}
484
{
title = "Rotate Right";
prefix = "(484)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't turn players";
flags512text = "[9] Turn all objects";
}
485
{
title = "Rotate Right, Override";
prefix = "(485)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't turn players";
flags512text = "[9] Turn all objects";
}
486
{
title = "Rotate Left";
prefix = "(486)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't turn players";
flags512text = "[9] Turn all objects";
}
487
{
title = "Rotate Left, Override";
prefix = "(487)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Don't turn players";
flags512text = "[9] Turn all objects";
}
488
{
title = "Move by Waypoints";
prefix = "(488)";
flags8text = "[3] Set delay by backside sector";
flags32text = "[5] Reverse order";
flags128text = "[7] There and back";
flags256text = "[8] Return when done";
flags512text = "[9] Loop movement";
}
489
{
title = "Turn Invisible, Intangible";
prefix = "(489)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Only invisible";
}
490
{
title = "Turn Visible, Tangible";
prefix = "(490)";
flags8text = "[3] Set delay by backside sector";
flags64text = "[6] Only visible";
}
491
{
title = "Set Translucency";
prefix = "(491)";
flags8text = "[3] Set delay by backside sector";
flags16text = "[4] Set raw alpha by Front X";
flags256text = "[8] Calc relative values";
}
492
{
title = "Fade Translucency";
prefix = "(492)";
flags8text = "[3] Set delay by backside sector";
flags16text = "[4] Set raw alpha by Front X";
flags32text = "[5] No collision during fade";
flags256text = "[8] Calc relative values";
flags512text = "[9] Speed = Tic Duration";
flags1024text = "[10] Override existing fade";
flags16384text = "[14] Do not handle collision";
}
}
wallscroll
{
title = "Wall Scrolling";
500
{
title = "Scroll Wall Front Side Left";
prefix = "(500)";
}
501
{
title = "Scroll Wall Front Side Right";
prefix = "(501)";
}
502
{
title = "Scroll Wall According to Linedef";
prefix = "(502)";
}
503
{
title = "Scroll Wall According to Linedef (Accelerative)";
prefix = "(503)";
}
504
{
title = "Scroll Wall According to Linedef (Displacement)";
prefix = "(504)";
}
505
{
title = "Scroll Texture by Front Side Offsets";
prefix = "(505)";
}
506
{
title = "Scroll Texture by Back Side Offsets";
prefix = "(506)";
}
}
planescroll
{
title = "Plane Scrolling";
510
{
title = "Scroll Floor Texture";
prefix = "(510)";
}
511
{
title = "Scroll Floor Texture (Accelerative)";
prefix = "(511)";
}
512
{
title = "Scroll Floor Texture (Displacement)";
prefix = "(512)";
}
513
{
title = "Scroll Ceiling Texture";
prefix = "(513)";
}
514
{
title = "Scroll Ceiling Texture (Accelerative)";
prefix = "(514)";
}
515
{
title = "Scroll Ceiling Texture (Displacement)";
prefix = "(515)";
}
520
{
title = "Carry Objects on Floor";
prefix = "(520)";
}
521
{
title = "Carry Objects on Floor (Accelerative)";
prefix = "(521)";
flags64text = "[6] Even across edges";
}
522
{
title = "Carry Objects on Floor (Displacement)";
prefix = "(522)";
}
523
{
title = "Carry Objects on Ceiling";
prefix = "(523)";
flags64text = "[6] Even across edges";
}
524
{
title = "Carry Objects on Ceiling (Accelerative)";
prefix = "(524)";
}
525
{
title = "Carry Objects on Ceiling (Displacement)";
prefix = "(525)";
}
530
{
title = "Scroll Floor Texture and Carry Objects";
prefix = "(530)";
flags64text = "[6] Even across edges";
}
531
{
title = "Scroll Floor Texture and Carry Objects (Accelerative)";
prefix = "(531)";
}
532
{
title = "Scroll Floor Texture and Carry Objects (Displacement)";
prefix = "(532)";
}
533
{
title = "Scroll Ceiling Texture and Carry Objects";
prefix = "(533)";
flags64text = "[6] Even across edges";
}
534
{
title = "Scroll Ceiling Texture and Carry Objects (Accelerative)";
prefix = "(534)";
}
535
{
title = "Scroll Ceiling Texture and Carry Objects (Displacement)";
prefix = "(535)";
}
}
pusher
{
title = "Pusher";
541
{
title = "Wind";
prefix = "(541)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
542
{
title = "Upwards Wind";
prefix = "(542)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
543
{
title = "Downwards Wind";
prefix = "(543)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
544
{
title = "Current";
prefix = "(544)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
545
{
title = "Upwards Current";
prefix = "(545)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
546
{
title = "Downwards Current";
prefix = "(546)";
flags512text = "[9] Player slides";
flags64text = "[6] Even across edges";
}
547
{
title = "Push/Pull";
prefix = "(547)";
}
}
light
{
title = "Lighting";
600
{
title = "Floor Lighting";
prefix = "(600)";
}
601
{
title = "Ceiling Lighting";
prefix = "(601)";
}
602
{
title = "Adjustable Pulsating Light";
prefix = "(602)";
}
603
{
title = "Adjustable Flickering Light";
prefix = "(603)";
}
604
{
title = "Adjustable Blinking Light (unsynchronized)";
prefix = "(604)";
}
605
{
title = "Adjustable Blinking Light (synchronized)";
prefix = "(605)";
}
606
{
title = "Colormap";
prefix = "(606)";
}
}
slope
{
title = "Slope";
700
{
title = "Slope Frontside Floor";
prefix = "(700)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 1;
}
701
{
title = "Slope Frontside Ceiling";
prefix = "(701)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 2;
}
702
{
title = "Slope Frontside Floor and Ceiling";
prefix = "(702)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 3;
}
703
{
title = "Slope Frontside Floor and Backside Ceiling";
prefix = "(703)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 9;
}
704
{
title = "Slope Frontside Floor by 3 Tagged Vertex Things";
prefix = "(704)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
flags8192text = "[13] Use tag and offsets";
slope = "vertex";
slopeargs = 0;
}
705
{
title = "Slope Frontside Ceiling by 3 Tagged Vertex Things";
prefix = "(705)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
flags8192text = "[13] Use tag and offsets";
slope = "vertex";
slopeargs = 1;
}
710
{
title = "Slope Backside Floor";
prefix = "(710)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 4;
}
711
{
title = "Slope Backside Ceiling";
prefix = "(711)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 8;
}
712
{
title = "Slope Backside Floor and Ceiling";
prefix = "(712)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 12;
}
713
{
title = "Slope Backside Floor and Frontside Ceiling";
prefix = "(713)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
slope = "regular";
slopeargs = 6;
}
714
{
title = "Slope Backside Floor by 3 Tagged Vertex Things";
prefix = "(714)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
flags8192text = "[13] Use tag and offsets";
slope = "vertex";
slopeargs = 2;
}
715
{
title = "Slope Backside Ceiling by 3 Tagged Vertex Things";
prefix = "(715)";
flags2048text = "[11] No physics";
flags4096text = "[12] Dynamic";
flags8192text = "[13] Use tag and offsets";
slope = "vertex";
slopeargs = 3;
}
720
{
title = "Copy Frontside Floor Slope from Line Tag";
prefix = "(720)";
slope = "copy";
slopeargs = 1;
}
721
{
title = "Copy Frontside Ceiling Slope from Line Tag";
prefix = "(721)";
slope = "copy";
slopeargs = 2;
}
722
{
title = "Copy Frontside Floor and Ceiling Slope from Line Tag";
prefix = "(722)";
slope = "copy";
slopeargs = 3;
}
799
{
title = "Set Tagged Dynamic Slope Vertex to Front Sector Height";
prefix = "(799)";
}
}
transwall
{
title = "Translucent Wall";
900
{
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";
prefix = "(908)";
}
909
{
title = "Fog Wall";
prefix = "(909)";
}
}
}
// THING FLAGS
thingflags
{
1 = "[1] Extra";
2 = "[2] Flip";
4 = "[4] Special";
8 = "[8] Ambush";
}
// 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
{
1 = "skill1";
2 = "skill2";
4 = "skill3";
8 = "ambush";
}
// 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;
// THING TYPES------------------------------------------------------------------
// Color values: 1-Dark_Blue 2-Dark_Green 3-Turqoise 4-Dark_Red 5-Purple 6-Brown 7-Gray
// 8-Dark_Gray 9-Blue 10-Green 11-Cyan 12-Red 13-Magenta
// 14-Yellow 15-White 16-Pink 17-Orange 18-Gold 19-Cream
thingtypes
{
editor
{
color = 15; // White
arrow = 1;
title = "<Editor Things>";
error = -1;
width = 8;
height = 16;
sort = 1;
3328 = "3D Mode Start";
}
starts
{
color = 1; // Blue
arrow = 1;
title = "Player Starts";
width = 16;
height = 48;
flags8text = "[8] Spawn on ceiling";
sprite = "PLAYA0";
1
{
title = "Player 01 Start";
sprite = "PLAYA0";
}
2
{
title = "Player 02 Start";
sprite = "PLAYA0";
}
3
{
title = "Player 03 Start";
sprite = "PLAYA0";
}
4
{
title = "Player 04 Start";
sprite = "PLAYA0";
}
5
{
title = "Player 05 Start";
sprite = "PLAYA0";
}
6
{
title = "Player 06 Start";
sprite = "PLAYA0";
}
7
{
title = "Player 07 Start";
sprite = "PLAYA0";
}
8
{
title = "Player 08 Start";
sprite = "PLAYA0";
}
9
{
title = "Player 09 Start";
sprite = "PLAYA0";
}
10
{
title = "Player 10 Start";
sprite = "PLAYA0";
}
11
{
title = "Player 11 Start";
sprite = "PLAYA0";
}
12
{
title = "Player 12 Start";
sprite = "PLAYA0";
}
13
{
title = "Player 13 Start";
sprite = "PLAYA0";
}
14
{
title = "Player 14 Start";
sprite = "PLAYA0";
}
15
{
title = "Player 15 Start";
sprite = "PLAYA0";
}
16
{
title = "Player 16 Start";
sprite = "PLAYA0";
}
17
{
title = "Player 17 Start";
sprite = "PLAYA0";
}
18
{
title = "Player 18 Start";
sprite = "PLAYA0";
}
19
{
title = "Player 19 Start";
sprite = "PLAYA0";
}
20
{
title = "Player 20 Start";
sprite = "PLAYA0";
}
21
{
title = "Player 21 Start";
sprite = "PLAYA0";
}
22
{
title = "Player 22 Start";
sprite = "PLAYA0";
}
23
{
title = "Player 23 Start";
sprite = "PLAYA0";
}
24
{
title = "Player 24 Start";
sprite = "PLAYA0";
}
25
{
title = "Player 25 Start";
sprite = "PLAYA0";
}
26
{
title = "Player 26 Start";
sprite = "PLAYA0";
}
27
{
title = "Player 27 Start";
sprite = "PLAYA0";
}
28
{
title = "Player 28 Start";
sprite = "PLAYA0";
}
29
{
title = "Player 29 Start";
sprite = "PLAYA0";
}
30
{
title = "Player 30 Start";
sprite = "PLAYA0";
}
31
{
title = "Player 31 Start";
sprite = "PLAYA0";
}
32
{
title = "Player 32 Start";
sprite = "PLAYA0";
}
33
{
title = "Match Start";
sprite = "NDRNA2A8";
}
34
{
title = "CTF Red Team Start";
sprite = "SIGNG0";
}
35
{
title = "CTF Blue Team Start";
sprite = "SIGNE0";
}
}
enemies
{
color = 9; // Light_Blue
arrow = 1;
title = "Enemies";
100
{
title = "Crawla (Blue)";
sprite = "POSSA1";
width = 24;
height = 32;
}
101
{
title = "Crawla (Red)";
sprite = "SPOSA1";
width = 24;
height = 32;
}
102
{
title = "Stupid Dumb Unnamed RoboFish";
sprite = "FISHA0";
width = 8;
height = 28;
angletext = "Jump strength";
}
103
{
title = "Buzz (Gold)";
sprite = "BUZZA1";
width = 28;
height = 40;
flags8text = "[8] Cannot move";
}
104
{
title = "Buzz (Red)";
sprite = "RBUZA1";
width = 28;
height = 40;
flags8text = "[8] Cannot move";
}
108
{
title = "Deton";
sprite = "DETNA1";
width = 20;
height = 32;
}
110
{
title = "Turret";
sprite = "TRETA1";
width = 16;
height = 32;
}
111
{
title = "Pop-up Turret";
sprite = "TURRI1";
width = 12;
height = 64;
angletext = "Firing delay";
}
122
{
title = "Spring Shell (Green)";
sprite = "SSHLA1";
width = 24;
height = 40;
}
125
{
title = "Spring Shell (Yellow)";
sprite = "SSHLI1";
width = 24;
height = 40;
}
109
{
title = "Skim";
sprite = "SKIMA1";
width = 16;
height = 24;
}
113
{
title = "Jet Jaw";
sprite = "JJAWA3A7";
width = 12;
height = 20;
}
126
{
title = "Crushstacean";
sprite = "CRABA0";
width = 24;
height = 32;
flags8text = "[8] Move left from spawn";
}
138
{
title = "Banpyura";
sprite = "CR2BA0";
width = 24;
height = 32;
flags8text = "[8] Move left from spawn";
}
117
{
title = "Robo-Hood";
sprite = "ARCHA1";
width = 24;
height = 32;
}
118
{
title = "Lance-a-Bot";
sprite = "CBFSA1";
width = 32;
height = 72;
}
1113
{
title = "Suspicious Lance-a-Bot Statue";
sprite = "CBBSA1";
width = 32;
height = 72;
}
119
{
title = "Egg Guard";
sprite = "ESHIA1";
width = 16;
height = 48;
flags1text = "[1] 90 degrees counter-clockwise";
flags4text = "[4] 90 degrees clockwise";
flags8text = "[8] Double speed";
}
115
{
title = "Bird Aircraft Strike Hazard";
sprite = "VLTRF1";
width = 12;
height = 24;
}
120
{
title = "Green Snapper";
sprite = "GSNPA1";
width = 24;
height = 24;
}
121
{
title = "Minus";
sprite = "MNUSA0";
width = 24;
height = 32;
}
134
{
title = "Canarivore";
sprite = "CANAA0";
width = 12;
height = 80;
hangs = 1;
}
123
{
title = "Unidus";
sprite = "UNIDA1";
width = 18;
height = 36;
}
135
{
title = "Pterabyte Spawner";
sprite = "PTERA2A8";
width = 16;
height = 16;
parametertext = "No. Pterabytes";
}
136
{
title = "Pyre Fly";
sprite = "PYREA0";
width = 24;
height = 34;
flags8text = "[8] Start on fire";
}
137
{
title = "Dragonbomber";
sprite = "DRABA1";
width = 28;
height = 48;
}
105
{
title = "Jetty-Syn Bomber";
sprite = "JETBB1";
width = 20;
height = 50;
flags8text = "[8] Cannot move";
}
106
{
title = "Jetty-Syn Gunner";
sprite = "JETGB1";
width = 20;
height = 48;
flags8text = "[8] Cannot move";
}
112
{
title = "Spincushion";
sprite = "SHRPA1";
width = 16;
height = 24;
}
114
{
title = "Snailer";
sprite = "SNLRA3A7";
width = 24;
height = 48;
}
129
{
title = "Penguinator";
sprite = "PENGA1";
width = 24;
height = 32;
}
130
{
title = "Pophat";
sprite = "POPHA1";
width = 24;
height = 32;
}
107
{
title = "Crawla Commander";
sprite = "CCOMA1";
width = 16;
height = 32;
}
131
{
title = "Spinbobert";
sprite = "SBOBB0";
width = 32;
height = 32;
}
132
{
title = "Cacolantern";
sprite = "CACOA0";
width = 32;
height = 32;
flags8text = "[8] Cannot move";
}
133
{
title = "Hangster";
sprite = "HBATC1";
width = 24;
height = 24;
hangs = 1;
}
127
{
title = "Hive Elemental";
sprite = "HIVEA0";
width = 32;
height = 80;
parametertext = "No. bees";
}
128
{
title = "Bumblebore";
sprite = "BUMBA1";
width = 16;
height = 32;
}
124
{
title = "Buggle";
sprite = "BBUZA1";
width = 20;
height = 24;
}
116
{
title = "Pointy";
sprite = "PNTYA1";
width = 8;
height = 16;
}
}
bosses
{
color = 8; // Dark_Gray
arrow = 1;
title = "Bosses";
200
{
title = "Egg Mobile";
sprite = "EGGMA1";
width = 24;
height = 76;
flags4text = "[4] End level on death";
flags8text = "[8] Alternate laser attack";
}
201
{
title = "Egg Slimer";
sprite = "EGGNA1";
width = 24;
height = 76;
flags4text = "[4] End level on death";
flags8text = "[8] Speed up when hit";
}
202
{
title = "Sea Egg";
sprite = "EGGOA1";
width = 32;
height = 116;
flags4text = "[4] End level on death";
}
203
{
title = "Egg Colosseum";
sprite = "EGGPA1";
width = 24;
height = 76;
flags4text = "[4] End level on death";
}
204
{
title = "Fang";
sprite = "FANGA1";
width = 24;
height = 60;
flags1text = "[1] Grayscale mode";
flags4text = "[4] End level on death";
}
206
{
title = "Brak Eggman (Old)";
sprite = "BRAKB1";
width = 48;
height = 160;
flags4text = "[4] End level on death";
}
207
{
title = "Metal Sonic (Race)";
sprite = "METLI1";
width = 16;
height = 48;
flags1text = "[1] Grayscale mode";
}
208
{
title = "Metal Sonic (Battle)";
sprite = "METLC1";
width = 16;
height = 48;
flags1text = "[1] Grayscale mode";
flags4text = "[4] End level on death";
}
209
{
title = "Brak Eggman";
sprite = "BRAK01";
width = 48;
height = 160;
flags1text = "[1] No origin-fling death";
flags4text = "[4] End level on death";
flags8text = "[8] Electric barrier";
}
290
{
arrow = 0;
title = "Boss Escape Point";
width = 8;
height = 16;
sprite = "internal:eggmanend";
}
291
{
arrow = 0;
title = "Egg Capsule Center";
width = 8;
height = 16;
sprite = "internal:capsule";
}
292
{
arrow = 0;
title = "Boss Waypoint";
width = 8;
height = 16;
flags8text = "[8] Sea Egg shooting point";
sprite = "internal:eggmanway";
angletext = "No. (Sea Egg)";
flagsvaluetext = "No. (Brak)";
parametertext = "Next";
}
293
{
title = "Metal Sonic Gather Point";
sprite = "internal:metal";
width = 8;
height = 16;
}
294
{
title = "Fang Waypoint";
flags8text = "[8] Center waypoint";
sprite = "internal:eggmanway";
width = 8;
height = 16;
}
}
rings
{
color = 14; // Yellow
title = "Rings and Weapon Panels";
width = 24;
height = 24;
flags8height = 24;
flags8text = "[8] Float";
sprite = "RINGA0";
300
{
title = "Ring";
sprite = "RINGA0";
width = 16;
}
301
{
title = "Bounce Ring";
sprite = "internal:RNGBA0";
}
302
{
title = "Rail Ring";
sprite = "internal:RNGRA0";
}
303
{
title = "Infinity Ring";
sprite = "internal:RNGIA0";
}
304
{
title = "Automatic Ring";
sprite = "internal:RNGAA0";
}
305
{
title = "Explosion Ring";
sprite = "internal:RNGEA0";
}
306
{
title = "Scatter Ring";
sprite = "internal:RNGSA0";
}
307
{
title = "Grenade Ring";
sprite = "internal:RNGGA0";
}
308
{
title = "CTF Team Ring (Red)";
sprite = "internal:RRNGA0";
width = 16;
}
309
{
title = "CTF Team Ring (Blue)";
sprite = "internal:BRNGA0";
width = 16;
}
330
{
title = "Bounce Ring Panel";
sprite = "internal:PIKBA0";
}
331
{
title = "Rail Ring Panel";
sprite = "internal:PIKRA0";
}
332
{
title = "Automatic Ring Panel";
sprite = "internal:PIKAA0";
}
333
{
title = "Explosion Ring Panel";
sprite = "internal:PIKEA0";
}
334
{
title = "Scatter Ring Panel";
sprite = "internal:PIKSA0";
}
335
{
title = "Grenade Ring Panel";
sprite = "internal:PIKGA0";
}
}
collectibles
{
color = 10; // Light_Green
title = "Other Collectibles";
width = 16;
height = 32;
sort = 1;
sprite = "CEMGA0";
310
{
title = "CTF Red Flag";
sprite = "RFLGA0";
width = 24;
height = 64;
}
311
{
title = "CTF Blue Flag";
sprite = "BFLGA0";
width = 24;
height = 64;
}
312
{
title = "Emerald Token";
sprite = "TOKEA0";
width = 16;
height = 32;
flags8height = 24;
flags8text = "[8] Float";
}
313
{
title = "Chaos Emerald 1 (Green)";
sprite = "CEMGA0";
}
314
{
title = "Chaos Emerald 2 (Purple)";
sprite = "CEMGB0";
}
315
{
title = "Chaos Emerald 3 (Blue)";
sprite = "CEMGC0";
}
316
{
title = "Chaos Emerald 4 (Cyan)";
sprite = "CEMGD0";
}
317
{
title = "Chaos Emerald 5 (Orange)";
sprite = "CEMGE0";
}
318
{
title = "Chaos Emerald 6 (Red)";
sprite = "CEMGF0";
}
319
{
title = "Chaos Emerald 7 (Gray)";
sprite = "CEMGG0";
}
320
{
title = "Emerald Hunt Location";
sprite = "SHRDA0";
}
321
{
title = "Match Chaos Emerald Spawn";
sprite = "CEMGA0";
flags8height = 24;
flags8text = "[8] Float";
}
322
{
title = "Emblem";
sprite = "EMBMA0";
width = 16;
height = 30;
flags8height = 24;
flags8text = "[8] Float";
angletext = "Tag";
}
}
boxes
{
color = 7; // Gray
blocking = 2;
title = "Monitors";
width = 18;
height = 40;
flags1text = "[1] Run Linedef Executor on pop";
flags4text = "[4] Random (Strong)";
flags8text = "[8] Random (Weak)";
400
{
title = "Super Ring (10 Rings)";
sprite = "TVRIA0";
}
401
{
title = "Pity Shield";
sprite = "TVPIA0";
}
402
{
title = "Attraction Shield";
sprite = "TVATA0";
}
403
{
title = "Force Shield";
sprite = "TVFOA0";
}
404
{
title = "Armageddon Shield";
sprite = "TVARA0";
}
405
{
title = "Whirlwind Shield";
sprite = "TVWWA0";
}
406
{
title = "Elemental Shield";
sprite = "TVELA0";
}
407
{
title = "Super Sneakers";
sprite = "TVSSA0";
}
408
{
title = "Invincibility";
sprite = "TVIVA0";
}
409
{
title = "Extra Life";
sprite = "TV1UA0";
flags4text = "[4] Random (Strong) / 10k points";
flags8text = "[8] Random (Weak) / 10k points";
}
410
{
title = "Eggman";
sprite = "TVEGA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
411
{
title = "Teleporter";
sprite = "TVMXA0";
}
413
{
title = "Gravity Boots";
sprite = "TVGVA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
414
{
title = "CTF Team Ring Monitor (Red)";
sprite = "TRRIA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
415
{
title = "CTF Team Ring Monitor (Blue)";
sprite = "TBRIA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
416
{
title = "Recycler";
sprite = "TVRCA0";
}
418
{
title = "Score (1,000 Points)";
sprite = "TV1KA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
419
{
title = "Score (10,000 Points)";
sprite = "TVTKA0";
flags4text = "[4] Special";
flags8text = "[8] Ambush";
}
420
{
title = "Flame Shield";
sprite = "TVFLA0";
}
421
{
title = "Water Shield";
sprite = "TVBBA0";
}
422
{
title = "Lightning Shield";
sprite = "TVZPA0";
}
}
boxes2
{
color = 18; // Gold
blocking = 2;
title = "Monitors (Respawning)";
width = 20;
height = 44;
flags1text = "[1] Run Linedef Executor on pop";
431
{
title = "Pity Shield (Respawn)";
sprite = "TVPIB0";
}
432
{
title = "Attraction Shield (Respawn)";
sprite = "TVATB0";
}
433
{
title = "Force Shield (Respawn)";
sprite = "TVFOB0";
}
434
{
title = "Armageddon Shield (Respawn)";
sprite = "TVARB0";
}
435
{
title = "Whirlwind Shield (Respawn)";
sprite = "TVWWB0";
}
436
{
title = "Elemental Shield (Respawn)";
sprite = "TVELB0";
}
437
{
title = "Super Sneakers (Respawn)";
sprite = "TVSSB0";
}
438
{
title = "Invincibility (Respawn)";
sprite = "TVIVB0";
}
440
{
title = "Eggman (Respawn)";
sprite = "TVEGB0";
}
443
{
title = "Gravity Boots (Respawn)";
sprite = "TVGVB0";
}
450
{
title = "Flame Shield (Respawn)";
sprite = "TVFLB0";
}
451
{
title = "Water Shield (Respawn)";
sprite = "TVBBB0";
}
452
{
title = "Lightning Shield (Respawn)";
sprite = "TVZPB0";
}
}
generic
{
color = 11; // Light_Cyan
title = "Generic Items & Hazards";
500
{
title = "Air Bubble Patch";
sprite = "BUBLE0";
width = 8;
height = 16;
flags8text = "[8] No distance check";
}
501
{
title = "Signpost";
sprite = "SIGND0";
width = 8;
height = 32;
}
502
{
arrow = 1;
title = "Star Post";
sprite = "STPTA0M0";
width = 64;
height = 128;
angletext = "Angle/Order";
}
520
{
title = "Bomb Sphere";
sprite = "SPHRD0";
width = 16;
height = 24;
flags8height = 24;
flags8text = "[8] Float";
unflippable = true;
}
521
{
title = "Spikeball";
sprite = "SPIKA0";
width = 12;
height = 8;
flags8height = 24;
flags8text = "[8] Float";
}
522
{
title = "Wall Spike";
sprite = "WSPKALAR";
width = 16;
height = 14;
flags1text = "[1] Start retracted";
flags4text = "[4] Retractable";
flags8text = "[8] Intangible";
parametertext = "Initial delay";
}
523
{
title = "Spike";
sprite = "USPKA0";
width = 8;
height = 32;
flags1text = "[1] Start retracted";
flags4text = "[4] Retractable";
flags8text = "[8] Intangible";
angletext = "Retraction interval";
parametertext = "Initial delay";
}
1130
{
title = "Small Mace";
sprite = "SMCEA0";
width = 17;
height = 34;
}
1131
{
title = "Big Mace";
sprite = "BMCEA0";
width = 34;
height = 68;
}
1136
{
title = "Small Fireball";
sprite = "SFBRA0";
width = 17;
height = 34;
}
1137
{
title = "Large Fireball";
sprite = "BFBRA0";
width = 34;
height = 68;
}
}
springs
{
color = 12; // Light_Red
title = "Springs and Fans";
width = 20;
height = 16;
sprite = "RSPRD2";
540
{
title = "Fan";
sprite = "FANSA0D0";
width = 16;
height = 8;
flags4text = "[4] Invisible";
flags8text = "[8] No distance check";
angletext = "Lift height";
}
541
{
title = "Gas Jet";
sprite = "STEMD0";
flags8text = "[8] No sounds";
width = 32;
}
542
{
title = "Bumper";
sprite = "BUMPA0";
width = 32;
height = 64;
angletext = "Strength";
}
543
{
title = "Balloon";
sprite = "BLONA0";
width = 32;
height = 64;
flags8text = "[8] Respawn";
angletext = "Color";
}
550
{
title = "Yellow Spring";
sprite = "SPRYA0";
}
551
{
title = "Red Spring";
sprite = "SPRRA0";
}
552
{
title = "Blue Spring";
sprite = "SPRBA0";
}
555
{
arrow = 1;
title = "Diagonal Yellow Spring";
sprite = "YSPRD2";
width = 16;
flags4text = "[4] Ignore gravity";
flags8text = "[8] Rotate 22.5° CCW";
}
556
{
arrow = 1;
title = "Diagonal Red Spring";
sprite = "RSPRD2";
width = 16;
flags4text = "[4] Ignore gravity";
flags8text = "[8] Rotate 22.5° CCW";
}
557
{
arrow = 1;
title = "Diagonal Blue Spring";
sprite = "BSPRD2";
width = 16;
flags4text = "[4] Ignore gravity";
flags8text = "[8] Rotate 22.5° CCW";
}
558
{
arrow = 1;
title = "Horizontal Yellow Spring";
sprite = "SSWYD2D8";
flags8height = 16;
flags8text = "[8] Float";
width = 16;
height = 32;
}
559
{
arrow = 1;
title = "Horizontal Red Spring";
sprite = "SSWRD2D8";
flags8height = 16;
flags8text = "[8] Float";
width = 16;
height = 32;
}
560
{
arrow = 1;
title = "Horizontal Blue Spring";
sprite = "SSWBD2D8";
flags8height = 16;
flags8text = "[8] Float";
width = 16;
height = 32;
}
1134
{
title = "Yellow Spring Ball";
sprite = "YSPBA0";
width = 17;
height = 34;
}
1135
{
title = "Red Spring Ball";
sprite = "RSPBA0";
width = 17;
height = 34;
}
544
{
arrow = 1;
title = "Yellow Boost Panel";
sprite = "BSTYA0";
flags8text = "[8] Force spin";
width = 28;
height = 2;
}
545
{
arrow = 1;
title = "Red Boost Panel";
sprite = "BSTRA0";
flags8text = "[8] Force spin";
width = 28;
height = 2;
}
}
patterns
{
color = 5; // Magenta
arrow = 1;
title = "Special Placement Patterns";
width = 16;
height = 384;
sprite = "RINGA0";
600
{
arrow = 0;
title = "5 Vertical Rings (Yellow Spring)";
sprite = "RINGA0";
}
601
{
arrow = 0;
title = "5 Vertical Rings (Red Spring)";
sprite = "RINGA0";
height = 1024;
}
602
{
title = "5 Diagonal Rings (Yellow Spring)";
sprite = "RINGA0";
height = 32;
}
603
{
title = "10 Diagonal Rings (Red Spring)";
sprite = "RINGA0";
height = 32;
}
604
{
title = "Circle of Rings";
sprite = "RINGA0";
width = 96;
height = 192;
unflippable = true;
centerHitbox = true;
}
605
{
title = "Circle of Rings (Big)";
sprite = "RINGA0";
width = 192;
unflippable = true;
centerHitbox = true;
}
606
{
title = "Circle of Blue Spheres";
sprite = "SPHRA0";
width = 96;
height = 192;
unflippable = true;
centerHitbox = true;
}
607
{
title = "Circle of Blue Spheres (Big)";
sprite = "SPHRA0";
width = 192;
unflippable = true;
centerHitbox = true;
}
608
{
title = "Circle of Rings and Spheres";
sprite = "SPHRA0";
width = 96;
height = 192;
unflippable = true;
centerHitbox = true;
}
609
{
title = "Circle of Rings and Spheres (Big)";
sprite = "SPHRA0";
width = 192;
unflippable = true;
centerHitbox = true;
}
}
invisible
{
color = 15; // White
title = "Misc. Invisible";
width = 8;
height = 16;
sprite = "UNKNA0";
700
{
title = "Water Ambience A (Large)";
sprite = "internal:ambiance";
}
701
{
title = "Water Ambience B (Large)";
sprite = "internal:ambiance";
}
702
{
title = "Water Ambience C (Medium)";
sprite = "internal:ambiance";
}
703
{
title = "Water Ambience D (Medium)";
sprite = "internal:ambiance";
}
704
{
title = "Water Ambience E (Small)";
sprite = "internal:ambiance";
}
705
{
title = "Water Ambience F (Small)";
sprite = "internal:ambiance";
}
706
{
title = "Water Ambience G (Extra Large)";
sprite = "internal:ambiance";
}
707
{
title = "Water Ambience H (Extra Large)";
sprite = "internal:ambiance";
}
708
{
title = "Disco Ambience";
sprite = "internal:ambiance";
}
709
{
title = "Volcano Ambience";
sprite = "internal:ambiance";
}
710
{
title = "Machine Ambience";
sprite = "internal:ambiance";
}
750
{
title = "Slope Vertex";
sprite = "internal:vertexslope";
angletext = "Tag";
}
751
{
arrow = 1;
title = "Teleport Destination";
sprite = "internal:tele";
}
752
{
arrow = 1;
title = "Alternate View Point";
sprite = "internal:view";
}
753
{
title = "Zoom Tube Waypoint";
sprite = "internal:zoom";
angletext = "Order";
}
754
{
title = "Push Point";
flags4text = "[4] Fades using XY";
flags8text = "[8] Push using XYZ";
sprite = "GWLGA0";
angletext = "Radius";
}
755
{
title = "Pull Point";
flags4text = "[4] Fades using XY";
flags8text = "[8] Pull using XYZ";
sprite = "GWLRA0";
angletext = "Radius";
}
756
{
title = "Blast Linedef Executor";
sprite = "TOADA0";
width = 32;
height = 16;
}
757
{
title = "Fan Particle Generator";
sprite = "PRTLA0";
width = 8;
height = 16;
angletext = "Tag";
}
758
{
title = "Object Angle Anchor";
sprite = "internal:view";
}
760
{
title = "PolyObject Anchor";
sprite = "internal:polyanchor";
angletext = "ID";
}
761
{
title = "PolyObject Spawn Point";
sprite = "internal:polycenter";
angletext = "ID";
}
762
{
title = "PolyObject Spawn Point (Crush)";
sprite = "internal:polycentercrush";
angletext = "ID";
}
780
{
title = "Skybox View Point";
sprite = "internal:skyb";
flags4text = "[4] In-map centerpoint";
parametertext = "ID";
}
}
greenflower
{
color = 10; // Green
title = "Greenflower";
800
{
title = "GFZ Flower";
sprite = "FWR1A0";
width = 16;
height = 40;
}
801
{
title = "Sunflower";
sprite = "FWR2A0";
width = 16;
height = 96;
}
802
{
title = "Budding Flower";
sprite = "FWR3A0";
width = 8;
height = 32;
}
803
{
title = "Blueberry Bush";
sprite = "BUS3A0";
width = 16;
height = 32;
}
804
{
title = "Berry Bush";
sprite = "BUS1A0";
width = 16;
height = 32;
}
805
{
title = "Bush";
sprite = "BUS2A0";
width = 16;
height = 32;
}
806
{
title = "GFZ Tree";
sprite = "TRE1A0";
width = 20;
height = 128;
}
807
{
title = "GFZ Berry Tree";
sprite = "TRE1B0";
width = 20;
height = 128;
}
808
{
title = "GFZ Cherry Tree";
sprite = "TRE1C0";
width = 20;
height = 128;
}
809
{
title = "Checkered Tree";
sprite = "TRE2A0";
width = 20;
height = 200;
}
810
{
title = "Checkered Tree (Sunset)";
sprite = "TRE2B0";
width = 20;
height = 200;
}
811
{
title = "Polygon Tree";
sprite = "TRE4A0";
width = 20;
height = 200;
}
812
{
title = "Bush Tree";
sprite = "TRE5A0";
width = 20;
height = 200;
}
813
{
title = "Red Bush Tree";
sprite = "TRE5B0";
width = 20;
height = 200;
}
}
technohill
{
color = 10; // Green
title = "Techno Hill";
900
{
title = "THZ Steam Flower";
sprite = "THZPA0";
width = 8;
height = 32;
}
901
{
title = "Alarm";
sprite = "ALRMA0";
width = 8;
height = 16;
hangs = 1;
}
902
{
title = "THZ Spin Flower (Red)";
sprite = "FWR5A0";
width = 16;
height = 64;
}
903
{
title = "THZ Spin Flower (Yellow)";
sprite = "FWR6A0";
width = 16;
height = 64;
}
904
{
arrow = 1;
title = "Whistlebush";
sprite = "THZTA0";
width = 16;
height = 64;
}
}
deepsea
{
color = 10; // Green
title = "Deep Sea";
1000
{
arrow = 1;
blocking = 2;
title = "Gargoyle";
sprite = "GARGA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1009
{
arrow = 1;
blocking = 2;
title = "Gargoyle (Big)";
sprite = "GARGB1";
width = 32;
height = 80;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1001
{
title = "Seaweed";
sprite = "SEWEA0";
width = 24;
height = 56;
}
1002
{
title = "Dripping Water";
sprite = "DRIPD0";
width = 8;
height = 16;
hangs = 1;
angletext = "Dripping interval";
}
1003
{
title = "Coral (Green)";
sprite = "CORLA0";
width = 29;
height = 40;
}
1004
{
title = "Coral (Red)";
sprite = "CORLB0";
width = 30;
height = 53;
}
1005
{
title = "Coral (Orange)";
sprite = "CORLC0";
width = 28;
height = 41;
}
1006
{
title = "Blue Crystal";
sprite = "BCRYA1";
width = 8;
height = 16;
}
1007
{
title = "Kelp";
sprite = "KELPA0";
width = 16;
height = 292;
flags4text = "[4] Double size";
}
1008
{
title = "Stalagmite (DSZ1)";
sprite = "DSTGA0";
width = 8;
height = 116;
flags4text = "[4] Double size";
}
1010
{
arrow = 1;
title = "Light Beam";
sprite = "LIBEARAL";
width = 16;
height = 16;
}
1011
{
title = "Stalagmite (DSZ2)";
sprite = "DSTGA0";
width = 8;
height = 116;
flags4text = "[4] Double size";
}
1012
{
arrow = 1;
title = "Big Floating Mine";
width = 28;
height = 56;
sprite = "BMNEA1";
}
1013
{
title = "Animated Kelp";
sprite = "ALGAA0";
width = 48;
height = 120;
}
1014
{
title = "Large Coral (Brown)";
sprite = "CORLD0";
width = 56;
height = 112;
}
1015
{
title = "Large Coral (Beige)";
sprite = "CORLE0";
width = 56;
height = 112;
}
}
castleeggman
{
color = 10; // Green
title = "Castle Eggman";
1100
{
title = "Chain (Decorative)";
sprite = "CHANA0";
width = 4;
height = 128;
hangs = 1;
}
1101
{
title = "Torch";
sprite = "FLAMA0E0";
width = 8;
height = 32;
flags1text = "[1] Add corona";
}
1102
{
arrow = 1;
blocking = 2;
title = "Eggman Statue";
sprite = "ESTAA1";
width = 32;
height = 240;
flags1text = "[1] Solid gold";
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1103
{
title = "CEZ Flower";
sprite = "FWR4A0";
width = 16;
height = 40;
}
1104
{
title = "Mace Spawnpoint";
sprite = "SMCEA0";
width = 17;
height = 34;
flags4text = "[4] No sounds";
flags8text = "[8] Double size";
angletext = "Tag";
}
1105
{
title = "Chain with Maces Spawnpoint";
sprite = "SMCEA0";
width = 17;
height = 34;
flags4text = "[4] No sounds";
flags8text = "[8] Double size";
angletext = "Tag";
}
1106
{
title = "Chained Spring Spawnpoint";
sprite = "YSPBA0";
width = 17;
height = 34;
flags4text = "[4] No sounds";
flags8text = "[8] Red spring";
angletext = "Tag";
}
1107
{
title = "Chain Spawnpoint";
sprite = "BMCHA0";
width = 17;
height = 34;
flags8text = "[8] Double size";
angletext = "Tag";
}
1108
{
arrow = 1;
title = "Hidden Chain Spawnpoint";
sprite = "internal:chain3";
width = 17;
height = 34;
flags8text = "[8] Double size";
}
1109
{
title = "Firebar Spawnpoint";
sprite = "BFBRA0";
width = 17;
height = 34;
flags4text = "[4] No sounds";
flags8text = "[8] Double size";
angletext = "Tag";
}
1110
{
title = "Custom Mace Spawnpoint";
sprite = "SMCEA0";
width = 17;
height = 34;
flags4text = "[4] No sounds";
angletext = "Tag";
}
1111
{
arrow = 1;
blocking = 2;
title = "Crawla Statue";
sprite = "CSTAA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1112
{
arrow = 1;
blocking = 2;
title = "Lance-a-Bot Statue";
sprite = "CBBSA1";
width = 32;
height = 72;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1114
{
title = "Pine Tree";
sprite = "PINEA0";
width = 16;
height = 628;
}
1115
{
title = "CEZ Shrub (Small)";
sprite = "CEZBA0";
width = 16;
height = 24;
}
1116
{
title = "CEZ Shrub (Large)";
sprite = "CEZBB0";
width = 32;
height = 48;
}
1117
{
arrow = 1;
title = "Pole Banner (Red)";
sprite = "BANRA0";
width = 40;
height = 224;
}
1118
{
arrow = 1;
title = "Pole Banner (Blue)";
sprite = "BANRA0";
width = 40;
height = 224;
}
1119
{
title = "Candle";
sprite = "CNDLA0";
width = 8;
height = 48;
flags1text = "[1] Add corona";
}
1120
{
title = "Candle Pricket";
sprite = "CNDLB0";
width = 8;
height = 176;
flags1text = "[1] Add corona";
}
1121
{
title = "Flame Holder";
sprite = "FLMHA0";
width = 24;
height = 80;
flags1text = "[1] Add corona";
flags4text = "[4] No flame";
}
1122
{
title = "Fire Torch";
sprite = "CTRCA0";
width = 16;
height = 80;
}
1123
{
title = "Cannonball Launcher";
sprite = "internal:cannonball";
width = 8;
height = 16;
}
1124
{
blocking = 2;
title = "Cannonball";
sprite = "CBLLA0";
width = 20;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1125
{
title = "Brambles";
sprite = "CABRALAR";
width = 48;
height = 32;
}
1126
{
title = "Invisible Lockon Object";
sprite = "LCKNC0";
width = 16;
height = 32;
}
1127
{
title = "Spectator Eggrobo";
sprite = "EGR1A1";
width = 20;
height = 72;
}
1128
{
arrow = 1;
title = "Waving Flag (Red)";
sprite = "CFLGA0";
width = 8;
height = 208;
}
1129
{
arrow = 1;
title = "Waving Flag (Blue)";
sprite = "CFLGA0";
width = 8;
height = 208;
}
}
aridcanyon
{
color = 10; // Green
title = "Arid Canyon";
1200
{
title = "Tumbleweed (Big)";
sprite = "BTBLA0";
width = 24;
height = 48;
flags8text = "[8] Moves perpetually";
}
1201
{
title = "Tumbleweed (Small)";
sprite = "STBLA0";
width = 12;
height = 24;
flags8text = "[8] Moves perpetually";
}
1202
{
arrow = 1;
title = "Rock Spawner";
sprite = "ROIAA0";
width = 8;
height = 16;
angletext = "Tag";
}
1203
{
title = "Tiny Red Flower Cactus";
sprite = "CACTA0";
width = 13;
height = 24;
}
1204
{
title = "Small Red Flower Cactus";
sprite = "CACTB0";
width = 15;
height = 52;
}
1205
{
title = "Tiny Blue Flower Cactus";
sprite = "CACTC0";
width = 13;
height = 24;
}
1206
{
title = "Small Blue Flower Cactus";
sprite = "CACTD0";
width = 15;
height = 52;
}
1207
{
title = "Prickly Pear";
sprite = "CACTE0";
width = 32;
height = 96;
}
1208
{
title = "Barrel Cactus";
sprite = "CACTF0";
width = 20;
height = 128;
}
1209
{
title = "Tall Barrel Cactus";
sprite = "CACTG0";
width = 24;
height = 224;
}
1210
{
title = "Armed Cactus";
sprite = "CACTH0";
width = 24;
height = 256;
}
1211
{
title = "Ball Cactus";
sprite = "CACTI0";
width = 48;
height = 96;
}
1212
{
title = "Caution Sign";
sprite = "WWSGAR";
width = 22;
height = 64;
}
1213
{
title = "Cacti Sign";
sprite = "WWS2AR";
width = 22;
height = 64;
}
1214
{
title = "Sharp Turn Sign";
sprite = "WWS3ALAR";
width = 16;
height = 192;
}
1215
{
title = "Mine Oil Lamp";
sprite = "OILLA0";
width = 22;
height = 64;
hangs = 1;
}
1216
{
title = "TNT Barrel";
sprite = "BARRA1";
width = 24;
height = 63;
}
1217
{
title = "TNT Proximity Shell";
sprite = "REMTA0";
width = 64;
height = 40;
}
1218
{
title = "Dust Devil";
sprite = "TAZDCR";
width = 80;
height = 416;
}
1219
{
title = "Minecart Spawner";
sprite = "MCRTCLFR";
width = 22;
height = 32;
}
1220
{
title = "Minecart Stopper";
sprite = "MCRTIR";
width = 32;
height = 32;
}
1221
{
title = "Minecart Saloon Door";
sprite = "SALDARAL";
width = 96;
height = 160;
flags8text = "[8] Allow non-minecart players";
}
1222
{
title = "Train Cameo Spawner";
sprite = "TRAEBRBL";
width = 28;
height = 32;
}
1223
{
title = "Train Dust Spawner";
sprite = "ADSTA0";
width = 4;
height = 4;
}
1224
{
title = "Train Steam Spawner";
sprite = "STEAA0";
width = 4;
height = 4;
}
1229
{
title = "Minecart Switch Point";
sprite = "internal:zoom";
width = 8;
height = 16;
flags8text = "[8] Enable switching";
}
1230
{
title = "Tiny Cactus";
sprite = "CACTJ0";
width = 13;
height = 28;
}
1231
{
title = "Small Cactus";
sprite = "CACTK0";
width = 15;
height = 60;
}
}
redvolcano
{
color = 10; // Green
title = "Red Volcano";
1300
{
arrow = 1;
title = "Flame Jet (Horizontal)";
sprite = "internal:flameh";
width = 16;
height = 40;
flags8text = "[8] Waves vertically";
angletext = "On/Off time";
parametertext = "Strength";
}
1301
{
title = "Flame Jet (Vertical)";
sprite = "internal:flamev";
width = 16;
height = 40;
flags8text = "[8] Shoot downwards";
angletext = "On/Off time";
parametertext = "Strength";
}
1302
{
title = "Spinning Flame Jet (Counter-Clockwise)";
sprite = "internal:flame2";
width = 16;
height = 24;
}
1303
{
title = "Spinning Flame Jet (Clockwise)";
sprite = "internal:flame1";
width = 16;
height = 24;
}
1304
{
title = "Lavafall";
sprite = "LFALF0";
width = 30;
height = 32;
angletext = "Initial delay";
flags8text = "[8] Double size";
}
1305
{
title = "Rollout Rock";
sprite = "PUMIA1A5";
width = 30;
height = 60;
flags8text = "[8] Non-buoyant";
}
1306
{
title = "Big Fern";
sprite = "JPLAB0";
width = 32;
height = 48;
}
1307
{
title = "Jungle Palm";
sprite = "JPLAC0";
width = 32;
height = 48;
}
1308
{
title = "Torch Flower";
sprite = "TFLOA0";
width = 14;
height = 110;
}
1309
{
title = "RVZ1 Wall Vine (Long)";
sprite = "WVINALAR";
width = 1;
height = 288;
}
1310
{
title = "RVZ1 Wall Vine (Short)";
sprite = "WVINBLBR";
width = 1;
height = 288;
}
}
botanicserenity
{
color = 10; // Green
title = "Botanic Serenity";
width = 16;
height = 32;
sprite = "BSZ1A0";
1400
{
title = "Tall Flower (Red)";
sprite = "BSZ1A0";
}
1401
{
title = "Tall Flower (Purple)";
sprite = "BSZ1B0";
}
1402
{
title = "Tall Flower (Blue)";
sprite = "BSZ1C0";
}
1403
{
title = "Tall Flower (Cyan)";
sprite = "BSZ1D0";
}
1404
{
title = "Tall Flower (Yellow)";
sprite = "BSZ1E0";
}
1405
{
title = "Tall Flower (Orange)";
sprite = "BSZ1F0";
}
1410
{
title = "Medium Flower (Red)";
sprite = "BSZ2A0";
}
1411
{
title = "Medium Flower (Purple)";
sprite = "BSZ2B0";
}
1412
{
title = "Medium Flower (Blue)";
sprite = "BSZ2C0";
}
1413
{
title = "Medium Flower (Cyan)";
sprite = "BSZ2D0";
}
1414
{
title = "Medium Flower (Yellow)";
sprite = "BSZ2E0";
}
1415
{
title = "Medium Flower (Orange)";
sprite = "BSZ2F0";
}
1420
{
title = "Short Flower (Red)";
sprite = "BSZ3A0";
}
1421
{
title = "Short Flower (Purple)";
sprite = "BSZ3B0";
}
1422
{
title = "Short Flower (Blue)";
sprite = "BSZ3C0";
}
1423
{
title = "Short Flower (Cyan)";
sprite = "BSZ3D0";
}
1424
{
title = "Short Flower (Yellow)";
sprite = "BSZ3E0";
}
1425
{
title = "Short Flower (Orange)";
sprite = "BSZ3F0";
}
1430
{
title = "Tulip (Red)";
sprite = "BST1A0";
}
1431
{
title = "Tulip (Purple)";
sprite = "BST2A0";
}
1432
{
title = "Tulip (Blue)";
sprite = "BST3A0";
}
1433
{
title = "Tulip (Cyan)";
sprite = "BST4A0";
}
1434
{
title = "Tulip (Yellow)";
sprite = "BST5A0";
}
1435
{
title = "Tulip (Orange)";
sprite = "BST6A0";
}
1440
{
title = "Cluster (Red)";
sprite = "BSZ5A0";
}
1441
{
title = "Cluster (Purple)";
sprite = "BSZ5B0";
}
1442
{
title = "Cluster (Blue)";
sprite = "BSZ5C0";
}
1443
{
title = "Cluster (Cyan)";
sprite = "BSZ5D0";
}
1444
{
title = "Cluster (Yellow)";
sprite = "BSZ5E0";
}
1445
{
title = "Cluster (Orange)";
sprite = "BSZ5F0";
}
1450
{
title = "Bush (Red)";
sprite = "BSZ6A0";
}
1451
{
title = "Bush (Purple)";
sprite = "BSZ6B0";
}
1452
{
title = "Bush (Blue)";
sprite = "BSZ6C0";
}
1453
{
title = "Bush (Cyan)";
sprite = "BSZ6D0";
}
1454
{
title = "Bush (Yellow)";
sprite = "BSZ6E0";
}
1455
{
title = "Bush (Orange)";
sprite = "BSZ6F0";
}
1460
{
title = "Vine (Red)";
sprite = "BSZ7A0";
}
1461
{
title = "Vine (Purple)";
sprite = "BSZ7B0";
}
1462
{
title = "Vine (Blue)";
sprite = "BSZ7C0";
}
1463
{
title = "Vine (Cyan)";
sprite = "BSZ7D0";
}
1464
{
title = "Vine (Yellow)";
sprite = "BSZ7E0";
}
1465
{
title = "Vine (Orange)";
sprite = "BSZ7F0";
}
1470
{
title = "BSZ Shrub";
sprite = "BSZ8A0";
}
1471
{
title = "BSZ Clover";
sprite = "BSZ8B0";
}
1473
{
title = "Palm Tree (Big)";
width = 16;
height = 160;
sprite = "BSZ8D0";
}
1475
{
title = "Palm Tree (Small)";
width = 16;
height = 80;
sprite = "BSZ8F0";
}
}
azuretemple
{
color = 10; // Green
title = "Azure Temple";
1500
{
arrow = 1;
blocking = 2;
title = "Glaregoyle";
sprite = "BGARA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1501
{
arrow = 1;
blocking = 2;
title = "Glaregoyle (Up)";
sprite = "BGARA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1502
{
arrow = 1;
blocking = 2;
title = "Glaregoyle (Down)";
sprite = "BGARA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1503
{
arrow = 1;
blocking = 2;
title = "Glaregoyle (Long)";
sprite = "BGARA1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1504
{
title = "ATZ Target";
sprite = "RCRYB0";
width = 24;
height = 32;
}
1505
{
title = "Green Flame";
sprite = "CFLMA0E0";
width = 8;
height = 32;
}
1506
{
arrow = 1;
blocking = 2;
title = "Blue Gargoyle";
sprite = "BGARD1";
width = 16;
height = 40;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
}
dreamhill
{
color = 10; // Green
title = "Dream Hill";
1600
{
title = "Spring Tree";
sprite = "TRE6A0";
width = 16;
height = 32;
}
1601
{
title = "Shleep";
sprite = "SHLPA0";
width = 24;
height = 32;
}
1602
{
title = "Pian";
sprite = "NTPNALAR";
width = 16;
height = 32;
}
}
nightstrk
{
color = 13; // Pink
title = "NiGHTS Track";
width = 8;
height = 4096;
sprite = "UNKNA0";
1700
{
title = "Axis";
sprite = "internal:axis1";
circle = 1;
unflippable = true;
ignoreZ = true;
flagsvaluetext = "Order";
angletext = "Radius/Direction";
parametertext = "Mare";
}
1701
{
title = "Axis Transfer";
sprite = "internal:axis2";
unflippable = true;
ignoreZ = true;
flagsvaluetext = "Order";
parametertext = "Mare";
}
1702
{
title = "Axis Transfer Line";
sprite = "internal:axis3";
unflippable = true;
ignoreZ = true;
flagsvaluetext = "Order";
parametertext = "Mare";
}
1710
{
title = "Ideya Capture";
sprite = "CAPSA0";
width = 72;
height = 144;
angletext = "Rings";
parametertext = "Mare";
}
}
nights
{
color = 13; // Pink
title = "NiGHTS Items";
width = 16;
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";
parametertext = "Height";
}
1704
{
arrow = 1;
title = "NiGHTS Bumper";
sprite = "NBMPG3G7";
width = 32;
height = 64;
unflippable = true;
flagsvaluetext = "Pitch";
angletext = "Yaw";
}
1705
{
arrow = 1;
title = "Hoop (Generic)";
sprite = "HOOPA0";
width = 80;
height = 160;
unflippable = true;
centerHitbox = true;
flagsvaluetext = "Height";
angletext = "Pitch/Yaw";
}
1706
{
title = "Blue Sphere";
sprite = "SPHRA0";
width = 16;
height = 24;
flags8height = 24;
flags8text = "[8] Float";
unflippable = true;
}
1707
{
title = "Super Paraloop";
sprite = "NPRUA0";
flags4text = "[4] Bonus time only";
flags8text = "[8] Spawn immediately";
}
1708
{
title = "Drill Refill";
sprite = "NPRUB0";
flags4text = "[4] Bonus time only";
flags8text = "[8] Spawn immediately";
}
1709
{
title = "Nightopian Helper";
sprite = "NPRUC0";
flags4text = "[4] Bonus time only";
flags8text = "[8] Spawn immediately";
}
1711
{
title = "Extra Time";
sprite = "NPRUD0";
flags4text = "[4] Bonus time only";
flags8text = "[8] Spawn immediately";
}
1712
{
title = "Link Freeze";
sprite = "NPRUE0";
flags4text = "[4] Bonus time only";
flags8text = "[8] Spawn immediately";
}
1713
{
arrow = 1;
title = "Hoop (Customizable)";
flags1text = "[1] Radius +16";
flags2text = "[2] Radius +32";
flags4text = "[4] Radius +64";
flags8text = "[8] Radius +128";
sprite = "HOOPA0";
width = 80;
height = 160;
unflippable = true;
centerHitbox = true;
}
1714
{
title = "Ideya Anchor Point";
sprite = "internal:axis1";
width = 8;
height = 16;
parametertext = "Ideya";
}
}
mario
{
color = 6; // Brown
title = "Mario";
1800
{
title = "Coin";
sprite = "COINA0";
width = 16;
height = 24;
flags8height = 24;
flags8text = "[8] Float";
}
1801
{
arrow = 1;
title = "Goomba";
sprite = "GOOMA0";
width = 24;
height = 32;
}
1802
{
arrow = 1;
title = "Goomba (Blue)";
sprite = "BGOMA0";
width = 24;
height = 32;
}
1803
{
title = "Fire Flower";
sprite = "FFWRB0";
width = 16;
height = 32;
}
1804
{
title = "Koopa Shell";
sprite = "SHLLA1";
width = 16;
height = 20;
}
1805
{
title = "Puma (Jumping Fireball)";
sprite = "PUMAA0";
width = 8;
height = 16;
angletext = "Jump strength";
}
1806
{
title = "King Bowser";
sprite = "KOOPA0";
width = 16;
height = 48;
}
1807
{
title = "Axe";
sprite = "MAXEA0";
width = 8;
height = 16;
}
1808
{
title = "Bush (Short)";
sprite = "MUS1A0";
width = 16;
height = 32;
}
1809
{
title = "Bush (Tall)";
sprite = "MUS2A0";
width = 16;
height = 32;
}
1810
{
title = "Toad";
sprite = "TOADA0";
width = 8;
height = 32;
}
}
christmasdisco
{
color = 10; // Green
title = "Christmas & Disco";
1850
{
title = "Christmas Pole";
sprite = "XMS1A0";
width = 16;
height = 40;
}
1851
{
title = "Candy Cane";
sprite = "XMS2A0";
width = 8;
height = 32;
}
1852
{
blocking = 2;
title = "Snowman";
sprite = "XMS3A0";
width = 16;
height = 64;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1853
{
blocking = 2;
title = "Snowman (With Hat)";
sprite = "XMS3B0";
width = 16;
height = 80;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
1854
{
title = "Lamp Post";
sprite = "XMS4A0";
width = 8;
height = 120;
}
1855
{
title = "Lamp Post (Snow)";
sprite = "XMS4B0";
width = 8;
height = 120;
}
1856
{
title = "Hanging Star";
sprite = "XMS5A0";
width = 4;
height = 80;
hangs = 1;
}
1857
{
title = "Berry Bush (Snow)";
sprite = "BUS1B0";
width = 16;
height = 32;
}
1858
{
title = "Bush (Snow)";
sprite = "BUS2B0";
width = 16;
height = 32;
}
1859
{
title = "Blueberry Bush (Snow)";
sprite = "BUS3B0";
width = 16;
height = 32;
}
1875
{
title = "Disco Ball";
sprite = "DBALA0";
width = 16;
height = 54;
hangs = 1;
}
1876
{
arrow = 1;
blocking = 2;
title = "Eggman Disco Statue";
sprite = "ESTAB1";
width = 20;
height = 96;
flags4text = "[4] Slides when pushed";
flags8text = "[8] Not pushable";
}
}
stalagmites
{
color = 10; // Green
title = "Stalagmites";
width = 16;
height = 40;
1900
{
title = "Brown Stalagmite (Tall)";
sprite = "STLGA0";
width = 16;
height = 40;
}
1901
{
title = "Brown Stalagmite";
sprite = "STLGB0";
width = 16;
height = 40;
}
1902
{
title = "Orange Stalagmite (Tall)";
sprite = "STLGC0";
width = 16;
height = 40;
}
1903
{
title = "Orange Stalagmite";
sprite = "STLGD0";
width = 16;
height = 40;
}
1904
{
title = "Red Stalagmite (Tall)";
sprite = "STLGE0";
width = 16;
height = 40;
}
1905
{
title = "Red Stalagmite";
sprite = "STLGF0";
width = 16;
height = 40;
}
1906
{
title = "Gray Stalagmite (Tall)";
sprite = "STLGG0";
width = 24;
height = 96;
}
1907
{
title = "Gray Stalagmite";
sprite = "STLGH0";
width = 16;
height = 40;
}
1908
{
title = "Blue Stalagmite (Tall)";
sprite = "STLGI0";
width = 16;
height = 40;
}
1909
{
title = "Blue Stalagmite";
sprite = "STLGJ0";
width = 16;
height = 40;
}
}
hauntedheights
{
color = 10; // Green
title = "Haunted Heights";
2000
{
title = "Smashing Spikeball";
sprite = "FMCEA0";
width = 18;
height = 28;
angletext = "Initial delay";
}
2001
{
title = "HHZ Grass";
sprite = "HHZMA0";
width = 16;
height = 40;
}
2002
{
title = "HHZ Tentacle 1";
sprite = "HHZMB0";
width = 16;
height = 40;
}
2003
{
title = "HHZ Tentacle 2";
sprite = "HHZMC0";
width = 16;
height = 40;
}
2004
{
title = "HHZ Stalagmite (Tall)";
sprite = "HHZME0";
width = 16;
height = 40;
}
2005
{
title = "HHZ Stalagmite (Short)";
sprite = "HHZMF0";
width = 16;
height = 40;
}
2006
{
title = "Jack-o'-lantern 1";
sprite = "PUMKA0";
width = 16;
height = 40;
flags1text = "Don't flicker";
}
2007
{
title = "Jack-o'-lantern 2";
sprite = "PUMKB0";
width = 16;
height = 40;
flags1text = "Don't flicker";
}
2008
{
title = "Jack-o'-lantern 3";
sprite = "PUMKC0";
width = 16;
height = 40;
flags1text = "Don't flicker";
}
2009
{
title = "Purple Mushroom";
sprite = "SHRMD0";
width = 16;
height = 48;
}
2010
{
title = "HHZ Tree";
sprite = "HHPLC0";
width = 12;
height = 40;
}
}
frozenhillside
{
color = 10; // Green
title = "Frozen Hillside";
2100
{
title = "Ice Shard (Small)";
sprite = "FHZIA0";
width = 8;
height = 32;
}
2101
{
title = "Ice Shard (Large)";
sprite = "FHZIB0";
width = 8;
height = 32;
}
2102
{
title = "Crystal Tree (Aqua)";
sprite = "TRE3A0";
width = 20;
height = 200;
}
2103
{
title = "Crystal Tree (Pink)";
sprite = "TRE3B0";
width = 20;
height = 200;
}
2104
{
title = "Amy Cameo";
sprite = "ROSYA1";
width = 16;
height = 48;
flags1text = "[1] Grayscale mode";
}
2105
{
title = "Mistletoe";
sprite = "XMS6A0";
width = 52;
height = 106;
}
}
flickies
{
color = 10; // Green
title = "Flickies";
width = 8;
height = 20;
flags1text = "[1] Move aimlessly";
flags4text = "[4] No movement";
flags8text = "[8] Hop";
angletext = "Radius";
2200
{
title = "Bluebird";
sprite = "FL01A1";
}
2201
{
title = "Rabbit";
sprite = "FL02A1";
}
2202
{
title = "Chicken";
sprite = "FL03A1";
}
2203
{
title = "Seal";
sprite = "FL04A1";
}
2204
{
title = "Pig";
sprite = "FL05A1";
}
2205
{
title = "Chipmunk";
sprite = "FL06A1";
}
2206
{
title = "Penguin";
sprite = "FL07A1";
}
2207
{
title = "Fish";
sprite = "FL08A1";
parametertext = "Color";
}
2208
{
title = "Ram";
sprite = "FL09A1";
}
2209
{
title = "Puffin";
sprite = "FL10A1";
}
2210
{
title = "Cow";
sprite = "FL11A1";
}
2211
{
title = "Rat";
sprite = "FL12A1";
}
2212
{
title = "Bear";
sprite = "FL13A1";
}
2213
{
title = "Dove";
sprite = "FL14A1";
}
2214
{
title = "Cat";
sprite = "FL15A1";
}
2215
{
title = "Canary";
sprite = "FL16A1";
}
2216
{
title = "Spider";
sprite = "FS01A1";
}
2217
{
title = "Bat";
sprite = "FS02A0";
}
}
}
//Default things filters
thingsfilters
{
filter0
{
name = "Player starts";
category = "starts";
type = -1;
}
filter1
{
name = "Enemies";
category = "enemies";
type = -1;
}
filter2
{
name = "NiGHTS Track";
category = "nightstrk";
type = -1;
}
filter3
{
name = "Normal Gravity";
category = "";
type = -1;
fields
{
2 = false;
}
}
filter4
{
name = "Reverse Gravity";
category = "";
type = -1;
fields
{
2 = true;
}
}
}
#All
* -whitespace
# Zlib
/zlib/watcom/watcom_f.mak -crlf
/zlib/watcom/watcom_l.mak -crlf
#SDL2
/SDL2/docs/README-porting.md conflict-marker-size=32
# Other
# SRB2 - Which DLLs do I need to bundle?
Updated 12/6/2019 (v2.2)
Here are the required DLLs, per build. For each architecture, copy all the binaries from these folders:
* libs\dll-binaries\[i686/x86_64]
* libs\SDL2\[i686/x86_64]...\bin
* libs\SDL2mixerX\[i686/x86_64]...\bin
* libs\libopenmpt\[x86/x86_64]...\bin\mingw
and don't forget to build r_opengl.dll for srb2dd.
## srb2win, 32-bit
* libs\dll-binaries\i686\exchndl.dll
* libs\dll-binaries\i686\libgme.dll
* libs\dll-binaries\i686\mgwhelp.dll (depend for exchndl.dll)
* libs\SDL2\i686-w64-mingw32\bin\SDL2.dll
* libs\SDL2mixerX\i686-w64-mingw32\bin\*.dll (get everything)
* libs\libopenmpt\x86\bin\mingw\libopenmpt.dll
## srb2win, 64-bit
* libs\dll-binaries\x86_64\exchndl.dll
* libs\dll-binaries\x86_64\libgme.dll
* libs\dll-binaries\x86_64\mgwhelp.dll (depend for exchndl.dll)
* libs\SDL2\x86_64-w64-mingw32\bin\SDL2.dll
* libs\SDL2mixerX\x86_64-w64-mingw32\bin\*.dll (get everything)
* libs\libopenmpt\x86_64\bin\mingw\libopenmpt.dll