From f7f3f20914891ef3643adb53da9f4b80139136fc Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Sun, 22 Jul 2012 14:50:10 +0200 Subject: [PATCH] Add some basic assets Some of the stuff is from DerSaidin's minimal assets package, see http://wiki.iodoom3.org/Minimum_Assets http://www.dersaidin.net/doom3/assets/doom3_minimal_assets.rar The layout textures are from ReFleX, were used in xreal and are relicensed under WTFPL with friendly permission from ReFleX. --- COPYING.txt | 116 +++++++ README.md | 48 ++- TODO.txt | 22 ++ sabase/def/ammo.def | 1 + sabase/def/engine.def | 39 +++ sabase/def/player.def | 0 sabase/default.cfg | 10 + sabase/guis/chat.gui | 6 + sabase/guis/mainmenu.gui | 11 + sabase/guis/mphud.gui | 6 + sabase/guis/msg.gui | 7 + sabase/maps/test.cm | 290 ++++++++++++++++ sabase/maps/test.map | 129 +++++++ sabase/maps/test.proc | 150 ++++++++ sabase/materials/base.mtr | 9 + sabase/materials/common.mtr | 326 ++++++++++++++++++ sabase/materials/deprecated.mtr | 206 +++++++++++ sabase/materials/dummy.mtr | 16 + sabase/materials/layout.mtr | 85 +++++ sabase/materials/triggers.mtr | 116 +++++++ sabase/script/doom_defs.script | 0 sabase/script/doom_main.script | 29 ++ sabase/strings/english.lang | 15 + sabase/textures/bigchars.tga | Bin 0 -> 1048620 bytes sabase/textures/common/aasobstacle.tga | Bin 0 -> 15529 bytes sabase/textures/common/aassolid.tga | Bin 0 -> 13708 bytes sabase/textures/common/caulk.tga | Bin 0 -> 1647 bytes sabase/textures/common/clip.tga | Bin 0 -> 3780 bytes sabase/textures/common/clipplus.tga | Bin 0 -> 3933 bytes sabase/textures/common/collision.tga | Bin 0 -> 3586 bytes sabase/textures/common/cushion.tga | Bin 0 -> 1856 bytes sabase/textures/common/deprecated.tga | Bin 0 -> 4044 bytes sabase/textures/common/entitygui.tga | Bin 0 -> 3306 bytes sabase/textures/common/entitygui2.tga | Bin 0 -> 3588 bytes sabase/textures/common/entitygui3.tga | Bin 0 -> 3588 bytes sabase/textures/common/full_clip.tga | Bin 0 -> 2108 bytes sabase/textures/common/ikclip.tga | Bin 0 -> 2388 bytes sabase/textures/common/ladder.tga | Bin 0 -> 2497 bytes sabase/textures/common/mirror.tga | Bin 0 -> 2944 bytes sabase/textures/common/monster_clip.tga | Bin 0 -> 3624 bytes sabase/textures/common/moveable_clip.tga | Bin 0 -> 3224 bytes sabase/textures/common/nodraw.tga | Bin 0 -> 1994 bytes sabase/textures/common/nodrawsolid.tga | Bin 0 -> 3786 bytes sabase/textures/common/noimpact.tga | Bin 0 -> 2896 bytes sabase/textures/common/pdagui.tga | Bin 0 -> 3834 bytes sabase/textures/common/player_clip.tga | Bin 0 -> 2513 bytes sabase/textures/common/radiochatter.tga | Bin 0 -> 2978 bytes sabase/textures/common/shadow.tga | Bin 0 -> 3132 bytes sabase/textures/common/shadow2.tga | Bin 0 -> 3564 bytes sabase/textures/common/slick.tga | Bin 0 -> 1578 bytes sabase/textures/common/speaker.tga | Bin 0 -> 2883 bytes sabase/textures/common/visportal.tga | Bin 0 -> 3375 bytes sabase/textures/dummy_black.tga | Bin 0 -> 4140 bytes sabase/textures/dummy_light.tga | Bin 0 -> 49196 bytes sabase/textures/dummy_lighta.tga | Bin 0 -> 1580 bytes sabase/textures/dummy_white.tga | Bin 0 -> 4140 bytes sabase/textures/layout/blend01_a.tga | Bin 0 -> 36685 bytes sabase/textures/layout/blend01_b.tga | Bin 0 -> 65114 bytes sabase/textures/layout/ceiling01.tga | Bin 0 -> 62488 bytes sabase/textures/layout/ceiling02.tga | Bin 0 -> 36188 bytes sabase/textures/layout/floor01.tga | Bin 0 -> 33662 bytes sabase/textures/layout/floor02.tga | Bin 0 -> 20162 bytes sabase/textures/layout/lift01.tga | Bin 0 -> 12626 bytes sabase/textures/layout/pad01.tga | Bin 0 -> 33676 bytes sabase/textures/layout/pad02.tga | Bin 0 -> 36716 bytes sabase/textures/layout/stairs01.tga | Bin 0 -> 12883 bytes sabase/textures/layout/wall01.tga | Bin 0 -> 12215 bytes sabase/textures/layout/wall02.tga | Bin 0 -> 12751 bytes sabase/textures/layout/wallwalk01.tga | Bin 0 -> 13468 bytes sabase/textures/triggers/trigcount.tga | Bin 0 -> 4494 bytes sabase/textures/triggers/trigentityname.tga | Bin 0 -> 5271 bytes .../textures/triggers/trigentitynameonce.tga | Bin 0 -> 6372 bytes sabase/textures/triggers/trigfacing.tga | Bin 0 -> 4227 bytes sabase/textures/triggers/trigfade.tga | Bin 0 -> 4267 bytes sabase/textures/triggers/trigflashlight.tga | Bin 0 -> 5076 bytes sabase/textures/triggers/trigger.tga | Bin 0 -> 1739 bytes sabase/textures/triggers/triggui.tga | Bin 0 -> 3828 bytes sabase/textures/triggers/trighurt.tga | Bin 0 -> 4531 bytes sabase/textures/triggers/trigmulti.tga | Bin 0 -> 4311 bytes sabase/textures/triggers/trigonce.tga | Bin 0 -> 4052 bytes sabase/textures/triggers/trigrelay.tga | Bin 0 -> 4224 bytes sabase/textures/triggers/trigtimer.tga | Bin 0 -> 4312 bytes sabase/textures/triggers/trigtouch.tga | Bin 0 -> 4440 bytes standalone.patch | 123 +++++++ 84 files changed, 1758 insertions(+), 2 deletions(-) create mode 100644 COPYING.txt create mode 100644 TODO.txt create mode 100644 sabase/def/ammo.def create mode 100644 sabase/def/engine.def create mode 100644 sabase/def/player.def create mode 100644 sabase/default.cfg create mode 100644 sabase/guis/chat.gui create mode 100644 sabase/guis/mainmenu.gui create mode 100644 sabase/guis/mphud.gui create mode 100644 sabase/guis/msg.gui create mode 100644 sabase/maps/test.cm create mode 100644 sabase/maps/test.map create mode 100644 sabase/maps/test.proc create mode 100644 sabase/materials/base.mtr create mode 100644 sabase/materials/common.mtr create mode 100644 sabase/materials/deprecated.mtr create mode 100644 sabase/materials/dummy.mtr create mode 100644 sabase/materials/layout.mtr create mode 100644 sabase/materials/triggers.mtr create mode 100644 sabase/script/doom_defs.script create mode 100644 sabase/script/doom_main.script create mode 100644 sabase/strings/english.lang create mode 100644 sabase/textures/bigchars.tga create mode 100644 sabase/textures/common/aasobstacle.tga create mode 100644 sabase/textures/common/aassolid.tga create mode 100644 sabase/textures/common/caulk.tga create mode 100644 sabase/textures/common/clip.tga create mode 100644 sabase/textures/common/clipplus.tga create mode 100644 sabase/textures/common/collision.tga create mode 100644 sabase/textures/common/cushion.tga create mode 100644 sabase/textures/common/deprecated.tga create mode 100644 sabase/textures/common/entitygui.tga create mode 100644 sabase/textures/common/entitygui2.tga create mode 100644 sabase/textures/common/entitygui3.tga create mode 100644 sabase/textures/common/full_clip.tga create mode 100644 sabase/textures/common/ikclip.tga create mode 100644 sabase/textures/common/ladder.tga create mode 100644 sabase/textures/common/mirror.tga create mode 100644 sabase/textures/common/monster_clip.tga create mode 100644 sabase/textures/common/moveable_clip.tga create mode 100644 sabase/textures/common/nodraw.tga create mode 100644 sabase/textures/common/nodrawsolid.tga create mode 100644 sabase/textures/common/noimpact.tga create mode 100644 sabase/textures/common/pdagui.tga create mode 100644 sabase/textures/common/player_clip.tga create mode 100644 sabase/textures/common/radiochatter.tga create mode 100644 sabase/textures/common/shadow.tga create mode 100644 sabase/textures/common/shadow2.tga create mode 100644 sabase/textures/common/slick.tga create mode 100644 sabase/textures/common/speaker.tga create mode 100644 sabase/textures/common/visportal.tga create mode 100644 sabase/textures/dummy_black.tga create mode 100644 sabase/textures/dummy_light.tga create mode 100644 sabase/textures/dummy_lighta.tga create mode 100644 sabase/textures/dummy_white.tga create mode 100644 sabase/textures/layout/blend01_a.tga create mode 100644 sabase/textures/layout/blend01_b.tga create mode 100644 sabase/textures/layout/ceiling01.tga create mode 100644 sabase/textures/layout/ceiling02.tga create mode 100644 sabase/textures/layout/floor01.tga create mode 100644 sabase/textures/layout/floor02.tga create mode 100644 sabase/textures/layout/lift01.tga create mode 100644 sabase/textures/layout/pad01.tga create mode 100644 sabase/textures/layout/pad02.tga create mode 100644 sabase/textures/layout/stairs01.tga create mode 100644 sabase/textures/layout/wall01.tga create mode 100644 sabase/textures/layout/wall02.tga create mode 100644 sabase/textures/layout/wallwalk01.tga create mode 100644 sabase/textures/triggers/trigcount.tga create mode 100644 sabase/textures/triggers/trigentityname.tga create mode 100644 sabase/textures/triggers/trigentitynameonce.tga create mode 100644 sabase/textures/triggers/trigfacing.tga create mode 100644 sabase/textures/triggers/trigfade.tga create mode 100644 sabase/textures/triggers/trigflashlight.tga create mode 100644 sabase/textures/triggers/trigger.tga create mode 100644 sabase/textures/triggers/triggui.tga create mode 100644 sabase/textures/triggers/trighurt.tga create mode 100644 sabase/textures/triggers/trigmulti.tga create mode 100644 sabase/textures/triggers/trigonce.tga create mode 100644 sabase/textures/triggers/trigrelay.tga create mode 100644 sabase/textures/triggers/trigtimer.tga create mode 100644 sabase/textures/triggers/trigtouch.tga create mode 100644 standalone.patch diff --git a/COPYING.txt b/COPYING.txt new file mode 100644 index 0000000..ad88de3 --- /dev/null +++ b/COPYING.txt @@ -0,0 +1,116 @@ +The following license applies to: + + def/engine.def + materials + materials/base.mtr + materials/dummy.mtr + default.cfg + guis/chat.gui + guis/mphud.gui + guis/msg.gui + guis/mainmenu.gui + script/doom_main.script + script/doom_defs.script + textures/bigchars.tga + textures/dummy_black.tga + textures/dummy_light.tga + textures/dummy_lighta.tga + textures/dummy_white.tga + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + Version 2, December 2004 + + Copyright (C) 2004 Sam Hocevar + 14 rue de Plaisance, 75014 Paris, France + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. + +################################################################################ + +The following license applies to: + + textures/layout/*.tga + + Copyright (C) 2009 Stefan Lautner + Licensed under DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE version 2, + see above for license text. + +################################################################################ + +The following license applies to: + + textures/common/caulk.tga + textures/common/cushion.tga + textures/common/full_clip.tga + textures/common/mirror.tga + textures/common/nodraw.tga + textures/common/player_clip.tga + textures/common/slick.tga + textures/triggers/trigger.tga + + Copyright (C) 2000 William Joseph, under Public Domain + (according to Xreal, http://xreal.svn.sourceforge.net/viewvc/xreal/trunk/xreal/base/MEDIA.txt) + +################################################################################ + +The following license applies to: + + def/ammo.def + def/player.def + + maps/test.map + maps/test.cm + maps/test.proc + + materials/common.mtr + materials/deprecated.mtr + materials/layout.mtr + materials/triggers.mtr + + strings/english.lang + + textures/common/aasobstacle.tga + textures/common/aassolid.tga + textures/common/clipplus.tga + textures/common/clip.tga + textures/common/collision.tga + textures/common/deprecated.tga + textures/common/entitygui.tga + textures/common/entitygui2.tga + textures/common/entitygui3.tga + textures/common/ikclip.tga + textures/common/ladder.tga + textures/common/monster_clip.tga + textures/common/moveable_clip.tga + textures/common/nodrawsolid.tga + textures/common/noimpact.tga + textures/common/pdagui.tga + textures/common/radiochatter.tga + textures/common/shadow2.tga + textures/common/shadow.tga + textures/common/speaker.tga + textures/common/visportal.tga + + textures/triggers/trigcount.tga + textures/triggers/trigentitynameonce.tga + textures/triggers/trigentityname.tga + textures/triggers/trigfacing.tga + textures/triggers/trigfade.tga + textures/triggers/trigflashlight.tga + textures/triggers/triggui.tga + textures/triggers/trighurt.tga + textures/triggers/trigmulti.tga + textures/triggers/trigonce.tga + textures/triggers/trigrelay.tga + textures/triggers/trigtimer.tga + textures/triggers/trigtouch.tga + + Copyright (C) 2012 Daniel Gibson, credit would be appreciated, but is not necessary. + Licensed under DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE version 2, + see above for license text. diff --git a/README.md b/README.md index a6fa99c..d9f442e 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,48 @@ -d3-base-assets +D3 Base Assets ============== -This aims to become a base for standalone games based on the free Doom3 engine \ No newline at end of file +This projects aims to create a standalone SDK for games based on the +"dhewm3" Doom3 port (though it is useful with other ports as well), +so the Open Source Doom3 Engine can be used for games without using +any proprietary media from the game itself. + +Currently it's rather incomplete, especially the .def files for most +entities are missing. + +The following files are not included and have to be copied from the +original doom3 (or the demo) until dhewm3 has a working GLSL backend +and corresponding shaders that are under a free license: + +> glprogs/* + +Probably it would also be useful to use some files from def/ to have +more entities available in the level editor. +I plan to have recreated versions of them with a free license in the +future. + +HOWTO use this +-------------- + + * Clone dhewm3, see (tested revision + df81835de056cd83c1692e0cc2ec432873f7ab2b) + + * Apply standalone.patch (`cd /path/to/dhewm3/ ; patch -p1 < /path/to/standalone/standalone.patch`) + * Run cmake to create Makefiles + - create build dir (in this example: /path/to/build) + - `cd /path/to/build` + - `cmake -DD3XP=NO -DBASE=NO /path/to/dhewm3/neo/` + Note: the given options are just to speed up compiling and you may + need additional options to make sure the standalone/ directory + is used as data dir (see ) + * Compile dhewm3. (on Linux: execute `make`) + * Now you can execute dhewm3. You'll get a black screen, because there + is no main menu GUI yet. + But console works as expected, so you can load the test map with + `map test` and quit the game with `quit` + +Contributions are welcome! + + +Cheers, + +Daniel (caedes) diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 0000000..c54c963 --- /dev/null +++ b/TODO.txt @@ -0,0 +1,22 @@ +Currently (at least) the following is missing: + * Definitions for all important entities (in def/), especially: + func_*, info_*, path_*, trigger_*, target_* + + * GUIs, especially a main menu would be nice. + + * Examples for: + - Player model (incl. corresponding definitions etc) + - Melee weapon, e.g. stick, (incl. scripts) + - Firewarm, e.g. Pistol, Gun, ... (incl. scripts) + - one or more enemies (incl. models, scripts etc; could reuse player model) + + * OpenGL Shaders to replace the stuff from Doom3's glprogs/ directory + (maybe one of the GLSL implementations + shaders could be improved) + + * A script that replaces deprecated materials with their alternatives would be nice. + +Everything in this SDK should be under a free license that also allows commercial +use, e.g. WTFPL (http://sam.zoy.org/wtfpl/), a BSD-like license or a permissive +CC License (e.g. http://creativecommons.org/licenses/by/3.0/deed.en_US). +GPL may also be ok, but I'm trying to avoid that to make using the included assets +easier for projects that use other non-free assets. \ No newline at end of file diff --git a/sabase/def/ammo.def b/sabase/def/ammo.def new file mode 100644 index 0000000..3243841 --- /dev/null +++ b/sabase/def/ammo.def @@ -0,0 +1 @@ +entityDef ammo_types { } \ No newline at end of file diff --git a/sabase/def/engine.def b/sabase/def/engine.def new file mode 100644 index 0000000..433afa7 --- /dev/null +++ b/sabase/def/engine.def @@ -0,0 +1,39 @@ +entityDef worldspawn { + "editor_color" "0 .5 .8" + "editor_mins" "?" + "editor_maxs" "?" + "no_stamina" "1" + "spawnclass" "idWorldspawn" +} + +entityDef light { + "editor_color" "0 1 0" + "editor_mins" "-8 -8 -8" + "editor_maxs" "8 8 8" + "spawnclass" "idLight" +} + +entityDef info_player_start { + "editor_color" "1 0 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "editor_showangle" "1" + "spawnclass" "idPlayerStart" +} + +entityDef info_player_deathmatch { + "editor_color" "1 0 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 64" + "editor_showangle" "1" + "spawnclass" "idPlayerStart" +} + +entityDef player_doommarine { + "spawnclass" "idPlayer" + "scriptobject" "player" +} + +entityDef player_doommarine_mp { + "inherit" "player_doommarine" +} diff --git a/sabase/def/player.def b/sabase/def/player.def new file mode 100644 index 0000000..e69de29 diff --git a/sabase/default.cfg b/sabase/default.cfg new file mode 100644 index 0000000..39a08bd --- /dev/null +++ b/sabase/default.cfg @@ -0,0 +1,10 @@ +unbindall + +bind w _forward +bind a _moveleft +bind s _back +bind d _moveright + +bind CTRL _movedown +bind SPACE _moveup +bind SHIFT _speed diff --git a/sabase/guis/chat.gui b/sabase/guis/chat.gui new file mode 100644 index 0000000..66d3213 --- /dev/null +++ b/sabase/guis/chat.gui @@ -0,0 +1,6 @@ +windowDef Desktop { + rect 0, 0, 640, 480 + + backcolor 0, 0, 0, 0 + nocursor 1 +} \ No newline at end of file diff --git a/sabase/guis/mainmenu.gui b/sabase/guis/mainmenu.gui new file mode 100644 index 0000000..f1e111c --- /dev/null +++ b/sabase/guis/mainmenu.gui @@ -0,0 +1,11 @@ +windowDef Desktop +{ + rect 0, 0, 640, 480 + backcolor 0, 0, 0, 1 + menugui 1 + + onESC + { + set "cmd" "close" ; + } +} \ No newline at end of file diff --git a/sabase/guis/mphud.gui b/sabase/guis/mphud.gui new file mode 100644 index 0000000..66d3213 --- /dev/null +++ b/sabase/guis/mphud.gui @@ -0,0 +1,6 @@ +windowDef Desktop { + rect 0, 0, 640, 480 + + backcolor 0, 0, 0, 0 + nocursor 1 +} \ No newline at end of file diff --git a/sabase/guis/msg.gui b/sabase/guis/msg.gui new file mode 100644 index 0000000..96ecd9a --- /dev/null +++ b/sabase/guis/msg.gui @@ -0,0 +1,7 @@ +windowDef Desktop +{ + rect 0, 0, 640, 480 + + backcolor 0, 0, 0, 0 + menugui 1 +} \ No newline at end of file diff --git a/sabase/maps/test.cm b/sabase/maps/test.cm new file mode 100644 index 0000000..2a984d1 --- /dev/null +++ b/sabase/maps/test.cm @@ -0,0 +1,290 @@ +CM "1.00" + +18121552 + +collisionModel "worldMap" { + vertices { /* numVertices = */ 57 + /* 0 */ ( 448 256 264 ) + /* 1 */ ( -256 256 264 ) + /* 2 */ ( -256 -256 264 ) + /* 3 */ ( 448 -256 264 ) + /* 4 */ ( 448 -256 256 ) + /* 5 */ ( 448 256 256 ) + /* 6 */ ( -248 256 256 ) + /* 7 */ ( 440 256 256 ) + /* 8 */ ( 440 -248 256 ) + /* 9 */ ( -248 -248 256 ) + /* 10 */ ( -256 -256 256 ) + /* 11 */ ( -256 256 256 ) + /* 12 */ ( 440 -248 0 ) + /* 13 */ ( -248 -248 0 ) + /* 14 */ ( 448 -256 -8 ) + /* 15 */ ( 448 -248 -8 ) + /* 16 */ ( 448 -248 256 ) + /* 17 */ ( -256 -248 -8 ) + /* 18 */ ( -256 -256 -8 ) + /* 19 */ ( -256 -248 256 ) + /* 20 */ ( 448 256 0 ) + /* 21 */ ( -256 256 0 ) + /* 22 */ ( -256 -256 0 ) + /* 23 */ ( 448 -256 0 ) + /* 24 */ ( 448 256 -8 ) + /* 25 */ ( -256 256 -8 ) + /* 26 */ ( 448 264 264 ) + /* 27 */ ( -256 264 264 ) + /* 28 */ ( 448 264 -8 ) + /* 29 */ ( -256 264 -8 ) + /* 30 */ ( -248 256 0 ) + /* 31 */ ( 440 256 0 ) + /* 32 */ ( -248 256 264 ) + /* 33 */ ( -256 -248 264 ) + /* 34 */ ( -248 -248 264 ) + /* 35 */ ( -248 -248 -8 ) + /* 36 */ ( -248 256 -8 ) + /* 37 */ ( 440 256 264 ) + /* 38 */ ( 440 -248 264 ) + /* 39 */ ( 448 -248 264 ) + /* 40 */ ( 448 -248 0 ) + /* 41 */ ( 440 0 128 ) + /* 42 */ ( 440 192 128 ) + /* 43 */ ( 192 192 0 ) + /* 44 */ ( 192 0 0 ) + /* 45 */ ( 440 192 112 ) + /* 46 */ ( 216 192 0 ) + /* 47 */ ( 440 0 112 ) + /* 48 */ ( 216 0 0 ) + /* 49 */ ( -240 64 192 ) + /* 50 */ ( -248 64 192 ) + /* 51 */ ( -248 -64 192 ) + /* 52 */ ( -240 -64 192 ) + /* 53 */ ( -240 64 64 ) + /* 54 */ ( -248 64 64 ) + /* 55 */ ( -240 -64 64 ) + /* 56 */ ( -248 -64 64 ) + } + edges { /* numEdges = */ 100 + /* 0 */ ( 0 0 ) 0 0 + /* 1 */ ( 0 1 ) 1 2 + /* 2 */ ( 1 2 ) 0 2 + /* 3 */ ( 2 3 ) 0 2 + /* 4 */ ( 3 0 ) 0 2 + /* 5 */ ( 4 5 ) 0 1 + /* 6 */ ( 5 0 ) 1 1 + /* 7 */ ( 3 4 ) 0 2 + /* 8 */ ( 6 7 ) 1 2 + /* 9 */ ( 7 8 ) 1 1 + /* 10 */ ( 8 9 ) 1 2 + /* 11 */ ( 9 6 ) 1 1 + /* 12 */ ( 10 4 ) 1 2 + /* 13 */ ( 2 10 ) 0 2 + /* 14 */ ( 1 11 ) 1 1 + /* 15 */ ( 11 10 ) 0 1 + /* 16 */ ( 8 12 ) 1 1 + /* 17 */ ( 12 13 ) 1 1 + /* 18 */ ( 13 9 ) 1 1 + /* 19 */ ( 14 15 ) 1 2 + /* 20 */ ( 15 16 ) 0 1 + /* 21 */ ( 16 4 ) 1 1 + /* 22 */ ( 4 14 ) 0 2 + /* 23 */ ( 17 15 ) 1 1 + /* 24 */ ( 14 18 ) 1 2 + /* 25 */ ( 18 17 ) 1 2 + /* 26 */ ( 10 18 ) 0 2 + /* 27 */ ( 10 19 ) 1 1 + /* 28 */ ( 19 17 ) 1 1 + /* 29 */ ( 20 21 ) 0 1 + /* 30 */ ( 21 22 ) 0 2 + /* 31 */ ( 22 23 ) 1 2 + /* 32 */ ( 23 20 ) 0 2 + /* 33 */ ( 14 24 ) 0 2 + /* 34 */ ( 24 20 ) 1 1 + /* 35 */ ( 23 14 ) 1 2 + /* 36 */ ( 25 24 ) 1 2 + /* 37 */ ( 14 18 ) 1 2 + /* 38 */ ( 18 25 ) 0 2 + /* 39 */ ( 22 18 ) 1 2 + /* 40 */ ( 21 25 ) 1 1 + /* 41 */ ( 26 27 ) 0 2 + /* 42 */ ( 27 1 ) 0 1 + /* 43 */ ( 0 26 ) 0 2 + /* 44 */ ( 26 28 ) 0 2 + /* 45 */ ( 28 29 ) 0 2 + /* 46 */ ( 29 27 ) 0 2 + /* 47 */ ( 24 28 ) 0 2 + /* 48 */ ( 0 24 ) 0 1 + /* 49 */ ( 25 29 ) 0 1 + /* 50 */ ( 6 30 ) 1 1 + /* 51 */ ( 30 31 ) 1 1 + /* 52 */ ( 31 7 ) 1 1 + /* 53 */ ( 32 1 ) 1 1 + /* 54 */ ( 1 33 ) 1 1 + /* 55 */ ( 33 34 ) 1 1 + /* 56 */ ( 34 32 ) 1 2 + /* 57 */ ( 35 36 ) 1 2 + /* 58 */ ( 36 32 ) 0 1 + /* 59 */ ( 34 35 ) 0 1 + /* 60 */ ( 25 36 ) 1 1 + /* 61 */ ( 35 17 ) 1 1 + /* 62 */ ( 17 25 ) 1 1 + /* 63 */ ( 17 33 ) 0 1 + /* 64 */ ( 0 37 ) 1 1 + /* 65 */ ( 37 38 ) 1 2 + /* 66 */ ( 38 39 ) 1 1 + /* 67 */ ( 39 0 ) 1 2 + /* 68 */ ( 40 20 ) 1 1 + /* 69 */ ( 20 0 ) 1 1 + /* 70 */ ( 39 40 ) 0 1 + /* 71 */ ( 37 31 ) 0 1 + /* 72 */ ( 31 12 ) 1 1 + /* 73 */ ( 12 38 ) 0 1 + /* 74 */ ( 41 42 ) 1 1 + /* 75 */ ( 42 43 ) 0 2 + /* 76 */ ( 43 44 ) 1 1 + /* 77 */ ( 44 41 ) 0 2 + /* 78 */ ( 42 45 ) 1 1 + /* 79 */ ( 45 46 ) 0 2 + /* 80 */ ( 46 43 ) 1 1 + /* 81 */ ( 45 47 ) 1 1 + /* 82 */ ( 47 48 ) 0 2 + /* 83 */ ( 48 46 ) 1 1 + /* 84 */ ( 47 41 ) 1 1 + /* 85 */ ( 44 48 ) 1 1 + /* 86 */ ( 49 50 ) 0 2 + /* 87 */ ( 50 51 ) 1 1 + /* 88 */ ( 51 52 ) 0 2 + /* 89 */ ( 52 49 ) 0 2 + /* 90 */ ( 49 53 ) 0 2 + /* 91 */ ( 53 54 ) 0 2 + /* 92 */ ( 54 50 ) 1 1 + /* 93 */ ( 55 53 ) 0 2 + /* 94 */ ( 52 55 ) 0 2 + /* 95 */ ( 55 56 ) 0 2 + /* 96 */ ( 56 54 ) 1 1 + /* 97 */ ( 51 56 ) 1 1 + /* 98 */ ( 33 27 ) 0 1 + /* 99 */ ( 29 17 ) 0 1 + } + nodes { + ( 0 191.9999389648 ) + ( 1 0 ) + ( 2 128 ) + ( -1 0 ) + ( 1 192 ) + ( -1 0 ) + ( -1 0 ) + ( -1 0 ) + ( 1 64 ) + ( -1 0 ) + ( 1 -64 ) + ( 2 64 ) + ( 2 192 ) + ( -1 0 ) + ( -1 0 ) + ( -1 0 ) + ( -1 0 ) + } + polygons /* polygonMemory = */ 2736 { + 4 ( -65 71 72 73 ) ( -1 0 0 ) -440 ( 440 -248 -0 ) ( 440 256 264 ) "textures/layout/wall01" + 4 ( 68 69 -67 70 ) ( 1 0 0 ) 448 ( 448 -248 0 ) ( 448 256 264 ) "textures/layout/wall01" + 4 ( 64 65 66 67 ) ( 0 0 1 ) 264 ( 440 -248 264 ) ( 448 256 264 ) "textures/layout/wall01" + 4 ( -8 50 51 52 ) ( 0 -1 0 ) -256 ( -248 256 0 ) ( 440 256 256 ) "textures/layout/wall01" + 4 ( 47 -44 -43 48 ) ( 1 0 0 ) 448 ( 448 256 -8 ) ( 448 264 264 ) "textures/layout/wall01" + 4 ( -41 44 45 46 ) ( 0 1 0 ) 264 ( -256 264 -8 ) ( 448 264 264 ) "textures/layout/wall01" + 4 ( 41 42 -1 43 ) ( 0 0 1 ) 264 ( -256 256 264 ) ( 448 264 264 ) "textures/layout/wall01" + 4 ( 8 9 10 11 ) ( 0 0 -1 ) -256 ( -248 -248 256 ) ( 440 256 256 ) "textures/layout/ceiling02" + 4 ( 5 6 -4 7 ) ( 1 0 0 ) 448 ( 448 -256 256 ) ( 448 256 264 ) "textures/layout/ceiling02" + 4 ( 1 2 3 4 ) ( 0 0 1 ) 264 ( -256 -256 264 ) ( 448 256 264 ) "textures/layout/ceiling02" + 4 ( 36 -33 37 38 ) ( 0 0 -1 ) 8 ( -256 -256 -8 ) ( 448 256 -8 ) "textures/layout/floor02" + 4 ( 33 34 -32 35 ) ( 1 0 0 ) 448 ( 448 -256 -8 ) ( 448 256 0 ) "textures/layout/floor02" + 4 ( 29 30 31 32 ) ( 0 0 1 ) 0 ( -256 -256 0 ) ( 448 256 0 ) "textures/layout/floor02" + 4 ( -75 78 79 80 ) ( 0 1 0 ) 192 ( 192 192 -0 ) ( 440 192 128 ) "textures/layout/stairs01" + 4 ( -45 -47 -36 49 ) ( 0 0 -1 ) 8 ( -256 256 -8 ) ( 448 264 -8 ) "textures/layout/wall01" + 4 ( 84 -77 85 -82 ) ( 0 -1 0 ) 0 ( 192 0 -0 ) ( 440 0 128 ) "textures/layout/stairs01" + 4 ( -79 81 82 83 ) ( 0.4472135901 0 -0.8944271803 ) 96.5981369019 ( 216.0000457764 -0 -0 ) ( 440 192 111.9999694824 ) "textures/layout/stairs01" + 4 ( 74 75 76 77 ) ( -0.4586429298 0 0.8886206746 ) -88.0594482422 ( 191.9999389648 -0 -0 ) ( 440 192 128 ) "textures/layout/stairs01" + 4 ( -37 -35 -31 39 ) ( 0 -1 0 ) 256 ( -256 -256 -8 ) ( 448 -256 0 ) "textures/layout/floor02" + 4 ( -24 -22 -12 26 ) ( 0 -1 0 ) 256 ( -256 -256 -8 ) ( 448 -256 256 ) "textures/layout/wall01" + 4 ( 23 -19 24 25 ) ( 0 0 -1 ) 8 ( -256 -256 -8 ) ( 448 -248 -8 ) "textures/layout/wall01" + 4 ( 19 20 21 22 ) ( 1 0 0 ) 448 ( 448 -256 -8 ) ( 448 -248 256 ) "textures/layout/wall01" + 4 ( -10 16 17 18 ) ( 0 1 0 ) -248 ( -248 -248 0 ) ( 440 -248 256 ) "textures/layout/wall01" + 4 ( 12 -7 -3 13 ) ( 0 -1 0 ) 256 ( -256 -256 256 ) ( 448 -256 264 ) "textures/layout/ceiling02" + 4 ( 99 63 98 -46 ) ( -1 0 0 ) 256 ( -256 -248 -8 ) ( -256 264 264 ) "textures/layout/wall01" + 4 ( 57 58 -56 59 ) ( 1 -0 0 ) -248 ( -248 -248 -8 ) ( -248 256 264 ) "textures/layout/wall01" + 4 ( -86 90 91 92 ) ( 0 1 0 ) 64 ( -248 64 64 ) ( -240 64 192 ) "textures/layout/wall02" + 4 ( 60 -57 61 62 ) ( 0 0 -1 ) 8 ( -256 -248 -8 ) ( -248 256 -8 ) "textures/layout/wall01" + 4 ( 53 54 55 56 ) ( 0 0 1 ) 264 ( -256 -248 264 ) ( -248 256 264 ) "textures/layout/wall01" + 4 ( -30 40 -38 -39 ) ( -1 0 0 ) 256 ( -256 -256 -8 ) ( -256 256 0 ) "textures/layout/floor02" + 4 ( -2 14 15 -13 ) ( -1 0 0 ) 256 ( -256 -256 256 ) ( -256 256 264 ) "textures/layout/ceiling02" + 4 ( 86 87 88 89 ) ( 0 0 1 ) 192 ( -248 -64 192 ) ( -240 64 192 ) "textures/layout/wall02" + 4 ( -95 -94 -88 97 ) ( 0 -1 0 ) 64 ( -248 -64 64 ) ( -240 -64 192 ) "textures/layout/wall02" + 4 ( -91 -93 95 96 ) ( 0 0 -1 ) -64 ( -248 -64 64 ) ( -240 64 64 ) "textures/layout/wall02" + 4 ( 93 -90 -89 94 ) ( 1 -0 0 ) -240 ( -240 -64 64 ) ( -240 64 192 ) "textures/common/mirror" + 4 ( 27 28 -25 -26 ) ( -1 0 0 ) 256 ( -256 -256 -8 ) ( -256 -248 256 ) "textures/layout/wall01" + } + brushes /* brushMemory = */ 1152 { + 6 { + ( 0 0 1 ) 264 + ( 0 1 0 ) 256 + ( 1 0 0 ) 448 + ( 0 0 -1 ) 0 + ( 0 -1 0 ) 248 + ( -1 0 0 ) -440 + } ( 440 -248 -0 ) ( 448 256 264 ) "solid,opaque" + 6 { + ( 0 0 1 ) 264 + ( 0 1 0 ) 264 + ( 1 0 0 ) 448 + ( 0 0 -1 ) 8 + ( 0 -1 0 ) -256 + ( -1 0 0 ) 256 + } ( -256 256 -8 ) ( 448 264 264 ) "solid,opaque" + 6 { + ( 0 0 1 ) 264 + ( 0 1 0 ) 256 + ( 1 0 0 ) 448 + ( 0 0 -1 ) -256 + ( 0 -1 0 ) 256 + ( -1 0 0 ) 256 + } ( -256 -256 256 ) ( 448 256 264 ) "solid,opaque" + 6 { + ( 0 0 1 ) 0 + ( 0 1 0 ) 256 + ( 1 0 0 ) 448 + ( 0 0 -1 ) 8 + ( 0 -1 0 ) 256 + ( -1 0 0 ) 256 + } ( -256 -256 -8 ) ( 448 256 0 ) "solid,opaque" + 6 { + ( -0.4586429298 0 0.8886206746 ) -88.0594482422 + ( 0 1 0 ) 192 + ( 1 0 0 ) 440 + ( 0.4472135901 0 -0.8944271803 ) 96.5981369019 + ( 0 -1 0 ) 0 + ( 0 0 -1 ) 0 + } ( 191.9999389648 0 -0 ) ( 440 192 128 ) "solid,opaque" + 6 { + ( 0 0 1 ) 256 + ( 0 1 0 ) -248 + ( 1 0 0 ) 448 + ( 0 0 -1 ) 8 + ( 0 -1 0 ) 256 + ( -1 0 0 ) 256 + } ( -256 -256 -8 ) ( 448 -248 256 ) "solid,opaque" + 6 { + ( 0 0 1 ) 264 + ( 0 1 -0 ) 256 + ( 1 -0 0 ) -248 + ( 0 0 -1 ) 8 + ( 0 -1 0 ) 248 + ( -1 0 0 ) 256 + } ( -256 -248 -8 ) ( -248 256 264 ) "solid,opaque" + 6 { + ( 0 0 1 ) 192 + ( 0 1 0 ) 64 + ( 1 -0 0 ) -240 + ( 0 0 -1 ) -64 + ( 0 -1 0 ) 64 + ( -1 0 0 ) 248 + } ( -248 -64 64 ) ( -240 64 192 ) "solid,opaque" + } +} diff --git a/sabase/maps/test.map b/sabase/maps/test.map new file mode 100644 index 0000000..ce6f28a --- /dev/null +++ b/sabase/maps/test.map @@ -0,0 +1,129 @@ + +Version 2 +// entity 0 +{ +"classname" "worldspawn" +// brush 0 +{ +brushDef3 +{ +( 0 0 1 -264 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/layout/ceiling02" 0 0 0 +( 0 1 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 1.21875 ) ) "textures/layout/ceiling02" 0 0 0 +( 1 0 0 -448 ) ( ( 0.00390625 0 511.96875 ) ( 0 0.00390625 1.21875 ) ) "textures/layout/ceiling02" 0 0 0 +( 0 0 -1 256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 511.9375 ) ) "textures/layout/ceiling02" 0 0 0 +( 0 -1 0 -256 ) ( ( 0.00390625 0 0.0625 ) ( 0 0.00390625 1.21875 ) ) "textures/layout/ceiling02" 0 0 0 +( -1 0 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 1.21875 ) ) "textures/layout/ceiling02" 0 0 0 +} +} +// brush 1 +{ +brushDef3 +{ +( 0 0 1 -256 ) ( ( 0.00390625 0 2 ) ( 0 0.00390625 511.21875 ) ) "textures/layout/wall01" 0 0 0 +( 0 1 0 248 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.00390625 511 ) ) "textures/layout/wall01" 0 0 0 +( 1 0 0 -448 ) ( ( 0.00390625 0 2 ) ( 0 0.00390625 0.03125 ) ) "textures/layout/wall01" 0 0 0 +( 0 0 -1 -8 ) ( ( 0.00390625 0 2 ) ( 0 0.00390625 511.96875 ) ) "textures/layout/wall01" 0 0 0 +( 0 -1 0 -256 ) ( ( 0.00390625 0 511.96875 ) ( 0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( -1 0 0 -256 ) ( ( 0.00390625 0 510 ) ( 0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +} +} +// brush 2 +{ +brushDef3 +{ +( 0 0 1 -0 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/layout/floor02" 0 0 0 +( 0 1 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.1875 ) ) "textures/layout/floor02" 0 0 0 +( 1 0 0 -448 ) ( ( 0.00390625 0 511.96875 ) ( 0 0.00390625 0.1875 ) ) "textures/layout/floor02" 0 0 0 +( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 511.9375 ) ) "textures/layout/floor02" 0 0 0 +( 0 -1 0 -256 ) ( ( 0.00390625 0 0.0625 ) ( 0 0.00390625 0.1875 ) ) "textures/layout/floor02" 0 0 0 +( -1 0 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.1875 ) ) "textures/layout/floor02" 0 0 0 +} +} +// brush 3 +{ +brushDef3 +{ +( 0 0 1 -264 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 511.28125 ) ) "textures/layout/wall01" 0 0 0 +( 0 1 0 -264 ) ( ( 0.00390625 0 0.03125 ) ( 0 0.00390625 0.0625 ) ) "textures/layout/wall01" 0 0 0 +( 1 0 0 -448 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.09375 ) ) "textures/layout/wall01" 0 0 0 +( 0 0 -1 -8 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 512.03125 ) ) "textures/layout/wall01" 0 0 0 +( 0 -1 0 256 ) ( ( 0.00390625 0 511.96875 ) ( 0 0.00390625 511 ) ) "textures/layout/wall01" 0 0 0 +( -1 0 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.0625 ) ) "textures/layout/wall01" 0 0 0 +} +} +// brush 4 +{ +brushDef3 +{ +( 0 0 1 -264 ) ( ( 0.00390625 0 0.09375 ) ( 0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 0 1 -0 -256 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 1 -0 0 248 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 0 0 -1 -8 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 0 -1 0 -248 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( -1 0 0 -256 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +} +} +// brush 5 +{ +brushDef3 +{ +( 0 0 1 -264 ) ( ( 0.00390625 0 0.09375 ) ( 0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 0 1 0 -256 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( 1 0 0 -448 ) ( ( 0.00390625 0 511.96875 ) ( 0 0.00390625 511.96875 ) ) "textures/layout/wall01" 0 0 0 +( 0 0 -1 -0 ) ( ( 0.00390625 0 0.25 ) ( 0 0.00390625 0.125 ) ) "textures/layout/wall01" 0 0 0 +( 0 -1 0 -248 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +( -1 0 0 440 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall01" 0 0 0 +} +} +// brush 6 +{ +brushDef3 +{ +( -0.4586429298 0 0.8886206746 88.0594463156 ) ( ( 0.00390625 0 -0.25 ) ( -0 0.00390625 -0.3125 ) ) "textures/layout/stairs01" 0 0 0 +( 0 1 0 -192 ) ( ( 0.00390625 0 0.78125 ) ( 0 0.00390625 -0.09375 ) ) "textures/layout/stairs01" 0 0 0 +( 1 0 0 -440 ) ( ( 0.00390625 0 512 ) ( 0 0.00390625 -0.09375 ) ) "textures/layout/stairs01" 0 0 0 +( 0.4472135901 0 -0.8944271803 -96.5981331581 ) ( ( 0.00390625 0 512 ) ( 0 0.00390625 0.5625 ) ) "textures/layout/stairs01" 0 0 0 +( 0 -1 0 -0 ) ( ( 0.00390625 0 511.4375 ) ( 0 0.00390625 -0.09375 ) ) "textures/layout/stairs01" 0 0 0 +( 0 0 -1 -0 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 -0.09375 ) ) "textures/layout/stairs01" 0 0 0 +} +} +// brush 7 +{ +brushDef3 +{ +( 0 0 1 -192 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/layout/wall02" 0 0 0 +( 0 1 0 -64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0.03125 ) ) "textures/layout/wall02" 0 0 0 +( 1 -0 0 240 ) ( ( 0.03125 0 -0 ) ( -0 0.03125 0 ) ) "textures/common/mirror" 0 0 0 +( 0 0 -1 64 ) ( ( 0.00390625 0 0 ) ( 0 0.00390625 0 ) ) "textures/layout/wall02" 0 0 0 +( 0 -1 0 -64 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall02" 0 0 0 +( -1 0 0 -248 ) ( ( 0.00390625 0 -0 ) ( -0 0.00390625 0 ) ) "textures/layout/wall02" 0 0 0 +} +} +} +// entity 1 +{ +"classname" "light" +"name" "light_3" +"origin" "-176.000000 96.000000 144.000000" +"light_radius" "300.000000 300.000000 300.000000" +} +// entity 2 +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "-16.000000 -88.000000 80.000000" +} +// entity 3 +{ +"classname" "light" +"name" "light_1" +"origin" "272.000000 168.000000 144.000000" +"light_radius" "300.000000 300.000000 300.000000" +} +// entity 4 +{ +"classname" "light" +"name" "light_2" +"origin" "96.000000 -160.000000 144.000000" +"light_radius" "300.000000 300.000000 300.000000" +} diff --git a/sabase/maps/test.proc b/sabase/maps/test.proc new file mode 100644 index 0000000..029503b --- /dev/null +++ b/sabase/maps/test.proc @@ -0,0 +1,150 @@ +mapProcFile003 + +model { /* name = */ "_area0" /* numSurfaces = */ 6 + +/* surface 0 */ { "textures/layout/ceiling02" /* numVerts = */ 4 /* numIndexes = */ 6 +( -248 -248 256 -0.96875 1.90625 0 0 -1 ) ( 440 -248 256 -0.96875 -0.78125 0 0 -1 ) ( 440 256 256 1 -0.78125 0 0 -1 ) +( -248 256 256 1 1.90625 0 0 -1 ) +0 1 2 0 2 3 +} + +/* surface 1 */ { "textures/layout/wall01" /* numVerts = */ 24 /* numIndexes = */ 60 +( -248 -248 0 1 0 0 1 0 ) ( 440 -248 0 -1.6875 0 0 1 0 ) ( 440 -248 256 -1.6875 -1 0 1 0 ) +( -248 -248 256 1 -1 0 1 0 ) ( -248 256 0 0 0 0 -1 0 ) ( -248 256 256 0 -1 0 -1 0 ) +( 440 256 256 2.6875 -1 0 -1 0 ) ( 440 256 0 2.6875 0 0 -1 0 ) ( -248 256 0 1 0 1 0 0 ) +( -248 64 64 0.25 -0.25 1 0 0 ) ( -248 64 192 0.25 -0.75 1 0 0 ) ( -248 256 256 1 -1 1 0 0 ) +( -248 -248 256 -0.96875 -1 1 0 0 ) ( -248 -64 192 -0.25 -0.75 1 0 0 ) ( -248 -248 0 -0.96875 0 1 0 0 ) +( -248 -64 64 -0.25 -0.25 1 0 0 ) ( 440 256 0 -1 0 -1 0 0 ) ( 440 256 256 -1 -1 -1 0 0 ) +( 440 192 128 -0.7499998212 -0.5 -1 0 0 ) ( 440 192 112 -0.7499998212 -0.4375 -1 0 0 ) ( 440 0 128 0 -0.4999999404 -1 0 0 ) +( 440 0 112 0 -0.4375000298 -1 0 0 ) ( 440 -248 256 0.9687501788 -1 -1 0 0 ) ( 440 -248 0 0.9687501788 0 -1 0 0 ) +0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 +12 11 10 12 10 13 14 12 13 14 15 9 14 13 15 14 9 8 +16 17 18 16 18 19 20 18 17 21 16 19 22 20 17 23 16 21 +23 21 20 23 20 22 +} + +/* surface 2 */ { "textures/layout/floor02" /* numVerts = */ 8 /* numIndexes = */ 24 +( 440 256 0 1 1.71875 0 0 1 ) ( 216 192 0 0.75 0.84375 0 0 1 ) ( 192 192 0 0.75 0.75 0 0 1 ) +( 216 0 0 0 0.84375 0 0 1 ) ( 440 -248 0 -0.96875 1.71875 0 0 1 ) ( 192 0 0 0 0.7500000596 0 0 1 ) +( -248 256 0 1 -0.96875 0 0 1 ) ( -248 -248 0 -0.96875 -0.96875 0 0 1 ) +0 1 2 3 1 0 4 3 0 4 5 3 6 0 2 6 2 5 +7 6 5 7 5 4 +} + +/* surface 3 */ { "textures/layout/stairs01" /* numVerts = */ 16 /* numIndexes = */ 24 +( 440 0 128 2.15625 0.40625 0 -1 0 ) ( 440 0 112 2.15625 0.4687499702 0 -1 0 ) ( 216 0 0 1.28125 0.90625 0 -1 0 ) +( 192 0 0 1.1875 0.90625 0 -1 0 ) ( 440 0 112 0 -1.170452714 0.4472135901 0 -0.8944271803 ) ( 440 192 112 0.75 -1.170452714 0.4472135901 0 -0.8944271803 ) +( 216 192 0 0.75 -0.1921730042 0.4472135901 0 -0.8944271803 ) ( 216 0 0 0 -0.1921730042 0.4472135901 0 -0.8944271803 ) ( 440 192 128 -0.9375 0.40625 0 1 0 ) +( 192 192 0 0.0312499404 0.90625 0 1 0 ) ( 216 192 0 -0.062500298 0.90625 0 1 0 ) ( 440 192 112 -0.9375 0.46875 0 1 0 ) +( 440 192 128 0 -1.0691242218 -0.4586429298 0 0.8886206746 ) ( 440 0 128 0.7500001788 -1.0691242218 -0.4586429298 0 0.8886206746 ) ( 192 0 0 0.7500000596 0.0209824443 -0.4586429298 0 0.8886206746 ) +( 192 192 0 0 0.0209823847 -0.4586429298 0 0.8886206746 ) +0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 +12 13 14 12 14 15 +} + +/* surface 4 */ { "textures/layout/wall02" /* numVerts = */ 16 /* numIndexes = */ 24 +( -240 -64 192 -0.9375 -0.75 0 -1 0 ) ( -240 -64 64 -0.9375 -0.25 0 -1 0 ) ( -248 -64 64 -0.96875 -0.25 0 -1 0 ) +( -248 -64 192 -0.96875 -0.75 0 -1 0 ) ( -248 -64 64 -0.25 0.96875 0 0 -1 ) ( -240 -64 64 -0.25 0.9375 0 0 -1 ) +( -240 64 64 0.25 0.9375 0 0 -1 ) ( -248 64 64 0.25 0.96875 0 0 -1 ) ( -240 64 64 0.9375 -0.21875 0 1 0 ) +( -240 64 192 0.9375 -0.71875 0 1 0 ) ( -248 64 192 0.96875 -0.71875 0 1 0 ) ( -248 64 64 0.96875 -0.21875 0 1 0 ) +( -240 -64 192 -0.25 -0.9374999404 0 0 1 ) ( -248 -64 192 -0.25 -0.9687499404 0 0 1 ) ( -248 64 192 0.25 -0.9687499404 0 0 1 ) +( -240 64 192 0.25 -0.9374999404 0 0 1 ) +0 1 2 0 2 3 4 5 6 4 6 7 8 9 10 8 10 11 +12 13 14 12 14 15 +} + +/* surface 5 */ { "textures/common/mirror" /* numVerts = */ 4 /* numIndexes = */ 6 +( -240 -64 192 -2 -6 1 0 0 ) ( -240 64 192 2 -6 1 0 0 ) ( -240 64 64 2 -2 1 0 0 ) +( -240 -64 64 -2 -2 1 0 0 ) +0 1 2 0 2 3 +} + +} + +shadowModel { /* name = */ "_prelight_light_3" + +/* numVerts = */ 104 /* noCaps = */ 72 /* noFrontCaps = */ 114 /* numIndexes = */ 156 /* planeBits = */ 42 +( -248 64 192 ) ( -476 -37.3333320618 344 ) ( -248 24 192 ) ( -476 -204 344 ) ( -248 64 192 ) +( -476 -37.3333320618 344 ) ( -245.647064209 26.3529396057 192 ) ( -476 -204 350.756652832 ) ( -240 64 192 ) ( -476 -54 369 ) +( -245.647064209 26.3529434204 192 ) ( -476 -204 350.756652832 ) ( -248 64 192 ) ( -476 -37.3333320618 344 ) ( -240 64 192 ) +( -476 -54 369 ) ( -240 32 192 ) ( -476 -204 369 ) ( -248 24 192 ) ( -476 -204 344 ) +( -248 64 192 ) ( -476 -37.3333320618 344 ) ( -240 64 192 ) ( -476 -54 369 ) ( -240 32 192 ) +( -476 -204 369 ) ( -240 -64 192 ) ( -296 -204 234 ) ( -248 -64 192 ) ( -311 -204 234 ) +( -240 -64 192 ) ( -296 -204 234 ) ( -248 -64 192 ) ( -311 -204 234 ) ( -248 24 192 ) +( -476 -204 344 ) ( -245.647064209 26.3529434204 192 ) ( -476 -204 350.7567749023 ) ( -240 -64 192 ) ( -296 -204 234 ) +( -245.647064209 26.3529434204 192 ) ( -476 -204 350.7567749023 ) ( -240 32 192 ) ( -476 -204 369 ) ( -248 -64 64 ) +( -311 -204 -6 ) ( -240 -64 64 ) ( -296 -204 -6 ) ( -248 -64 64 ) ( -311 -204 -6 ) +( -240 -64 64 ) ( -296 -204 -6 ) ( -240 16 64 ) ( -416 -204 -156 ) ( -243 16 64 ) +( -427.2499694824 -204 -156 ) ( -248 -64 64 ) ( -311 -204 -6 ) ( -243 16 64 ) ( -427.2499694824 -204 -156 ) +( -248 16 64 ) ( -446 -204 -156 ) ( -248 -64 192 ) ( -311 -204 234 ) ( -248 24 192 ) +( -476 -204 344 ) ( -240 32 192 ) ( -476 -204 369 ) ( -240 -64 192 ) ( -296 -204 234 ) +( -240 -64 64 ) ( -296 -204 -6 ) ( -240 16 64 ) ( -416 -204 -156 ) ( -248 16 64 ) +( -446 -204 -156 ) ( -248 -64 64 ) ( -311 -204 -6 ) ( -240 64 64 ) ( -416 -24 -156 ) +( -240 16 64 ) ( -416 -204 -156 ) ( -240 64 64 ) ( -416 -24 -156 ) ( -243 16 64 ) +( -427.25 -204 -156 ) ( -248 64 64 ) ( -446 -24 -156 ) ( -243 16 64 ) ( -427.25 -204 -156 ) +( -240 64 64 ) ( -416 -24 -156 ) ( -248 64 64 ) ( -446 -24 -156 ) ( -248 16 64 ) +( -446 -204 -156 ) ( -240 16 64 ) ( -416 -204 -156 ) ( -240 64 64 ) ( -416 -24 -156 ) +( -248 64 64 ) ( -446 -24 -156 ) ( -248 16 64 ) ( -446 -204 -156 ) +18 20 19 20 21 19 0 8 1 8 9 1 22 24 25 22 25 23 +62 64 63 64 65 63 66 68 69 66 69 67 70 72 71 72 73 71 +74 76 77 74 77 75 26 46 47 26 47 27 44 28 45 28 29 45 +96 98 97 98 99 97 78 86 87 78 87 79 100 102 103 100 103 101 +3 5 7 11 13 15 11 15 17 31 33 35 31 35 37 39 41 43 +49 51 53 49 53 55 57 59 61 27 47 45 27 45 29 81 83 85 +89 91 93 89 93 95 6 4 2 14 12 10 16 14 10 34 32 30 +36 34 30 42 40 38 52 50 48 54 52 48 60 58 56 44 46 26 +28 44 26 84 82 80 92 90 88 94 92 88 +} + +shadowModel { /* name = */ "_prelight_light_1" + +/* numVerts = */ 98 /* noCaps = */ 60 /* noFrontCaps = */ 108 /* numIndexes = */ 156 /* planeBits = */ 41 +( 440 192 128 ) ( 572 210.8571472168 115.4285736084 ) ( 440 192 128 ) ( 572 210.8571472168 115.4285736084 ) ( 339.7446594238 192 76.2553100586 ) +( 572 274.2814331055 -156 ) ( 343.2727050781 192 72.7272644043 ) ( 572 269.0204162598 -156 ) ( 440 192 112 ) ( 572 210.8571472168 86.8571472168 ) +( 440 192 128 ) ( 572 210.8571472168 115.4285736084 ) ( 343.2727050781 192 72.7272644043 ) ( 572 269.0204162598 -156 ) ( 349.3333129883 192 66.6666641235 ) +( 572 261.103515625 -156 ) ( 440 192 112 ) ( 572 210.8571472168 86.8571472168 ) ( 440 0 112 ) ( 572 -132 86.8571472168 ) +( 440 0 112 ) ( 572 -132 86.8571472168 ) ( 440 192 112 ) ( 572 210.8571472168 86.8571472168 ) ( 349.3333129883 192 66.6666564941 ) +( 572 261.103515625 -156 ) ( 349.3333129883 90.6666564941 66.6666564941 ) ( 572 -132 -156 ) ( 440 192 128 ) ( 572 210.8571472168 115.4285736084 ) +( 339.7446594238 192 76.2553100586 ) ( 572 274.2814331055 -156 ) ( 440 0 112 ) ( 572 -132 86.8571472168 ) ( 440 0 112 ) +( 572 -132 86.8571472168 ) ( 349.3333129883 90.6666564941 66.6666641235 ) ( 572 -132 -156 ) ( 339.7894897461 85.8947296143 61.894744873 ) ( 519.6923217773 -132 -156 ) +( 216 0 0 ) ( 172 -132 -113.1428604126 ) ( 440 0 112 ) ( 572 -132 86.8571472168 ) ( 339.7894897461 85.8947372437 61.8947372437 ) +( 519.6923217773 -132 -156 ) ( 216 24 0 ) ( 155.3333282471 -132 -156 ) ( 216 0 0 ) ( 172 -132 -113.1428604126 ) +( 440 0 128 ) ( 572 -132 115.4285736084 ) ( 192 0 0 ) ( 129.1428527832 -132 -113.1428604126 ) ( 216 24 0 ) +( 155.3333282471 -132 -156 ) ( 216 0 0 ) ( 172 -132 -113.1428604126 ) ( 192 192 0 ) ( 105.3333358765 218 -156 ) +( 216 192 0 ) ( 155.3333282471 218 -156 ) ( 339.7446594238 192 76.2553100586 ) ( 572 274.2814025879 -156 ) ( 192 192 0 ) +( 105.3333358765 218 -156 ) ( 216 192 0 ) ( 155.3333282471 218 -156 ) ( 343.2727050781 192 72.7272644043 ) ( 572 269.0203857422 -156 ) +( 343.2727050781 192 72.7272644043 ) ( 572 269.0203857422 -156 ) ( 216 192 0 ) ( 155.3333282471 218 -156 ) ( 349.3333129883 192 66.6666564941 ) +( 572 261.1034240723 -156 ) ( 349.3333129883 192 66.6666564941 ) ( 572 261.1034240723 -156 ) ( 216 192 0 ) ( 155.3333282471 218 -156 ) +( 339.7894897461 85.8947296143 61.8947372437 ) ( 519.6923217773 -132 -156 ) ( 349.3333129883 90.6666488647 66.6666564941 ) ( 572 -132 -156 ) ( 339.7894592285 85.8947296143 61.8947372437 ) +( 519.6922607422 -132 -156 ) ( 216 192 0 ) ( 155.3333282471 218 -156 ) ( 216 24 0 ) ( 155.3333282471 -132 -156 ) +( 339.7446594238 192 76.2553100586 ) ( 572 274.2814025879 -156 ) ( 192 192 0 ) ( 105.3333358765 218 -156 ) ( 216 192 0 ) +( 155.3333282471 218 -156 ) ( 216 24 0 ) ( 155.3333282471 -132 -156 ) +28 30 31 28 31 29 8 0 9 0 1 9 18 8 19 8 9 19 +54 56 57 54 57 55 50 32 33 50 33 51 40 52 53 40 53 41 +52 50 53 50 51 53 90 92 93 90 93 91 58 60 59 60 61 59 +94 96 97 94 97 95 3 5 7 11 13 15 11 15 17 21 23 25 +21 25 27 35 37 39 43 45 47 43 47 49 51 33 41 51 41 53 +63 65 67 63 67 69 71 73 75 77 79 81 77 81 83 85 87 89 +6 4 2 14 12 10 16 14 10 24 22 20 26 24 20 38 36 34 +46 44 42 48 46 42 40 32 50 52 40 50 66 64 62 68 66 62 +74 72 70 80 78 76 82 80 76 88 86 84 +} + +shadowModel { /* name = */ "_prelight_light_2" + +/* numVerts = */ 44 /* noCaps = */ 30 /* noFrontCaps = */ 45 /* numIndexes = */ 60 /* planeBits = */ 5 +( 396 0 90 ) ( 396 0 90 ) ( 396 140 90 ) ( 396 140 90 ) ( 396 0 90 ) +( 396 0 90 ) ( 396 140 90 ) ( 396 140 90 ) ( 317.25 61.25 50.625 ) ( 396 140 17.389831543 ) +( 396 0 90 ) ( 396 0 90 ) ( 317.25 61.25 50.625 ) ( 396 140 17.389831543 ) ( 256 0 20 ) +( 396 140 -88.5 ) ( 256 0 20 ) ( 396 140 -88.5 ) ( 396 0 90 ) ( 396 0 90 ) +( 396 140 90 ) ( 396 140 90 ) ( 216 140 0 ) ( 216 140 0 ) ( 396 140 90 ) +( 396 140 90 ) ( 216 140 0 ) ( 216 140 0 ) ( 317.25 61.25 50.625 ) ( 396 140 17.389831543 ) +( 216 0 0 ) ( 321 140 -126 ) ( 317.25 61.25 50.625 ) ( 396 140 17.389831543 ) ( 216 140 0 ) +( 216 140 0 ) ( 216 0 0 ) ( 321 140 -126 ) ( 256 0 20 ) ( 396 140 -88.5 ) +( 216 0 0 ) ( 321 140 -126 ) ( 256 0 20 ) ( 396 140 -88.5 ) +0 2 1 2 3 1 16 18 17 18 19 17 20 22 23 20 23 21 +22 30 31 22 31 23 40 42 41 42 43 41 5 7 9 11 13 15 +25 27 29 33 35 37 33 37 39 8 6 4 14 12 10 28 26 24 +36 34 32 38 36 32 +} + diff --git a/sabase/materials/base.mtr b/sabase/materials/base.mtr new file mode 100644 index 0000000..e276a3c --- /dev/null +++ b/sabase/materials/base.mtr @@ -0,0 +1,9 @@ +_default { + { + map _default + } +} + +_tracemodel { + collision +} diff --git a/sabase/materials/common.mtr b/sabase/materials/common.mtr new file mode 100644 index 0000000..85ea564 --- /dev/null +++ b/sabase/materials/common.mtr @@ -0,0 +1,326 @@ +// all that stuff in textures/common/ - invisible in the game, used in the editor +// for clipping, some entites etc +// +// the materials have the same properties as the ones from Doom3 (I hope), +// but were rewritten from scratch. +// +// (C) 2012 Daniel Gibson, licensed under WTPFL v2 (see COPYING.txt) + +// "// FIXME: TRANSPARENCY" means that I'd like this to be half-transparent +// in the radiant - but I don't know how to do that in a portable way (so it +// works in d3radiant, netradiant, DarkRadiant, ...) yet. + + +// create obstacle in AAS +textures/common/aasobstacle +{ + qer_editorimage textures/common/aasobstacle.tga + qer_nocarve // disallow CSG operations on brushes with this texture + aasobstacle + + nonsolid + noShadows +} + +// create solid brush in AAS +textures/common/aassolid +{ + qer_editorimage textures/common/aassolid.tga + qer_nocarve // disallow CSG operations on brushes with this texture + aassolid + + nonsolid + noShadows +} + +// to be used by func_radiochatter +textures/editor/radiochatter +{ + qer_editorimage textures/common/radiochatter.tga + qer_nocarve // disallow CSG operations on brushes with this texture + + noShadows +} + +// this defines a portal, seperating areas of the map. +// when within the players POV it's "open", else "closed". +// if it's in a func_door it's closed when the door is closed. +// see http://www.modwiki.net/wiki/Visportal +textures/common/visportal +{ + qer_editorimage textures/common/visportal.tga + areaportal + + noShadows +} + + +// ################################################################################## + +// use this to seal off places that cannot be possibly seen by the player. +// e.g. behind patches (you can't see through them, but they don't seal off your +// map to the void/other areas, thus possibly causing leaks). +// http://www.modwiki.net/wiki/Caulk +textures/common/caulk +{ + qer_editorimage textures/common/caulk.tga + forceOpaque + + noShadows +} + +// to be used with models: if they has faces (at least one..) with such a texture, +// these faces (and not the visible ones) are used for collision detection +textures/common/collision +{ + qer_editorimage textures/common/collision.tga + collision + noShadows +} + +// invisible face that is solid to the player, +// but doesn't deal falling damage. Kinda like a cushion.. +// Useful to put above jump pads etc +textures/common/cushion +{ + qer_editorimage textures/common/cushion.tga + nodamage + nonsolid + playerclip + + noShadows + // FIXME: TRANSPARENCY +} + +// the player can climb brushes with this material. +// mostly solid, but not for projectiles +textures/common/ladder +{ + qer_editorimage textures/common/ladder.tga + ladder + playerclip + monsterclip + nonsolid + noimpact + + noShadows +} + +// a simple mirror +textures/common/mirror +{ + qer_editorimage textures/common/mirror.tga + mirror + + { + blend add + //map textures/common/mirror.tga + } + + discrete + solid +} + +// Faces with this texture aren't drawn and are not solid. +// useful e.g. if you don't want all faces of your brush to be drawn +// or for most sides of a visportal brush +textures/common/nodraw +{ + qer_editorimage textures/common/nodraw.tga + nonsolid + + noShadows + // FIXME: TRANSPARENCY +} + +// For faces (or whole brushes) that are invisible but have collision +// (i.e. nothing can pass them) +textures/common/nodrawsolid +{ + qer_editorimage textures/common/nodrawsolid.tga + + noShadows + // FIXME: TRANSPARENCY +} + +// projectiles will just disappear into brushes with this texture +// instead of exploding or similar +textures/common/noimpact +{ + qer_editorimage textures/common/noimpact + noimpact + + noShadows + // FIXME: TRANSPARENCY +} + +// For brushes that are invisible but cast shadows anyway +textures/common/shadow +{ + qer_editorimage textures/common/shadow.tga + forceShadows + nonsolid + // FIXME: TRANSPARENCY +} + +// For brushes that are invisible but cast shadows anyway - *but* don't cast +// shadows upon themselves or other faces with "noselfshadow" materials +textures/common/shadow2 +{ + qer_editorimage textures/common/shadow2.tga + forceshadows + noSelfShadow + nonsolid + // FIXME: TRANSPARENCY +} + +// brushes with this (invisible) texture cause the player to slide +textures/common/slick +{ + qer_editorimage textures/common/slick.tga + slick + noShadows + // FIXME: TRANSPARENCY +} + +// ########## Clips ########## + +// solid for monsters and players, but not for missiles +textures/common/clip +{ + qer_editorimage textures/common/clip.tga + monsterclip + playerclip + noimpact + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// clips everything, just like a solid brush +textures/common/clip_full +{ + qer_editorimage textures/common/full_clip.tga + monsterclip + playerclip + moveableclip + + noShadows + // FIXME: TRANSPARENCY +} + +// solid only for inverse kinematics, i.e. makes feet stay on top of this +// see http://www.iddevnet.com/doom3/walkik.php and +// http://en.wikipedia.org/wiki/Inverse_kinematics#Inverse_kinematics_and_3D_animation +textures/common/clip_ik +{ + qer_editorimage textures/common/ikclip.tga + ikclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// solid only for monsters +textures/common/clip_monsters +{ + qer_editorimage textures/common/monster_clip.tga + monsterclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// only solid for moveables (e.g. articulated figures, rigid bodies) +textures/common/clip_moveables +{ + qer_editorimage textures/common/moveable_clip.tga + moveableclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// solid only for players, not for monsters, projectiles etc +textures/common/clip_player +{ + qer_editorimage textures/common/player_clip.tga + playerclip + noimpact + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// like normal clip, but also clips moveables (e.g. articulated figures, rigid bodies) +textures/common/clip_plusmovables +{ + qer_editorimage textures/common/clipplus.tga + monsterclip + playerclip + noimpact + moveableclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + + +// ########## GUI surfaces ########## + +// for GUI (interactive) surfaces on entities. +// the entity must have a "gui" key with a path to an +// appropriate GUI file, e.g. "guis/wurst.gui" +textures/common/entityGui +{ + qer_editorimage textures/common/entitygui.tga + guisurf entity + + playerclip + discrete +} + +// for additional (second) GUI (interactive) surfaces on entities. +// the entity must have a "gui2" key with a path to an +// appropriate GUI file, e.g. "guis/wurst2.gui" +textures/common/entityGui2 +{ + qer_editorimage textures/common/entitygui2.tga + guisurf entity2 + + playerclip + discrete +} + +// for additional (third) GUI (interactive) surfaces on entities. +// the entity must have a "gui3" key with a path to an +// appropriate GUI file, e.g. "guis/wurst3.gui" +textures/common/entityGui3 +{ + qer_editorimage textures/common/entitygui3.tga + guisurf entity3 + + playerclip + discrete +} + +// FIXME: not sure what this is for and if it's even used +textures/common/pda_gui +{ + qer_editorimage textures/common/pdagui.tga + + // guisurf TODO: path to gui for level-map or something like that + + discrete +} + + +// TODO: particle (not even sure what that is supposed to do or if it's used) + +// Note: triggers are in another file diff --git a/sabase/materials/deprecated.mtr b/sabase/materials/deprecated.mtr new file mode 100644 index 0000000..6909872 --- /dev/null +++ b/sabase/materials/deprecated.mtr @@ -0,0 +1,206 @@ +// for backwards compatibility (with existing doom3 maps etc): +// some materials that I renamed or moved to another dir. +// These are the original paths and names +// +// The materials have the same properties as the ones from Doom3 (I hope), +// but were rewritten from scratch. +// +// (C) 2012 Daniel Gibson, licensed under WTPFL v2 (see COPYING.txt) + +// "deprecated" means that another version of the shader (with a different +// name or even in a different pseudo-dir) should be preferred + +// same as textures/common/aasobstacle +textures/editor/aasobstacle +{ + qer_editorimage textures/common/aasobstacle.tga + qer_nocarve // disallow CSG operations on brushes with this texture + aasobstacle + + nonsolid + noShadows +} + +// same as textures/common/aassolid +textures/editor/aassolid +{ + qer_editorimage textures/common/aassolid.tga + qer_nocarve // disallow CSG operations on brushes with this texture + aassolid + + nonsolid + noShadows +} + +// same as textures/common/visportal +textures/editor/visportal +{ + qer_editorimage textures/common/visportal.tga + areaportal + + noShadows +} + +// ########## Clips ########## +// I renamed some clips from blaclip or bla_clip to clip_bla so all clips start with clip + +// same as clip_full +textures/common/full_clip +{ + qer_editorimage textures/common/full_clip.tga + monsterclip + playerclip + moveableclip + + noShadows + // FIXME: TRANSPARENCY +} + +// same as clip_ik +textures/common/ik_clip +{ + qer_editorimage textures/common/ikclip.tga + ikclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// same as clip_monsters +textures/common/monster_clip +{ + qer_editorimage textures/common/monster_clip.tga + monsterclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// same as clip_moveables +textures/common/moveable_clip +{ + qer_editorimage textures/common/moveable_clip.tga + moveableclip + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + +// same as clip_player +textures/common/player_clip +{ + qer_editorimage textures/common/player_clip.tga + playerclip + noimpact + + nonsolid + noShadows + // FIXME: TRANSPARENCY +} + + +// ########## triggers ########## +// prefer to use the ones in textures/triggers/ + +textures/common/trigger +{ + qer_editorimage textures/triggers/trigger.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigentityname +{ + qer_editorimage textures/triggers/trigentityname.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigentityname_once +{ + qer_editorimage textures/triggers/trigentitynameonce.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigfade +{ + qer_editorimage textures/triggers/trigfade.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigflashlight +{ + qer_editorimage textures/triggers/trigflashlight.tga + qer_nocarve // disallow CSG operations on brushes with this texture + flashlight_trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/triggui +{ + qer_editorimage textures/triggers/triggui.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trighurt +{ + qer_editorimage textures/triggers/trighurt.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigmulti +{ + qer_editorimage textures/triggers/trigmulti.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigonce +{ + qer_editorimage textures/triggers/trigonce.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/common/trigtimer +{ + qer_editorimage textures/triggers/trigtimer.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} diff --git a/sabase/materials/dummy.mtr b/sabase/materials/dummy.mtr new file mode 100644 index 0000000..0fe1bc1 --- /dev/null +++ b/sabase/materials/dummy.mtr @@ -0,0 +1,16 @@ +textures/colors/black +{ + diffusemap textures/dummy_black.tga +} + +textures/colors/white +{ + diffusemap textures/dummy_white.tga +} + +lights/defaultPointLight { + lightFalloffImage makeintensity(textures/dummy_lighta.tga) + { + map textures/dummy_light.tga + } +} diff --git a/sabase/materials/layout.mtr b/sabase/materials/layout.mtr new file mode 100644 index 0000000..b7cdb01 --- /dev/null +++ b/sabase/materials/layout.mtr @@ -0,0 +1,85 @@ +// Materials for Reflex's Layout Textures + +textures/layout/blend01 +{ + qer_editorimage textures/layout/blend01_a.tga + { + blend diffusemap + map textures/layout/blend01_a.tga + vertexColor + } + { + blend diffusemap + map textures/layout/blend01_b.tga + inverseVertexColor + } +} + +textures/layout/ceiling01 +{ + qer_editorimage textures/layout/ceiling01.tga + diffusemap textures/layout/ceiling01.tga +} + +textures/layout/ceiling02 +{ + qer_editorimage textures/layout/ceiling02.tga + diffusemap textures/layout/ceiling02.tga +} + +textures/layout/floor01 +{ + qer_editorimage textures/layout/floor01.tga + diffusemap textures/layout/floor01.tga +} + +textures/layout/floor02 +{ + qer_editorimage textures/layout/floor02.tga + diffusemap textures/layout/floor02.tga +} + +textures/layout/lift01 +{ + qer_editorimage textures/layout/lift01.tga + diffusemap textures/layout/lift01.tga +} + +textures/layout/pad01 +{ + qer_editorimage textures/layout/pad01.tga + diffusemap textures/layout/pad01.tga +} + +textures/layout/pad02 +{ + qer_editorimage textures/layout/pad02.tga + diffusemap textures/layout/pad02.tga +} + +textures/layout/stairs01 +{ + qer_editorimage textures/layout/stairs01.tga + diffusemap textures/layout/stairs01.tga +} + +textures/layout/wall01 +{ + qer_editorimage textures/layout/wall01.tga + diffusemap textures/layout/wall01.tga +} + +textures/layout/wall02 +{ + qer_editorimage textures/layout/wall02.tga + diffusemap textures/layout/wall02.tga +} + +// we have no wallwalk, so don't use the texture to prevent confusion +// textures/layout/wallwalk01 +// { +// qer_editorimage textures/layout/wallwalk01.tga +// diffusemap textures/layout/wallwalk01.tga +// +// wallwalk +// } diff --git a/sabase/materials/triggers.mtr b/sabase/materials/triggers.mtr new file mode 100644 index 0000000..a592f9c --- /dev/null +++ b/sabase/materials/triggers.mtr @@ -0,0 +1,116 @@ +// all these textures are used by trigger entities and are otherwise (mostly?) useless I think. +// +// the materials have the same properties as the ones from Doom3 (I hope), +// but were rewritten from scratch. +// +// (C) 2012 Daniel Gibson, licensed under WTPFL v2 (see COPYING.txt) + +textures/triggers/trigger +{ + qer_editorimage textures/triggers/trigger.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigentityname +{ + qer_editorimage textures/triggers/trigentityname.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigentityname_once +{ + qer_editorimage textures/triggers/trigentitynameonce.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigfade +{ + qer_editorimage textures/triggers/trigfade.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigflashlight +{ + qer_editorimage textures/triggers/trigflashlight.tga + qer_nocarve // disallow CSG operations on brushes with this texture + flashlight_trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/triggui +{ + qer_editorimage textures/triggers/triggui.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trighurt +{ + qer_editorimage textures/triggers/trighurt.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigmulti +{ + qer_editorimage textures/triggers/trigmulti.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigonce +{ + qer_editorimage textures/triggers/trigonce.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigrelay +{ + qer_editorimage textures/triggers/trigrelay.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} + +textures/triggers/trigtimer +{ + qer_editorimage textures/triggers/trigtimer.tga + qer_nocarve // disallow CSG operations on brushes with this texture + trigger + + noShadows + // FIXME: TRANSPARENCY +} diff --git a/sabase/script/doom_defs.script b/sabase/script/doom_defs.script new file mode 100644 index 0000000..e69de29 diff --git a/sabase/script/doom_main.script b/sabase/script/doom_main.script new file mode 100644 index 0000000..14d4233 --- /dev/null +++ b/sabase/script/doom_main.script @@ -0,0 +1,29 @@ +object player { + void init(); + boolean AI_FORWARD; + boolean AI_BACKWARD; + boolean AI_STRAFE_LEFT; + boolean AI_STRAFE_RIGHT; + boolean AI_ATTACK_HELD; + boolean AI_WEAPON_FIRED; + boolean AI_JUMP; + boolean AI_DEAD; + boolean AI_CROUCH; + boolean AI_ONGROUND; + boolean AI_ONLADDER; + boolean AI_RUN; + boolean AI_HARDLANDING; + boolean AI_SOFTLANDING; + boolean AI_RELOAD; + boolean AI_PAIN; + boolean AI_TELEPORT; + boolean AI_TURN_LEFT; + boolean AI_TURN_RIGHT; + void RaiseWeapon(); +}; + +void player::init() { +} + +void player::RaiseWeapon() { +} diff --git a/sabase/strings/english.lang b/sabase/strings/english.lang new file mode 100644 index 0000000..381dec5 --- /dev/null +++ b/sabase/strings/english.lang @@ -0,0 +1,15 @@ +{ + "#str_04343" "Loading.." + "#str_04344" "Event Initialization.." + "#str_04345" "Executing Startup Commands.." + "#str_04346" "Sound Initialization.." + "#str_04347" "Network Initialization.." + "#str_04348" "Render System Initialization.." + "#str_04349" "User Interface Initialization.." + "#str_04350" "Loading Game.." + "#str_04351" "Menu Initialization.." + + "#str_07186" "Unknown" + // FIXME: the next string should be changed according to game, I guess + "#str_07212" "dhewm3" +} \ No newline at end of file diff --git a/sabase/textures/bigchars.tga b/sabase/textures/bigchars.tga new file mode 100644 index 0000000000000000000000000000000000000000..ea525f254098326cc9f06911fa09fbd66230645b GIT binary patch literal 1048620 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%0AKF<%z;{K4KZAa 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 M@x_Ime*eOK1}J!gtPDYp=b&wf1AJYgTOWuga<{ zT{K|k++RITYes?DxHIbmz2GJob@w!KN{>9Vhp0Azlxv02rOehN^}1$_BWe0tcSd74 zdx_-0G^hkA*A~qxKx#~8H6sLh@UeL6Ti*&>%edE=cbUU04|AINL5Mr1}YBN3^% zZ2nNjC0Av1msGxz&yxi>3>501u8E&k8>W%!B>JdGGqx^}^Hm#)F%~6QbcGA%FLaSv zKdM7O*M2KF2=0IhpzA*o+%WkzQk%9bqejz-G#*?b$xFKe@naoGuabFVNS)f0j2hTk zBo)?Ap`;8bojE>oEtBpWPC=S?u4P)TWpW&HEz?)X-~5w`8*;8?=2|Ab(6`e6xMiA} ctWT1c*}gpu)%$Dq*3{Q+Y}`?^ySmc80XsHzqW}N^ literal 0 HcmV?d00001 diff --git a/sabase/textures/common/clipplus.tga b/sabase/textures/common/clipplus.tga new file mode 100644 index 0000000000000000000000000000000000000000..25b5175f7993cd8d0c24b2e17e72b5933f6532c5 GIT binary patch literal 3933 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 QXT80r-Tj^3lkE-r1B;{>I{*Lx literal 0 HcmV?d00001 diff --git a/sabase/textures/common/deprecated.tga b/sabase/textures/common/deprecated.tga new file mode 100644 index 0000000000000000000000000000000000000000..e71e2c91a690b70387f1a80921113428aba69f1d GIT binary patch literal 4044 zcmb_fS!@+$6rPz|Nx?F6v|!}<+ebj8?~jyQnVDIEp)S#LMd(G^Z(A7|K2-yfj;mjopjDQ|Jl#^<~q)3 z$DYZ~WM@J~c)0^y!p9Qo3$3{p*m|G&yBEm63Rq9-B0k)$_X8b&068!x?fiM5bsMnp z79(sp1HHg!!WldTY=02orP}$xxgpCr-C~qpt(+sP0qPKKE@l3F*T{*bhHnh-oUu!N zp}ymKrO_9Lw16SWBa}NzuQTc$4;!UqrB}Y8j*D|1 zaO$uLd;r*TkI5^e@%Fx@Di7!Sn!LINN(nz=DaB7HrRGCluiJM_1C(lbNAi`wZh{SQ z)s;X?p;Gt08SAJQ&Q@~6Qb0P&ss6w(r1RTkYcj!!j94caTkBS!{tL}{({iBcSKoNR zog9jKYsah2_L6`rWiKkZY_9Lh$TefNG1zxh*z^m~R;*Gd{_@)=F+(G)b6r(HkhDpC2GDIO&<3T`kQQ&zsjW{mG_ zh}GBlIdSNqnKZy*FGMbTpsvJ2aej>b^`tEgFOvt-R-}AdU!|-K^9jAmlO{d%C-kgF3g;5o&<1uc{txXllfUd(PO~B zdB%ORoWeW(Kr*cZ%^TE7%J9^h^-QO^HF@&J09^OBwOFYf3S4d}`##ms3a-~h%3Eco zkttO2wDD^NDW<7fbgxH4aaU#l&Fjrbk?(LHisKGL(N66s_1BH;1xbiYms&OfQXJ2k zZ`thYaap~MxB7#+m|0KX`6O`YC&i*eKdWCw({xKJniSpz)O=)OqdteoB;(+4pDiKH zA?A?k35Ain9ucb8l$r8^iDAk_AItdavK={w3t29&w@G&;o9{dFRfx0Q zQ*VU0E4=;=EqX*Ksx$hZWY@hg3Tnj3@zYYJUtEG7J4jc9<(U>S5u7~%Y`V=aSz7xp z5>59V(M(5>*&(2bSMtalF0L^PNl|iC043)Iag-_LqTqrOr!(Vq9NP{Q+^B`K%bz&Q zPYnWL0xG-KUbJxoTSu}Pibp%4da>iLISis^EMGb`a6>h7&kpt}p0MLCra6V1i6|(F zhL5S~*4d-$fby4t(&tTE8zkpEN^m2sgxz*@-F^dAzwfV}VOdNOgyzs9rvz|e+!fF> z`_uI6K#$J7BqB<8i0z^`r6#G2EZ;!k)ftPI;!HA(jl^s7R{o0l+FYt%a_lXFqufrj z`Qxf&Cljk=*qp{6{OrY9Na0!{5(bNXaa^^ou#~E;R#pN)3>R%ldX=A(T)#a0-XFfz z6a`n)u}BzHX*-Pzm&@70S`=3k1L3zOPvoaWAP}|4RmW5EOneX*vM52wBXhWD$TgP~ zU&qDcYrGT#+c`s#XP{TVuZZu-G>Ys@gW?8h`Rjmfx9+CovN;rveBTo2qG36SC@b}F zlHjpHXu);apOvrsc@#;d6I}K@8%q~NcY-F})aWXua#LWkX@)2!*L-ZgN#+7;$NSwJ zxg~h-v8bibnM#a}=L^zDf0RUl_R{=kf344&@zj*r*)y{rpMLwCsoB$}OmhAQC65zt literal 0 HcmV?d00001 diff --git a/sabase/textures/common/entitygui.tga b/sabase/textures/common/entitygui.tga new file mode 100644 index 0000000000000000000000000000000000000000..030e8c179464e619820bad985b241c7d5c3af60b GIT binary patch literal 3306 zcmeH}X>62L6o$X=o3%63c4#}D&UBmF5VwE|1YDw2Nvl<)l~TY&1tQU?Y$67gwbR-v zLQn+%JJ&io|mr=>qvkIN-`dwMrI zGRNMfA+KzTNe_FS#plLk@9;F;OyfWA%g71ofE0&aS=%0$$5vFzfol`eIW5XH%fQ+y zO~#sQ=1W^jr~Zrv>oD81 z?C_mhA5=>`;>q$0O2mfe7nWlS?{Yw*Dc+%P?x~YEdeZW``DgqpcT=TBZb1qx$Ckp| zv9MfI0FQ2QKH6Gi6T1H-uaw=ykz zcxgh;93PVMm?xPEzmjr%m0v#CQX}gwiRpSxpd;$Sb8K%TN??!ew*wg& z>?(gc?vtH{v8?=Jv?XQcDnYt}<)}SwevfSk=txfPz5p2O@bt}9GNmCX(U2?I4aTcH zFFBMAZ-J`FsO7$EDl{DuR8j27gxY|-Yh;)bo?mB`V})t>r*2Bhej|GAQzCNSN#UHJ z-LGgQf8{yw;so zBp4|fapwZ9QXQWP$h^~|wiNI2RY~zq3wpW1&-_m9q9=`GhlMyXsju0RS3TgrFB}2LU`OaGXrr{mU^BL8;!H6CKo?M-j zw#gBhH7OzwElK1W>CxqtYNg~$4Yk-!Vl-K^?3A%xJz%z~b?pLb0fgZ8z?c1iu?Ov@wSIY-86E z+|vy;;el~L#0KYdla0W^DI0vo$;QE?`~JTAT=1bj1;P8ZLT(;_`5M$W;z;%} iy;=Wl=K)aT3$g6vy8(^QN6n+o9WZrrQ9)HK4MJM5!QXl}&cz0z{%g*<=YSYfEVXSptF* z6eEiZ7!#r!=a||9pWa?4W6miQ&vm4k$j1w!u3R;&NWR`xFWmTje^zcBRV)!tbE99@$eUH= zwT%gB<*qaP!h~#4+3Rf?S*NlY=O<)yXVYt0CV$*W(lEr8(2@@iQ#DJhuZCSTUb6^{S$wpuBQ zxw<>Hf1xz5o@kV&N<5i!QE`{>iVn@M(&L90RVj?mcGSsZOH-^Dl!yhuFC-@d&?NYzb=WB}@lC>a&n}m(z%u%Bji=XKf`>@+8~g6A zdU>riBd?l&zTf03qqNWs8AfuV;Vqc(aRBh>-9DpCR2nku?U-4v2MD$*az5NzYhk!2 zYfe4#|2UA9iG$)=DKD%^cNtv&1EZWkP{DuQm#gRK^Q+Se0$+iCvW7Lo?)vFHJl$`hW}EN#`N zIwJ3Hsg;$NCsqA$V`8dlSYXk(tTD?zO155YVYRT~vV+6|da*gJv8B0V5z8(^jXiXQ z03AeEZ>g4nJp(1w7KpSwPrSgUYY0`LnIrq=RH!+KxT4sTzI9P~$FLm`o?U6VaiJkB z`h{|wFfcA7&M3&y`W>^%1@(FDd|6Yl%1l9bI+PA0)GBQP`7>zXF3pDVFqduZ!}#?h zi-mcRhXzr?u<;D4}O7O(~E}O`_K^Dkl>;3yx-Dh<;@TCwloNVy^H6=?Yv5 zaMa*OhW-Zk4z!it+E62~9158Cq=MFh7y4%dsV(z0sqArP*6_r!X9UK`2xNV6zd~CS z5qbmn@{bKVLdzxS?yd%+;MVcB;i*?%8CZlzSwjR6f(A7d_mYma`?=vrUVFR)^7RaB zEjFZwg2$JoWc+}*jO!nl2j*7h8tI`0RVt+^t}vy=Z5k7DwAIcWUUHdvak1slR@SZV zZmL_()28{GsUh#VRcUqVn8bk?LN3`>X*d2uOO%eC9js_RogE%8F~Gt$wrI#D2L3d3 zXmxZvvyEULkDDHFnZ1mpR)&*9M67bW8(;{InzG7Ao@ovkb3fkGkW=3AOi1}&Y-#%w rVBX0(BaU0|en|bNc8?M@Jm+un#3`euHce_8Kd$fe(M@AU^>h9P;nf@5 literal 0 HcmV?d00001 diff --git a/sabase/textures/common/entitygui3.tga b/sabase/textures/common/entitygui3.tga new file mode 100644 index 0000000000000000000000000000000000000000..7ab2d0ad5af21a0939a44c963ba21a40641eee1d GIT binary patch literal 3588 zcmeH~d5jcQ5XQTEdU|JPW_O3ZXZ9K(#0yXX!JAbCT}41{6A*|*qjCutRL)tJUBv)` zfQVw`5Jh8x(Zr}hG-|w~@k)#uk7&F#YT~Ws`_-F)-Ps93;(xjc>3P-fRei7OtFIcz zi8{HzW~bRnNA{bgV3K{ZyQls2|MH)*(N3;HKWuA~*KeqkH&@rmPj@v*8&>bzt&Q?p zM@o2Z)_weXWmQUEZBNN}w>QeVu9>#SKE9UV-oVfylUBXWtB`A5`!GFe@U%^;T_Iqk0_NrbE;(4h!R~d9#dw) z1p5}(%8GFbnRZ58Px54q-9j5TI4aA>CM5IVf@<+N8H5~}dV0JdwAg)fs@2in`PB;H zlZ_4X@HI8kKBO7B=6^W>ynfqZ>iVY-FD5;Ba3xqscA<#G6#r{2DeH6{MJUHcOXEzxF_jKUz?{-tuODct(T=2 zCDc9SnP}P(ShOW;!tx#`>!w;*t-Nq~gT(@RXkm>u8LeAvas=%9@{mySyj<#E;G@l;%A(!9Z(UkARG8}nm2Ur|wfHI^818FA? z0>K(#rn1=n*p-$8THvP=A=zYlhc~|&{Y;v*%CNq{((R0!J7b#``V#|YtjlTMCVC>~_SCGyz8<}UJX6W4iEnhpIANw&87fdrRr4dxoCQZSMFUs9FanETp7A1A_}C}}t_E;$@B81w#+GG0X_>5{TFrtTpM;6t{ z=z&q41oxQ9sG)=V=T@r~$QK)Gahk?N94*_KzUXd-R}O7uuXU)C>f3q3G=ByTc~37( z>ZJ}?9E2h7O14!x%>9uisAFdbE1FMdhsU=TU{M>}Zq$+he;PToK05Ew@2i7((+w`O zmyy)QaB`T9);YHuXao*US?9x!GaF2}AMb3+I`6zE&-r!=r|nOI`6AXCaWMLS=zll+ d$r?B3Z~WK^!zZ?kYZ*PN-{cW3BZv2Q{swX}8O;Cy literal 0 HcmV?d00001 diff --git a/sabase/textures/common/full_clip.tga b/sabase/textures/common/full_clip.tga new file mode 100644 index 0000000000000000000000000000000000000000..1d99c2d283df9db9631ff48e7ef7237770dda7d7 GIT binary patch literal 2108 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 literal 0 HcmV?d00001 diff --git a/sabase/textures/common/mirror.tga b/sabase/textures/common/mirror.tga new file mode 100644 index 0000000000000000000000000000000000000000..c10b747a2bdd5079f687ea19367d9722b77e6125 GIT binary patch literal 2944 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 MXP?L`$W4_$055jZbN~PV literal 0 HcmV?d00001 diff --git a/sabase/textures/common/nodraw.tga b/sabase/textures/common/nodraw.tga new file mode 100644 index 0000000000000000000000000000000000000000..970169850451a245eb524f3167e1e675b34da138 GIT binary patch literal 1994 zcmds&yG|QX5Qb;H_8N?GsUV6(kSLPMrbLPqnZ_Wb5KH7n<)kA@K~g2D2)lNgD1rxw z1Z7H!Jb)j8N8k~71oHi7&K{XO0xtH!ayyJ5T7V zoZ36Pu>D`L$BJ`I`^`h^Bl1MyS)ydbE!*7+OWw6bG>@2I$Z*6kJM51X)8K@)gZ14K z&3a3#vSw~ojT|o;(&_L^iPG44@)Ygz^Pe%AptQ(IW{e0xy|hnCb{`Ed+8ry?bZBx#b9`eP9-@4cC0Osdlzq_=GN&qfLxO{IB z3yq-i^oz&<4XqIVP&9%>@&dGaQ*=R6a?9BtU48rO z$jPmGp;2m#$35q2CQbx&P0+cEYX@b;pF%`vM zp)@)1XjXyAP?v55HRr?!V9=Io6i&k?D;Lwjlq32uSRZvRR1uLkMS(N~d^7+|MHL`c zqLm&>3K6J<|3G;SK%CoK=U9tOu~woP4^cpsId?PgWx(F>i(sxH)>EDX4>(eJs{3v; zdO;~13fe44?Ma(!TqZkp)$s>@|rKE4pjPwfgad+BH)sz zH-kkN1vY%M7&#(^q~%@^sK5#aPQDgI0P07K0Iv+zm%(5~3H5z5k_$qxNso|}NpdR8 z@EV?l$Q>1huS+x9y)yWa{^7 V_x0e-_RHaY?ah zQxg-T(P-7Uq)SpCYScDO)A&%+Hf_=eYqe?`tEcBXml+|NVEg7gaQ}PG`S1UI=RX@n zPICP+D1#y$-At|A&08J=E4tX%)5(bgM=~}yrvONviJvDt?a*}SNMBcr2r5=4zltc z+R)>b+Y*VMB0+@xA0Yek*D8=3bszTv;-5vsIh=g?ABh=|MX*ky!HmGg`xRQr7Kx1& zav9LMY?ey4A!aVqvi}ID4KZQ-Sbvzq{X#iDEXoXBy%vx6X|{fLqCi+p6E#Y3Oa?`m z#|+p+scJES2B`&}uxOAF2e?aA#WRIe2szoy=D{-}6ZnII*UV7$dndP!Ga}>lSnR^_ zc!wOgwq-8W;2r1_!08e3JY{H%z6Usb_-f4o6Y3i{$Btl*qfquIPkqj&QCuU}szGc! zLBQOQ<6k_1f&`X|a}zbfJVJ`T(@-$yud<+M%)m8YF<$nYm0gZO|B5Ba$>H zZ#En@>s2>Eb;Gc~)pMB0r{2b=j9X17_S8ov&$yUI^~_1eK}987fyC%f(WYTd7PqUA~ijJRF=nD4O5R zUBi!CFY=c3N;O3-10cvyZ~=7vv;};$w2d35mFjy=)I`*991xa)|>3yDJ=yx z=K-~F0)?rpiBhC#7REo+jaRw-~B+lfW#3SpzWfZ9x7;1}-f@{y)>JIvzFCbltI7!pB20 z3{4UEei1!(p*x|DBHNHrdnr%l2-zn@G`v#73QX|Bm{fQb>ewd0(LK-wt z4_eML$}|!lAKIH&uYk+rvUr$ph?3bbUCOEu*_2kHHWLO%^Xf^3j3@SB@`Jv=)(GUt z1WcYN*XVDkSI80+X+SgS12i;k_&i~Ff%amBX2NoC>To}O?slIPiTG*Ex<+4VH@Tc7cKlhfp^H~(HQ>AMXMVp gcH_twXC-&0zvB5N*`>Kfxdn6M%4X%}XOE|U0R(hE&Hw-a literal 0 HcmV?d00001 diff --git a/sabase/textures/common/noimpact.tga b/sabase/textures/common/noimpact.tga new file mode 100644 index 0000000000000000000000000000000000000000..302a431481755049c1a7465ee33507411d284893 GIT binary patch literal 2896 zcmdT`+fS5N5Z_%cEeq&kgonll{sDL(5MPNA1VvB;sh5a}qQrzmTA&4ju)A!f5TSv{ z{bo^7QxK3CP*8zDpwI@j5D3*2C>0_gT5fW2I=}hYbsHsVADx%;ojK>s`OVDl%zP@9 zR%I4nm9NVE^9r6)#aDiQ^vQl@0liJazI~J#6-D2lIz{n&_fihDCU~bREiI*VVsR`f zDIpIJ4_a7Qz?|N_dq-($X@qUDv9YwizApOZ>gY>bGy-((c{6Nsn#z-rnA{ z!Wsz9-@A5=a98);yQGKG7OUCk&QW4;Fm*LH(kjno#cp|Vky>xuptwDI+9<& zA|ir%dwXeqeqNkSOiUzKS69WIFI-$)sH3h03)ouwIeWB&DPnKv>?vEEo#Ci4X5 zaK`@vxx)-HGBQ$3bar;i7#$rgqcun~8T5KR)or9dCnv`OQ-9!9kkkh-}-ojm9~ZLqkI!Kt|GqDw_88 zc6pxQjUM;d{>C{$L{kqRmdE+ag9plrrY0{>EE$d-Rg&(A$ktxIO!0w%RGN}PYwTw7 z!GmNC9&_l+E?l5=+^`8TREW7GT$7%jF42qUha(yr>v#ja)DIg62M2L)cz9U$D-M{M z`uyorfeS{;ipIp*1euTlVXY(B4EZ4@hRoln8`chB4#B!OAf<3e3?F&;@FDf{ONL;? z9C{}wC+g|x5&a?;B{w%W0k~z$7J9wGQtZ#n%#`S_FdZH}dPHq)Z8XJ?4s!bRX$ytg zYHOu}NHA1?J%6q|LEXKpS7q;?BO}y)`!+r4=#W@LnaggQUHXGLG4bq~WiRHCf4ihc zl;MH_SnTix4V-CcXb^D8$;k?FY~$kM1TxCvrAwFOoF3;i51240rU3x~N}e>xI^dz` z>3@Ixm{e6_aZK@-^qS_$^HruwE_k|`nBnT<(NWy zlxj~;Pr_J)wS1gZ^>h3s#?F7gdPU#v-!IHYywP}M3-3ihs<`%m)ewy3<>jQ+YN^0t z%mq9|M}l{FIyi1FS!Q!;wVGO6TWOVB0mu*<8cJCl5zL#o++#f-CJS&{i+9;|=Z=`l zI(t?+2pXr^+yO4fkSOlnilb-FoDoe3_neOyLd_p%@+@*g>qA}IaI>hWh-PMHNTbng z7{b@|^fY1Ry&(rPqPy%r?W zT#Ay-ul!t~!Q;RWkd!uCG@d>V2P%0t|4W32hf^W$ssOr=a{p6UWsD+Wq2Ydq0}lm; O1bckx9~k84srm;BGwb;P literal 0 HcmV?d00001 diff --git a/sabase/textures/common/pdagui.tga b/sabase/textures/common/pdagui.tga new file mode 100644 index 0000000000000000000000000000000000000000..a32930b2946133ea56f5e1688c0a239d3907265c GIT binary patch literal 3834 zcmdUycZ}3k5XXOI>+K!a3wsq21w{mjf)puo$_WSoq)JfGP&6O`f(n-1YjhAr6jTra zV~i%Ys4)bMiND-F5QTx+;0>iVAsfX}LU|>MZ+jtCbd3L#)2snv{n! zE5GinlWpxUw~nFr^Nw0cPb`pRfiI1Oz>D~fj6XF;p1QWPG_uFNe{s1SQx=jm>uyoP zlZ`WqGHX8=mnT++rA5~&@_l)ARi&(H?`o}@!PS6nQESG-OnE0yeAlrv&gWZdB*o6~ z?n_F=wK>uM>ipj26&*SbEgO?hQq@HBq(b4CI&y(@ z*Md@OIR4p<)q>scZmE@m98b@TIVCQiY_{{?-&!j;w=kY>N?I7PuWqUlM$ehQi-+au zxk1NAb zEYiKCu1U==IJ=Y1%p9D1m=3*1FE7_4g(mBIOK0}bTxlX6A*cmki2xG=j|&_v9BCa* zADB2?M-MNvj*4?Lj$BN?x3NmnZ>*`5FeO8PxyTW5_~g}{6?NS3aJ7c#NSO8EXix$# zG$-x#-TM}o2_(>bdH>OoQqmvN!?I`i2{HN21V%X({dQZ8mJ8L1svLoEsk_iK>7*Ja z(fztcg&UkWIG&psI?CqjO9hS#d;(aDQONFEzEu z%*QvFI~br=iyl}~o^5x#2{Tz-dcqJNsaytcYha-+6SY`&ma8wGBrA~S3IL!tEO70@V$xl?2#l+lBkZVG8#A=-6t+{&dd`+P0;SS ztW177&;!r@UTh7;8 zGj9uzpmHNBJx$4b!4;_VtoK0sfO5wamkdqrpOD}f|EX3h{s)6VGA#%+OLxTp4G4(# z_IfLwC{@VQx>k1oD-?38wD5Vw1W=&bpBVDHE6 zwbDvfoc-pTvc@3J$WHsX0LH#~pc0!dGr zjw~H*972Kk`tyr~*2XOLjXR>rqjcT~`xvb(^zH62?E_*3u6vl+(BBojPY>X?1ctGx z`smO?w0X5f$Ck^q0f|hLMD2Jdsu^dhVZLpi=m5O2Pd@s$Rm{5=mUU>-MJjoCHgeLZ zf%QK&Dsv6um(0D?jEkbR?dffbiF!e7NtcG#Loo-NCpZ?;*m8Nk(ps}_^1t}Sceo(; dK?1VGXX5zt>L)c!Xc&9$NmI^h7+v4X`5UmXQZ4`h literal 0 HcmV?d00001 diff --git a/sabase/textures/common/player_clip.tga b/sabase/textures/common/player_clip.tga new file mode 100644 index 0000000000000000000000000000000000000000..91b6f14538e30c7f49f93bf4ff7bc57bb01398cb GIT binary patch literal 2513 zcmc(gJx&}!5QS@YjMv6qVaWkb5FrsJBw9g&5t1>I|3tJRBw7&?jaYsI^CMqiIRZzR zBkU3O2y=w-_o}Cd*)>8N*&Xb3Rd>I7{i>?hY~JG7v`zb9_h#k&$w~RYzjyF}Surrn z`Hp^7yl(j>W|>*%6n|>AWH$88-Af!Tvo7>EHnIy@e6bD=@-r;My2HF-`&%=h7#*{| zw0j0p0s`|3P5A=$o9T5pGQwllyP6R|mloIk{fC=JkSgwzAY5TM#X`3S16qrV zt57%NcGuHzePWd_{Ze3X%d)=UImQ%bb+Z8|N)ecAYrTkxrL;@6LgIj`9ga6M>h`wM zyT0BRsuGUi0c8p7A#1z3OJI!I!yp5`Dfg6c?(cNZKbdaAwAdUxbBKH zSGN;|hf;fcUX&?c>V%z&i2r?<;tulT3Mw#R2`5V)V(dEVXq{v+YPnmz455rvsr6XM zUo|QMgd&uqKNT+gIV{=k5-@E^a&K0r9~SVFPv&seQ<2sdE5vKO0cw$j5IxcbPiH;Z zWk|V`WxnhFOozlnIZ3!HAryU*OUfc@;YS&-M{4vjK9$Aj3F<|RPh<&&3|T0`Iy~xB z5`yHh1y5)q#K!>^-qsU}BzQ@M7Lt_}@gHDHKpm^-V5v7XROCdh+r}#cJC>6ZZsed5 z5h@LfxR=1s1vVrA2RIcMqUqZ5L{-(O<+~^aE2;>8Fpz~ZsI@={Jm|OT8y<9Snh{d7 z$b}~vUBM`&vJo!)Ds6}X_83YXL?u$l{!oSTCejGeVMTNX1cHaTcNq1Ik8vwHf=!#P zq$+$(NH(AVtNhjt#TqK9vGtT-Nl9U$nvnR%tmQxy0`oXAc=zy+{a489B%alv8*Eq! zY=xG=5WzT8M231+RG2C8c)f_kghg*Be`iEXHnc=U^PrYLJ6O417SJ7s=}`5ot=4!B z-6kVvss*4NnswQl1Dgj}{Z~WW3Se_!3*d5Iy60cgf4B}eAK$i(yl I&s!hu4g&T3>!snOzPIX&lVmrocQ_$77?sx8Y&ONVt6~(Ot zp9jhVCCfDr>%yN(>DR;r#p@&nfep2re%#BRe}A zQBhHN>U28ch=_+4?y3`d3VgGW56sw(Ks$3;a&Q1kQi#fjc4FW1nt{ z8TU6kVnmXn}_JN>QtBS9pdrzTXsm^E&VQ{%z(nk2t zZ$YF}+@j+bE_bmz#mC1ZIXPJ}B04%+{`t*$;v)HfbP_s+JM}P{4(2ZlD>pY6y)wfQ zXNZW*4OR20D?Z{?gPeWjRLRM(+?~%168mvdQW73X$T;H6odRg)C^t$A^78V)*6~QT z$Ps7w5ps8|hF~^)Fu5>$_lj=)<$D7_+Z-7rQ_oFux{%gamN z+iVQHB#MB!E$ir`$2T`O?O=L(dSE3vXpL=USy@>CWI|Js4XmxLH9>_L{|B99>T7Ln z4FC+44e0Lf4gkzH3vlvM!sf^DHa0feA-{1qVPz5O?Ci8dlarHRESPCLRBeO{3k#C^ zBpn$Uu|qpMJ7{ljM_XGPR#sL_Xr9)~%g`fF(+|xLe`@%#q4E1~e*U)MyN6}U2eq&f A`2YX_ literal 0 HcmV?d00001 diff --git a/sabase/textures/common/shadow.tga b/sabase/textures/common/shadow.tga new file mode 100644 index 0000000000000000000000000000000000000000..613e6c8dc67d36809104dac3823506c83782f0fd GIT binary patch literal 3132 zcma);XH(Qk5XLvNu&|4Qiiiq|A|Mok0wzGB2n9+`f}$i7K`9i=u;l2$g{sTJ%U-Ix zFW^V((l=4u!6BODJjX^Znyoz z*D`}UBO}As*4C_}qr*HNkNwT;5`%BYjvcnKv0+tblRU-E-*wVCMIe+Cnv}D?b|1B@$vC? z^5jVyA0M}_t}ffTbLX2a^K5al<=VAt7G7CdG3V2#PmRrC!gUP~58Jb6&lH$W(U#b( ztSnn!U$>r~9=mw)qK%G@Dv!3dHU&8`F=3A%KQ?mI8CyaA&JS&mBZt-1Rh`4^!Gi~_ zuC7iln4h1YxBB{e^Z9(XXU`t1uC5laziqn+0_>eTcdWCsQzi)s36`9kY|IxG6$vi# z1U}Lk8ymC!{(fQdYTJzuXo!Y@S#EA_R#NHd=@zDzK5TJB49}lGS8Pp9O%@jyXTP#2 z+(U#}R#s;B?%h*0Z``;c&?ryDMM+7C4jLI5vD(^ND=scpytw}bBUL=)^?I$myxeec z=+GgRkk#nuXe%u(wMUO0DUwhqr0NHQL2GGgk!yHTP73aySP->?z34thX;0v@mb?TIWJaXiSUA=l$sZCE$+rYqpoj7sAn6Ij;viA0NRqh8|tulm2 zjS~nuKR;gykYGbYgN4IkMR@e+Q3K7Gm>6qpY_x@i1);ik?_T>JFKcqeGEyvvhqDWBmC5!8F1x|+#AGVt}Z`$natSFk9nW-o+008Jn37{{y z(e%JieZRx#1%oFxHr7s`J}r2!T)AR=hgtCxFKKeXg9i^pie0;Qsqf(xeg7?%A27J^ zONXVVrrHcM(fk5_sss_}`Sa(`+l31k-Xp*_SZ^={2%H~uG;jkya)f%J27J@;kOOSO zEI6ShsC~`WO@5{(be;SEyB%#ZfFN+4$_ba@7$lw77 zC_t@HBT@?E&rj>nuxV*&!i{DvEG)G9_wS1U1n?z3K4OTXlQ^F<3BI+pRnYI=y<6N7 z>|P{>gg9nyZce>`qc8CBu_EFe6o|G35y&UVqu5N%C_GF@LWl^ErNy?a-|&>u)3Q6LTkNyhXE zSpy`MfJponO2W&DD|#dhlVec{3d9Ev;09@M_pyd!1Ptg9czRa^PzB>D9%pi?p=q!Z z)yU1wwF3tZNETohD1i`mz>FP5r}srnF)PF;^2e>j?GWi8WO8|VSrJA>MQzJFN27hX z1Tndi9=P~~uvfKxpbS{_ zCL82oD;2iAf zcjhP=l*W#Ez5$8mCT6MbOAZd=8TF?6bQY=cpBE2oBryaId}$yq2}BR+l^fj%0X|_F zdQebMV6YSaPz`eNWFrCqg=A_jC$BSVqPs~Ka4b%!DYppq01aq`;O6D!>6JptIHKv` zi!NJTyK!_KD4@+~63;9o40pJIiSU7^BP^iYAo7k2Qeg|!0S%gq8<*`%OG_d$dX1Pt zXzmS?kP9UdAPH*1Ym;XcoI$>jGHL*rL`41^r~LJnalvhB0(fEkxZwznPzoM0LS1ht z9}FjB3J9gTySt@)Fi~`Qg&QwSf(Eo8HRLv?w`8K%p@)+oJWSybUPM~f`_siCh&GXl m&VS%onyZWMHJ|@AY|ZPhrKz>5t+u(gu_33Uy0*S5*YPi=Z{EuQ literal 0 HcmV?d00001 diff --git a/sabase/textures/common/shadow2.tga b/sabase/textures/common/shadow2.tga new file mode 100644 index 0000000000000000000000000000000000000000..01745ab4f37651ad438377cc42dc6aee13112ee1 GIT binary patch literal 3564 zcma*qWpA9@6$N0=j4@+-!pzLf=zx)Eqs z%$++ou3x_%2M!#F-o1NwZFy-+!Iopkjz#s|yLVA|{P=O$TvcxI+_`h{c*4Eb8wQE|Nuif`Y(og`g%Za58{X;P4q z6Rk2boT7o z2`=!rY}pdkYBg~fKYo1BLXRFjV(Zqe@#@v9)Wo1cgSuw3=LlxJ6E*Y-FWs zKV&)~EYiiAHEYrb2t%daX)I(ffKvjF0c)^d__1NpqD9F*3}{(z@IeY_GhwQ)g4Z!) z#>A;pr?NuBP73-F3-kt?(ENsHhN^B7d7cR=T#r_XgorzL?&K6GD--5K)yl6vqS?NE zd)AYXH0m9!fVy?-R&G`~L&hB@pGj9#6er>EFH!-jn3I?RhJYTsNSl=^-xRI0RA*91x>)UCm)c#Uj{agG`_ zDp59Y^XJcxn>TN!JQeUOfxh+8fJ6D^RQ&GUyOSvMDoK)52X+lf^Ww#e^aFu@DMor@ ztvt>LmIx6bCT|TkW0*|LEuT@1;nLPG1WB#bKq$|(M*K1*r=~irajwA!Hdg-J%lya! z5e+VRv_Y_0e#tku$cV+0FJI1L%$!kG1*=n}j?JE~0f`Ah@;y;Xyb3~@sA`Tk&qI(00cb-T z?kav0n2Cdq6OwrfAQ|k5JULxLj3`x_Y}Pn@`0z9&>Vgu4tOK)kNarUh%v4s|izC3D z!HL{GL5_;IZ{KEx4Gj%nj!vmLm5>n2P`|})(Ib&NUAo{EOn!!eldl#Ve3u@BljB_M z_C#3xu&~7Y94qc2uurz@p$sguX+sv!*%`3XU9zNBPR;J9$@gy4MC8(?OLL6j%=2so zkoSm8H_R{<{4y{CqA`@A3+~>bjHIpe-ZPL4x0=(*f2YP)k)0dZH(6TquM?gcHO4jJ zYk-^|ERdaNnBNOi_DE&?V9uO5c_R3M)QHO!TLp}d$a1&}Zqqo)lk<<(Hw%JO=NCSp zL00T{=FFLSht#q_hK_vl!tn>&TTC4kI5kglEoNcD2|{ zBLZ;>m&8Q<&wj6`a2+F%qz)cDn9fIuDVM)kR!2!>U<7gK9$>a|$zLt0m5JafMG_aB z{5k)>P?Uset1RXGce~Pa^Pv0Qy~Nz)^==apI-AHk!ggK literal 0 HcmV?d00001 diff --git a/sabase/textures/common/slick.tga b/sabase/textures/common/slick.tga new file mode 100644 index 0000000000000000000000000000000000000000..2204f39cf1f5ce5671e170d2b50e14ccdf09b0d7 GIT binary patch literal 1578 zcmds%yGjF55Qb+riWrS{UJ4OxtP(4+5(SA8@B;Bds$eM=!AdMd++D9JRIn03%akd^ zI)x7)K0zMAN6_y-X9GbSYY&*Yp85ZoIjdRLI%m-qZOooqU-sPoI{k0*ioU|zmOZ{( zqiqqIosRCabMueuaL;q2e2=HZhqS7ibb6U%s&2wWo^!N`Qd5um2ZR15*e zH9j#c?;to>ke~}?xd;lGq+p`gpEf#N0z3i(LX+V@K;5Pmn2M!oiB!@#2?aA?pi=ka z^GHJo;G`*{_7Z>#nr8vaYYg@8nqdb$w95>#In`qTe}xU<&yC}o6?Gw?fn1;Wc`5?Z zp9r`;AYtgH1w$^t$?^5WP%nWWoH`6?n!`9QvD{K&TSvblvCmfk5(4P2?|c0IDzDVv zHR;&R5DADH?g7b9fZr~daA|Ft5TzY$Kg5oOB!=%N3I#Yksjf{4MMGk5z;Zm$b=uDm zZQ$g^JTxolD3~D707ETTXD}HKXgD=0M+!6W4@&RStyDPvafm=uD@D<3@8>h~L*@OV z5aGZBosh=d+1D9?(4(i@Q=bkN>ApuUsi)xOQ$0BsyK;LX6svT)ySkRZg18ycO9sjF z#ECD_5V2foWQ-l_6M&GWr)8+M4AQR)yd+Ipv$V0EuPm2V Hiv{}zQ-G)V literal 0 HcmV?d00001 diff --git a/sabase/textures/common/speaker.tga b/sabase/textures/common/speaker.tga new file mode 100644 index 0000000000000000000000000000000000000000..1095d315ba4f049f6b52e05eec3ef83be90afde2 GIT binary patch literal 2883 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 Q`RwdW$Hh!`I^C)L1?V4df&c&j literal 0 HcmV?d00001 diff --git a/sabase/textures/dummy_black.tga b/sabase/textures/dummy_black.tga new file mode 100644 index 0000000000000000000000000000000000000000..fb5c02c8e9ba54630997f456a36dea07751d7aa8 GIT binary patch literal 4140 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 b?vY>rsIPt0SAW&#J?_gM^_7qO{OkT7B@^tM literal 0 HcmV?d00001 diff --git a/sabase/textures/dummy_lighta.tga b/sabase/textures/dummy_lighta.tga new file mode 100644 index 0000000000000000000000000000000000000000..383e7574b09a9afdfef6da1f67a431acfda641f2 GIT binary patch literal 1580 zcmZQzU}As)2L=uX2?lNfApsFFQ7LI@c||2PbxmD;LsN4rJ9}q$51)X*u&C&Sl+^6J z{L+fbhUS*;-oB|bW-M5=c-5MM;NS-b+`L literal 0 HcmV?d00001 diff --git a/sabase/textures/dummy_white.tga b/sabase/textures/dummy_white.tga new file mode 100644 index 0000000000000000000000000000000000000000..bde273790ca1e01c0abf3e2fbc1aa0ace5f042c1 GIT binary patch literal 4140 zcmZQzU}k^;2L=ZQ4h|S^2-E+`1`tn^t^NO~eozREh99{hFq(cw)6Z!BAvgE@A1!~u z1;}XlksAV|`{_owdHT5OF#rI1 C%pD#8 literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/blend01_a.tga b/sabase/textures/layout/blend01_a.tga new file mode 100644 index 0000000000000000000000000000000000000000..4409eda102b2a9a10b48f02e84fc9f42a9137bb5 GIT binary patch literal 36685 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 Je)-^I^A{KH7vcZ_ literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/ceiling01.tga b/sabase/textures/layout/ceiling01.tga new file mode 100644 index 0000000000000000000000000000000000000000..c2596083b9d6a366a99bc2d2d17fbe871ded0cb6 GIT binary patch literal 62488 zcmeI2-)|K~6vt<8uk_l0HiV`H3=xe#5`p*=rIu3Bq9rJ?{Hj18f;^d^JeZIWF}n*b zKg1t^!AOiT@yYn$uZTz?J`{>{2$E4>HJWgFRZ_lf5<<|2IODzFZq}JYrVc?*<<}- z{bBuK{e?f^5BLNA$l?X-a`*%OfIr|5_yhicKWfJx7I%miHj+D2eO~R}G;ci%pDb*U z-^g#|x7y`5<{$Hq`N#aTKEKGa$N2{58=P-&z5##0AMgkKk;Mzv zf50Ese34}j{(wK=59ciI5G`!vy*JHU&%!4Q8}JQ$1K+?mSv+E04&T5x@D1lH@CW<> zf50Ese34}j{(wK=5BLNAfIr|5_#=xKtjpmK_yhicKj07eqn7+(affJOBk#Rw-g*{3 zS=eBHGrwy&zllHMkN9JMYrTKXvd8|G{Vn@j_P6i{`~iQ!A6dL$T@HW1AMgkK0e`?B z@CW>1%@1%@46o8 zPW8Re|4Y2=%OCoZ&nvz;8TWj5I_^1qI$nA7tS^^mto26t9xeT1p!CRVantO%b&ZoE z=Ul0N$~5_QXZPxO$>#%UUo=Nsv>8a7(q!mL!45I$n&)(cBQ>?=_yzC&+7lQ1lF#xS zjXWn!MbgerX(o_%q#31+BWfn+Goh0M@=hSV_`t?3VZ$BwM3r(Sn9|YJ@#euu9PE|S z(yC+UTHn|+b^gMzu~LcZCNu^!UV2pqB$C2N2BlZL2xSnQn9VVd{UYR{DFcg7K1geBc zd~u>qr3E5QlxYNL#HqAvRVLQFvbtL*7OhO(*B(|yP84ZKXlS@mXxT0A`mrx?R00_l z8I;6*H+%DToedgm+Lb}){!iv^+oy5k)l8oEbl#ZTCT4<}8#YO&gz|c6O2;!2c{P!E z{DL&Da)x7n`r;lhvvJ0Q{&#W9M^3}^yYuSP_k-s@J=*kWyMJ|BS9kG)_ph=h0mjw&s_TZhUrkZMt5ry)HS7>AqX{Ma&kqUdML&rlUE1E(7#anz)Vj~{+5V{Y{}LN%uukIC zQ$V@C{zi)NY8}D4pZ<99nsJ}oO% zDuE1D26(9KSYC0mbMlhzTenen%e&P?q0?z(S$+Zr#(;zCerQ7)iITI-*%3>!glU zl^5ha9r|F#`d6eOeK!=rfe1}D#8aPGC|###Q(CvcvGsfY_+3@5VdXk@eV~eCIjYce zyjc8{&*yZg)ipg>i-$D$GFc#Eaa-#Y>9z)0=mTbO#QZc_*?(rQo}OKSEA^d^q+FlY z*P_+-(rlyc1?}7Sr`(NnR!i>nhkawrU7u;hU0w72WYEYJUq!`ObXR9nUC*~aKelB@ z%iK=!*&i^KCpO7>te#elLAS5h32Su_R)0@|lJ<*90`&joHwwfb|93=J6!H)Grw9lm z|B`<-&XRn?`osFe`osF0;B);?q!|JyOwkw=9}}K`DXI4#`K$`znsa9nh3W~ z?_Ry+e}CcnpX&a&x4jww?C=aU4pIq({=D?0O{qkbWe^jr3G{n#2pg_YptD z5Aj3mt=EIBrSwDkA^pg%A8F48(za9nulzqL4yDi1=OkYEbzb}sKg5sh>$lcht+z>W zBR!R#Ch9qJEeuy7BKk)fl z)>8T*{g8f0KeFnEZ!i6jen>yE>qpvifwb*(eh|l@^hkOnJ<6^}(huoJQrt*SrKd@} zQ2yV@3;9F-XcZ^ohxj3Wq|ZwgFRkMx?YThOcFO-_e=FZ@f3#Y+#1HX9{79eI zC|(pViWkL;-``{{r61A{>4)?qt8V!AUO&>F3#4tQ^MhEIynp2n`6EfE#Sg9DNxW#* zXX%IZBZ(){59vn|FQgxhypTWSk5+Laeuy99NBVP==6FeaF7SlkR;;d^kE(04(LSzu zf479X^||Qq;_I&NaC0%LF3sRK9aT3LqU!1eJfDxt`Z`|6&qCPA-5&2-KG`$TpAYe+ z$lO$aesj3ztFdCVf8}C5K7KRuxNunD0F0oRw-5RC%B|s^AgOzPmU4f4ExPmesw?a6 zAK^NH3j(+xxLIC~4tDSWV7W1|@(I1=}EQH%H^jb_IAb-nuF@(yw(-GbaJ{l>DkI_qwNmuXTS^huB};+@MMp@4{Mw- zyLa`{H`g~gw7@-GpF`~fy7ENMf@rJ_Fn9}64i)TocoL#9-)}C1y839KV9Cg!x-rjp z%&UWiPM{Np0dx|K?l8bj&=&QW4i1H&1Ar##4nf1P0}V%Y3Yx5pfR11dU=ci#hCs^u zjJ|zb^KmDzoX^%~Ju(CSaw-jEgXlPI_D*RDGsjB@^z+eTMxZVnD(9!bg8)`?UyK!D zup8(>#?MBJoS!3d?N1H55g__mZ_y1}xhcHxTp=TJTC%&Pr5mSvodpD-i3*6@3ua%tO`ujF!)ggl!KQUcK_7J9pD$W)dILwp$EK+NKWI$zSdzWXe zLnMA-ZdVz)F|( z+C_xs`YE^4dXz5X_!#MP`ndbIkRHySVOK%r@*79F5z?o$NPRL~^Qk%2o1;18*7LB~ zb-(VGmbqzmL=j&$Hu#xqX^^^6J^;73VTATbJKgbXAlm3DJf&PL1A%`fQv^bhn8^bhn8 z^bhn8^bhn8x<5#3(?8HZtAhK>tAhK>tAhK>wiogS0mN z1N}oD{Da9oVv{kZ_pMFGnZz_1Lq3zwJEiXyiL6;<5V&;04O=@a-DpUtK!H*zRSFV&pb;V*aREMrJ zb(Q%F=CWt%hHnn*>PBvjT%;~u=3YsYQ(clClh!`#v7Fk3U4^9N#}{3CTdG}_)#;*` z)X*kFR`c)%>#P#=FeD)VoG7vx0@JESqbmNcu?GE%0$mt(K z5!+@LOp3nzYIJloX2$Qbn7s~(wV5~tRJB@-b;wpt-kEF@_gR~`5!14mlXF^Z+YYsW z@}ZV9`bSz~`eS|6+Ui=j*XW!c06feAi6_Pgd7uuy9MoZyg!8g>u#HWUXqJ5{%AaoJ zjjqXp4zKBnb9E5LYHl~NM{K&XS8V}ltjxj?c-y47&;`Hq#64xHQCzly$k2F0Bs7M` z8zL>F9(0O=SZC6J%MAA87bkwDTEUAh&ZK?@$~P7Z872vju!T~oRIAn2*Vn_ZGSDjN zRe;!uiHV`1AzA1?D4M-L+t_MI7DN_ZG>d8}mKIcJDETu~2^-U{!lNhUr*n_z P9zM9ecyDgLJg$BLb$mi% literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/floor02.tga b/sabase/textures/layout/floor02.tga new file mode 100644 index 0000000000000000000000000000000000000000..74d0a00cf4fed41d952faf4de73e8c6d6e579121 GIT binary patch literal 20162 zcmeI3O=}ZT6o&7lE~0c1sDVK&25K-8lt3*MY9KBmhWZg~BQ7i5bm5{47lEd2GQs-2 zl;ThFCrKCeJ-0b^dK$~vOd!NJ5Khj`o%`O8=ghfxV4S<=PCpr!30)uV@#dRN{T|`> z-^zaN?(g>T|IrZJ8(haaoFB^w*>H|=!MI>t{K+4@C-9zN<3WA0K{k{HYsm)LuuP~= zHpqsuU@h4o8%%DQKTn@u9o6Sb3lUcaEP=8Y2db=gn;_dwy@@~1Zri@+GpC05K zv_3(_HP@QGK{o=F$BLtrWe3fFfoK5Lfv9vuinJqX4%A^zze(HBiZE$zV`D>n8E~pP zl}hEkvXEaQ6DfmoOhSEQhrlN5zl#Ki2swk!9xH&X4t@cDtQ) zT_&-8*KFeUJiak}z?25i7*!%3j@j9)-gzX~Med4oJNrAbG@r$X{hly`*(GuLd|uo3 z;UM9kqMo#Q5JOColj?~TeSeFqES}u(p+D*v&uL;~;59Xwz(1pja?$KzUW4kR>LsW4 zoGk9retBfM@Z0Ch?RVRK__9&Zoar|WD2t$*bQ!HyfcCKi@Xg97n(L>#0Srih`6!b; z*qUfedtb^&RF{!RTcQ!5EvQS8Y{UW#3O$gimB^4<@mdAJnc&E7fY*khS7weoz$0fCo*q@)5jK^ua?hvt` zbWG!@%O^^FqNFD|wR)l>8`H(cF|x=gU&%u9S%2B8ziO;CUOd0|`f=lF{l5DR%Ko*e literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/lift01.tga b/sabase/textures/layout/lift01.tga new file mode 100644 index 0000000000000000000000000000000000000000..b87e4cf76cc9ddd8ecca838a1f14dcc4ea65c2c1 GIT binary patch literal 12626 zcmeHO&r20i7@e8-Of&kqu#j35MJ+Pg6cs@$12L4c#L8+Dv}h4+qR6cAX+I>0g7&SV zMYIUaRH88IzY06&&ONXDKHnsUMC29p%y;Lz=lkxtckY|{=9whzN&P2H(rrneX6ZuT z>+3)8YmaM}zTQtSe|vD{dp-rI!DX%q=Durmw+cmNtRk|bGE%}~RK_YIJ1Qe3EJkIl zBC?}0Qo>?X#wsE^DkCKeDMh_c9iPB;i!ip3QrWF$Hzj|W*-j1}IfgXEavE4C` z?82wJM@IUw$+&7IMwX%#V57+nqrQhLtB#DW^AjT7z!r7e9{_Wl>s+XEBVw(jR1$8X2enz0~L9DsWG+MDcBUP6%K5 z044!6-vBu`Q$V(l0lBlWEd#>DU%sqhE4|!I0>c?(y5|*6j=nRh>l=P@zBP`+uPIL|!=||Rpk;Cw~Il=}0S48lO0lS~G WXU=sG_6+p&_jL`O>^aqaAo&SJICvuf literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/pad01.tga b/sabase/textures/layout/pad01.tga new file mode 100644 index 0000000000000000000000000000000000000000..fefa24d7d9398ae6376fa0845bb3ce3ffa575d17 GIT binary patch literal 33676 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 Dg$87{ literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/pad02.tga b/sabase/textures/layout/pad02.tga new file mode 100644 index 0000000000000000000000000000000000000000..79aea66262074235f10de766653d21d09b7ce2c1 GIT binary patch literal 36716 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 literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/wall02.tga b/sabase/textures/layout/wall02.tga new file mode 100644 index 0000000000000000000000000000000000000000..de0946d3f2d8e1786c4410d7ba708a5efe681d7f GIT binary patch literal 12751 zcmeI2-%C?r7{}jp=EagO1`-WQSfn5fW1`_=H-j`BrjF{wKq4W9iC%aU3^Lf+v@8vT zj0A-SBJ^kMPw28sFTM0K=)%6=XM4w*PB*o#p27C|zUREp=lOl!;f(1twU=w$uqk4C ze6(A%@89@a*VG4^2fIb}f%<@bQS(53pm|U^BWNvXEod!hE$H_J{mx`_K>LCA1Dgwa zKG5@l_5LCA1DgwaKG5^Q|LzAn z_#dx-w3~PK=DlEtdB(niW5jjMs}d5MQ{cY*Upz+TSaxPd|u>Y^)cn4);qJ^Neq0-@Vx-vO~e( z3E4;O2iJjKrFoCyDXw0$gEd^@5@Y9IUV31EAp>dng!ToBVROHyo1=rsqiSdl0xVenU@K?SvTM_v6(kO; zQmDL>9%4}HK?Q&uq)>V&Y74_c?AR1m%6hbiFth@Jtxu2Bq*Gw5F}8F{m1@j-7SK4h z0?dxY1qiSOy4$m9SQqM)nxiM{nU>v_JJ&K}tlt7;QRmGUY3fSRF3iD7cUOp^bWxHh zn5ub1NuVR)a9g-M=>&pfRRXpykW%L}ctp|(V@tz3hjAs$euN|4+u#flSoo|-WS8-3hZ2iirUs;(C&GO(Fd3>2Sw#)0; V6L0i+>S=0fvOn`E^?3B2`2+mYx|RR{ literal 0 HcmV?d00001 diff --git a/sabase/textures/layout/wallwalk01.tga b/sabase/textures/layout/wallwalk01.tga new file mode 100644 index 0000000000000000000000000000000000000000..908f26139f17e4186491ffd11ad51bc89851993d GIT binary patch literal 13468 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 GUHco1aS@>a literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigcount.tga b/sabase/textures/triggers/trigcount.tga new file mode 100644 index 0000000000000000000000000000000000000000..234b3473841b9e47a687ca95546cad580d752827 GIT binary patch literal 4494 zcmd5=d2p506+howlSdX33?zg=AVMS|BmsfQ)?iIABoHekD2qt|5y4O(?8x$x5TH1Y zQo~XquPB0`fHoMwSOL*N5f@yMMV#qSYNghtrB#Zj_jgV{cw%TvJJXRrnD^at?!CXW z{m!`|@{#>7o3be}B(UTY<^b(C|NUQoEyr!Hx$l0-6P|gEOP}1&_x<)5FFySpFNMT8 zj7Luj;Sx5;u{A4j4g+gD~*lp z2yfk%Z(a0|9O}n*t9<_n?$kd=I3;fcC-mrRzAahHnZJ_7xTpok z{>Cw#Q)LyVQFakiDl`o=1D;myRmf$2rjQo89u~!PeJ0ay{v`gSl$-Q^x@3%(N|&&h z3|*Y%31Nzk)wB1WSF@^t)rIi2PEHfGKBZIn{*V67m5_MH?>NMOKj6LvVpiMky+o_$ zofCQCiEq_}kg=N@*&W(~Ez7}oKYLg-3zn`G&7=Xj3=<_H4x0bCg6Z7DUKui8S61xS z6{5)xYBa@|DtO;P4>YRQ;1XVj6#?$VWw0$aHB-_>vkh4(t0@`0=+r-062&{D@)21@ zykJ{KQJH*?4m8MjC5{cJm;|$GV)ViV^?DFIDA1-8#*?A4^HMZS0{ttPj^Ph)mJM0s zrtvb|?Le9UBJx~J@y>hyYpH>-m{@@Wn9wNMvM(53Lb9wZq^q;64u#?jD z_rHTzxH2G${U*(6g4esGTvkS|-NBmqp^?$-aJm0mXwzyH3QBO-7ymi5qS|e;vDers z3Pf@hE*x0CP$WYtYp=zFv2-;L&M^5J8m2Ip?NaXsd60JhMZG(FgUW(3QWC>>8D&UI zp3-E{44vHgz8u-AQ?l@(bHASgCKE1arXN{jOrU-q7EI4+a z6K@(M5@a(--=?#^ch3ycoUrp%_J&1>=BT<|S2xSmoLR!*mJnF|=gk?l_H_lFmEXKk zrYpeBWGX|7RrC7Zz3;N8MYxDsb?m|*wu}*_92OI2E;0JCFbWX>_uKGeu212fqwe7@ zKOM>rr%QHc7LOObTjs7XJwiFRWxI~jBWTZGnaWpb-n%>s1j*8UAd}%|xhaaOb|~}; z6MLi{7#on&`ZF1Nl;5ESYoh5Ev5EQ}X1Wo+(fESR6DqVO?LNwJ-FhmYI>FBgJ^L9& zi$~Qxr|kWG9jnE4Z8*PbwaTdLt;2P%!{alxf$o`m7uU#5lwGWGAR0Ew?!R6i)8ehX zTs3T8%hcdTEsR{ZlSlu0H_v+GkK!$~8m$yW0@Bj02l)Qu->}qybI#GvdDfes@$9$G zX~RLSdC8;zJ@XmUv*(x^zcFn6t^UTE`4%oGs{gYAXqGJ1xnN*H0puwu5I|f5IPrh_ zbL3&Lpr(C>Ii{~+nzvCyj?jbVFa|Bz#+X!!*KFtL#LiN3NEnQ07!A-x zu9Sm~+H_54lyYT$^&0kJ0)mObk`a$=6$6XcD6-7raXh8*12wV+m@OK!K;|sTC=c~3 zWa>3oO{_hnEhTM$%oCE87L_b!ifW@d+JUC6me|^ZY2h#Gcu++ZqhGY{(v86;=(|V_ z#OO--y!XD6@i%GUV4>Q+6K9DofZB|N@fdRKhZ|7J?RyR2g(oktR9Q2IxWy1m$Y|N1 zIFQj3C$(_CZ-k3R&ohM7QH?fJ2!Q+Hd^cuCTn{3|^)hMNQV*mc1!zRXC2;!i5{bWX z6B>yJdmwdsyo})(Wb5*V@YDk*wPwWYk+kCvObfRtfTnmzLIvKtJU=5cah+J=h4Bbg zgJHnT!p%fR<7!w|23K*Dg(0q(bp% zLFJlGL6I@~8)l%TZ8r}=ltb4(x(9tT&-@eoDo$7l3mKi;W6`>`-=#d_nI%Tfqo zB+N$N#Dnf~>45-d3V(C?%^CFEYvMcK9=O7X`4{1Kpf$_wUhv;=#_j};3q oeC(BhD*z`1VDFFpmkE&k8*zJ4PI2Dwyux8=cjV?3Z64gdfE literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigentityname.tga b/sabase/textures/triggers/trigentityname.tga new file mode 100644 index 0000000000000000000000000000000000000000..49324c7b3f70980ae6bc7f7afefa1f64af44dfbf GIT binary patch literal 5271 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 K$?M*^k^CQ9!sbK( literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigfacing.tga b/sabase/textures/triggers/trigfacing.tga new file mode 100644 index 0000000000000000000000000000000000000000..56a177947757414e9ff9ad362d55dd32b84a57ce GIT binary patch literal 4227 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 literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigflashlight.tga b/sabase/textures/triggers/trigflashlight.tga new file mode 100644 index 0000000000000000000000000000000000000000..c9a2ebd26eee61ee2672d5564cde608b6b1106ee GIT binary patch literal 5076 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 literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigger.tga b/sabase/textures/triggers/trigger.tga new file mode 100644 index 0000000000000000000000000000000000000000..965ef81988173cee4a38d532eec8719fad7a6d06 GIT binary patch literal 1739 zcmds&KWkG_7{<@7H>TVY9R#aG5xVG-xG5AacCdzkv0zj>rMd}$>J}G+Cx5yKAwwrA z>DsM}xF&;pz%Nk0K|jLv_q^xks{IH((0iWq{(a8-z9)4qam%&sw%r|f;^x`Om*3e{ z+o#;ixzlt1_H^bx{kj-%N9}fg|6_5)d0;k^*}zItOFid4xa9VGQr+H=!te+nb>zNZ zxLRr+_n$UBQKH?i)ACwHjw?6sZV>y)ho0=Cdyi7|QpAXWs5yY;r|cydDnTtpF3_DS z%c>v?@nn|ct)}oi^PD}@!amP#=BO#!$SD7Xr0ZGSA*;PjV@Q=NX&`6*v)!;Mn_*KhLit zE_jdtr8L^mcnp3}1+W;DQ?t)O%Xh+BjyVuP@wo&Qne5*W}0@g<(kJrX$3yrcpv ziOV@7`dzStV|Utzz6_Mcrcw}sTg@fAwLpq5<-n)_WDF|gn!<=VrQ%|$qo*0RbG{W^ zH7vt3S8t0L3o0C0Bm{KEd1+t?Im}q~wq8j|h2$yWVFPTe_j{27b;e7o;&vz}QVz9K zFcsKdK6}KEhkA-83Y`g8XU39>H>nX*Mtl7srG*xsKtLr!)C;z8etUamCYH|$xIL8D*lA)Uy>T3_3Gv8oi~kEWA{aM?^)ydPR;!R DGGN`w literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/triggui.tga b/sabase/textures/triggers/triggui.tga new file mode 100644 index 0000000000000000000000000000000000000000..9b90a4ec42f80f96432c0b5451b157401f5d8da9 GIT binary patch literal 3828 zcmdT{XK<8N6usZKCCM66&`3!_LXAWN29=HmDKSKdhy@{31%yo?RAnrP2qZL7 zkupd?F{lVC3?fBE5J4QfBO~gJjt!6R+_$SMisJ}>%#URE-S=+4=iG<{B>a;jIg%b- zKK%orTy~gW7x>cx>T@O>I*oyAcOuwh@kTg9H|@ogcYnYv%DiLueSzM~pM{icge*M> zdFfXyr7QPQ?Dj6-iqxxGLBv6c@fxl-Dh62vy)mrf4V37ev9EuQ%ue0)PBHH|l3Wi` zx*0R5$dT4vAs#PEtt=@8vivaSQ8u3nq}{ku%%M<*KYIv4o;i2#`55svYhk8+WX#Lm zj~W-uBaw^ZF1$qkPV+hg6kmFYpYDWe#n{=D7Fz9|7F}#qiM_{ ztIjL!dV$~QrIbDcdGSnyXP(q1EmcokjZ`q@Gt^)8fu?=@#3TC2T=THq_*vG&AdPxt z?T3)4fOTiUbdyeVs?iD!FW}d?)Zt;h!%A|eF0e|x(@y@1wnZgqc*D)e=um*PX4l#0 z?$v!pfYN?zUI-~1{qk}9O5=6qs`l1wPT{%D+Tzi18MN*d`&^hyTlYJ*AHl85Hirz1 z+5OR<3^dQT2F%}c#$`*U25#GOz&>~HJ@E@#4jqg7Z9Ad3?zOq_@Ds~;@B3%Y*C2b` zX85*>{WiIBo-y3H>tsk}pB2wt5S1PV8k2CbCa`J$Q7B~-cv}oDLeqXDwXi(+&wlG@ zd72Fvtp+?kzha4PV66iy;@(mDjyCZ5nTg?S#3t3SruYj7k+3lAxIVa$5MeO3V1dWiE$rJ*a+Z1G?;&@X10d3{lR5JGBf-N3P@#vAJk{ zlWh~f#3tBM8Le`CPum(j#zLCr*&28iX;&K};El!mAQ@L1@Hb`lvi-U}utpQaIe4D#Y{kHkwH*HQ|bX)=^zWKGjyrQ$UO6)5B-SLL9=K;J!Q|xQO1(w4T7wA2lC)9OF;zGK%AwdNh=_gKSDO0g2Wk|sFw|y zz7~Tw?ABSSnqJ?)XTDAnaisd?+33FTuks-q_n=zC#z?A{iQ@bjix9XpBTHXKN^W`h zDGji2k@YOQa1aO%8l+;oBYh@AE=e|-Hc|PdRRQFhTpNxVO^JzxWVL~8|2a&z{ii_^ ztJ!a9a@QkT+wfo&%q>%1ySPpUE^TlH+E1KgwiKVzEE9XSeA3(BD*urz2%Rm5jnlhy zG`n!HI!}J2obQ zSF>`_@gS4$i>scZ?j@wuR`Vq0-=%&^Z?8P8H@HhQ?$%%H->Ym3f{eybm+3y?gj*2d z!W$J0Qo7EJW<6dPoT*RPtcU8MO;-LkWZpJ=&dSuN1Fcu5!O(_G%}{I!Ekcn&*}7Iw zx8SO2a!AApDd{0jqF+%};z598*Y+x_uzlgDBr&y)5;u#$QDH$RAN}4YT)hq`lrzOl zTcpHfBx^f$s^;-bUBsvpXqDeKD|sQnT)-|1d@KVfn&px zaGKdAQ;z+J^cHP3#c55iRVa;=t4^1|%AotMdOjkgOkEnu6P(b@G5Qpg}#OH$XUmySgQ zs!M8Un`c;8=2)b4#1Nxhrs*x+R66wtJCR3(znXPT^^8p~DUgWD{1W(yxfbQalJw>| zA@uD$dkOeWS=EV-OH`Nt7y^;ar_I$BM+~z(aT1EXW+Mpl#NoCd0YT(-BP*s%N!4A~GbiGpNK&Zm|Bmb&D}c`=5@;}=#tg5W8RG&8p&_-4g6aG literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trighurt.tga b/sabase/textures/triggers/trighurt.tga new file mode 100644 index 0000000000000000000000000000000000000000..d8b04dd4725c10fece84f70ce91dc3d795eea4f4 GIT binary patch literal 4531 zcmd5=XK+%#9`Sa!aCvhLeoqd zxkV4GVX6{g%gE(sYSmS~iGktt;`dB7>WVHgdBd3Qn9LB+t{<3ETQkX>bM#J%s?PNA zOFS21g-clv1&z?veq=sRdFLAjutGhnTD?Xb06c5bk&ij5c3n{fbb#zVcZHD=^&a6I z@2kSJ`zJ9Fx6@tI3|u#*w=;mYe4+-<)6;2WQ3#MKGtd9Z16MuAaVhC)NzEoLxZjeE z{NSnY85l-xe}g-Xn`wKm`bpVzZ!=XXrgpJqx(Q5mIP$CS64spPl;@1@22S-lLOV%Ov#Q|YHh>Z0PqOu4I= z#w{^;+|=V9rb#Q93QE-l>fyN>+6Ena>Lsb&vuvM_-0`MSqhZe;HYT`pkA5nKVz!b)VY4tBRtO}$6rB8YSWPm z;U2ne(UZ1%nYRdqp=Cr94}WAsO6k%|A>l7DR`63?qO5exmMu|nwk{3GuOZs{g#&o-EC;aLYry2LEDzYFR3hkT z&u@-a{^S2K;6+YF)7Zxx!00JpyNSy$2l(Y*9KgbrYPym^_?SKKag9bzRUNdQy?8_A zwC(ObwTMCV`EP#7H;l+N$3=qga+a6!jI%#$<$~(_%wNSdQYCiU%#EIuMNTg)?pXprUDA2O0Am+IA^z!{7~(8BGiVm+*UJd>tO~{88>Uc>(+U5k|uci9a?@#}xR}(bDtW(2q}-QX2gz z(=|~7T@G`rw`xh7%pA%TJYnDvMu{TR1D*T~f>(nmt$+Q~-#)Yi8ZML`CNazcnv5>Y zXwFJ8@G5^<+R!BgI+nSp*Km{M!iP#p z5qW0lQ{YXMs3iaZq98G4ta;18SayV|K?^1@->gk$EwIIaM=;l(WLkW{OeSrmJ^CX} z0Zd)1-H4w5k}0wpQ^O3V*_*Y

