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 0000000..ea525f2 Binary files /dev/null and b/sabase/textures/bigchars.tga differ diff --git a/sabase/textures/common/aasobstacle.tga b/sabase/textures/common/aasobstacle.tga new file mode 100644 index 0000000..c3b9286 Binary files /dev/null and b/sabase/textures/common/aasobstacle.tga differ diff --git a/sabase/textures/common/aassolid.tga b/sabase/textures/common/aassolid.tga new file mode 100644 index 0000000..e20c10c Binary files /dev/null and b/sabase/textures/common/aassolid.tga differ diff --git a/sabase/textures/common/caulk.tga b/sabase/textures/common/caulk.tga new file mode 100644 index 0000000..a7c8204 Binary files /dev/null and b/sabase/textures/common/caulk.tga differ diff --git a/sabase/textures/common/clip.tga b/sabase/textures/common/clip.tga new file mode 100644 index 0000000..3cb2411 Binary files /dev/null and b/sabase/textures/common/clip.tga differ diff --git a/sabase/textures/common/clipplus.tga b/sabase/textures/common/clipplus.tga new file mode 100644 index 0000000..25b5175 Binary files /dev/null and b/sabase/textures/common/clipplus.tga differ diff --git a/sabase/textures/common/collision.tga b/sabase/textures/common/collision.tga new file mode 100644 index 0000000..6f1350d Binary files /dev/null and b/sabase/textures/common/collision.tga differ diff --git a/sabase/textures/common/cushion.tga b/sabase/textures/common/cushion.tga new file mode 100644 index 0000000..9755214 Binary files /dev/null and b/sabase/textures/common/cushion.tga differ diff --git a/sabase/textures/common/deprecated.tga b/sabase/textures/common/deprecated.tga new file mode 100644 index 0000000..e71e2c9 Binary files /dev/null and b/sabase/textures/common/deprecated.tga differ diff --git a/sabase/textures/common/entitygui.tga b/sabase/textures/common/entitygui.tga new file mode 100644 index 0000000..030e8c1 Binary files /dev/null and b/sabase/textures/common/entitygui.tga differ diff --git a/sabase/textures/common/entitygui2.tga b/sabase/textures/common/entitygui2.tga new file mode 100644 index 0000000..b76e66b Binary files /dev/null and b/sabase/textures/common/entitygui2.tga differ diff --git a/sabase/textures/common/entitygui3.tga b/sabase/textures/common/entitygui3.tga new file mode 100644 index 0000000..7ab2d0a Binary files /dev/null and b/sabase/textures/common/entitygui3.tga differ diff --git a/sabase/textures/common/full_clip.tga b/sabase/textures/common/full_clip.tga new file mode 100644 index 0000000..1d99c2d Binary files /dev/null and b/sabase/textures/common/full_clip.tga differ diff --git a/sabase/textures/common/ikclip.tga b/sabase/textures/common/ikclip.tga new file mode 100644 index 0000000..fa361d6 Binary files /dev/null and b/sabase/textures/common/ikclip.tga differ diff --git a/sabase/textures/common/ladder.tga b/sabase/textures/common/ladder.tga new file mode 100644 index 0000000..f2a8924 Binary files /dev/null and b/sabase/textures/common/ladder.tga differ diff --git a/sabase/textures/common/mirror.tga b/sabase/textures/common/mirror.tga new file mode 100644 index 0000000..c10b747 Binary files /dev/null and b/sabase/textures/common/mirror.tga differ diff --git a/sabase/textures/common/monster_clip.tga b/sabase/textures/common/monster_clip.tga new file mode 100644 index 0000000..bfe63ac Binary files /dev/null and b/sabase/textures/common/monster_clip.tga differ diff --git a/sabase/textures/common/moveable_clip.tga b/sabase/textures/common/moveable_clip.tga new file mode 100644 index 0000000..706def9 Binary files /dev/null and b/sabase/textures/common/moveable_clip.tga differ diff --git a/sabase/textures/common/nodraw.tga b/sabase/textures/common/nodraw.tga new file mode 100644 index 0000000..9701698 Binary files /dev/null and b/sabase/textures/common/nodraw.tga differ diff --git a/sabase/textures/common/nodrawsolid.tga b/sabase/textures/common/nodrawsolid.tga new file mode 100644 index 0000000..50976a6 Binary files /dev/null and b/sabase/textures/common/nodrawsolid.tga differ diff --git a/sabase/textures/common/noimpact.tga b/sabase/textures/common/noimpact.tga new file mode 100644 index 0000000..302a431 Binary files /dev/null and b/sabase/textures/common/noimpact.tga differ diff --git a/sabase/textures/common/pdagui.tga b/sabase/textures/common/pdagui.tga new file mode 100644 index 0000000..a32930b Binary files /dev/null and b/sabase/textures/common/pdagui.tga differ diff --git a/sabase/textures/common/player_clip.tga b/sabase/textures/common/player_clip.tga new file mode 100644 index 0000000..91b6f14 Binary files /dev/null and b/sabase/textures/common/player_clip.tga differ diff --git a/sabase/textures/common/radiochatter.tga b/sabase/textures/common/radiochatter.tga new file mode 100644 index 0000000..4e8cae8 Binary files /dev/null and b/sabase/textures/common/radiochatter.tga differ diff --git a/sabase/textures/common/shadow.tga b/sabase/textures/common/shadow.tga new file mode 100644 index 0000000..613e6c8 Binary files /dev/null and b/sabase/textures/common/shadow.tga differ diff --git a/sabase/textures/common/shadow2.tga b/sabase/textures/common/shadow2.tga new file mode 100644 index 0000000..01745ab Binary files /dev/null and b/sabase/textures/common/shadow2.tga differ diff --git a/sabase/textures/common/slick.tga b/sabase/textures/common/slick.tga new file mode 100644 index 0000000..2204f39 Binary files /dev/null and b/sabase/textures/common/slick.tga differ diff --git a/sabase/textures/common/speaker.tga b/sabase/textures/common/speaker.tga new file mode 100644 index 0000000..1095d31 Binary files /dev/null and b/sabase/textures/common/speaker.tga differ diff --git a/sabase/textures/common/visportal.tga b/sabase/textures/common/visportal.tga new file mode 100644 index 0000000..4cc801f Binary files /dev/null and b/sabase/textures/common/visportal.tga differ diff --git a/sabase/textures/dummy_black.tga b/sabase/textures/dummy_black.tga new file mode 100644 index 0000000..fb5c02c Binary files /dev/null and b/sabase/textures/dummy_black.tga differ diff --git a/sabase/textures/dummy_light.tga b/sabase/textures/dummy_light.tga new file mode 100644 index 0000000..9936a69 Binary files /dev/null and b/sabase/textures/dummy_light.tga differ diff --git a/sabase/textures/dummy_lighta.tga b/sabase/textures/dummy_lighta.tga new file mode 100644 index 0000000..383e757 Binary files /dev/null and b/sabase/textures/dummy_lighta.tga differ diff --git a/sabase/textures/dummy_white.tga b/sabase/textures/dummy_white.tga new file mode 100644 index 0000000..bde2737 Binary files /dev/null and b/sabase/textures/dummy_white.tga differ diff --git a/sabase/textures/layout/blend01_a.tga b/sabase/textures/layout/blend01_a.tga new file mode 100644 index 0000000..4409eda Binary files /dev/null and b/sabase/textures/layout/blend01_a.tga differ diff --git a/sabase/textures/layout/blend01_b.tga b/sabase/textures/layout/blend01_b.tga new file mode 100644 index 0000000..cd474ad Binary files /dev/null and b/sabase/textures/layout/blend01_b.tga differ diff --git a/sabase/textures/layout/ceiling01.tga b/sabase/textures/layout/ceiling01.tga new file mode 100644 index 0000000..c259608 Binary files /dev/null and b/sabase/textures/layout/ceiling01.tga differ diff --git a/sabase/textures/layout/ceiling02.tga b/sabase/textures/layout/ceiling02.tga new file mode 100644 index 0000000..0e27656 Binary files /dev/null and b/sabase/textures/layout/ceiling02.tga differ diff --git a/sabase/textures/layout/floor01.tga b/sabase/textures/layout/floor01.tga new file mode 100644 index 0000000..7f3578e Binary files /dev/null and b/sabase/textures/layout/floor01.tga differ diff --git a/sabase/textures/layout/floor02.tga b/sabase/textures/layout/floor02.tga new file mode 100644 index 0000000..74d0a00 Binary files /dev/null and b/sabase/textures/layout/floor02.tga differ diff --git a/sabase/textures/layout/lift01.tga b/sabase/textures/layout/lift01.tga new file mode 100644 index 0000000..b87e4cf Binary files /dev/null and b/sabase/textures/layout/lift01.tga differ diff --git a/sabase/textures/layout/pad01.tga b/sabase/textures/layout/pad01.tga new file mode 100644 index 0000000..fefa24d Binary files /dev/null and b/sabase/textures/layout/pad01.tga differ diff --git a/sabase/textures/layout/pad02.tga b/sabase/textures/layout/pad02.tga new file mode 100644 index 0000000..79aea66 Binary files /dev/null and b/sabase/textures/layout/pad02.tga differ diff --git a/sabase/textures/layout/stairs01.tga b/sabase/textures/layout/stairs01.tga new file mode 100644 index 0000000..141378a Binary files /dev/null and b/sabase/textures/layout/stairs01.tga differ diff --git a/sabase/textures/layout/wall01.tga b/sabase/textures/layout/wall01.tga new file mode 100644 index 0000000..f214ad4 Binary files /dev/null and b/sabase/textures/layout/wall01.tga differ diff --git a/sabase/textures/layout/wall02.tga b/sabase/textures/layout/wall02.tga new file mode 100644 index 0000000..de0946d Binary files /dev/null and b/sabase/textures/layout/wall02.tga differ diff --git a/sabase/textures/layout/wallwalk01.tga b/sabase/textures/layout/wallwalk01.tga new file mode 100644 index 0000000..908f261 Binary files /dev/null and b/sabase/textures/layout/wallwalk01.tga differ diff --git a/sabase/textures/triggers/trigcount.tga b/sabase/textures/triggers/trigcount.tga new file mode 100644 index 0000000..234b347 Binary files /dev/null and b/sabase/textures/triggers/trigcount.tga differ diff --git a/sabase/textures/triggers/trigentityname.tga b/sabase/textures/triggers/trigentityname.tga new file mode 100644 index 0000000..49324c7 Binary files /dev/null and b/sabase/textures/triggers/trigentityname.tga differ diff --git a/sabase/textures/triggers/trigentitynameonce.tga b/sabase/textures/triggers/trigentitynameonce.tga new file mode 100644 index 0000000..21e78dc Binary files /dev/null and b/sabase/textures/triggers/trigentitynameonce.tga differ diff --git a/sabase/textures/triggers/trigfacing.tga b/sabase/textures/triggers/trigfacing.tga new file mode 100644 index 0000000..56a1779 Binary files /dev/null and b/sabase/textures/triggers/trigfacing.tga differ diff --git a/sabase/textures/triggers/trigfade.tga b/sabase/textures/triggers/trigfade.tga new file mode 100644 index 0000000..42e2f53 Binary files /dev/null and b/sabase/textures/triggers/trigfade.tga differ diff --git a/sabase/textures/triggers/trigflashlight.tga b/sabase/textures/triggers/trigflashlight.tga new file mode 100644 index 0000000..c9a2ebd Binary files /dev/null and b/sabase/textures/triggers/trigflashlight.tga differ diff --git a/sabase/textures/triggers/trigger.tga b/sabase/textures/triggers/trigger.tga new file mode 100644 index 0000000..965ef81 Binary files /dev/null and b/sabase/textures/triggers/trigger.tga differ diff --git a/sabase/textures/triggers/triggui.tga b/sabase/textures/triggers/triggui.tga new file mode 100644 index 0000000..9b90a4e Binary files /dev/null and b/sabase/textures/triggers/triggui.tga differ diff --git a/sabase/textures/triggers/trighurt.tga b/sabase/textures/triggers/trighurt.tga new file mode 100644 index 0000000..d8b04dd Binary files /dev/null and b/sabase/textures/triggers/trighurt.tga differ diff --git a/sabase/textures/triggers/trigmulti.tga b/sabase/textures/triggers/trigmulti.tga new file mode 100644 index 0000000..b89b49e Binary files /dev/null and b/sabase/textures/triggers/trigmulti.tga differ diff --git a/sabase/textures/triggers/trigonce.tga b/sabase/textures/triggers/trigonce.tga new file mode 100644 index 0000000..ee7e8ea Binary files /dev/null and b/sabase/textures/triggers/trigonce.tga differ diff --git a/sabase/textures/triggers/trigrelay.tga b/sabase/textures/triggers/trigrelay.tga new file mode 100644 index 0000000..62fe1fa Binary files /dev/null and b/sabase/textures/triggers/trigrelay.tga differ diff --git a/sabase/textures/triggers/trigtimer.tga b/sabase/textures/triggers/trigtimer.tga new file mode 100644 index 0000000..fe5112d Binary files /dev/null and b/sabase/textures/triggers/trigtimer.tga differ diff --git a/sabase/textures/triggers/trigtouch.tga b/sabase/textures/triggers/trigtouch.tga new file mode 100644 index 0000000..d176c3f Binary files /dev/null and b/sabase/textures/triggers/trigtouch.tga differ 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"