8X~DGZ<}(<;%`xK?_GPO&J$Q2Fq!M;HYk*D#F> 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 literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigrelay.tga b/sabase/textures/triggers/trigrelay.tga new file mode 100644 index 0000000000000000000000000000000000000000..62fe1fa47e06cf13a811168d8c25dfacf41ae91a GIT binary patch literal 4224 zcmd55s%nagR9{P!PyD#g35>+hY!F1Lq60*_suFdyfZF69t(-hpK=vx-IU{GEdj?(8Y^ zdH9yM*k31-=R!ghjIcYr9_?scZl=6Zrs+4HN$xGtizzOZ>E&;^ z6o(X8#7%{BxOTnz`mo36=g5SH+-K2R2C~WTe$Ua#ja3I5U+p^8Y)fj#G+;lZxE)|e zRvhKJsZALQeNmn+rf7VLs&DXODBf-)axujwGZn2esH;veB{gFT^Xpj(k761$!*qjZ zGQ}jSlNtwKfT?aAQ$`1-SAH~yW&yK%*b4{sczSjo7enH2*`vQoVw<+)Y4884u2r=v z(R1CWEKn=_)x5Z;p87>4(GAnY35l4Gw*8vmg&1CCW( zMmz2~cR9zk%v7uUw;$JNkALe^v#b_Vjg5~oZ)Ccyz<_P~oXO)gu#quRFj6{hLOmm% zV-`7J=T?}cL(eMlB*2&jOIK=ES1x+zTZ@RwOZ5iSr`CNnAes_Cb?IZ57Opff>&~)1 z9jL8Mqj0^n^Ealnwq^-ni}p$^os?dPMB`4`{J{RRnnbiyY?BN<(yreS19ic&UgLDW z;ei>9zrc9^tM6#c9{%Y3Wn!jKeY9YQ0Z6~bpbjju?>$CXgu-Zm6%y4;Fbz6?+xHS4 z2WrhmagW;Zt{T^Aka!75G!rT>C-gYSx4ep{y!R7BhH}s*s~Jxp?f#1?AI7xx4;7!}Dz{6DJE2W`#&puy zsZOVmCL7%k7O0#oxN764b`{Z`lO1`4xWD6914T4?p#k;Kee(^DFeiC^HX4Won7XF? zNDsYzj*BN9`HEeIN559KGmwzaf!uJR7|o1c{F>>t-&w1iFzJeE%U9xS#di*KAg2(? zU*&WU(5VDxU;oqIFGrfnQ6K;6(?7nT3@6+qMRwn|V@e>#Rud0jlq?1|C2f~Bkn91P zd^hC|x0p&B>7L=!5h_u@t#so6OM3r_OxNaEe!S!lGOhW*ES@~fB#ffBc`@~zMd048 zhqce_9Y@o=dvA%f)QYQVw_L_IeKjl)5vAk{oUMA=tJja1XhfmFTOc6>o)sVpa{Mx; z6~_$5k~fWEQ-m^6;Q$}nXyAnzX!S{^$M!SfOja&qC8BXl8MUwMj6|aB&>1r~Fs1^g zBlZ#iMJ=H#F{Cg_FVzp<{3bVO(N=q}7+YGfetK&?Syj{biRZMJo%xH#8NKtQIjIA| zMR!frrKNJtbZ!kF!eiq(DKm>l zyjW8|;m~JV`dD&9L!RHy!NKeIXh?g_TOonDsD%w9~@ U?EIWQIeEQW59prLBfAa#4T;EyGXMYp literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigtimer.tga b/sabase/textures/triggers/trigtimer.tga new file mode 100644 index 0000000000000000000000000000000000000000..fe5112dfd82c44a31379801239621505121fad83 GIT binary patch literal 4312 zcmdT{cW_j75Z-rpxr2~KNrxmtVt~+sbOnM68Yy7}0*Z>1AXrdIh#)E?BnAY>3aCI% z6u}l75rHTms5pp#AjlwyGmdR^>~$>be!KU=LE@<6ACCDW_ulTWeA~X=M-)l!UmoRA zMw8(D_nCvVP5%8yPq*S;r|*=R?0CGqK;W?x*ZMS`^Y%Afrn<`?-NydND6W9c>o^|H zEu73#Yv1H1F>zc5sm~kX=b;tL8J5t7Z^CAHj%uFBG1N5LBrvI{iYaUbC8ROkwDyEclG~m*WlE))wGbZmT)L)CRb59-;3}0& zShrOrIm5>C0!U(to_j+jS%Zc$1hWr(&2&SMY0(RI#nPR2{D4s>zn@tkV8w%en!dzV z;8z6X?vNGgV=oOFYb!Exm^S}p`~Eh>WAWrAgFG)a2#Z>F^Nwo>w+?%2we{|IJOILr&mm)cROS@w%;yK|d8 zhxt?sm1xCY3m^efB@*4CZh1_#Uzx8ekVcU=9{P^cdk^Fhi&kk~h36s`6z}?&TX*lv zW0pN(ndoVdo2^`snFG(SFDklY3sa{v4cxGz1|XFa+GMkO8^7R)>iy=;Ex(yJo78*r zjKNInj%%Q`sM0&yj{J$?##~XmN5$Faj%d`F@xcwMKjWgQe`yT31)x&8^fXWv&)AiI zlT(<-6}*&@X7P-Bn6kPvfkhyb1kjB2)Ena#oQHyM+nKFW!_9F0>DKzGF}Y~fdff&d zR(5C@6T%tgz~vpYRLTnVzV&w|@w72^WAH;fk(6PegaLG47*B*sPvWC=hnQve2!o#B zLiaa|=J>1}Ne4R&tpe|{DZ+}f4bYKZ(>Lzt*13I7S{sOt)%V2qUHF{RDxP!jTTbh7 zmH~HKq-XLi?}ZYCsQ3ZbAQW6qKPI<2gqs(TFqxmc5oXY)ADOOOcG8M6tngAyOItyX zGLLeJ)`$9Wq59Ed>>FE8$jQRS>v?|N7}4A5e`Q9`uN5 z8}{+FJC3t@!UNk}$x>j`z&LdGc1BP&zdbZ`ikW!UNJ|AjMa3!2;Z!<%oP~C52~)3p zNeS`1j{=cQYu>ee_wUv$*3*0#97f%>R$V!D{ccX_+#__4t3kw#PEntD)3`?<#b@vT zN_Tb|ZnyR;D&g{a;2ks?rK=Q(f}D9D)5?7YW7+FW?Yc67+U7lGGPes#%FyaVOn2{K z!k#`unb7xSXrehXwV-1nkjP`SCh4S;pW4ZV%WJqrMiv8T>E6$|XMlp5n&-CIi;#Xadek&ECZ|Pc~C|C>(qAs|tngM^%w4=&(#1I|;L=r?tit_4uHf?YlK!wr~j(|Y!26rS>FBZfpMmt&F< z)5z;%LLYeKsF~?#8*`2D(fBz!0&4;a?E-iioF5UB)LP+T_Qdt5IzJx z7zmNC7gs;eWgtC2_5i+DW>!qX9zlXmHRI)@Rx|4LSbFLcrkmH9*F*78Flac7H<=uf z!B7hQ1(R755}kO{4~<2};wrsC8ARRW^uKzpGQ3XbKHvg(C+A4_Q`EJV7k+4(w`t2* zk078_5KzqQdXl1!1ep_DyiMvh9Cg8!)>0u4<&&cD(2_ct6!I2{G|_X4l}8v zRwzb4RPK<=m}2AY8D^l`Yd*4az^I5dFbFz)Hmx~gu8`r9?s-KT$3*)k!MYVP>A)TM z*lLl?)UglKeY+Ul0Vy4un$D-6Gh9F8qT-Xa#}+-?P+z?3BTfC(ZoRo|;uAYK5}$jB z-iSpj#W5$eP+|~)*=T>)Y&{ZYD8bOskO{M7(6nz!LR+4-((O9})4n5h^nn4Ozm#?o zJ@7KVLBXi-KZqZkYb@_-GWz6&?is#t1>?=`!6zXgYva&#(k53)tKX5%g3%G3@S(#3 zL?jNaJr+(uG802r4js{>?^`lOfTYlDz?Wdb>vw*j^{F8bfG#FJ-cXBAv#Vb^%oSI? yD0ibJxRNqRoEh7XDb-ZM${?Z`{69QNfb?(lg<}R6=8wuR7}0s$ko;kTyU-sLrm;@| literal 0 HcmV?d00001 diff --git a/sabase/textures/triggers/trigtouch.tga b/sabase/textures/triggers/trigtouch.tga new file mode 100644 index 0000000000000000000000000000000000000000..d176c3fc8340d9f36af3d8a9bc47324256d3c7af GIT binary patch literal 4440 zcmd5#Anl-(Q4ygGM{(M!wRNmVt8H!F?z8)SNsu^NJJV_Y$b7%uefNF#-j^tt z0)JVQMM**RE8k|WrxWt;fBI`3Zgb6f^&KwVbBZ52{3b8|&A)iHQsYvAyUBZ-dn;8&7rR7X3ce9!(*kBrU&S2X22d2qYOp$Hv zv^R*U-v~3S8i1YmZ$GB2o`n;*3KUn|t$mczd)zc$cI6*_xRCR-3So!C$y1*{!w}71 zwNWLL2M-k&d~R@qXvx!dS(jc6{0KI6OgGw?nM_CjCJ_;am)4(VicVmdRce%++R zK$URP+EYduQpi;}b2Dg71=qx9C9}lxnA8kje(j%@Aifb5PbxJnzeE9N6qV}tz4eFm z+Yci;QK%B17r$WIct#}8TXOL)+@at1c+{G$s=Rrw;pVw#-s6N`1Gs3z z9v)J*Ox2F4SpVJqgc5)cMo;He@Dm|~T0~7D6u(x`q)PEv{#26=cuYZuKXBkRC8yjq zszuPq9bAI)xbLYW`a2=BKd-p{C2KDF@>g$CYPVr`f4xt=Hw5@67xaYEq-$ym^U|Y- zncQBcAHDQ#%R^0wnEJC{sk$!Nc`ceSZfk?`Gm9r{>khP`fm7${x3#h<`(I&SXt+v_ zuRHMdruc3!1#a)w*UUjqia8nqA07FODI?oB=);iw=E72wx&=(~hJl-VNiecn6BuS_6dVt}aE@bp^p>0z<&KbB+Hqdx2IEop;e|$bdV@om_P@_G z^!r9}lP{QQ&+pC47{*=wIy@vDoO;|YAf)A0A7tA5o|qJB@SS=NvooNHXu^u-AeUYJ zf~)7h_9rGZGV8t%9XZb>oA&d>T_^dG%YXM%7oPi&A-Lf64{VSi;x20Vkm;v#9R4^a zvY>hh6;QdKY0V45{iDH_L7}NbkSo^%_DfDU8}-O;p`)Q5aj%EA|LWI&te_4jobW!9 z?gyu?TmN!mI|)$M1Dm3B(At-oTpoYmC~u0{I%u>7z^jw~z(+>C;~vYEl6g#hbH!JZ z1Qy!uS4?8lS=|F{#cAC>nG2uT!MJT&!�?zs-M7fYWX0Xlac|C1g6jG;2MmqeX9i zq$hifv|G^*bO}@7-8KCeY*io%a*j-YtR`YUZFt4Xr9&#yid{x4f6l9(+FBlabk-DimbQQTJ-m=n5w-+$=8D{2S zS&=f)x|U5rcLxWG1M8!Hb)Z=rG`3ob;+BF(>o|LECAaC6!fm_uV00TyTBHVI^i@9A zUM#f9LxyQ19yo2j$^vMhvjzA#4>zIo+xHpFs7tNJ77X#IAy^8NGtV}Xw zT8NCrH73dWiMq)#c*at(B#CvscLSF%EP`XxWNTH_2P`kV;IvNc#E?f2P$~#0mVVWw zsDo+lk8SS;(&nfO9%c%x!v1{nuOyEjvjTbiXiJz~w4ly{g$6BJbs)ImP7HA54jhOj zN~<(9zzMh+S%hw!G$31D+@bFfp0xLu8afySzUpjz1l<4h(Pk#4YK7t{f-PL;0YyaH zZoJSg-Kr_$nWdO{9K&Mn5jcTQoTE3>dX$i#Vo<3nsQtn2i?+C}N^o4Je5f6Oy}eu=B5zbJQOBm^kspg3l}d`(-8 lJ{{^2#d_HL|Nct?q<>?_6y+4>7UmX=O221lZhp?K^lv>d6#4)F literal 0 HcmV?d00001 diff --git a/standalone.patch b/standalone.patch new file mode 100644 index 0000000..eba300c --- /dev/null +++ b/standalone.patch @@ -0,0 +1,123 @@ +diff --git a/neo/CMakeLists.txt b/neo/CMakeLists.txt +index e159bcb..cb94029 100644 +--- a/neo/CMakeLists.txt ++++ b/neo/CMakeLists.txt +@@ -26,6 +26,7 @@ include(GNUInstallDirs OPTIONAL RESULT_VARIABLE GNUINSTALLDIRS) + + option(CORE "Build the core" ON) + option(BASE "Build the base game code" ON) ++option(SABASE "Build the standalone base game code" ON) + option(D3XP "Build the d3xp game code" ON) + option(DEDICATED "Build the dedicated server" OFF) + option(ONATIVE "Optimize for the host CPU" OFF) +@@ -811,6 +812,24 @@ if(BASE) + endif() + endif() + ++if(SABASE) ++ add_library(sabase SHARED ${src_d3xp}) ++ set_target_properties(sabase PROPERTIES PREFIX "") ++ set_target_properties(sabase PROPERTIES COMPILE_DEFINITIONS "GAME_DLL;_D3XP;CTF") ++ set_target_properties(sabase PROPERTIES COMPILE_FLAGS "-I${CMAKE_SOURCE_DIR}/d3xp") ++ set_target_properties(sabase PROPERTIES LINK_FLAGS "${ldflags}") ++ set_target_properties(sabase PROPERTIES INSTALL_NAME_DIR "@executable_path") ++ target_link_libraries(sabase idlib) ++ ++ if(NOT APPLE AND NOT WIN32) ++ install(TARGETS sabase ++ RUNTIME DESTINATION "${bindir}" ++ LIBRARY DESTINATION "${libdir}" ++ ARCHIVE DESTINATION "${libdir}" ++ ) ++ endif() ++endif() ++ + if(D3XP) + add_library(d3xp SHARED ${src_d3xp}) + set_target_properties(d3xp PROPERTIES PREFIX "") +diff --git a/neo/d3xp/Player.cpp b/neo/d3xp/Player.cpp +index dc779df..5350496 100644 +--- a/neo/d3xp/Player.cpp ++++ b/neo/d3xp/Player.cpp +@@ -1645,19 +1645,19 @@ void idPlayer::Init( void ) { + value = spawnArgs.GetString( "bone_hips", "" ); + hipJoint = animator.GetJointHandle( value ); + if ( hipJoint == INVALID_JOINT ) { +- gameLocal.Error( "Joint '%s' not found for 'bone_hips' on '%s'", value, name.c_str() ); ++ gameLocal.Warning( "Joint '%s' not found for 'bone_hips' on '%s'", value, name.c_str() ); + } + + value = spawnArgs.GetString( "bone_chest", "" ); + chestJoint = animator.GetJointHandle( value ); + if ( chestJoint == INVALID_JOINT ) { +- gameLocal.Error( "Joint '%s' not found for 'bone_chest' on '%s'", value, name.c_str() ); ++ gameLocal.Warning( "Joint '%s' not found for 'bone_chest' on '%s'", value, name.c_str() ); + } + + value = spawnArgs.GetString( "bone_head", "" ); + headJoint = animator.GetJointHandle( value ); + if ( headJoint == INVALID_JOINT ) { +- gameLocal.Error( "Joint '%s' not found for 'bone_head' on '%s'", value, name.c_str() ); ++ gameLocal.Warning( "Joint '%s' not found for 'bone_head' on '%s'", value, name.c_str() ); + } + + // initialize the script variables +@@ -5003,7 +5003,11 @@ void idPlayer::UpdateWeapon( void ) { + if ( idealWeapon != -1 ) { + animPrefix = spawnArgs.GetString( va( "def_weapon%d", idealWeapon ) ); + weapon.GetEntity()->GetWeaponDef( animPrefix, inventory.clip[ idealWeapon ] ); +- assert( weapon.GetEntity()->IsLinked() ); ++ if ( ! weapon.GetEntity()->IsLinked() ) { ++ // as long as the standalone sdk has no weapons, this should be ignored.. ++ // gameLocal.Warning( "Couldn't get a weapon!" ); ++ return; ++ } + } else { + return; + } +diff --git a/neo/framework/BuildDefines.h b/neo/framework/BuildDefines.h +index 750fd37..8e5eb6d 100644 +--- a/neo/framework/BuildDefines.h ++++ b/neo/framework/BuildDefines.h +@@ -75,13 +75,8 @@ If you have questions concerning this license or the applicable additional terms + #define ID_ALLOW_TOOLS + #endif + +-#ifndef ID_ENFORCE_KEY +-# if !defined( ID_DEDICATED ) +-# define ID_ENFORCE_KEY 1 +-# else +-# define ID_ENFORCE_KEY 0 +-# endif +-#endif ++// disable cd-key check ++#define ID_ENFORCE_KEY 0 + + // async network + +diff --git a/neo/framework/FileSystem.cpp b/neo/framework/FileSystem.cpp +index e09c89e..a7d59e3 100644 +--- a/neo/framework/FileSystem.cpp ++++ b/neo/framework/FileSystem.cpp +@@ -1716,7 +1716,7 @@ idModList *idFileSystemLocal::ListMods( void ) { + + dirs.Remove( "." ); + dirs.Remove( ".." ); +- dirs.Remove( "base" ); ++ dirs.Remove( BASE_GAMEDIR ); + dirs.Remove( "pb" ); + + // see if there are any pk4 files in each directory +diff --git a/neo/framework/Licensee.h b/neo/framework/Licensee.h +index 9cc20fb..673faa1 100644 +--- a/neo/framework/Licensee.h ++++ b/neo/framework/Licensee.h +@@ -39,7 +39,7 @@ If you have questions concerning this license or the applicable additional terms + #define ENGINE_VERSION "dhewm 1.3.1" // printed in console + + // paths +-#define BASE_GAMEDIR "base" ++#define BASE_GAMEDIR "sabase" + + // filenames + #define CONFIG_FILE "dhewm.cfg"