diff --git a/BUILD_DARKAGES.bat b/BUILD_DARKAGES.bat new file mode 100644 index 0000000000..520e75abdc --- /dev/null +++ b/BUILD_DARKAGES.bat @@ -0,0 +1,103 @@ +@echo off +REM ============================================================================ +REM DOOM: The Dark Ages - Windows Build Script +REM Run this on your ThinkPad T460s with Visual Studio installed +REM ============================================================================ + +echo ============================================= +echo DOOM: The Dark Ages - Build Script +echo ============================================= +echo. + +REM Try to find Visual Studio +set "VS_FOUND=0" + +REM Visual Studio 2022 +if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" ( + call "%ProgramFiles%\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" + set "VS_FOUND=1" + echo Found Visual Studio 2022 Community +) +if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" ( + call "%ProgramFiles%\Microsoft Visual Studio\2022\Professional\Common7\Tools\VsDevCmd.bat" + set "VS_FOUND=1" + echo Found Visual Studio 2022 Professional +) + +REM Visual Studio 2019 +if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" ( + call "%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" + set "VS_FOUND=1" + echo Found Visual Studio 2019 Community +) + +REM Visual Studio 2017 +if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" ( + call "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" + set "VS_FOUND=1" + echo Found Visual Studio 2017 Community +) + +if "%VS_FOUND%"=="0" ( + echo ERROR: Visual Studio not found! + echo Please install Visual Studio 2017/2019/2022 with C++ tools + echo Or open "Developer Command Prompt" and run this script from there + pause + exit /b 1 +) + +echo. +echo [1/3] Building DOOM: The Dark Ages... +echo. + +cd /d "%~dp0neo" + +REM Build Release configuration +msbuild doom3.sln /p:Configuration=Release /p:Platform=Win32 /m /v:minimal + +if errorlevel 1 ( + echo. + echo BUILD FAILED! Check errors above. + pause + exit /b 1 +) + +echo. +echo [2/3] Build successful! +echo. + +REM Copy output +set OUTPUT_DIR=%~dp0build\Win32\Release +echo Output directory: %OUTPUT_DIR% + +if exist "%OUTPUT_DIR%\DarkAges.exe" ( + echo. + echo [3/3] Packaging standalone... + + REM Create standalone directory + set STANDALONE_DIR=%~dp0DOOM_Dark_Ages_Standalone + mkdir "%STANDALONE_DIR%" 2>nul + + copy "%OUTPUT_DIR%\DarkAges.exe" "%STANDALONE_DIR%\" /Y + xcopy "%~dp0darkages" "%STANDALONE_DIR%\darkages\" /E /I /Y /Q + xcopy "%~dp0base\renderprogs" "%STANDALONE_DIR%\base\renderprogs\" /E /I /Y /Q + copy "%~dp0darkages\icon\darkages.ico" "%STANDALONE_DIR%\" /Y + + echo. + echo ============================================= + echo BUILD COMPLETE! + echo ============================================= + echo. + echo EXE: %STANDALONE_DIR%\DarkAges.exe + echo Icon: darkages.ico (embedded in EXE) + echo. + echo To play: Run DarkAges.exe + echo ============================================= +) else ( + echo WARNING: DarkAges.exe not found at expected location + echo Check: %OUTPUT_DIR% + dir "%OUTPUT_DIR%\*.exe" 2>nul +) + +echo. +pause diff --git a/BUILD_DARKAGES_CMAKE.bat b/BUILD_DARKAGES_CMAKE.bat new file mode 100644 index 0000000000..2d891a5b62 --- /dev/null +++ b/BUILD_DARKAGES_CMAKE.bat @@ -0,0 +1,64 @@ +@echo off +REM ============================================================================ +REM DOOM: The Dark Ages - CMake Build Script for Windows +REM Alternative build using CMake (requires CMake + Visual Studio) +REM ============================================================================ + +echo ============================================= +echo DOOM: The Dark Ages - CMake Build +echo ============================================= +echo. + +where cmake >nul 2>&1 +if errorlevel 1 ( + echo ERROR: CMake not found! Install from https://cmake.org/download/ + pause + exit /b 1 +) + +echo [1/4] Configuring with CMake... +mkdir build_cmake 2>nul +cd build_cmake + +cmake .. -G "Visual Studio 17 2022" -A Win32 ^ + -DDARKAGES_PORTABLE=ON ^ + -DDARKAGES_OPTIMIZE_T460S=ON ^ + -DCMAKE_BUILD_TYPE=Release + +if errorlevel 1 ( + echo Trying Visual Studio 2019... + cmake .. -G "Visual Studio 16 2019" -A Win32 ^ + -DDARKAGES_PORTABLE=ON ^ + -DDARKAGES_OPTIMIZE_T460S=ON ^ + -DCMAKE_BUILD_TYPE=Release +) + +if errorlevel 1 ( + echo ERROR: CMake configuration failed! + pause + exit /b 1 +) + +echo. +echo [2/4] Building Release... +cmake --build . --config Release --parallel + +if errorlevel 1 ( + echo BUILD FAILED! + pause + exit /b 1 +) + +echo. +echo [3/4] Creating package... +cpack -G ZIP -C Release + +echo. +echo [4/4] Done! +echo. +echo Output: build_cmake\Release\DarkAges.exe +echo Package: build_cmake\DOOM-The-Dark-Ages-v1.0.0-Portable.zip +echo. + +cd .. +pause diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..e63a9b3907 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,224 @@ +cmake_minimum_required(VERSION 3.16) +project(DoomTheDarkAges VERSION 1.0.0 LANGUAGES C CXX) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_C_STANDARD 99) + +# Build options +option(DARKAGES_PORTABLE "Build portable standalone executable" ON) +option(DARKAGES_OPTIMIZE_T460S "Optimize for ThinkPad T460s (Intel HD 520)" ON) +option(USE_OPENGL "Use OpenGL renderer" ON) +option(USE_OPENAL "Use OpenAL for audio" ON) + +# Performance flags for T460s (Intel HD 520, Core i5-6300U) +if(DARKAGES_OPTIMIZE_T460S) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=skylake -mtune=skylake") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -mavx -mavx2") + set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG -flto -ffast-math") + set(CMAKE_C_FLAGS_RELEASE "-O3 -DNDEBUG -flto -ffast-math") + elseif(MSVC) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2") + set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /GL /GF /Gy /DNDEBUG") + set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /GL /GF /Gy /DNDEBUG") + set(CMAKE_EXE_LINKER_FLAGS_RELEASE "/LTCG /OPT:REF /OPT:ICF") + endif() +endif() + +# Portable build - static linking +if(DARKAGES_PORTABLE) + if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++") + endif() + if(WIN32) + set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>") + endif() +endif() + +# Source directories +set(NEO_DIR ${CMAKE_SOURCE_DIR}/neo) +set(BASE_DIR ${CMAKE_SOURCE_DIR}/darkages) + +# idLib sources +file(GLOB_RECURSE IDLIB_SOURCES + ${NEO_DIR}/idlib/*.cpp + ${NEO_DIR}/idlib/*.h +) + +# Renderer sources +file(GLOB RENDERER_SOURCES + ${NEO_DIR}/renderer/*.cpp + ${NEO_DIR}/renderer/*.h +) + +# Framework sources +file(GLOB FRAMEWORK_SOURCES + ${NEO_DIR}/framework/*.cpp + ${NEO_DIR}/framework/*.h +) + +# Sound sources +file(GLOB SOUND_SOURCES + ${NEO_DIR}/sound/*.cpp + ${NEO_DIR}/sound/*.h +) + +# AAS sources +file(GLOB AAS_SOURCES + ${NEO_DIR}/aas/*.cpp + ${NEO_DIR}/aas/*.h +) + +# Collision Model sources +file(GLOB CM_SOURCES + ${NEO_DIR}/cm/*.cpp + ${NEO_DIR}/cm/*.h +) + +# UI sources +file(GLOB UI_SOURCES + ${NEO_DIR}/ui/*.cpp + ${NEO_DIR}/ui/*.h +) + +# SWF sources +file(GLOB SWF_SOURCES + ${NEO_DIR}/swf/*.cpp + ${NEO_DIR}/swf/*.h +) + +# Game sources (d3xp) +file(GLOB_RECURSE GAME_SOURCES + ${NEO_DIR}/d3xp/*.cpp + ${NEO_DIR}/d3xp/*.h +) + +# Dark Ages specific sources +file(GLOB_RECURSE DARKAGES_SOURCES + ${NEO_DIR}/darkages/*.cpp + ${NEO_DIR}/darkages/*.h +) + +# System sources +if(WIN32) + file(GLOB SYS_SOURCES + ${NEO_DIR}/sys/*.cpp + ${NEO_DIR}/sys/*.h + ${NEO_DIR}/sys/win32/*.cpp + ${NEO_DIR}/sys/win32/*.h + ) + # Windows resource file with icon + set(WIN_RC_FILE ${NEO_DIR}/sys/win32/darkages.rc) +else() + file(GLOB SYS_SOURCES + ${NEO_DIR}/sys/*.cpp + ${NEO_DIR}/sys/*.h + ) + set(WIN_RC_FILE "") +endif() + +# All sources +set(ALL_SOURCES + ${IDLIB_SOURCES} + ${RENDERER_SOURCES} + ${FRAMEWORK_SOURCES} + ${SOUND_SOURCES} + ${AAS_SOURCES} + ${CM_SOURCES} + ${UI_SOURCES} + ${SWF_SOURCES} + ${GAME_SOURCES} + ${DARKAGES_SOURCES} + ${SYS_SOURCES} +) + +# Include directories +include_directories( + ${NEO_DIR} + ${NEO_DIR}/idlib + ${NEO_DIR}/d3xp + ${NEO_DIR}/darkages +) + +# Definitions +add_definitions( + -D__DOOM_DLL__ + -DGAME_DLL + -DDARKAGES_BUILD + -DGAME_VERSION="DarkAges-1.0" +) + +if(WIN32) + add_definitions(-D_WIN32 -DWIN32 -D_WINDOWS) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) +endif() + +# Find packages +if(USE_OPENGL) + find_package(OpenGL REQUIRED) + include_directories(${OPENGL_INCLUDE_DIR}) + add_definitions(-DUSE_OPENGL) +endif() + +# Executable - WIN32 flag creates a Windows GUI app (no console window) +if(WIN32) + enable_language(RC) + add_executable(DoomTheDarkAges WIN32 ${ALL_SOURCES} ${WIN_RC_FILE}) + set_target_properties(DoomTheDarkAges PROPERTIES + OUTPUT_NAME "DarkAges" + WIN32_EXECUTABLE TRUE + SUFFIX ".exe" + ) +else() + add_executable(DoomTheDarkAges ${ALL_SOURCES}) + set_target_properties(DoomTheDarkAges PROPERTIES + OUTPUT_NAME "DarkAges" + ) +endif() + +if(USE_OPENGL) + target_link_libraries(DoomTheDarkAges ${OPENGL_LIBRARIES}) +endif() + +if(WIN32) + target_link_libraries(DoomTheDarkAges + winmm + ws2_32 + iphlpapi + dbghelp + dinput8 + dxguid + dsound + xinput + ) +elseif(UNIX) + find_package(Threads REQUIRED) + target_link_libraries(DoomTheDarkAges + ${CMAKE_THREAD_LIBS_INIT} + dl + ) + if(USE_OPENAL) + find_package(PkgConfig) + pkg_check_modules(OPENAL openal) + if(OPENAL_FOUND) + target_link_libraries(DoomTheDarkAges ${OPENAL_LIBRARIES}) + target_include_directories(DoomTheDarkAges PRIVATE ${OPENAL_INCLUDE_DIRS}) + endif() + endif() +endif() + +# Installation +install(TARGETS DoomTheDarkAges DESTINATION .) +install(DIRECTORY ${BASE_DIR}/ DESTINATION darkages) +install(DIRECTORY ${CMAKE_SOURCE_DIR}/base/renderprogs DESTINATION darkages) +install(FILES ${CMAKE_SOURCE_DIR}/darkages/icon/darkages.ico DESTINATION .) + +# Package settings for portable build +set(CPACK_GENERATOR "ZIP") +set(CPACK_PACKAGE_NAME "DoomTheDarkAges") +set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}") +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "DOOM: The Dark Ages - Medieval FPS") +set(CPACK_PACKAGE_FILE_NAME "DOOM-The-Dark-Ages-v${PROJECT_VERSION}-Portable") +include(CPack) diff --git a/build_windows.sh b/build_windows.sh new file mode 100755 index 0000000000..243c71b6a5 --- /dev/null +++ b/build_windows.sh @@ -0,0 +1,58 @@ +#!/bin/bash +# ============================================================================ +# DOOM: The Dark Ages - Windows Cross-Compilation Build Script +# Builds a standalone portable EXE with icon from Linux +# ============================================================================ + +set -e + +echo "==============================================" +echo " DOOM: The Dark Ages - Windows Build" +echo "==============================================" + +BUILD_DIR="build_win64" +TOOLCHAIN="cmake/Toolchain-Windows-x86_64.cmake" + +# Clean previous build +if [ "$1" = "clean" ]; then + echo "Cleaning build directory..." + rm -rf "$BUILD_DIR" +fi + +# Create build directory +mkdir -p "$BUILD_DIR" +cd "$BUILD_DIR" + +echo "" +echo "[1/3] Configuring CMake with Windows toolchain..." +cmake .. \ + -DCMAKE_TOOLCHAIN_FILE="../$TOOLCHAIN" \ + -DCMAKE_BUILD_TYPE=Release \ + -DDARKAGES_PORTABLE=ON \ + -DDARKAGES_OPTIMIZE_T460S=ON \ + -DUSE_OPENGL=OFF \ + -DUSE_OPENAL=OFF \ + 2>&1 + +echo "" +echo "[2/3] Compiling..." +make -j$(nproc) 2>&1 + +echo "" +echo "[3/3] Packaging..." +cpack -G ZIP 2>&1 || true + +echo "" +echo "==============================================" +echo " Build Complete!" +echo "==============================================" +echo " Output: $BUILD_DIR/DarkAges.exe" +echo "==============================================" + +# Show file size +if [ -f "DarkAges.exe" ]; then + SIZE=$(du -h "DarkAges.exe" | cut -f1) + echo " EXE Size: $SIZE" +fi + +ls -la *.exe 2>/dev/null || echo " (EXE not found - check build log)" diff --git a/cmake/Toolchain-Windows-x86_64.cmake b/cmake/Toolchain-Windows-x86_64.cmake new file mode 100644 index 0000000000..797f3922d8 --- /dev/null +++ b/cmake/Toolchain-Windows-x86_64.cmake @@ -0,0 +1,29 @@ +# ============================================================================ +# DOOM: The Dark Ages - Windows x86_64 Cross-Compilation Toolchain +# For building standalone portable EXE from Linux +# ============================================================================ + +set(CMAKE_SYSTEM_NAME Windows) +set(CMAKE_SYSTEM_PROCESSOR x86_64) + +# Compilers +set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) +set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++) +set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres) + +# Target environment +set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +# Static linking for portable build +set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static -static-libgcc -static-libstdc++") + +# Windows-specific +add_definitions(-D_WIN32 -DWIN32 -D_WINDOWS) +add_definitions(-DDARKAGES_BUILD) + +# MinGW compatibility flags +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -Wno-unknown-pragmas -Wno-narrowing -Wno-sign-compare -Wno-write-strings -Wno-unused-variable -Wno-unused-but-set-variable -Wno-multichar") +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-variable") diff --git a/darkages/cfg/darkages_default.cfg b/darkages/cfg/darkages_default.cfg new file mode 100644 index 0000000000..567ef3e40b --- /dev/null +++ b/darkages/cfg/darkages_default.cfg @@ -0,0 +1,177 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Default Configuration +// Optimized for ThinkPad T460s (Intel HD 520) at 120+ FPS +// ============================================================================ + +// ============================================================================ +// VIDEO SETTINGS (Optimized for Intel HD 520) +// ============================================================================ + +// Resolution and display +seta r_fullscreen "1" +seta r_vidMode "-1" +seta r_customWidth "1920" +seta r_customHeight "1080" +seta r_displayRefresh "120" +seta r_swapInterval "0" + +// Dynamic resolution scaling (key for 120+ FPS) +seta r_dynamicResolution "1" +seta r_dynamicResMin "0.65" +seta r_dynamicResMax "1.0" +seta r_dynamicResTarget "120" + +// Rendering +seta r_renderer "best" +seta r_multiSamples "0" +seta r_forceScreenWidthCentimeters "0" +seta r_gamma "1.1" +seta r_brightness "1.05" + +// Shadows (reduced for performance on Intel HD) +seta r_shadows "1" +seta r_shadowMapSize "512" +seta r_maxShadowLights "2" +seta r_shadowDistance "512" +seta r_softShadows "0" +seta r_stencilShadows "0" + +// Lighting (reduced for Intel HD) +seta r_maxDynamicLights "4" +seta r_ambientOcclusion "0" +seta r_volumetricLighting "0" + +// Textures +seta r_maxTextureSize "1024" +seta r_useCompression "1" +seta r_skipMipMaps "0" + +// Anti-aliasing (lightweight FXAA) +seta r_fxaa "1" +seta r_fxaaQuality "1" + +// Post-processing (minimal) +seta r_bloom "1" +seta r_bloomIntensity "0.3" +seta r_motionBlur "0" +seta r_filmGrain "0" +seta r_chromaticAberration "0" +seta r_vignette "1" +seta r_vignetteIntensity "0.15" + +// LOD (aggressive for performance) +seta r_lodDistance1 "128" +seta r_lodDistance2 "256" +seta r_lodDistance3 "512" +seta r_maxDecals "32" + +// Effects +seta r_maxParticles "256" +seta r_particleLODDistance "256" + +// Atmosphere +seta r_fogEnable "1" +seta r_fogDensity "0.003" + +// ============================================================================ +// AUDIO SETTINGS +// ============================================================================ + +seta s_volume_dB "0" +seta s_musicVolume_dB "-5" +seta s_channelCount "6" +seta s_device "default" + +// ============================================================================ +// INPUT SETTINGS (Keyboard + Mouse) +// ============================================================================ + +// Movement +bind "w" "_forward" +bind "s" "_back" +bind "a" "_moveleft" +bind "d" "_moveright" +bind "SPACE" "_jump" +bind "CTRL" "_crouch" +bind "SHIFT" "_speed" + +// Combat +bind "MOUSE1" "_attack" +bind "MOUSE2" "_block" +bind "q" "_dodge" +bind "e" "_interact" +bind "r" "_reload" +bind "f" "_heavyAttack" + +// Weapons +bind "1" "_impulse0" +bind "2" "_impulse1" +bind "3" "_impulse2" +bind "4" "_impulse3" +bind "5" "_impulse4" +bind "6" "_impulse5" +bind "7" "_impulse6" +bind "8" "_impulse7" +bind "MWHEELUP" "_impulse14" +bind "MWHEELDOWN" "_impulse15" + +// System +bind "ESCAPE" "_impulse18" +bind "TAB" "_impulse19" +bind "F5" "savegame quick" +bind "F9" "loadgame quick" +bind "F12" "screenshot" + +// Mouse +seta sensitivity "3.5" +seta m_smooth "1" +seta in_mouse "1" + +// ============================================================================ +// GAME SETTINGS +// ============================================================================ + +// Player +seta g_fov "100" +seta g_showHud "1" +seta g_crosshair "1" + +// Combat +seta da_comboWindow "0.8" +seta da_parryWindow "0.3" +seta da_staminaRegenRate "15" +seta da_shieldBlockArc "60" +seta da_backstabMultiplier "3" +seta da_gloryKillEnabled "1" + +// Difficulty +seta da_difficulty "1" + +// UI +seta da_showComboCounter "1" +seta da_showStaminaBar "1" +seta da_showDamageNumbers "1" +seta da_subtitles "1" + +// Performance HUD +seta com_showFPS "1" +seta com_showMemoryUsage "0" + +// ============================================================================ +// NETWORK (Disabled for single-player focus) +// ============================================================================ + +seta net_serverDedicated "0" +seta net_allowCheats "0" + +// ============================================================================ +// DARK AGES SPECIFIC +// ============================================================================ + +seta da_gameName "DOOM: The Dark Ages" +seta da_version "1.0.0" +seta da_maxSaveSlots "20" +seta da_autoSave "1" +seta da_autoSaveInterval "300" +seta da_showLevelStats "1" +seta da_enableTutorial "1" diff --git a/darkages/def/darkages_enemies.def b/darkages/def/darkages_enemies.def new file mode 100644 index 0000000000..30ff2a8045 --- /dev/null +++ b/darkages/def/darkages_enemies.def @@ -0,0 +1,563 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Enemy Definitions +// Medieval-themed demons and undead warriors +// ============================================================================ + +// ============================================================================ +// ENEMY: UNDEAD SOLDIER +// Basic skeleton warrior, common throughout all levels +// ============================================================================ +entityDef monster_darkages_undead_soldier { + "inherit" "monster_base" + "editor_color" "1 .5 0" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 72" + "editor_usage" "Undead Soldier - basic skeleton warrior" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_undead_soldier" + "model" "models/monsters/undead_soldier/undead_soldier.md5mesh" + "anim" "af_pose" + "ragdoll" "undead_soldier" + "size" "32 32 72" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "80" + "melee_range" "48" + + "def_attack_melee" "damage_undead_sword" + "attack_melee_rate" "1.2" + + "bone_focus" "Head" + "bone_leftEye" "Head" + "bone_rightEye" "Head" + + "look_min" "-90 -125 0" + "look_max" "25 125 0" + "look_joint Waist" "0.4 0.4 0" + "look_joint Head" "0.6 0.6 0" + + "damage_zone head" "*neck" + "damage_zone chest" "*waist -*Ruparm -*Luparm -*neck" + "damage_zone left_arm" "*Luparm" + "damage_zone right_arm" "*Ruparm" + "damage_zone legs" "*Hips origin Body" + "damage_scale head" "2" + + "snd_sight" "undead_sight" + "snd_idle" "undead_idle" + "snd_pain" "undead_pain" + "snd_death" "undead_death" + "snd_footstep" "undead_footstep" + "snd_melee" "undead_melee" +} + +entityDef damage_undead_sword { + "damage" "15" + "kickDir" "1 0 0" + "mtr_blob" "genericDamage" + "push" "2000" +} + +// ============================================================================ +// ENEMY: DARK KNIGHT +// Armored knight demon, mid-tier enemy with shield +// ============================================================================ +entityDef monster_darkages_dark_knight { + "inherit" "monster_base" + "editor_color" ".6 .2 .2" + "editor_mins" "-20 -20 0" + "editor_maxs" "20 20 80" + "editor_usage" "Dark Knight - armored demon knight with shield" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_dark_knight" + "size" "40 40 80" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "300" + "armor" "100" + "melee_range" "56" + + "def_attack_melee" "damage_darkknight_sword" + "def_attack_shield" "damage_darkknight_shield" + "attack_melee_rate" "1.5" + "block_chance" "0.4" + "block_damage_reduction" "0.6" + + "damage_zone head" "*neck" + "damage_scale head" "1.5" + "damage_scale chest" "0.7" + + "snd_sight" "darkknight_sight" + "snd_idle" "darkknight_idle" + "snd_pain" "darkknight_pain" + "snd_death" "darkknight_death" + "snd_block" "darkknight_block" + "snd_attack" "darkknight_attack" +} + +entityDef damage_darkknight_sword { + "damage" "35" + "kickDir" "1 0 0" + "push" "5000" +} + +entityDef damage_darkknight_shield { + "damage" "20" + "kickDir" "1 0 0" + "push" "10000" + "stun_duration" "800" +} + +// ============================================================================ +// ENEMY: HELL HOUND +// Fast demonic beast, attacks in packs +// ============================================================================ +entityDef monster_darkages_hellhound { + "inherit" "monster_base" + "editor_color" "1 .3 0" + "editor_mins" "-24 -24 0" + "editor_maxs" "24 24 40" + "editor_usage" "Hell Hound - fast demonic beast" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_hellhound" + "size" "48 48 40" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "60" + "melee_range" "48" + + "def_attack_melee" "damage_hellhound_bite" + "attack_melee_rate" "0.6" + "fly_speed" "0" + "run_speed" "320" + "walk_speed" "160" + + "snd_sight" "hellhound_sight" + "snd_idle" "hellhound_idle" + "snd_pain" "hellhound_pain" + "snd_death" "hellhound_death" + "snd_attack" "hellhound_bite" +} + +entityDef damage_hellhound_bite { + "damage" "25" + "kickDir" "0 0 1" + "push" "3000" +} + +// ============================================================================ +// ENEMY: PLAGUE SORCERER +// Ranged magic caster, summons undead +// ============================================================================ +entityDef monster_darkages_sorcerer { + "inherit" "monster_base" + "editor_color" ".5 0 .5" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 72" + "editor_usage" "Plague Sorcerer - ranged magic caster" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_sorcerer" + "size" "32 32 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "150" + "melee_range" "32" + + "def_attack_ranged" "projectile_plague_bolt" + "attack_ranged_rate" "2.0" + "attack_ranged_range" "1024" + "def_summon" "monster_darkages_undead_soldier" + "summon_max" "3" + "summon_cooldown" "15000" + + "snd_sight" "sorcerer_sight" + "snd_cast" "sorcerer_cast" + "snd_death" "sorcerer_death" + "snd_summon" "sorcerer_summon" +} + +entityDef projectile_plague_bolt { + "spawnclass" "idProjectile" + "def_damage" "damage_plague_bolt" + "velocity" "800 0 0" + "fuse" "5" + "detonate_on_world" "1" + "detonate_on_actor" "1" + "light_color" "0.3 1 0" + "light_radius" "120" +} + +entityDef damage_plague_bolt { + "damage" "20" + "push" "2000" + "dot_damage" "5" + "dot_duration" "3000" + "dot_interval" "500" +} + +// ============================================================================ +// ENEMY: SIEGE DEMON +// Large demon, mini-boss tier +// ============================================================================ +entityDef monster_darkages_siege_demon { + "inherit" "monster_base" + "editor_color" ".8 0 0" + "editor_mins" "-48 -48 0" + "editor_maxs" "48 48 120" + "editor_usage" "Siege Demon - large demon mini-boss" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_siege_demon" + "size" "96 96 120" + "use_aas" "aas96" + "team" "1" + "rank" "2" + "health" "1500" + "armor" "200" + "melee_range" "96" + + "def_attack_melee" "damage_siege_smash" + "def_attack_ranged" "projectile_siege_boulder" + "attack_melee_rate" "2.5" + "attack_ranged_rate" "4.0" + + "snd_sight" "siege_demon_sight" + "snd_pain" "siege_demon_pain" + "snd_death" "siege_demon_death" + "snd_footstep" "siege_demon_footstep" + "snd_attack" "siege_demon_attack" +} + +entityDef damage_siege_smash { + "damage" "80" + "kickDir" "0 0 1" + "push" "20000" + "radius" "128" +} + +entityDef projectile_siege_boulder { + "spawnclass" "idProjectile" + "def_damage" "damage_siege_boulder" + "def_splash_damage" "damage_siege_boulder_splash" + "velocity" "600 0 0" + "gravity" "500" + "fuse" "8" + "mass" "500" + "detonate_on_world" "1" + "detonate_on_actor" "1" +} + +entityDef damage_siege_boulder { + "damage" "100" + "push" "15000" +} + +entityDef damage_siege_boulder_splash { + "damage" "40" + "radius" "160" + "push" "8000" +} + +// ============================================================================ +// ENEMY: WRAITH +// Flying ghost enemy, hard to hit +// ============================================================================ +entityDef monster_darkages_wraith { + "inherit" "monster_base" + "editor_color" ".3 .3 .8" + "editor_mins" "-16 -16 -16" + "editor_maxs" "16 16 72" + "editor_usage" "Wraith - flying undead spirit" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_wraith" + "size" "32 32 72" + "use_aas" "aas48" + "team" "1" + "rank" "1" + "health" "100" + "fly_speed" "200" + "fly_bob_strength" "40" + "fly_bob_vert" "2" + "fly_bob_horz" "4" + + "def_attack_melee" "damage_wraith_touch" + "melee_range" "32" + + "snd_sight" "wraith_sight" + "snd_idle" "wraith_idle" + "snd_death" "wraith_death" + "snd_attack" "wraith_attack" +} + +entityDef damage_wraith_touch { + "damage" "30" + "push" "1000" + "drain_health" "10" +} + +// ============================================================================ +// ENEMY: FIRE DRAKE (Dragon) +// Flying fire-breathing dragon, rare powerful enemy +// ============================================================================ +entityDef monster_darkages_firedrake { + "inherit" "monster_base" + "editor_color" "1 .5 0" + "editor_mins" "-64 -64 0" + "editor_maxs" "64 64 80" + "editor_usage" "Fire Drake - flying fire dragon" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_firedrake" + "size" "128 128 80" + "use_aas" "aas96" + "team" "1" + "rank" "2" + "health" "2000" + "fly_speed" "300" + + "def_attack_ranged" "projectile_drakefire" + "def_attack_melee" "damage_drake_claw" + "attack_ranged_rate" "3.0" + "melee_range" "80" + + "snd_sight" "firedrake_sight" + "snd_pain" "firedrake_pain" + "snd_death" "firedrake_death" + "snd_breath" "firedrake_breath" +} + +entityDef projectile_drakefire { + "spawnclass" "idProjectile" + "def_damage" "damage_drakefire" + "def_splash_damage" "damage_drakefire_splash" + "velocity" "900 0 0" + "fuse" "4" + "detonate_on_world" "1" + "detonate_on_actor" "1" + "light_color" "1 0.5 0" + "light_radius" "256" + "model_fly" "drakefire_projectile.prt" +} + +entityDef damage_drakefire { + "damage" "60" + "push" "5000" + "dot_damage" "10" + "dot_duration" "5000" + "dot_interval" "500" +} + +entityDef damage_drakefire_splash { + "damage" "30" + "radius" "200" + "push" "3000" +} + +entityDef damage_drake_claw { + "damage" "50" + "push" "12000" +} + +// ============================================================================ +// BOSS: THE DARK LORD +// Final boss of the game +// ============================================================================ +entityDef monster_darkages_darklord { + "inherit" "monster_base" + "editor_color" "1 0 0" + "editor_mins" "-64 -64 0" + "editor_maxs" "64 64 160" + "editor_usage" "The Dark Lord - final boss" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_darklord" + "size" "128 128 160" + "use_aas" "aas96" + "team" "1" + "rank" "3" + "health" "10000" + "armor" "500" + "melee_range" "96" + + "def_attack_melee" "damage_darklord_sword" + "def_attack_ranged" "projectile_darklord_hellfire" + "def_attack_ground" "damage_darklord_groundpound" + "attack_melee_rate" "1.8" + "attack_ranged_rate" "3.0" + + "phase2_health_threshold" "0.5" + "phase3_health_threshold" "0.2" + + "snd_sight" "darklord_sight" + "snd_pain" "darklord_pain" + "snd_death" "darklord_death" + "snd_taunt" "darklord_taunt" + "snd_phase_change" "darklord_phase" +} + +entityDef damage_darklord_sword { + "damage" "60" + "push" "15000" +} + +entityDef projectile_darklord_hellfire { + "spawnclass" "idProjectile" + "def_damage" "damage_darklord_hellfire" + "def_splash_damage" "damage_darklord_hellfire_splash" + "velocity" "1000 0 0" + "fuse" "6" + "detonate_on_world" "1" + "detonate_on_actor" "1" + "light_color" "1 0 0" + "light_radius" "320" +} + +entityDef damage_darklord_hellfire { + "damage" "80" + "push" "10000" +} + +entityDef damage_darklord_hellfire_splash { + "damage" "40" + "radius" "256" + "push" "6000" +} + +entityDef damage_darklord_groundpound { + "damage" "100" + "radius" "300" + "push" "20000" + "stun_duration" "2000" +} + +// ============================================================================ +// BOSS: THE DRAGON KING +// Mid-game boss - massive dragon +// ============================================================================ +entityDef monster_darkages_dragonking { + "inherit" "monster_base" + "editor_usage" "Dragon King - mid-game boss" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_dragonking" + "size" "192 192 128" + "use_aas" "aas96" + "team" "1" + "rank" "3" + "health" "8000" + "armor" "300" + "fly_speed" "250" + + "def_attack_breath" "projectile_dragonking_breath" + "def_attack_melee" "damage_dragonking_claw" + "def_attack_tail" "damage_dragonking_tail" + + "snd_sight" "dragonking_sight" + "snd_roar" "dragonking_roar" + "snd_death" "dragonking_death" +} + +entityDef damage_dragonking_claw { + "damage" "75" + "push" "18000" +} + +entityDef damage_dragonking_tail { + "damage" "50" + "radius" "200" + "push" "25000" +} + +entityDef projectile_dragonking_breath { + "spawnclass" "idProjectile" + "def_damage" "damage_dragonking_breath" + "velocity" "800 0 0" + "fuse" "3" + "spread" "15" +} + +entityDef damage_dragonking_breath { + "damage" "40" + "radius" "160" + "dot_damage" "15" + "dot_duration" "4000" +} + +// ============================================================================ +// ENEMY: CULTIST (Human ranged) +// Cult members serving the Dark Lord +// ============================================================================ +entityDef monster_darkages_cultist { + "inherit" "monster_base" + "editor_usage" "Dark Cultist - human servant of darkness" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_cultist" + "size" "32 32 72" + "use_aas" "aas48" + "team" "1" + "rank" "0" + "health" "40" + + "def_attack_ranged" "projectile_cult_bolt" + "attack_ranged_rate" "1.5" + "attack_ranged_range" "768" + + "snd_sight" "cultist_sight" + "snd_death" "cultist_death" +} + +entityDef projectile_cult_bolt { + "spawnclass" "idProjectile" + "def_damage" "damage_cult_bolt" + "velocity" "600 0 0" + "fuse" "4" +} + +entityDef damage_cult_bolt { + "damage" "12" + "push" "1500" +} + +// ============================================================================ +// ENEMY: IRON GOLEM +// Animated armor construct +// ============================================================================ +entityDef monster_darkages_irongolem { + "inherit" "monster_base" + "editor_usage" "Iron Golem - animated armor construct" + + "spawnclass" "idAI" + "scriptobject" "monster_darkages_irongolem" + "size" "64 64 96" + "use_aas" "aas96" + "team" "1" + "rank" "2" + "health" "800" + "armor" "400" + "melee_range" "72" + + "def_attack_melee" "damage_golem_fist" + "attack_melee_rate" "2.0" + "resistance_projectile" "0.5" + + "snd_sight" "golem_sight" + "snd_pain" "golem_pain" + "snd_death" "golem_death" + "snd_footstep" "golem_footstep" +} + +entityDef damage_golem_fist { + "damage" "55" + "push" "15000" + "stun_duration" "500" +} diff --git a/darkages/def/darkages_items.def b/darkages/def/darkages_items.def new file mode 100644 index 0000000000..922d607ba2 --- /dev/null +++ b/darkages/def/darkages_items.def @@ -0,0 +1,264 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Item and Pickup Definitions +// ============================================================================ + +// ============================================================================ +// HEALTH ITEMS +// ============================================================================ +entityDef item_darkages_health_small { + "editor_color" ".3 .3 1" + "editor_mins" "-8 -8 0" + "editor_maxs" "8 8 16" + "editor_usage" "Minor Healing Potion (+15 health)" + + "spawnclass" "idItem" + "model" "models/items/health_potion_small.lwo" + "size" "16 16 16" + "inv_name" "Minor Healing Potion" + "inv_health" "15" + "snd_acquire" "potion_pickup" +} + +entityDef item_darkages_health_medium { + "editor_usage" "Healing Potion (+50 health)" + + "spawnclass" "idItem" + "model" "models/items/health_potion_medium.lwo" + "size" "16 16 24" + "inv_name" "Healing Potion" + "inv_health" "50" + "snd_acquire" "potion_pickup" +} + +entityDef item_darkages_health_large { + "editor_usage" "Greater Healing Potion (+100 health)" + + "spawnclass" "idItem" + "model" "models/items/health_potion_large.lwo" + "size" "16 16 32" + "inv_name" "Greater Healing Potion" + "inv_health" "100" + "snd_acquire" "potion_pickup_large" +} + +entityDef item_darkages_health_mega { + "editor_usage" "Elixir of Life (+200 health, exceeds max)" + + "spawnclass" "idItem" + "model" "models/items/elixir.lwo" + "size" "16 16 32" + "inv_name" "Elixir of Life" + "inv_health" "200" + "inv_health_overflow" "1" + "snd_acquire" "elixir_pickup" +} + +// ============================================================================ +// ARMOR ITEMS +// ============================================================================ +entityDef item_darkages_armor_shard { + "editor_usage" "Armor Shard (+5 armor)" + + "spawnclass" "idItem" + "model" "models/items/armor_shard.lwo" + "size" "16 16 16" + "inv_name" "Armor Shard" + "inv_armor" "5" + "snd_acquire" "armor_pickup" +} + +entityDef item_darkages_armor_chainmail { + "editor_usage" "Chainmail (+50 armor)" + + "spawnclass" "idItem" + "model" "models/items/chainmail.lwo" + "size" "32 32 32" + "inv_name" "Chainmail" + "inv_armor" "50" + "snd_acquire" "armor_pickup_heavy" +} + +entityDef item_darkages_armor_plate { + "editor_usage" "Plate Armor (+100 armor)" + + "spawnclass" "idItem" + "model" "models/items/plate_armor.lwo" + "size" "32 32 48" + "inv_name" "Plate Armor" + "inv_armor" "100" + "snd_acquire" "armor_pickup_heavy" +} + +entityDef item_darkages_armor_dragonscale { + "editor_usage" "Dragon Scale Armor (+200 armor)" + + "spawnclass" "idItem" + "model" "models/items/dragonscale_armor.lwo" + "size" "32 32 48" + "inv_name" "Dragon Scale Armor" + "inv_armor" "200" + "inv_armor_overflow" "1" + "snd_acquire" "armor_pickup_legendary" +} + +// ============================================================================ +// AMMO ITEMS +// ============================================================================ +entityDef item_darkages_bolts_small { + "editor_usage" "Crossbow Bolts (x5)" + + "spawnclass" "idItem" + "model" "models/items/bolts_small.lwo" + "size" "16 16 16" + "inv_name" "Crossbow Bolts" + "inv_ammo_bolts" "5" + "snd_acquire" "ammo_pickup" +} + +entityDef item_darkages_bolts_large { + "editor_usage" "Crossbow Bolt Quiver (x20)" + + "spawnclass" "idItem" + "model" "models/items/bolts_large.lwo" + "size" "16 16 24" + "inv_name" "Bolt Quiver" + "inv_ammo_bolts" "20" + "snd_acquire" "ammo_pickup" +} + +entityDef item_darkages_throwaxes { + "editor_usage" "Throwing Axes (x3)" + + "spawnclass" "idItem" + "model" "models/items/throwaxes.lwo" + "size" "16 16 16" + "inv_name" "Throwing Axes" + "inv_ammo_throwaxes" "3" + "snd_acquire" "ammo_pickup" +} + +entityDef item_darkages_hellfire_ammo { + "editor_usage" "Hellfire Essence (x50)" + + "spawnclass" "idItem" + "model" "models/items/hellfire_essence.lwo" + "size" "16 16 24" + "inv_name" "Hellfire Essence" + "inv_ammo_hellfire" "50" + "snd_acquire" "hellfire_pickup" +} + +// ============================================================================ +// POWERUP ITEMS +// ============================================================================ +entityDef item_darkages_berserk { + "editor_usage" "Blood Rage - temporary berserk mode" + + "spawnclass" "idItem" + "model" "models/items/blood_rage.lwo" + "size" "16 16 32" + "inv_name" "Blood Rage" + "inv_powerup" "berserk" + "inv_powerup_time" "30000" + "snd_acquire" "powerup_berserk" +} + +entityDef item_darkages_invulnerability { + "editor_usage" "Divine Shield - temporary invulnerability" + + "spawnclass" "idItem" + "model" "models/items/divine_shield.lwo" + "size" "16 16 32" + "inv_name" "Divine Shield" + "inv_powerup" "invulnerability" + "inv_powerup_time" "15000" + "snd_acquire" "powerup_divine" +} + +entityDef item_darkages_haste { + "editor_usage" "Speed Rune - temporary speed boost" + + "spawnclass" "idItem" + "model" "models/items/speed_rune.lwo" + "size" "16 16 24" + "inv_name" "Speed Rune" + "inv_powerup" "haste" + "inv_powerup_time" "20000" + "snd_acquire" "powerup_haste" +} + +entityDef item_darkages_strength { + "editor_usage" "Demon Strength - double damage" + + "spawnclass" "idItem" + "model" "models/items/demon_strength.lwo" + "size" "16 16 24" + "inv_name" "Demon Strength" + "inv_powerup" "quad" + "inv_powerup_time" "20000" + "snd_acquire" "powerup_strength" +} + +// ============================================================================ +// KEY ITEMS +// ============================================================================ +entityDef item_darkages_key_red { + "editor_usage" "Blood Key - opens blood-sealed doors" + "spawnclass" "idItem" + "size" "16 16 16" + "inv_name" "Blood Key" + "inv_item" "1" + "inv_icon" "guis/assets/hud/key_red" + "snd_acquire" "key_pickup" +} + +entityDef item_darkages_key_blue { + "editor_usage" "Frost Key - opens ice-sealed doors" + "spawnclass" "idItem" + "size" "16 16 16" + "inv_name" "Frost Key" + "inv_item" "1" + "inv_icon" "guis/assets/hud/key_blue" + "snd_acquire" "key_pickup" +} + +entityDef item_darkages_key_gold { + "editor_usage" "Royal Key - opens throne room doors" + "spawnclass" "idItem" + "size" "16 16 16" + "inv_name" "Royal Key" + "inv_item" "1" + "inv_icon" "guis/assets/hud/key_gold" + "snd_acquire" "key_pickup_legendary" +} + +entityDef item_darkages_key_skull { + "editor_usage" "Skull Key - opens underworld gates" + "spawnclass" "idItem" + "size" "16 16 16" + "inv_name" "Skull Key" + "inv_item" "1" + "inv_icon" "guis/assets/hud/key_skull" + "snd_acquire" "key_pickup" +} + +// ============================================================================ +// COLLECTIBLES / SECRETS +// ============================================================================ +entityDef item_darkages_rune_fragment { + "editor_usage" "Ancient Rune Fragment - collectible" + "spawnclass" "idItem" + "size" "16 16 16" + "inv_name" "Ancient Rune Fragment" + "inv_item" "1" + "snd_acquire" "rune_pickup" +} + +entityDef item_darkages_soul_essence { + "editor_usage" "Soul Essence - upgrade currency" + "spawnclass" "idItem" + "size" "8 8 16" + "inv_name" "Soul Essence" + "inv_item" "1" + "snd_acquire" "soul_pickup" +} diff --git a/darkages/def/darkages_maps.def b/darkages/def/darkages_maps.def new file mode 100644 index 0000000000..2785b2d65a --- /dev/null +++ b/darkages/def/darkages_maps.def @@ -0,0 +1,403 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Campaign Map Definitions +// 25 levels across 5 acts for 30+ hours of gameplay +// ============================================================================ + +// ============================================================================ +// ACT I: THE FALLEN KINGDOM (Levels 1-5) +// Medieval castle and village under siege +// ============================================================================ + +entityDef map_darkages_01_burning_village { + "name" "The Burning Village" + "act" "Act I: The Fallen Kingdom" + "level_number" "1" + "description" "Your village burns as the Dark Lord's forces attack. Fight through the streets and reach the castle." + "map" "maps/darkages/da01_burning_village" + "objectives" "Survive the attack;Find the castle armory;Escape the village" + "music" "music/darkages/burning_village" + "ambient" "sound/ambient/fire_village" + "sky" "textures/darkages/sky_burning" + "fog_color" "0.6 0.3 0.1" + "fog_distance" "2000" + "difficulty_enemies" "12" + "estimated_time" "45" + "secrets" "3" + "next_map" "maps/darkages/da02_castle_siege" +} + +entityDef map_darkages_02_castle_siege { + "name" "Castle Under Siege" + "act" "Act I: The Fallen Kingdom" + "level_number" "2" + "description" "Defend the castle walls from waves of undead. Man the catapults and hold the gates." + "map" "maps/darkages/da02_castle_siege" + "objectives" "Defend the outer wall;Man the eastern catapult;Seal the breach;Protect the throne room" + "music" "music/darkages/castle_siege" + "difficulty_enemies" "25" + "estimated_time" "60" + "secrets" "4" + "boss" "none" + "next_map" "maps/darkages/da03_kings_crypt" +} + +entityDef map_darkages_03_kings_crypt { + "name" "The King's Crypt" + "act" "Act I: The Fallen Kingdom" + "level_number" "3" + "description" "Descend into the royal crypts beneath the castle. The dead do not rest easily." + "map" "maps/darkages/da03_kings_crypt" + "objectives" "Enter the crypts;Find the Royal Sword;Defeat the Crypt Guardian;Escape the collapsing tomb" + "music" "music/darkages/kings_crypt" + "ambient" "sound/ambient/crypt" + "difficulty_enemies" "20" + "estimated_time" "50" + "secrets" "5" + "next_map" "maps/darkages/da04_forest_of_shadows" +} + +entityDef map_darkages_04_forest_of_shadows { + "name" "Forest of Shadows" + "act" "Act I: The Fallen Kingdom" + "level_number" "4" + "description" "A cursed forest where trees whisper and shadows move. Hell Hounds lurk between ancient ruins." + "map" "maps/darkages/da04_forest_of_shadows" + "objectives" "Navigate the cursed forest;Find the Druid's sanctuary;Cleanse the corrupted shrine;Reach the mountain pass" + "music" "music/darkages/forest_shadows" + "ambient" "sound/ambient/forest_cursed" + "fog_color" "0.1 0.15 0.1" + "fog_distance" "800" + "difficulty_enemies" "18" + "estimated_time" "55" + "secrets" "6" + "next_map" "maps/darkages/da05_mountain_pass" +} + +entityDef map_darkages_05_mountain_pass { + "name" "The Mountain Pass" + "act" "Act I: The Fallen Kingdom" + "level_number" "5" + "description" "Cross the treacherous mountain pass. A dragon guards the path to the Dark Lands." + "map" "maps/darkages/da05_mountain_pass" + "objectives" "Climb the mountain;Cross the bridge of bones;Defeat the Fire Drake" + "music" "music/darkages/mountain_pass" + "difficulty_enemies" "15" + "estimated_time" "70" + "secrets" "4" + "boss" "monster_darkages_firedrake" + "next_map" "maps/darkages/da06_dark_cathedral" +} + +// ============================================================================ +// ACT II: THE DARK LANDS (Levels 6-10) +// Corrupted wasteland and demonic architecture +// ============================================================================ + +entityDef map_darkages_06_dark_cathedral { + "name" "The Dark Cathedral" + "act" "Act II: The Dark Lands" + "level_number" "6" + "description" "A massive cathedral corrupted by demonic influence. Cultists perform dark rituals within." + "map" "maps/darkages/da06_dark_cathedral" + "objectives" "Enter the cathedral;Stop the ritual;Find the Blood Key;Descend to the catacombs" + "music" "music/darkages/dark_cathedral" + "difficulty_enemies" "22" + "estimated_time" "65" + "secrets" "5" + "next_map" "maps/darkages/da07_plague_town" +} + +entityDef map_darkages_07_plague_town { + "name" "Plague Town" + "act" "Act II: The Dark Lands" + "level_number" "7" + "description" "A town ravaged by demonic plague. The Plague Sorcerers spread death through the streets." + "map" "maps/darkages/da07_plague_town" + "objectives" "Navigate the plagued streets;Destroy the plague sources;Defeat the Plague Lord;Free the survivors" + "music" "music/darkages/plague_town" + "fog_color" "0.2 0.3 0.1" + "fog_distance" "600" + "difficulty_enemies" "28" + "estimated_time" "70" + "secrets" "4" + "next_map" "maps/darkages/da08_iron_fortress" +} + +entityDef map_darkages_08_iron_fortress { + "name" "The Iron Fortress" + "act" "Act II: The Dark Lands" + "level_number" "8" + "description" "A massive fortress of black iron. Iron Golems patrol the corridors." + "map" "maps/darkages/da08_iron_fortress" + "objectives" "Infiltrate the fortress;Disable the forge;Destroy the Golem Master;Claim the War Hammer" + "music" "music/darkages/iron_fortress" + "difficulty_enemies" "20" + "estimated_time" "75" + "secrets" "6" + "next_map" "maps/darkages/da09_bone_wastes" +} + +entityDef map_darkages_09_bone_wastes { + "name" "The Bone Wastes" + "act" "Act II: The Dark Lands" + "level_number" "9" + "description" "A vast desert of bones and ash. Ancient battlefields where armies died long ago." + "map" "maps/darkages/da09_bone_wastes" + "objectives" "Cross the wastelands;Find the buried temple;Defeat the Bone Colossus;Reach the Gate of Sorrow" + "music" "music/darkages/bone_wastes" + "difficulty_enemies" "24" + "estimated_time" "60" + "secrets" "5" + "next_map" "maps/darkages/da10_siege_demon_lair" +} + +entityDef map_darkages_10_siege_demon_lair { + "name" "Siege Demon's Lair" + "act" "Act II: The Dark Lands" + "level_number" "10" + "description" "The lair of the massive Siege Demons. Face a gauntlet of these towering monsters." + "map" "maps/darkages/da10_siege_demon_lair" + "objectives" "Enter the demon lair;Survive the gauntlet;Defeat the Siege Lord" + "music" "music/darkages/siege_demon_lair" + "difficulty_enemies" "16" + "estimated_time" "80" + "secrets" "4" + "boss" "monster_darkages_siege_demon" + "next_map" "maps/darkages/da11_frozen_depths" +} + +// ============================================================================ +// ACT III: THE UNDERWORLD (Levels 11-15) +// Deep underground caverns and demonic realms +// ============================================================================ + +entityDef map_darkages_11_frozen_depths { + "name" "The Frozen Depths" + "act" "Act III: The Underworld" + "level_number" "11" + "description" "Ice-covered caverns deep beneath the earth. The cold bites as fiercely as the creatures within." + "map" "maps/darkages/da11_frozen_depths" + "objectives" "Descend into the ice caves;Find the Frost Key;Defeat the Ice Wraiths;Cross the frozen lake" + "music" "music/darkages/frozen_depths" + "fog_color" "0.2 0.25 0.4" + "fog_distance" "1000" + "difficulty_enemies" "20" + "estimated_time" "55" + "secrets" "5" + "next_map" "maps/darkages/da12_lava_forge" +} + +entityDef map_darkages_12_lava_forge { + "name" "The Lava Forge" + "act" "Act III: The Underworld" + "level_number" "12" + "description" "An ancient forge built over rivers of lava. Here the Dark Lord forges his armies." + "map" "maps/darkages/da12_lava_forge" + "objectives" "Navigate the forge;Destroy the weapon molds;Claim the Hellfire Staff;Escape the eruption" + "music" "music/darkages/lava_forge" + "difficulty_enemies" "22" + "estimated_time" "65" + "secrets" "4" + "next_map" "maps/darkages/da13_tomb_of_heroes" +} + +entityDef map_darkages_13_tomb_of_heroes { + "name" "Tomb of Fallen Heroes" + "act" "Act III: The Underworld" + "level_number" "13" + "description" "An ancient tomb where legendary warriors were laid to rest. Now corrupted, they rise again." + "map" "maps/darkages/da13_tomb_of_heroes" + "objectives" "Enter the hero's tomb;Defeat the risen champions;Claim the Holy Shield;Seal the corruption" + "music" "music/darkages/tomb_heroes" + "difficulty_enemies" "18" + "estimated_time" "60" + "secrets" "7" + "next_map" "maps/darkages/da14_crystal_caverns" +} + +entityDef map_darkages_14_crystal_caverns { + "name" "Crystal Caverns" + "act" "Act III: The Underworld" + "level_number" "14" + "description" "Vast caverns filled with enormous crystals that pulse with demonic energy." + "map" "maps/darkages/da14_crystal_caverns" + "objectives" "Navigate the crystal maze;Destroy the dark crystals;Find the soul gateway;Activate the portal" + "music" "music/darkages/crystal_caverns" + "difficulty_enemies" "24" + "estimated_time" "70" + "secrets" "5" + "next_map" "maps/darkages/da15_dragon_den" +} + +entityDef map_darkages_15_dragon_den { + "name" "The Dragon's Den" + "act" "Act III: The Underworld" + "level_number" "15" + "description" "The lair of the Dragon King. A vast cavern of fire and bone." + "map" "maps/darkages/da15_dragon_den" + "objectives" "Enter the Dragon's den;Survive the drake swarm;Defeat the Dragon King" + "music" "music/darkages/dragon_den" + "difficulty_enemies" "15" + "estimated_time" "90" + "secrets" "4" + "boss" "monster_darkages_dragonking" + "next_map" "maps/darkages/da16_ruined_abbey" +} + +// ============================================================================ +// ACT IV: THE CURSED REALM (Levels 16-20) +// Alternate dimension corrupted by hell +// ============================================================================ + +entityDef map_darkages_16_ruined_abbey { + "name" "The Ruined Abbey" + "act" "Act IV: The Cursed Realm" + "level_number" "16" + "description" "An abbey torn between our world and hell. Reality itself fractures here." + "map" "maps/darkages/da16_ruined_abbey" + "objectives" "Explore the fractured abbey;Close the reality tears;Find the sacred texts;Perform the banishment rite" + "music" "music/darkages/ruined_abbey" + "difficulty_enemies" "22" + "estimated_time" "55" + "secrets" "5" + "next_map" "maps/darkages/da17_blood_swamp" +} + +entityDef map_darkages_17_blood_swamp { + "name" "The Blood Swamp" + "act" "Act IV: The Cursed Realm" + "level_number" "17" + "description" "A swamp of blood and corruption. Demons breed in the fetid waters." + "map" "maps/darkages/da17_blood_swamp" + "objectives" "Navigate the blood swamp;Destroy the breeding pools;Kill the Swamp Horror;Drain the corruption" + "music" "music/darkages/blood_swamp" + "fog_color" "0.4 0.1 0.1" + "fog_distance" "500" + "difficulty_enemies" "26" + "estimated_time" "65" + "secrets" "4" + "next_map" "maps/darkages/da18_shadow_maze" +} + +entityDef map_darkages_18_shadow_maze { + "name" "The Shadow Maze" + "act" "Act IV: The Cursed Realm" + "level_number" "18" + "description" "A shifting maze of shadows and darkness. The walls move when you're not looking." + "map" "maps/darkages/da18_shadow_maze" + "objectives" "Enter the shadow maze;Find the three soul keys;Defeat the Maze Keeper;Escape the labyrinth" + "music" "music/darkages/shadow_maze" + "difficulty_enemies" "20" + "estimated_time" "75" + "secrets" "8" + "next_map" "maps/darkages/da19_demon_arena" +} + +entityDef map_darkages_19_demon_arena { + "name" "The Demon Arena" + "act" "Act IV: The Cursed Realm" + "level_number" "19" + "description" "A demonic colosseum where you must fight waves of increasingly powerful foes." + "map" "maps/darkages/da19_demon_arena" + "objectives" "Survive Wave 1-3;Survive Wave 4-6;Survive Wave 7-9;Defeat the Arena Champion" + "music" "music/darkages/demon_arena" + "difficulty_enemies" "50" + "estimated_time" "80" + "secrets" "3" + "wave_based" "1" + "next_map" "maps/darkages/da20_tower_of_despair" +} + +entityDef map_darkages_20_tower_of_despair { + "name" "Tower of Despair" + "act" "Act IV: The Cursed Realm" + "level_number" "20" + "description" "A towering structure reaching into the demonic sky. Each floor holds greater horrors." + "map" "maps/darkages/da20_tower_of_despair" + "objectives" "Climb Floor 1-3;Climb Floor 4-6;Reach the summit;Activate the portal to Hell" + "music" "music/darkages/tower_despair" + "difficulty_enemies" "30" + "estimated_time" "85" + "secrets" "6" + "next_map" "maps/darkages/da21_gates_of_hell" +} + +// ============================================================================ +// ACT V: HELL'S DOMAIN (Levels 21-25) +// The final assault on the Dark Lord's domain +// ============================================================================ + +entityDef map_darkages_21_gates_of_hell { + "name" "Gates of Hell" + "act" "Act V: Hell's Domain" + "level_number" "21" + "description" "The gates of Hell itself. Massive demonic architecture and endless armies." + "map" "maps/darkages/da21_gates_of_hell" + "objectives" "Breach the outer gates;Clear the demon garrison;Destroy the gate guardians;Enter Hell" + "music" "music/darkages/gates_hell" + "sky" "textures/darkages/sky_hell" + "fog_color" "0.5 0.1 0" + "fog_distance" "3000" + "difficulty_enemies" "35" + "estimated_time" "75" + "secrets" "5" + "next_map" "maps/darkages/da22_river_of_souls" +} + +entityDef map_darkages_22_river_of_souls { + "name" "River of Lost Souls" + "act" "Act V: Hell's Domain" + "level_number" "22" + "description" "A river of tormented souls flows through Hell. Cross it to reach the Dark Lord's fortress." + "map" "maps/darkages/da22_river_of_souls" + "objectives" "Navigate the soul river;Survive the soul storm;Find the ferryman;Cross to the fortress shore" + "music" "music/darkages/river_souls" + "difficulty_enemies" "28" + "estimated_time" "65" + "secrets" "4" + "next_map" "maps/darkages/da23_fortress_of_doom" +} + +entityDef map_darkages_23_fortress_of_doom { + "name" "Fortress of Doom" + "act" "Act V: Hell's Domain" + "level_number" "23" + "description" "The Dark Lord's fortress. Every room is a death trap, every corridor hides an ambush." + "map" "maps/darkages/da23_fortress_of_doom" + "objectives" "Enter the fortress;Survive the trap corridor;Destroy the inner sanctum guardians;Reach the throne" + "music" "music/darkages/fortress_doom" + "difficulty_enemies" "40" + "estimated_time" "90" + "secrets" "7" + "next_map" "maps/darkages/da24_throne_of_darkness" +} + +entityDef map_darkages_24_throne_of_darkness { + "name" "Throne of Darkness" + "act" "Act V: Hell's Domain" + "level_number" "24" + "description" "The Dark Lord's throne room. All of hell's power converges here." + "map" "maps/darkages/da24_throne_of_darkness" + "objectives" "Enter the throne room;Defeat the Dark Lord's champions;Face the Dark Lord" + "music" "music/darkages/throne_darkness" + "difficulty_enemies" "25" + "estimated_time" "100" + "secrets" "5" + "boss" "monster_darkages_darklord" + "next_map" "maps/darkages/da25_final_stand" +} + +entityDef map_darkages_25_final_stand { + "name" "The Final Stand" + "act" "Act V: Hell's Domain" + "level_number" "25" + "description" "Hell collapses around you. Fight your way out as reality tears itself apart. The ultimate test." + "map" "maps/darkages/da25_final_stand" + "objectives" "Survive the collapse;Reach the dimensional tear;Close the portal from within;ESCAPE" + "music" "music/darkages/final_stand" + "difficulty_enemies" "60" + "estimated_time" "90" + "secrets" "10" + "is_finale" "1" + "next_map" "" +} diff --git a/darkages/def/darkages_sounds.def b/darkages/def/darkages_sounds.def new file mode 100644 index 0000000000..979409ba94 --- /dev/null +++ b/darkages/def/darkages_sounds.def @@ -0,0 +1,629 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Sound Definitions +// All sound shaders for weapons, enemies, environment, and music +// ============================================================================ + +// ============================================================================ +// WEAPON SOUNDS +// ============================================================================ + +// Sword +sound darkages_sword_slash_1 { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/weapons/sword_slash_1.ogg +} + +sound darkages_sword_slash_2 { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/weapons/sword_slash_2.ogg +} + +sound darkages_sword_slash_3 { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/weapons/sword_slash_3.ogg +} + +sound darkages_sword_hit_flesh { + minDistance 1 + maxDistance 25 + volume 3 + sound/darkages/weapons/sword_hit_flesh.ogg +} + +sound darkages_sword_hit_metal { + minDistance 1 + maxDistance 30 + volume 3 + sound/darkages/weapons/sword_hit_metal.ogg +} + +sound darkages_sword_hit_stone { + minDistance 1 + maxDistance 30 + volume 3 + sound/darkages/weapons/sword_hit_stone.ogg +} + +// Mace +sound darkages_mace_swing { + minDistance 1 + maxDistance 25 + volume 0 + sound/darkages/weapons/mace_swing.ogg +} + +sound darkages_mace_impact { + minDistance 2 + maxDistance 40 + volume 5 + sound/darkages/weapons/mace_impact.ogg +} + +sound darkages_mace_hit_flesh { + minDistance 1 + maxDistance 25 + volume 5 + sound/darkages/weapons/mace_hit_flesh.ogg +} + +// Axe +sound darkages_axe_swing { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/weapons/axe_swing.ogg +} + +sound darkages_axe_hit_flesh { + minDistance 1 + maxDistance 25 + volume 3 + sound/darkages/weapons/axe_hit_flesh.ogg +} + +sound darkages_axe_hit_wood { + minDistance 1 + maxDistance 25 + volume 3 + sound/darkages/weapons/axe_hit_wood.ogg +} + +// Crossbow +sound darkages_crossbow_fire { + minDistance 2 + maxDistance 40 + volume 5 + sound/darkages/weapons/crossbow_fire.ogg +} + +sound darkages_crossbow_reload { + minDistance 1 + maxDistance 15 + volume -3 + sound/darkages/weapons/crossbow_reload.ogg +} + +sound darkages_crossbow_bolt_hit { + minDistance 2 + maxDistance 30 + volume 3 + sound/darkages/weapons/bolt_hit.ogg +} + +// Shield +sound darkages_shield_block { + minDistance 2 + maxDistance 30 + volume 5 + sound/darkages/weapons/shield_block.ogg +} + +sound darkages_shield_bash { + minDistance 2 + maxDistance 25 + volume 3 + sound/darkages/weapons/shield_bash.ogg +} + +sound darkages_shield_parry { + minDistance 2 + maxDistance 35 + volume 8 + sound/darkages/weapons/shield_parry.ogg +} + +// Flail +sound darkages_flail_spin { + minDistance 1 + maxDistance 20 + volume -2 + sound/darkages/weapons/flail_spin.ogg +} + +sound darkages_flail_hit { + minDistance 2 + maxDistance 25 + volume 3 + sound/darkages/weapons/flail_hit.ogg +} + +// Hellfire Staff +sound darkages_hellstaff_fire { + minDistance 3 + maxDistance 50 + volume 8 + sound/darkages/weapons/hellstaff_fire.ogg +} + +sound darkages_hellstaff_impact { + minDistance 5 + maxDistance 60 + volume 10 + sound/darkages/weapons/hellstaff_impact.ogg +} + +// Great Hammer +sound darkages_hammer_swing { + minDistance 2 + maxDistance 30 + volume 3 + sound/darkages/weapons/hammer_swing.ogg +} + +sound darkages_hammer_impact { + minDistance 5 + maxDistance 80 + volume 12 + sound/darkages/weapons/hammer_impact.ogg +} + +sound darkages_hammer_groundpound { + minDistance 10 + maxDistance 120 + volume 15 + sound/darkages/weapons/hammer_groundpound.ogg +} + +// Throwing Axes +sound darkages_throwaxe_throw { + minDistance 1 + maxDistance 25 + volume 3 + sound/darkages/weapons/throwaxe_throw.ogg +} + +sound darkages_throwaxe_hit { + minDistance 2 + maxDistance 30 + volume 5 + sound/darkages/weapons/throwaxe_hit.ogg +} + +// ============================================================================ +// COMBAT SOUNDS +// ============================================================================ + +sound darkages_combo_1 { + minDistance 3 + maxDistance 30 + volume 0 + sound/darkages/combat/combo_1.ogg +} + +sound darkages_combo_2 { + minDistance 3 + maxDistance 30 + volume 2 + sound/darkages/combat/combo_2.ogg +} + +sound darkages_combo_3 { + minDistance 3 + maxDistance 35 + volume 5 + sound/darkages/combat/combo_3.ogg +} + +sound darkages_combo_finisher { + minDistance 5 + maxDistance 50 + volume 10 + sound/darkages/combat/combo_finisher.ogg +} + +sound darkages_glory_kill { + minDistance 3 + maxDistance 40 + volume 8 + sound/darkages/combat/glory_kill.ogg +} + +sound darkages_backstab { + minDistance 2 + maxDistance 30 + volume 5 + sound/darkages/combat/backstab.ogg +} + +sound darkages_parry_success { + minDistance 3 + maxDistance 40 + volume 8 + sound/darkages/combat/parry_success.ogg +} + +// ============================================================================ +// PLAYER SOUNDS +// ============================================================================ + +sound darkages_player_pain_1 { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/player/pain_1.ogg +} + +sound darkages_player_pain_2 { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/player/pain_2.ogg +} + +sound darkages_player_death { + minDistance 1 + maxDistance 30 + volume 3 + sound/darkages/player/death.ogg +} + +sound darkages_player_dodge { + minDistance 1 + maxDistance 15 + volume -3 + sound/darkages/player/dodge.ogg +} + +sound darkages_player_grunt_attack { + minDistance 1 + maxDistance 15 + volume -2 + sound/darkages/player/grunt_attack.ogg +} + +sound darkages_player_heavy_attack { + minDistance 1 + maxDistance 20 + volume 0 + sound/darkages/player/heavy_attack.ogg +} + +// ============================================================================ +// ENEMY SOUNDS +// ============================================================================ + +// Undead Soldier +sound darkages_undead_sight { + minDistance 5 + maxDistance 60 + volume 3 + sound/darkages/enemies/undead_sight.ogg +} + +sound darkages_undead_attack { + minDistance 2 + maxDistance 30 + volume 0 + sound/darkages/enemies/undead_attack.ogg +} + +sound darkages_undead_pain { + minDistance 2 + maxDistance 25 + volume 0 + sound/darkages/enemies/undead_pain.ogg +} + +sound darkages_undead_death { + minDistance 3 + maxDistance 40 + volume 3 + sound/darkages/enemies/undead_death.ogg +} + +// Dark Knight +sound darkages_knight_sight { + minDistance 5 + maxDistance 60 + volume 5 + sound/darkages/enemies/knight_sight.ogg +} + +sound darkages_knight_attack { + minDistance 3 + maxDistance 35 + volume 3 + sound/darkages/enemies/knight_attack.ogg +} + +sound darkages_knight_block { + minDistance 3 + maxDistance 30 + volume 3 + sound/darkages/enemies/knight_block.ogg +} + +sound darkages_knight_death { + minDistance 5 + maxDistance 50 + volume 5 + sound/darkages/enemies/knight_death.ogg +} + +// Hellhound +sound darkages_hound_growl { + minDistance 5 + maxDistance 50 + volume 3 + sound/darkages/enemies/hound_growl.ogg +} + +sound darkages_hound_bark { + minDistance 5 + maxDistance 60 + volume 5 + sound/darkages/enemies/hound_bark.ogg +} + +sound darkages_hound_bite { + minDistance 2 + maxDistance 25 + volume 3 + sound/darkages/enemies/hound_bite.ogg +} + +sound darkages_hound_death { + minDistance 3 + maxDistance 40 + volume 3 + sound/darkages/enemies/hound_death.ogg +} + +// Sorcerer +sound darkages_sorcerer_chant { + minDistance 5 + maxDistance 60 + volume 3 + sound/darkages/enemies/sorcerer_chant.ogg +} + +sound darkages_sorcerer_cast { + minDistance 5 + maxDistance 50 + volume 5 + sound/darkages/enemies/sorcerer_cast.ogg +} + +sound darkages_sorcerer_summon { + minDistance 8 + maxDistance 80 + volume 8 + sound/darkages/enemies/sorcerer_summon.ogg +} + +// Boss Sounds +sound darkages_boss_roar { + minDistance 20 + maxDistance 200 + volume 15 + sound/darkages/enemies/boss_roar.ogg +} + +sound darkages_boss_attack { + minDistance 10 + maxDistance 100 + volume 12 + sound/darkages/enemies/boss_attack.ogg +} + +sound darkages_boss_death { + minDistance 20 + maxDistance 200 + volume 15 + sound/darkages/enemies/boss_death.ogg +} + +sound darkages_dragon_breathe { + minDistance 15 + maxDistance 150 + volume 12 + sound/darkages/enemies/dragon_breathe.ogg +} + +sound darkages_darklord_laugh { + minDistance 20 + maxDistance 200 + volume 15 + sound/darkages/enemies/darklord_laugh.ogg +} + +// ============================================================================ +// ENVIRONMENT SOUNDS +// ============================================================================ + +sound darkages_ambient_wind { + minDistance 5 + maxDistance 80 + volume -8 + looping + sound/darkages/environment/ambient_wind.ogg +} + +sound darkages_ambient_drip { + minDistance 2 + maxDistance 30 + volume -10 + looping + sound/darkages/environment/ambient_drip.ogg +} + +sound darkages_ambient_fire { + minDistance 3 + maxDistance 40 + volume -5 + looping + sound/darkages/environment/ambient_fire.ogg +} + +sound darkages_ambient_chains { + minDistance 2 + maxDistance 25 + volume -8 + looping + sound/darkages/environment/ambient_chains.ogg +} + +sound darkages_ambient_thunder { + minDistance 20 + maxDistance 200 + volume 5 + sound/darkages/environment/ambient_thunder.ogg +} + +sound darkages_door_open { + minDistance 3 + maxDistance 40 + volume 3 + sound/darkages/environment/door_open.ogg +} + +sound darkages_door_close { + minDistance 3 + maxDistance 40 + volume 3 + sound/darkages/environment/door_close.ogg +} + +sound darkages_chest_open { + minDistance 2 + maxDistance 20 + volume 0 + sound/darkages/environment/chest_open.ogg +} + +sound darkages_lava_bubble { + minDistance 5 + maxDistance 50 + volume -3 + looping + sound/darkages/environment/lava_bubble.ogg +} + +// ============================================================================ +// UI SOUNDS +// ============================================================================ + +sound darkages_ui_menu_select { + minDistance 1 + maxDistance 5 + volume -5 + sound/darkages/ui/menu_select.ogg +} + +sound darkages_ui_menu_confirm { + minDistance 1 + maxDistance 5 + volume -3 + sound/darkages/ui/menu_confirm.ogg +} + +sound darkages_ui_menu_back { + minDistance 1 + maxDistance 5 + volume -5 + sound/darkages/ui/menu_back.ogg +} + +sound darkages_ui_upgrade_purchase { + minDistance 1 + maxDistance 5 + volume 0 + sound/darkages/ui/upgrade_purchase.ogg +} + +sound darkages_ui_secret_found { + minDistance 1 + maxDistance 10 + volume 5 + sound/darkages/ui/secret_found.ogg +} + +sound darkages_ui_level_complete { + minDistance 1 + maxDistance 10 + volume 5 + sound/darkages/ui/level_complete.ogg +} + +sound darkages_ui_new_weapon { + minDistance 1 + maxDistance 10 + volume 5 + sound/darkages/ui/new_weapon.ogg +} + +// ============================================================================ +// MUSIC +// ============================================================================ + +sound music/darkages/menu { + minDistance 1 + maxDistance 10 + volume -5 + looping + music/darkages/menu_theme.ogg +} + +sound music/darkages/da01_burning_village { + minDistance 1 + maxDistance 10 + volume -5 + looping + music/darkages/act1_burning.ogg +} + +sound music/darkages/combat_act1 { + minDistance 1 + maxDistance 10 + volume -3 + looping + music/darkages/combat_act1.ogg +} + +sound music/darkages/combat_boss { + minDistance 1 + maxDistance 10 + volume -2 + looping + music/darkages/combat_boss.ogg +} + +sound music/darkages/victory { + minDistance 1 + maxDistance 10 + volume 0 + music/darkages/victory.ogg +} + +sound music/darkages/death { + minDistance 1 + maxDistance 10 + volume -3 + music/darkages/death.ogg +} diff --git a/darkages/def/darkages_weapons.def b/darkages/def/darkages_weapons.def new file mode 100644 index 0000000000..744b1f33ee --- /dev/null +++ b/darkages/def/darkages_weapons.def @@ -0,0 +1,426 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Medieval Weapon Definitions +// ============================================================================ + +// ============================================================================ +// WEAPON: DARK KNIGHT SWORD (Primary Melee) +// A massive two-handed broadsword forged in hellfire +// ============================================================================ +entityDef weapon_darkages_sword { + "editor_color" "1 .1 .1" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_usage" "Dark Knight's Broadsword - primary melee weapon" + "editor_rotatable" "1" + + "spawnclass" "idItem" + "model" "models/weapons/sword/world_sword.lwo" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_sword" + "inv_name" "Dark Broadsword" + "inv_icon" "guis/assets/hud/wpn_sword" + "inv_item" "5" + + "snd_acquire" "sound_weapon_acquire" + "snd_respawn" "sound_weapon_respawn" + + "weapon_scriptobject" "weapon_darkages_sword" + "def_melee" "damage_sword_melee" + "melee_distance" "64" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "mtr_flashShader" "" + "flashColor" "0 0 0" + "silent_fire" "0" + "model_view" "viewmodel_sword" + "model_world" "worldmodel_sword" + "snd_metal" "sword_impact_metal" + "snd_stone" "sword_impact_stone" + "snd_flesh" "sword_impact_flesh" + "snd_swing" "sword_swing" + "snd_parry" "sword_parry" + "smoke_strike" "sword_sparks.prt" +} + +entityDef damage_sword_melee { + "damage" "80" + "kickDir" "1 0 0" + "mtr_blob" "genericDamage" + "mtr_splash" "yourbloodsplat" + "gib" "1" + "smoke_wound_flesh" "bloodwound.prt" + "mtr_wound_flesh" "textures/decals/yourbloodsplat" + "mtr_wound_metal" "textures/decals/hitscan_metal" + "mtr_wound_stone" "textures/decals/hitscan_stone" + "push" "5000" + "snd_flesh" "sword_hit_flesh" + "snd_metal" "sword_hit_metal" + "snd_stone" "sword_hit_stone" +} + +// Heavy attack (charged) +entityDef damage_sword_heavy { + "damage" "200" + "kickDir" "1 0 0" + "mtr_blob" "genericDamage" + "mtr_splash" "yourbloodsplat" + "gib" "1" + "smoke_wound_flesh" "bloodwound.prt" + "push" "12000" + "snd_flesh" "sword_heavy_hit_flesh" +} + +// ============================================================================ +// WEAPON: WAR MACE (Heavy Melee) +// Crushing blunt weapon effective against armored foes +// ============================================================================ +entityDef weapon_darkages_mace { + "editor_color" ".8 .4 .1" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_usage" "War Mace - heavy crushing weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_mace" + "inv_name" "War Mace" + "inv_icon" "guis/assets/hud/wpn_mace" + "inv_item" "5" + + "weapon_scriptobject" "weapon_darkages_mace" + "def_melee" "damage_mace_melee" + "melee_distance" "56" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "model_view" "viewmodel_mace" + "model_world" "worldmodel_mace" + "snd_swing" "mace_swing" + "snd_impact" "mace_impact" + "smoke_strike" "mace_sparks.prt" +} + +entityDef damage_mace_melee { + "damage" "120" + "kickDir" "0.5 0 0.5" + "mtr_blob" "genericDamage" + "mtr_splash" "yourbloodsplat" + "gib" "1" + "push" "8000" + "armor_piercing" "0.5" + "stun_duration" "500" +} + +// ============================================================================ +// WEAPON: CROSSBOW (Ranged) +// Medieval ranged weapon with heavy bolts +// ============================================================================ +entityDef weapon_darkages_crossbow { + "editor_color" ".4 .4 .1" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_usage" "Heavy Crossbow - ranged medieval weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_crossbow" + "inv_name" "Heavy Crossbow" + "inv_icon" "guis/assets/hud/wpn_crossbow" + "inv_item" "5" + + "weapon_scriptobject" "weapon_darkages_crossbow" + "def_projectile" "projectile_crossbow_bolt" + "ammoType" "ammo_bolts" + "ammoRequired" "1" + "clipSize" "1" + "model_view" "viewmodel_crossbow" + "model_world" "worldmodel_crossbow" + "snd_fire" "crossbow_fire" + "snd_reload" "crossbow_reload" + "muzzle_kick_time" "0.5" + "muzzle_kick_maxtime" "1" + "muzzle_kick_angles" "0 0 0" + "muzzle_kick_offset" "2 0 2" + "recoilTime" "500" + "recoilAngles" "-2 0 0" +} + +entityDef projectile_crossbow_bolt { + "spawnclass" "idProjectile" + "mins" "-1 -1 -1" + "maxs" "1 1 1" + "cone" "3" + "noshadows" "1" + "model" "models/weapons/crossbow/bolt.lwo" + + "def_damage" "damage_crossbow_bolt" + + "launchFromBarrel" "1" + "health" "0" + "velocity" "2500 0 0" + "angular_velocity" "0 0 0" + "thrust" "0" + "thrust_start" "0" + "thrust_end" "0" + "linear_friction" "0" + "angular_friction" "0" + "contact_friction" "0" + "bounce" "0.1" + "mass" "50" + "gravity" "200" + "fuse" "10" + + "detonate_on_fuse" "0" + "detonate_on_death" "0" + "detonate_on_world" "1" + "detonate_on_actor" "1" + + "snd_fly" "crossbow_bolt_fly" + "snd_ricochet" "crossbow_bolt_ricochet" +} + +entityDef damage_crossbow_bolt { + "damage" "150" + "kickDir" "1 0 0" + "mtr_blob" "genericDamage" + "mtr_splash" "yourbloodsplat" + "gib" "1" + "push" "6000" + "snd_flesh" "bolt_impact_flesh" + "snd_metal" "bolt_impact_metal" + "snd_stone" "bolt_impact_stone" +} + +// ============================================================================ +// WEAPON: BATTLE AXE (Medium Melee) +// Versatile chopping weapon with arc swings +// ============================================================================ +entityDef weapon_darkages_axe { + "editor_color" ".6 .3 .1" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_usage" "Battle Axe - versatile melee weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_axe" + "inv_name" "Battle Axe" + "inv_icon" "guis/assets/hud/wpn_axe" + "inv_item" "5" + + "weapon_scriptobject" "weapon_darkages_axe" + "def_melee" "damage_axe_melee" + "melee_distance" "60" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "model_view" "viewmodel_axe" + "model_world" "worldmodel_axe" + "snd_swing" "axe_swing" + "smoke_strike" "axe_sparks.prt" +} + +entityDef damage_axe_melee { + "damage" "95" + "kickDir" "0.7 0.3 0" + "mtr_blob" "genericDamage" + "gib" "1" + "push" "7000" +} + +// ============================================================================ +// WEAPON: SHIELD (Defense/Bash) +// Blocking and bashing weapon +// ============================================================================ +entityDef weapon_darkages_shield { + "editor_color" ".3 .3 .6" + "editor_mins" "-16 -16 0" + "editor_maxs" "16 16 32" + "editor_usage" "Tower Shield - defensive weapon with bash attack" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_shield" + "inv_name" "Tower Shield" + "inv_icon" "guis/assets/hud/wpn_shield" + "inv_item" "5" + + "weapon_scriptobject" "weapon_darkages_shield" + "def_melee" "damage_shield_bash" + "melee_distance" "40" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "model_view" "viewmodel_shield" + "model_world" "worldmodel_shield" + "snd_block" "shield_block" + "snd_bash" "shield_bash" + "block_damage_reduction" "0.8" + "block_angle" "60" +} + +entityDef damage_shield_bash { + "damage" "40" + "kickDir" "1 0 0" + "push" "15000" + "stun_duration" "1000" +} + +// ============================================================================ +// WEAPON: THROWING AXES (Ranged) +// Quick ranged option +// ============================================================================ +entityDef weapon_darkages_throwaxe { + "editor_usage" "Throwing Axes - quick ranged weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_throwaxe" + "inv_name" "Throwing Axes" + "inv_icon" "guis/assets/hud/wpn_throwaxe" + + "weapon_scriptobject" "weapon_darkages_throwaxe" + "def_projectile" "projectile_throwaxe" + "ammoType" "ammo_throwaxes" + "ammoRequired" "1" + "clipSize" "5" + "model_view" "viewmodel_throwaxe" + "model_world" "worldmodel_throwaxe" + "snd_throw" "throwaxe_throw" +} + +entityDef projectile_throwaxe { + "spawnclass" "idProjectile" + "def_damage" "damage_throwaxe" + "velocity" "1800 0 0" + "angular_velocity" "0 0 720" + "gravity" "350" + "fuse" "6" + "detonate_on_world" "1" + "detonate_on_actor" "1" +} + +entityDef damage_throwaxe { + "damage" "65" + "push" "3000" +} + +// ============================================================================ +// WEAPON: FLAIL (Area Melee) +// Chain weapon with wide arc +// ============================================================================ +entityDef weapon_darkages_flail { + "editor_usage" "Chain Flail - wide arc melee weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_flail" + "inv_name" "Chain Flail" + "inv_icon" "guis/assets/hud/wpn_flail" + + "weapon_scriptobject" "weapon_darkages_flail" + "def_melee" "damage_flail_melee" + "melee_distance" "72" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "model_view" "viewmodel_flail" + "snd_swing" "flail_swing" +} + +entityDef damage_flail_melee { + "damage" "70" + "kickDir" "0.3 0.7 0" + "push" "6000" + "area_damage_radius" "48" +} + +// ============================================================================ +// WEAPON: HELLFIRE STAFF (Magic Ranged) +// Demonic magic weapon found in deeper levels +// ============================================================================ +entityDef weapon_darkages_hellstaff { + "editor_usage" "Hellfire Staff - demonic magic weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_hellstaff" + "inv_name" "Hellfire Staff" + "inv_icon" "guis/assets/hud/wpn_hellstaff" + + "weapon_scriptobject" "weapon_darkages_hellstaff" + "def_projectile" "projectile_hellfire" + "ammoType" "ammo_hellfire" + "ammoRequired" "10" + "clipSize" "100" + "model_view" "viewmodel_hellstaff" + "snd_fire" "hellstaff_fire" + "mtr_flashShader" "lights/hellfire_flash" + "flashColor" "1 0.3 0" +} + +entityDef projectile_hellfire { + "spawnclass" "idProjectile" + "def_damage" "damage_hellfire" + "def_splash_damage" "damage_hellfire_splash" + "velocity" "1200 0 0" + "fuse" "5" + "detonate_on_world" "1" + "detonate_on_actor" "1" + "model_fly" "hellfire_projectile.prt" + "light_color" "1 0.4 0" + "light_radius" "160" + "snd_fly" "hellfire_fly" +} + +entityDef damage_hellfire { + "damage" "100" + "push" "8000" +} + +entityDef damage_hellfire_splash { + "damage" "50" + "radius" "120" + "push" "5000" +} + +// ============================================================================ +// WEAPON: GREAT HAMMER (Super Weapon) +// Massive warhammer with ground-pound ability +// ============================================================================ +entityDef weapon_darkages_greathammer { + "editor_usage" "Great Hammer - devastating super weapon" + + "spawnclass" "idItem" + "size" "32 32 32" + "inv_weapon" "weapon_darkages_greathammer" + "inv_name" "Great Hammer of Doom" + "inv_icon" "guis/assets/hud/wpn_greathammer" + + "weapon_scriptobject" "weapon_darkages_greathammer" + "def_melee" "damage_greathammer_melee" + "melee_distance" "70" + "ammoType" "" + "ammoRequired" "0" + "clipSize" "0" + "model_view" "viewmodel_greathammer" + "snd_swing" "greathammer_swing" + "snd_impact" "greathammer_impact" +} + +entityDef damage_greathammer_melee { + "damage" "250" + "kickDir" "0 0 1" + "push" "20000" + "stun_duration" "2000" + "gib" "1" +} + +// Ground pound (special attack) +entityDef damage_greathammer_groundpound { + "damage" "150" + "radius" "200" + "push" "15000" + "stun_duration" "1500" +} diff --git a/darkages/fx/darkages_combat.fx b/darkages/fx/darkages_combat.fx new file mode 100644 index 0000000000..5756d1be1f --- /dev/null +++ b/darkages/fx/darkages_combat.fx @@ -0,0 +1,218 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Combat Effects +// ============================================================================ + +fx fx/combat/sword_fury_finisher { + { + delay 0 + duration 1.0 + restart 0 + particle "glory_kill_burst" + offset 0, 0, 32 + useLight 1 + light "lights/swordFlash" + lightColor 1.0, 0.7, 0.2 + lightRadius 200 + } + { + delay 0 + duration 0.5 + restart 0 + shakeTime 0.5 + shakeAmplitude 4 + shakeDistance 128 + shakeImpulse 0 + } +} + +fx fx/combat/mace_crusher_finisher { + { + delay 0 + duration 1.2 + restart 0 + particle "glory_kill_burst" + offset 0, 0, 16 + useLight 1 + light "lights/maceImpact" + lightColor 1.0, 0.8, 0.3 + lightRadius 256 + } + { + delay 0 + duration 0.8 + restart 0 + shakeTime 0.8 + shakeAmplitude 8 + shakeDistance 200 + shakeImpulse 0 + } +} + +fx fx/combat/axe_cleave_finisher { + { + delay 0 + duration 0.8 + restart 0 + particle "blood_spray" + offset 0, 0, 48 + useLight 1 + light "lights/axeFlash" + lightColor 1.0, 0.5, 0.1 + lightRadius 180 + } + { + delay 0 + duration 0.4 + restart 0 + shakeTime 0.4 + shakeAmplitude 3 + shakeDistance 96 + } +} + +fx fx/combat/flail_chaos_finisher { + { + delay 0 + duration 1.0 + restart 0 + particle "sword_sparks" + offset 0, 0, 48 + particle "blood_spray" + offset 0, 0, 32 + } + { + delay 0 + duration 0.6 + restart 0 + shakeTime 0.6 + shakeAmplitude 5 + shakeDistance 128 + } +} + +fx fx/combat/hammer_earthquake { + { + delay 0 + duration 2.0 + restart 0 + particle "glory_kill_burst" + offset 0, 0, 0 + useLight 1 + light "lights/hammerShock" + lightColor 1.0, 0.6, 0.1 + lightRadius 400 + } + { + delay 0 + duration 1.5 + restart 0 + shakeTime 1.5 + shakeAmplitude 12 + shakeDistance 400 + shakeImpulse 0 + } +} + +fx fx/combat/parry_success { + { + delay 0 + duration 0.5 + restart 0 + particle "parry_flash" + offset 0, 0, 48 + useLight 1 + light "lights/parryFlash" + lightColor 1.0, 1.0, 0.5 + lightRadius 150 + } +} + +fx fx/combat/glory_kill { + { + delay 0 + duration 1.5 + restart 0 + particle "glory_kill_burst" + offset 0, 0, 48 + useLight 1 + light "lights/gloryKill" + lightColor 1.0, 0.2, 0.0 + lightRadius 300 + } + { + delay 0.1 + duration 0.3 + restart 0 + shakeTime 0.3 + shakeAmplitude 6 + shakeDistance 200 + } +} + +fx fx/combat/shield_block { + { + delay 0 + duration 0.3 + restart 0 + particle "shield_block_spark" + offset 24, 0, 32 + useLight 1 + light "lights/shieldBlock" + lightColor 0.5, 0.6, 1.0 + lightRadius 100 + } +} + +fx fx/environment/fire_torch { + { + delay 0 + duration 0 + restart 0 + particle "hellfire_projectile" + offset 0, 0, 0 + useLight 1 + light "lights/torch" + lightColor 1.0, 0.6, 0.2 + lightRadius 200 + } +} + +fx fx/boss/darklord_entrance { + { + delay 0 + duration 3.0 + restart 0 + useLight 1 + light "lights/bossEntrance" + lightColor 1.0, 0.0, 0.0 + lightRadius 800 + } + { + delay 0 + duration 2.0 + restart 0 + shakeTime 2.0 + shakeAmplitude 10 + shakeDistance 1000 + } +} + +fx fx/boss/dragonking_roar { + { + delay 0 + duration 2.5 + restart 0 + useLight 1 + light "lights/dragonRoar" + lightColor 1.0, 0.5, 0.0 + lightRadius 600 + } + { + delay 0 + duration 1.5 + restart 0 + shakeTime 1.5 + shakeAmplitude 8 + shakeDistance 800 + } +} diff --git a/darkages/icon/darkages.ico b/darkages/icon/darkages.ico new file mode 100644 index 0000000000..bc8f41442a Binary files /dev/null and b/darkages/icon/darkages.ico differ diff --git a/darkages/icon/darkages.res b/darkages/icon/darkages.res new file mode 100644 index 0000000000..72dca604fc Binary files /dev/null and b/darkages/icon/darkages.res differ diff --git a/darkages/icon/darkages_256.png b/darkages/icon/darkages_256.png new file mode 100644 index 0000000000..c66c10686c Binary files /dev/null and b/darkages/icon/darkages_256.png differ diff --git a/darkages/maps/darkages/da01_burning_village.map b/darkages/maps/darkages/da01_burning_village.map new file mode 100644 index 0000000000..5074ec99ea --- /dev/null +++ b/darkages/maps/darkages/da01_burning_village.map @@ -0,0 +1,300 @@ +Version 2 +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da01_burning_village" +"message" "The Burning Village" +"music" "music/darkages/burning_village" +"ambientColor" "0.15 0.1 0.08" +"_color" "0.5 0.3 0.15" +"darkages_level" "1" +"darkages_act" "0" +"darkages_fog_color" "0.6 0.3 0.1" +"darkages_fog_distance" "2000" + +// Main ground plane - village square +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +} + +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} + +// South wall +{ +( -2048 -2064 0 ) ( -2048 -2064 256 ) ( 2048 -2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 -2048 0 ) ( 2048 -2048 0 ) ( -2048 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 -2064 0 ) ( 2048 -2064 0 ) ( -2048 -2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 -2064 256 ) ( -2048 -2048 256 ) ( 2048 -2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 -2064 0 ) ( -2048 -2048 0 ) ( -2048 -2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 -2064 0 ) ( 2048 -2064 256 ) ( 2048 -2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} + +// East wall +{ +( 2048 -2048 0 ) ( 2048 2048 0 ) ( 2048 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2064 -2048 0 ) ( 2064 -2048 256 ) ( 2064 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 -2048 0 ) ( 2064 -2048 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 -2048 256 ) ( 2048 2048 256 ) ( 2064 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 -2048 0 ) ( 2048 -2048 256 ) ( 2064 -2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2064 2048 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} + +// West wall +{ +( -2064 -2048 0 ) ( -2064 -2048 256 ) ( -2064 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 -2048 0 ) ( -2048 2048 0 ) ( -2048 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2064 -2048 0 ) ( -2048 -2048 0 ) ( -2064 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2064 -2048 256 ) ( -2064 2048 256 ) ( -2048 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2064 -2048 0 ) ( -2064 2048 0 ) ( -2064 -2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2064 2048 0 ) ( -2064 2048 256 ) ( -2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} + +// Ceiling / Sky +{ +( -2048 -2048 512 ) ( 2048 -2048 512 ) ( -2048 2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 528 ) ( -2048 2048 528 ) ( 2048 -2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 2048 512 ) ( -2048 -2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 512 ) ( 2048 -2048 528 ) ( 2048 2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 -2048 528 ) ( 2048 -2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 512 ) ( 2048 2048 512 ) ( -2048 2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +} + +// Building 1 - Burning house (NW corner) +{ +( -1800 1200 0 ) ( -1400 1200 0 ) ( -1800 1200 192 ) "textures/darkages/wood_charred" 0 0 0 0.25 0.25 0 0 0 +( -1800 1600 0 ) ( -1800 1600 192 ) ( -1400 1600 0 ) "textures/darkages/wood_charred" 0 0 0 0.25 0.25 0 0 0 +( -1800 1200 0 ) ( -1800 1600 0 ) ( -1400 1200 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -1800 1200 192 ) ( -1400 1200 192 ) ( -1800 1600 192 ) "textures/darkages/wood_charred" 0 0 0 0.25 0.25 0 0 0 +( -1800 1200 0 ) ( -1800 1200 192 ) ( -1800 1600 0 ) "textures/darkages/wood_charred" 0 0 0 0.25 0.25 0 0 0 +( -1400 1200 0 ) ( -1400 1600 0 ) ( -1400 1200 192 ) "textures/darkages/wood_charred" 0 0 0 0.25 0.25 0 0 0 +} + +// Building 2 - Blacksmith shop (NE corner) +{ +( 1200 1200 0 ) ( 1800 1200 0 ) ( 1200 1200 160 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1200 1600 0 ) ( 1200 1600 160 ) ( 1800 1600 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1200 1200 0 ) ( 1200 1600 0 ) ( 1800 1200 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1200 1200 160 ) ( 1800 1200 160 ) ( 1200 1600 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1200 1200 0 ) ( 1200 1200 160 ) ( 1200 1600 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1800 1200 0 ) ( 1800 1600 0 ) ( 1800 1200 160 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} + +// Central well/fountain +{ +( -64 -64 0 ) ( 64 -64 0 ) ( -64 -64 48 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -64 64 0 ) ( -64 64 48 ) ( 64 64 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -64 -64 0 ) ( -64 64 0 ) ( 64 -64 0 ) "textures/darkages/blood_pool" 0 0 0 0.25 0.25 0 0 0 +( -64 -64 48 ) ( 64 -64 48 ) ( -64 64 48 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -64 -64 0 ) ( -64 -64 48 ) ( -64 64 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 64 -64 0 ) ( 64 64 0 ) ( 64 -64 48 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1800 24" +"angle" "90" +} + +// entity 2 - Main fire light (village square) +{ +"classname" "light" +"name" "light_village_fire_1" +"origin" "0 0 128" +"_color" "1 0.5 0.1" +"light" "800" +"texture" "lights/defaultPointLight" +"noshadows" "0" +} + +// entity 3 - Fire light NW +{ +"classname" "light" +"name" "light_fire_nw" +"origin" "-1600 1400 200" +"_color" "1 0.4 0.05" +"light" "600" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Fire light NE +{ +"classname" "light" +"name" "light_fire_ne" +"origin" "1500 1400 180" +"_color" "1 0.6 0.1" +"light" "500" +"texture" "lights/defaultPointLight" +} + +// entity 5-8 - Undead soldiers patrol +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1" +"origin" "400 200 0" +"angle" "270" +} + +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2" +"origin" "-500 600 0" +"angle" "180" +} + +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3" +"origin" "800 -400 0" +"angle" "90" +} + +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4" +"origin" "-300 -800 0" +"angle" "45" +} + +// entity 9-10 - Hell Hounds +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1" +"origin" "1200 -600 0" +"angle" "180" +} + +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2" +"origin" "-1000 800 0" +"angle" "270" +} + +// entity 11-12 - Dark Knight (ambush) +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1" +"origin" "0 1500 0" +"angle" "180" +} + +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2" +"origin" "1600 0 0" +"angle" "270" +} + +// entity 13 - Sword pickup +{ +"classname" "weapon_darkages_sword" +"name" "sword_pickup_1" +"origin" "0 -1600 24" +} + +// entity 14-16 - Health pickups +{ +"classname" "item_darkages_health_small" +"name" "health_1" +"origin" "300 -300 0" +} + +{ +"classname" "item_darkages_health_medium" +"name" "health_2" +"origin" "-700 -200 0" +} + +{ +"classname" "item_darkages_health_small" +"name" "health_3" +"origin" "1000 1000 0" +} + +// entity 17 - Armor pickup +{ +"classname" "item_darkages_armor_chainmail" +"name" "armor_1" +"origin" "-1600 1400 0" +} + +// entity 18 - Secret area trigger +{ +"classname" "trigger_once" +"name" "secret_1" +"origin" "1700 1700 32" +"mins" "-32 -32 0" +"maxs" "32 32 64" +"call" "secret_found_1" +} + +// entity 19 - Level exit trigger +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1950 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"call" "next_level" +"target" "target_endlevel" +} + +// entity 20 - Target endlevel +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da02_castle_siege" +} + +// entity 21-24 - Torch lights along paths +{ +"classname" "light" +"name" "torch_light_1" +"origin" "-800 0 128" +"_color" "1 0.6 0.2" +"light" "300" +"texture" "lights/defaultPointLight" +} + +{ +"classname" "light" +"name" "torch_light_2" +"origin" "800 0 128" +"_color" "1 0.6 0.2" +"light" "300" +"texture" "lights/defaultPointLight" +} + +{ +"classname" "light" +"name" "torch_light_3" +"origin" "0 800 128" +"_color" "1 0.6 0.2" +"light" "300" +"texture" "lights/defaultPointLight" +} + +{ +"classname" "light" +"name" "torch_light_4" +"origin" "0 -800 128" +"_color" "1 0.6 0.2" +"light" "300" +"texture" "lights/defaultPointLight" +} diff --git a/darkages/maps/darkages/da02_castle_siege.map b/darkages/maps/darkages/da02_castle_siege.map new file mode 100644 index 0000000000..7ff40839dd --- /dev/null +++ b/darkages/maps/darkages/da02_castle_siege.map @@ -0,0 +1,355 @@ +Version 2 +// DOOM: The Dark Ages - Level 2: Castle Under Siege +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da02_castle_siege" +"message" "Castle Under Siege" +"music" "music/darkages/da02_castle_siege" +"ambientColor" "0.12 0.08 0.06" +"_color" "0.5 0.3 0.15" +"darkages_level" "2" +"darkages_act" "0" +"darkages_fog_color" "0.5 0.3 0.15" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 512 ) ( 2048 -2048 512 ) ( -2048 2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 528 ) ( -2048 2048 528 ) ( 2048 -2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 2048 512 ) ( -2048 -2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 512 ) ( 2048 -2048 528 ) ( 2048 2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 -2048 528 ) ( 2048 -2048 512 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 512 ) ( 2048 2048 512 ) ( -2048 2048 528 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -1331 102 0 ) ( -1078 102 0 ) ( -1331 102 99 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1331 344 0 ) ( -1331 344 99 ) ( -1078 344 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1331 102 0 ) ( -1331 344 0 ) ( -1078 102 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1331 102 99 ) ( -1078 102 99 ) ( -1331 344 99 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1331 102 0 ) ( -1331 102 99 ) ( -1331 344 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1078 102 0 ) ( -1078 344 0 ) ( -1078 102 99 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 1338 -668 0 ) ( 1682 -668 0 ) ( 1338 -668 71 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 1338 -524 0 ) ( 1338 -524 71 ) ( 1682 -524 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 1338 -668 0 ) ( 1338 -524 0 ) ( 1682 -668 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 1338 -668 71 ) ( 1682 -668 71 ) ( 1338 -524 71 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 1338 -668 0 ) ( 1338 -668 71 ) ( 1338 -524 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 1682 -668 0 ) ( 1682 -524 0 ) ( 1682 -668 71 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -538 -72 0 ) ( -152 -72 0 ) ( -538 -72 114 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -538 69 0 ) ( -538 69 114 ) ( -152 69 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -538 -72 0 ) ( -538 69 0 ) ( -152 -72 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -538 -72 114 ) ( -152 -72 114 ) ( -538 69 114 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -538 -72 0 ) ( -538 -72 114 ) ( -538 69 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -152 -72 0 ) ( -152 69 0 ) ( -152 -72 114 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -531 815 0 ) ( -261 815 0 ) ( -531 815 104 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -531 946 0 ) ( -531 946 104 ) ( -261 946 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -531 815 0 ) ( -531 946 0 ) ( -261 815 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -531 815 104 ) ( -261 815 104 ) ( -531 946 104 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -531 815 0 ) ( -531 815 104 ) ( -531 946 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -261 815 0 ) ( -261 946 0 ) ( -261 815 104 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-500 -1002 119" +"_color" "0.98 0.37 0.03" +"light" "249" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-168 -230 131" +"_color" "0.9 0.56 0.16" +"light" "393" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1316 623 139" +"_color" "0.91 0.51 0.26" +"light" "495" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-851 1247 81" +"_color" "0.52 0.31 0.09" +"light" "240" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-685 -1225 161" +"_color" "0.64 0.52 0.11" +"light" "389" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-183 -780 132" +"_color" "0.85 0.54 0.02" +"light" "525" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-938 549 126" +"_color" "0.58 0.39 0.3" +"light" "527" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1180 643 120" +"_color" "0.84 0.62 0.23" +"light" "317" +"texture" "lights/defaultPointLight" +} + +// entity 10 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da02_castle_siege" +"origin" "-1302 268 0" +"angle" "205" +} + +// entity 11 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da02_castle_siege" +"origin" "-337 -753 0" +"angle" "108" +} + +// entity 12 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da02_castle_siege" +"origin" "890 264 0" +"angle" "108" +} + +// entity 13 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da02_castle_siege" +"origin" "1251 1020 0" +"angle" "202" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da02_castle_siege" +"origin" "1200 855 0" +"angle" "73" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da02_castle_siege" +"origin" "-349 -453 0" +"angle" "126" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da02_castle_siege" +"origin" "866 1183 0" +"angle" "134" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da02_castle_siege" +"origin" "961 730 0" +"angle" "298" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da02_castle_siege" +"origin" "202 458 0" +"angle" "112" +} + +// entity 19 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da02_castle_siege" +"origin" "-867 1063 0" +"angle" "252" +} + +// entity 20 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da02_castle_siege" +"origin" "-1061 -832 0" +"angle" "56" +} + +// entity 21 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da02_castle_siege" +"origin" "-807 -369 0" +"angle" "348" +} + +// entity 22 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da02_castle_siege" +"origin" "296 1418 0" +"angle" "32" +} + +// entity 23 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da02_castle_siege" +"origin" "143 539 0" +"angle" "305" +} + +// entity 24 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da02_castle_siege" +"origin" "484 1143 0" +"angle" "128" +} + +// entity 25 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_1_da02_castle_siege" +"origin" "1353 -964 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_2_da02_castle_siege" +"origin" "766 -341 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_3_da02_castle_siege" +"origin" "1192 -40 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da02_castle_siege" +"origin" "-231 347 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da02_castle_siege" +"origin" "425 -1420 0" +} + +// entity 30 - Weapon pickup +{ +"classname" "weapon_darkages_axe" +"name" "weapon_pickup_da02_castle_siege" +"origin" "-75 411 24" +} + +// entity 31 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 32 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da03_kings_crypt" +} diff --git a/darkages/maps/darkages/da03_kings_crypt.map b/darkages/maps/darkages/da03_kings_crypt.map new file mode 100644 index 0000000000..42420179b8 --- /dev/null +++ b/darkages/maps/darkages/da03_kings_crypt.map @@ -0,0 +1,362 @@ +Version 2 +// DOOM: The Dark Ages - Level 3: The King's Crypt +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da03_kings_crypt" +"message" "The King's Crypt" +"music" "music/darkages/da03_kings_crypt" +"ambientColor" "0.05 0.05 0.07" +"_color" "0.1 0.1 0.15" +"darkages_level" "3" +"darkages_act" "0" +"darkages_fog_color" "0.1 0.1 0.15" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 512 ) ( 2048 -2048 512 ) ( -2048 2048 512 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 528 ) ( -2048 2048 528 ) ( 2048 -2048 528 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 2048 512 ) ( -2048 -2048 528 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 512 ) ( 2048 -2048 528 ) ( 2048 2048 512 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 -2048 528 ) ( 2048 -2048 512 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 512 ) ( 2048 2048 512 ) ( -2048 2048 528 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 646 -589 0 ) ( 926 -589 0 ) ( 646 -589 114 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 646 -202 0 ) ( 646 -202 114 ) ( 926 -202 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 646 -589 0 ) ( 646 -202 0 ) ( 926 -589 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 646 -589 114 ) ( 926 -589 114 ) ( 646 -202 114 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 646 -589 0 ) ( 646 -589 114 ) ( 646 -202 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 926 -589 0 ) ( 926 -202 0 ) ( 926 -589 114 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 98 -363 0 ) ( 497 -363 0 ) ( 98 -363 146 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 98 -235 0 ) ( 98 -235 146 ) ( 497 -235 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 98 -363 0 ) ( 98 -235 0 ) ( 497 -363 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 98 -363 146 ) ( 497 -363 146 ) ( 98 -235 146 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 98 -363 0 ) ( 98 -363 146 ) ( 98 -235 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 497 -363 0 ) ( 497 -235 0 ) ( 497 -363 146 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -1354 -566 0 ) ( -1041 -566 0 ) ( -1354 -566 125 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1354 -281 0 ) ( -1354 -281 125 ) ( -1041 -281 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1354 -566 0 ) ( -1354 -281 0 ) ( -1041 -566 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1354 -566 125 ) ( -1041 -566 125 ) ( -1354 -281 125 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1354 -566 0 ) ( -1354 -566 125 ) ( -1354 -281 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -1041 -566 0 ) ( -1041 -281 0 ) ( -1041 -566 125 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -447 -702 0 ) ( -276 -702 0 ) ( -447 -702 81 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( -447 -326 0 ) ( -447 -326 81 ) ( -276 -326 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( -447 -702 0 ) ( -447 -326 0 ) ( -276 -702 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( -447 -702 81 ) ( -276 -702 81 ) ( -447 -326 81 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( -447 -702 0 ) ( -447 -702 81 ) ( -447 -326 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( -276 -702 0 ) ( -276 -326 0 ) ( -276 -702 81 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -908 922 0 ) ( -696 922 0 ) ( -908 922 199 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -908 1185 0 ) ( -908 1185 199 ) ( -696 1185 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -908 922 0 ) ( -908 1185 0 ) ( -696 922 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -908 922 199 ) ( -696 922 199 ) ( -908 1185 199 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -908 922 0 ) ( -908 922 199 ) ( -908 1185 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -696 922 0 ) ( -696 1185 0 ) ( -696 922 199 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "570 1455 115" +"_color" "0.86 0.4 0.2" +"light" "391" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "156 481 179" +"_color" "0.56 0.31 0.1" +"light" "501" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "630 -696 120" +"_color" "0.5 0.55 0.02" +"light" "234" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1510 -285 82" +"_color" "0.76 0.34 0.15" +"light" "476" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-1097 1324 185" +"_color" "0.62 0.44 0.12" +"light" "248" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1241 1061 174" +"_color" "0.68 0.41 0.26" +"light" "227" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1120 1038 89" +"_color" "0.53 0.56 0.24" +"light" "255" +"texture" "lights/defaultPointLight" +} + +// entity 9 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da03_kings_crypt" +"origin" "-415 -240 0" +"angle" "97" +} + +// entity 10 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da03_kings_crypt" +"origin" "763 813 0" +"angle" "71" +} + +// entity 11 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da03_kings_crypt" +"origin" "295 -273 0" +"angle" "142" +} + +// entity 12 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da03_kings_crypt" +"origin" "461 -1 0" +"angle" "38" +} + +// entity 13 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da03_kings_crypt" +"origin" "382 1230 0" +"angle" "50" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da03_kings_crypt" +"origin" "-1226 1190 0" +"angle" "7" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da03_kings_crypt" +"origin" "-1051 -56 0" +"angle" "85" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da03_kings_crypt" +"origin" "231 965 0" +"angle" "246" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_9_da03_kings_crypt" +"origin" "-558 618 0" +"angle" "30" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_10_da03_kings_crypt" +"origin" "-759 528 0" +"angle" "1" +} + +// entity 19 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da03_kings_crypt" +"origin" "166 62 0" +"angle" "232" +} + +// entity 20 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da03_kings_crypt" +"origin" "-265 708 0" +"angle" "356" +} + +// entity 21 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da03_kings_crypt" +"origin" "843 969 0" +"angle" "79" +} + +// entity 22 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da03_kings_crypt" +"origin" "-656 191 0" +"angle" "111" +} + +// entity 23 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da03_kings_crypt" +"origin" "-1194 1348 0" +"angle" "277" +} + +// entity 24 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da03_kings_crypt" +"origin" "-1184 260 0" +"angle" "29" +} + +// entity 25 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_1_da03_kings_crypt" +"origin" "959 519 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_2_da03_kings_crypt" +"origin" "742 -789 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_3_da03_kings_crypt" +"origin" "647 -1105 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_4_da03_kings_crypt" +"origin" "-672 -1153 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_5_da03_kings_crypt" +"origin" "-1155 1332 0" +} + +// entity 30 - Weapon pickup +{ +"classname" "weapon_darkages_crossbow" +"name" "weapon_pickup_da03_kings_crypt" +"origin" "-133 212 24" +} + +// entity 31 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 32 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da04_forest_of_shadows" +} diff --git a/darkages/maps/darkages/da04_forest_of_shadows.map b/darkages/maps/darkages/da04_forest_of_shadows.map new file mode 100644 index 0000000000..b646c6bb32 --- /dev/null +++ b/darkages/maps/darkages/da04_forest_of_shadows.map @@ -0,0 +1,365 @@ +Version 2 +// DOOM: The Dark Ages - Level 4: Forest of Shadows +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da04_forest_of_shadows" +"message" "Forest of Shadows" +"music" "music/darkages/da04_forest_of_shadows" +"ambientColor" "0.06 0.08 0.04" +"_color" "0.1 0.15 0.1" +"darkages_level" "4" +"darkages_act" "0" +"darkages_fog_color" "0.1 0.15 0.1" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 512 ) ( 2048 -2048 512 ) ( -2048 2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 528 ) ( -2048 2048 528 ) ( 2048 -2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 2048 512 ) ( -2048 -2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 512 ) ( 2048 -2048 528 ) ( 2048 2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 -2048 528 ) ( 2048 -2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 512 ) ( 2048 2048 512 ) ( -2048 2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 900 -16 0 ) ( 1048 -16 0 ) ( 900 -16 171 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 900 153 0 ) ( 900 153 171 ) ( 1048 153 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 900 -16 0 ) ( 900 153 0 ) ( 1048 -16 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 900 -16 171 ) ( 1048 -16 171 ) ( 900 153 171 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 900 -16 0 ) ( 900 -16 171 ) ( 900 153 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1048 -16 0 ) ( 1048 153 0 ) ( 1048 -16 171 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -365 -188 0 ) ( -77 -188 0 ) ( -365 -188 131 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -365 62 0 ) ( -365 62 131 ) ( -77 62 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -365 -188 0 ) ( -365 62 0 ) ( -77 -188 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -365 -188 131 ) ( -77 -188 131 ) ( -365 62 131 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -365 -188 0 ) ( -365 -188 131 ) ( -365 62 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -77 -188 0 ) ( -77 62 0 ) ( -77 -188 131 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -897 204 0 ) ( -535 204 0 ) ( -897 204 82 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -897 493 0 ) ( -897 493 82 ) ( -535 493 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -897 204 0 ) ( -897 493 0 ) ( -535 204 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -897 204 82 ) ( -535 204 82 ) ( -897 493 82 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -897 204 0 ) ( -897 204 82 ) ( -897 493 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -535 204 0 ) ( -535 493 0 ) ( -535 204 82 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 444 -615 0 ) ( 609 -615 0 ) ( 444 -615 193 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 444 -378 0 ) ( 444 -378 193 ) ( 609 -378 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 444 -615 0 ) ( 444 -378 0 ) ( 609 -615 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 444 -615 193 ) ( 609 -615 193 ) ( 444 -378 193 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 444 -615 0 ) ( 444 -615 193 ) ( 444 -378 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 609 -615 0 ) ( 609 -378 0 ) ( 609 -615 193 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-209 -1357 126" +"_color" "0.68 0.28 0.25" +"light" "560" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-399 867 199" +"_color" "0.5 0.61 0.09" +"light" "539" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1214 -1088 131" +"_color" "0.56 0.25 0.17" +"light" "339" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-484 839 117" +"_color" "0.86 0.3 0.19" +"light" "335" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "432 363 128" +"_color" "0.95 0.62 0.03" +"light" "416" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-505 -1458 64" +"_color" "0.67 0.27 0.29" +"light" "282" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1398 171 173" +"_color" "0.78 0.26 0.28" +"light" "553" +"texture" "lights/defaultPointLight" +} + +// entity 9 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da04_forest_of_shadows" +"origin" "-823 1210 0" +"angle" "18" +} + +// entity 10 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da04_forest_of_shadows" +"origin" "79 1361 0" +"angle" "282" +} + +// entity 11 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da04_forest_of_shadows" +"origin" "-827 736 0" +"angle" "65" +} + +// entity 12 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da04_forest_of_shadows" +"origin" "-1262 238 0" +"angle" "186" +} + +// entity 13 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da04_forest_of_shadows" +"origin" "-1270 441 0" +"angle" "107" +} + +// entity 14 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_6_da04_forest_of_shadows" +"origin" "1360 -2 0" +"angle" "341" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da04_forest_of_shadows" +"origin" "-1012 424 0" +"angle" "286" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da04_forest_of_shadows" +"origin" "231 -391 0" +"angle" "121" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da04_forest_of_shadows" +"origin" "-768 -299 0" +"angle" "211" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da04_forest_of_shadows" +"origin" "-1332 -290 0" +"angle" "170" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da04_forest_of_shadows" +"origin" "253 -8 0" +"angle" "136" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da04_forest_of_shadows" +"origin" "-781 -582 0" +"angle" "195" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da04_forest_of_shadows" +"origin" "-1275 903 0" +"angle" "113" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da04_forest_of_shadows" +"origin" "-616 861 0" +"angle" "179" +} + +// entity 23 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_1_da04_forest_of_shadows" +"origin" "-501 -520 0" +} + +// entity 24 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_2_da04_forest_of_shadows" +"origin" "1270 -642 0" +} + +// entity 25 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_3_da04_forest_of_shadows" +"origin" "-89 -292 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_4_da04_forest_of_shadows" +"origin" "-1149 -290 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_5_da04_forest_of_shadows" +"origin" "1194 653 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_6_da04_forest_of_shadows" +"origin" "1350 763 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da04_forest_of_shadows" +"origin" "-1320 -961 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_8_da04_forest_of_shadows" +"origin" "-702 945 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_9_da04_forest_of_shadows" +"origin" "-1277 -989 0" +} + +// entity 32 - Weapon pickup +{ +"classname" "weapon_darkages_shield" +"name" "weapon_pickup_da04_forest_of_shadows" +"origin" "275 93 24" +} + +// entity 33 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 34 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da05_mountain_pass" +} diff --git a/darkages/maps/darkages/da05_mountain_pass.map b/darkages/maps/darkages/da05_mountain_pass.map new file mode 100644 index 0000000000..bde0466182 --- /dev/null +++ b/darkages/maps/darkages/da05_mountain_pass.map @@ -0,0 +1,394 @@ +Version 2 +// DOOM: The Dark Ages - Level 5: The Mountain Pass +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da05_mountain_pass" +"message" "The Mountain Pass" +"music" "music/darkages/da05_mountain_pass" +"ambientColor" "0.1 0.1 0.12" +"_color" "0.3 0.3 0.35" +"darkages_level" "5" +"darkages_act" "0" +"darkages_fog_color" "0.3 0.3 0.35" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 256 ) ( 2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 256 ) ( 2048 2048 256 ) ( -2048 2064 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 256 ) ( -2048 2064 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 256 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 512 ) ( 2048 -2048 512 ) ( -2048 2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 528 ) ( -2048 2048 528 ) ( 2048 -2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 2048 512 ) ( -2048 -2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 512 ) ( 2048 -2048 528 ) ( 2048 2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 512 ) ( -2048 -2048 528 ) ( 2048 -2048 512 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 512 ) ( 2048 2048 512 ) ( -2048 2048 528 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 354 -551 0 ) ( 679 -551 0 ) ( 354 -551 129 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 354 -326 0 ) ( 354 -326 129 ) ( 679 -326 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 354 -551 0 ) ( 354 -326 0 ) ( 679 -551 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 354 -551 129 ) ( 679 -551 129 ) ( 354 -326 129 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 354 -551 0 ) ( 354 -551 129 ) ( 354 -326 0 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +( 679 -551 0 ) ( 679 -326 0 ) ( 679 -551 129 ) "textures/darkages/stone_castle_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 353 -1018 0 ) ( 747 -1018 0 ) ( 353 -1018 157 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 353 -790 0 ) ( 353 -790 157 ) ( 747 -790 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 353 -1018 0 ) ( 353 -790 0 ) ( 747 -1018 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 353 -1018 157 ) ( 747 -1018 157 ) ( 353 -790 157 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 353 -1018 0 ) ( 353 -1018 157 ) ( 353 -790 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 747 -1018 0 ) ( 747 -790 0 ) ( 747 -1018 157 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -1147 328 0 ) ( -859 328 0 ) ( -1147 328 140 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1147 519 0 ) ( -1147 519 140 ) ( -859 519 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1147 328 0 ) ( -1147 519 0 ) ( -859 328 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1147 328 140 ) ( -859 328 140 ) ( -1147 519 140 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1147 328 0 ) ( -1147 328 140 ) ( -1147 519 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -859 328 0 ) ( -859 519 0 ) ( -859 328 140 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 1298 648 0 ) ( 1593 648 0 ) ( 1298 648 139 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 1298 982 0 ) ( 1298 982 139 ) ( 1593 982 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 1298 648 0 ) ( 1298 982 0 ) ( 1593 648 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 1298 648 139 ) ( 1593 648 139 ) ( 1298 982 139 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 1298 648 0 ) ( 1298 648 139 ) ( 1298 982 0 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +( 1593 648 0 ) ( 1593 982 0 ) ( 1593 648 139 ) "textures/darkages/stone_cobblestone" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -648 698 0 ) ( -326 698 0 ) ( -648 698 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -648 915 0 ) ( -648 915 141 ) ( -326 915 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -648 698 0 ) ( -648 915 0 ) ( -326 698 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -648 698 141 ) ( -326 698 141 ) ( -648 915 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -648 698 0 ) ( -648 698 141 ) ( -648 915 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -326 698 0 ) ( -326 915 0 ) ( -326 698 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 811 -1023 0 ) ( 1094 -1023 0 ) ( 811 -1023 117 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 811 -749 0 ) ( 811 -749 117 ) ( 1094 -749 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 811 -1023 0 ) ( 811 -749 0 ) ( 1094 -1023 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 811 -1023 117 ) ( 1094 -1023 117 ) ( 811 -749 117 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 811 -1023 0 ) ( 811 -1023 117 ) ( 811 -749 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1094 -1023 0 ) ( 1094 -749 0 ) ( 1094 -1023 117 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "737 846 146" +"_color" "0.73 0.42 0.06" +"light" "442" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "1613 1622 107" +"_color" "0.83 0.34 0.2" +"light" "517" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-266 -1256 124" +"_color" "0.84 0.31 0.06" +"light" "212" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1449 -636 185" +"_color" "0.81 0.58 0.14" +"light" "522" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "719 -842 162" +"_color" "0.75 0.32 0.2" +"light" "202" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1437 1516 91" +"_color" "0.89 0.31 0.24" +"light" "556" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "483 264 76" +"_color" "0.78 0.66 0.04" +"light" "268" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "265 1096 199" +"_color" "0.99 0.5 0.29" +"light" "426" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "871 1308 193" +"_color" "0.71 0.65 0.13" +"light" "281" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "1408 306 179" +"_color" "0.63 0.32 0.19" +"light" "592" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1547 497 188" +"_color" "0.81 0.34 0.02" +"light" "346" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "-678 -526 149" +"_color" "0.66 0.47 0.04" +"light" "318" +"texture" "lights/defaultPointLight" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da05_mountain_pass" +"origin" "135 -399 0" +"angle" "109" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da05_mountain_pass" +"origin" "-1170 675 0" +"angle" "208" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da05_mountain_pass" +"origin" "-78 1198 0" +"angle" "238" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da05_mountain_pass" +"origin" "270 -769 0" +"angle" "105" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da05_mountain_pass" +"origin" "287 571 0" +"angle" "299" +} + +// entity 19 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da05_mountain_pass" +"origin" "1415 -944 0" +"angle" "294" +} + +// entity 20 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da05_mountain_pass" +"origin" "125 929 0" +"angle" "3" +} + +// entity 21 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da05_mountain_pass" +"origin" "7 199 0" +"angle" "199" +} + +// entity 22 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da05_mountain_pass" +"origin" "283 1180 0" +"angle" "279" +} + +// entity 23 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_1_da05_mountain_pass" +"origin" "1037 -121 0" +"angle" "249" +} + +// entity 24 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da05_mountain_pass" +"origin" "-316 352 0" +} + +// entity 25 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_2_da05_mountain_pass" +"origin" "-1315 159 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_3_da05_mountain_pass" +"origin" "1306 1348 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_4_da05_mountain_pass" +"origin" "223 -757 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_5_da05_mountain_pass" +"origin" "481 -911 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_6_da05_mountain_pass" +"origin" "754 -1323 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_7_da05_mountain_pass" +"origin" "991 878 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_8_da05_mountain_pass" +"origin" "-1322 -1090 0" +} + +// entity 32 - Weapon pickup +{ +"classname" "weapon_darkages_flail" +"name" "weapon_pickup_da05_mountain_pass" +"origin" "263 -337 24" +} + +// entity 33 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 34 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da06_dark_cathedral" +} diff --git a/darkages/maps/darkages/da06_dark_cathedral.map b/darkages/maps/darkages/da06_dark_cathedral.map new file mode 100644 index 0000000000..0999578130 --- /dev/null +++ b/darkages/maps/darkages/da06_dark_cathedral.map @@ -0,0 +1,413 @@ +Version 2 +// DOOM: The Dark Ages - Level 6: The Dark Cathedral +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da06_dark_cathedral" +"message" "The Dark Cathedral" +"music" "music/darkages/da06_dark_cathedral" +"ambientColor" "0.06 0.03 0.05" +"_color" "0.15 0.05 0.1" +"darkages_level" "6" +"darkages_act" "1" +"darkages_fog_color" "0.15 0.05 0.1" +"darkages_fog_distance" "2560" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( -2560 0 0 ) ( -2560 0 -16 ) ( -2560 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 2560 0 0 ) ( 2560 1 0 ) ( 2560 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 -2560 0 ) ( 1 -2560 0 ) ( 0 -2560 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 2560 0 ) ( 0 2560 -16 ) ( 1 2560 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2560 -2560 576 ) ( 2560 -2560 576 ) ( -2560 2560 576 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 592 ) ( -2560 2560 592 ) ( 2560 -2560 592 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 2560 576 ) ( -2560 -2560 592 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 2560 -2560 576 ) ( 2560 -2560 592 ) ( 2560 2560 576 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 -2560 592 ) ( 2560 -2560 576 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2560 2560 576 ) ( 2560 2560 576 ) ( -2560 2560 592 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -1048 -1075 0 ) ( -787 -1075 0 ) ( -1048 -1075 147 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1048 -753 0 ) ( -1048 -753 147 ) ( -787 -753 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1048 -1075 0 ) ( -1048 -753 0 ) ( -787 -1075 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1048 -1075 147 ) ( -787 -1075 147 ) ( -1048 -753 147 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1048 -1075 0 ) ( -1048 -1075 147 ) ( -1048 -753 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -787 -1075 0 ) ( -787 -753 0 ) ( -787 -1075 147 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 70 58 0 ) ( 370 58 0 ) ( 70 58 135 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 70 380 0 ) ( 70 380 135 ) ( 370 380 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 70 58 0 ) ( 70 380 0 ) ( 370 58 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 70 58 135 ) ( 370 58 135 ) ( 70 380 135 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 70 58 0 ) ( 70 58 135 ) ( 70 380 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 370 58 0 ) ( 370 380 0 ) ( 370 58 135 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -759 -945 0 ) ( -391 -945 0 ) ( -759 -945 255 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -759 -808 0 ) ( -759 -808 255 ) ( -391 -808 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -759 -945 0 ) ( -759 -808 0 ) ( -391 -945 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -759 -945 255 ) ( -391 -945 255 ) ( -759 -808 255 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -759 -945 0 ) ( -759 -945 255 ) ( -759 -808 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -391 -945 0 ) ( -391 -808 0 ) ( -391 -945 255 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -359 -362 0 ) ( -196 -362 0 ) ( -359 -362 71 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -359 -214 0 ) ( -359 -214 71 ) ( -196 -214 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -359 -362 0 ) ( -359 -214 0 ) ( -196 -362 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -359 -362 71 ) ( -196 -362 71 ) ( -359 -214 71 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -359 -362 0 ) ( -359 -362 71 ) ( -359 -214 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -196 -362 0 ) ( -196 -214 0 ) ( -196 -362 71 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -976 -1197 0 ) ( -770 -1197 0 ) ( -976 -1197 96 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -976 -947 0 ) ( -976 -947 96 ) ( -770 -947 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -976 -1197 0 ) ( -976 -947 0 ) ( -770 -1197 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -976 -1197 96 ) ( -770 -1197 96 ) ( -976 -947 96 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -976 -1197 0 ) ( -976 -1197 96 ) ( -976 -947 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -770 -1197 0 ) ( -770 -947 0 ) ( -770 -1197 96 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 950 -812 0 ) ( 1189 -812 0 ) ( 950 -812 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 950 -446 0 ) ( 950 -446 243 ) ( 1189 -446 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 950 -812 0 ) ( 950 -446 0 ) ( 1189 -812 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 950 -812 243 ) ( 1189 -812 243 ) ( 950 -446 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 950 -812 0 ) ( 950 -812 243 ) ( 950 -446 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1189 -812 0 ) ( 1189 -446 0 ) ( 1189 -812 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( 1349 230 0 ) ( 1562 230 0 ) ( 1349 230 105 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1349 416 0 ) ( 1349 416 105 ) ( 1562 416 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1349 230 0 ) ( 1349 416 0 ) ( 1562 230 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1349 230 105 ) ( 1562 230 105 ) ( 1349 416 105 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1349 230 0 ) ( 1349 230 105 ) ( 1349 416 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1562 230 0 ) ( 1562 416 0 ) ( 1562 230 105 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2360 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-1838 507 211" +"_color" "0.84 0.68 0.12" +"light" "566" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-424 -1426 215" +"_color" "0.85 0.51 0.03" +"light" "595" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "422 -1057 208" +"_color" "0.89 0.37 0.13" +"light" "389" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1484 747 67" +"_color" "0.92 0.61 0.03" +"light" "385" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "1718 -795 175" +"_color" "0.59 0.46 0.2" +"light" "515" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1912 1760 175" +"_color" "0.91 0.5 0.1" +"light" "325" +"texture" "lights/defaultPointLight" +} + +// entity 8 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_1_da06_dark_cathedral" +"origin" "1610 -926 0" +"angle" "142" +} + +// entity 9 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_2_da06_dark_cathedral" +"origin" "54 -282 0" +"angle" "237" +} + +// entity 10 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_3_da06_dark_cathedral" +"origin" "542 1219 0" +"angle" "342" +} + +// entity 11 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_4_da06_dark_cathedral" +"origin" "-240 97 0" +"angle" "14" +} + +// entity 12 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_5_da06_dark_cathedral" +"origin" "232 51 0" +"angle" "93" +} + +// entity 13 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_6_da06_dark_cathedral" +"origin" "205 -412 0" +"angle" "181" +} + +// entity 14 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_7_da06_dark_cathedral" +"origin" "1475 -222 0" +"angle" "174" +} + +// entity 15 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_8_da06_dark_cathedral" +"origin" "-647 1161 0" +"angle" "359" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da06_dark_cathedral" +"origin" "-661 996 0" +"angle" "5" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da06_dark_cathedral" +"origin" "324 -498 0" +"angle" "43" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da06_dark_cathedral" +"origin" "-804 1669 0" +"angle" "208" +} + +// entity 19 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da06_dark_cathedral" +"origin" "209 994 0" +"angle" "123" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da06_dark_cathedral" +"origin" "1036 670 0" +"angle" "330" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da06_dark_cathedral" +"origin" "1123 730 0" +"angle" "229" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da06_dark_cathedral" +"origin" "1455 -1210 0" +"angle" "47" +} + +// entity 23 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da06_dark_cathedral" +"origin" "-587 -373 0" +"angle" "207" +} + +// entity 24 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da06_dark_cathedral" +"origin" "1041 -284 0" +"angle" "156" +} + +// entity 25 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_1_da06_dark_cathedral" +"origin" "146 475 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da06_dark_cathedral" +"origin" "-384 -50 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_3_da06_dark_cathedral" +"origin" "462 -438 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_4_da06_dark_cathedral" +"origin" "1086 66 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_5_da06_dark_cathedral" +"origin" "-537 -763 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_6_da06_dark_cathedral" +"origin" "-1298 1162 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_7_da06_dark_cathedral" +"origin" "-500 -1303 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_8_da06_dark_cathedral" +"origin" "402 1329 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_9_da06_dark_cathedral" +"origin" "-1034 -1008 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_10_da06_dark_cathedral" +"origin" "1233 191 0" +} + +// entity 35 - Weapon pickup +{ +"classname" "weapon_darkages_throwaxe" +"name" "weapon_pickup_da06_dark_cathedral" +"origin" "715 439 24" +} + +// entity 36 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 2510 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 37 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da07_plague_town" +} diff --git a/darkages/maps/darkages/da07_plague_town.map b/darkages/maps/darkages/da07_plague_town.map new file mode 100644 index 0000000000..a2001d9678 --- /dev/null +++ b/darkages/maps/darkages/da07_plague_town.map @@ -0,0 +1,537 @@ +Version 2 +// DOOM: The Dark Ages - Level 7: Plague Town +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da07_plague_town" +"message" "Plague Town" +"music" "music/darkages/da07_plague_town" +"ambientColor" "0.08 0.1 0.05" +"_color" "0.2 0.3 0.1" +"darkages_level" "7" +"darkages_act" "1" +"darkages_fog_color" "0.2 0.3 0.1" +"darkages_fog_distance" "2560" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( -2560 0 0 ) ( -2560 0 -16 ) ( -2560 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 2560 0 0 ) ( 2560 1 0 ) ( 2560 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 -2560 0 ) ( 1 -2560 0 ) ( 0 -2560 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 2560 0 ) ( 0 2560 -16 ) ( 1 2560 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2560 -2560 576 ) ( 2560 -2560 576 ) ( -2560 2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 592 ) ( -2560 2560 592 ) ( 2560 -2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 2560 576 ) ( -2560 -2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( 2560 -2560 576 ) ( 2560 -2560 592 ) ( 2560 2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 -2560 592 ) ( 2560 -2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 2560 576 ) ( 2560 2560 576 ) ( -2560 2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 652 -121 0 ) ( 831 -121 0 ) ( 652 -121 139 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 652 106 0 ) ( 652 106 139 ) ( 831 106 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 652 -121 0 ) ( 652 106 0 ) ( 831 -121 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 652 -121 139 ) ( 831 -121 139 ) ( 652 106 139 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 652 -121 0 ) ( 652 -121 139 ) ( 652 106 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 831 -121 0 ) ( 831 106 0 ) ( 831 -121 139 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -314 -546 0 ) ( -32 -546 0 ) ( -314 -546 245 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -314 -411 0 ) ( -314 -411 245 ) ( -32 -411 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -314 -546 0 ) ( -314 -411 0 ) ( -32 -546 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -314 -546 245 ) ( -32 -546 245 ) ( -314 -411 245 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -314 -546 0 ) ( -314 -546 245 ) ( -314 -411 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -32 -546 0 ) ( -32 -411 0 ) ( -32 -546 245 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -669 -1094 0 ) ( -514 -1094 0 ) ( -669 -1094 242 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -669 -817 0 ) ( -669 -817 242 ) ( -514 -817 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -669 -1094 0 ) ( -669 -817 0 ) ( -514 -1094 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -669 -1094 242 ) ( -514 -1094 242 ) ( -669 -817 242 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -669 -1094 0 ) ( -669 -1094 242 ) ( -669 -817 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -514 -1094 0 ) ( -514 -817 0 ) ( -514 -1094 242 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 820 730 0 ) ( 1000 730 0 ) ( 820 730 210 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 820 864 0 ) ( 820 864 210 ) ( 1000 864 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 820 730 0 ) ( 820 864 0 ) ( 1000 730 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 820 730 210 ) ( 1000 730 210 ) ( 820 864 210 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 820 730 0 ) ( 820 730 210 ) ( 820 864 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1000 730 0 ) ( 1000 864 0 ) ( 1000 730 210 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 130 680 0 ) ( 483 680 0 ) ( 130 680 111 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 130 982 0 ) ( 130 982 111 ) ( 483 982 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 130 680 0 ) ( 130 982 0 ) ( 483 680 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 130 680 111 ) ( 483 680 111 ) ( 130 982 111 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 130 680 0 ) ( 130 680 111 ) ( 130 982 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 483 680 0 ) ( 483 982 0 ) ( 483 680 111 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -758 676 0 ) ( -572 676 0 ) ( -758 676 166 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -758 837 0 ) ( -758 837 166 ) ( -572 837 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -758 676 0 ) ( -758 837 0 ) ( -572 676 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -758 676 166 ) ( -572 676 166 ) ( -758 837 166 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -758 676 0 ) ( -758 676 166 ) ( -758 837 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -572 676 0 ) ( -572 837 0 ) ( -572 676 166 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -1489 1083 0 ) ( -1334 1083 0 ) ( -1489 1083 102 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1489 1288 0 ) ( -1489 1288 102 ) ( -1334 1288 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1489 1083 0 ) ( -1489 1288 0 ) ( -1334 1083 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1489 1083 102 ) ( -1334 1083 102 ) ( -1489 1288 102 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1489 1083 0 ) ( -1489 1083 102 ) ( -1489 1288 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1334 1083 0 ) ( -1334 1288 0 ) ( -1334 1083 102 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( -1444 -264 0 ) ( -1256 -264 0 ) ( -1444 -264 219 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1444 77 0 ) ( -1444 77 219 ) ( -1256 77 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1444 -264 0 ) ( -1444 77 0 ) ( -1256 -264 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1444 -264 219 ) ( -1256 -264 219 ) ( -1444 77 219 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1444 -264 0 ) ( -1444 -264 219 ) ( -1444 77 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -1256 -264 0 ) ( -1256 77 0 ) ( -1256 -264 219 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2360 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1068 1642 177" +"_color" "0.65 0.49 0.13" +"light" "491" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-1555 -1236 117" +"_color" "0.81 0.33 0.02" +"light" "322" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-625 -1434 104" +"_color" "0.5 0.43 0.18" +"light" "349" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1781 -152 137" +"_color" "0.85 0.55 0.14" +"light" "551" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-136 119 224" +"_color" "0.79 0.6 0.06" +"light" "258" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-207 -828 132" +"_color" "0.91 0.24 0.05" +"light" "357" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "316 1549 95" +"_color" "0.73 0.35 0.12" +"light" "339" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1997 1538 84" +"_color" "0.8 0.64 0.22" +"light" "509" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "3 -1837 87" +"_color" "0.61 0.54 0.26" +"light" "500" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "-1879 159 211" +"_color" "0.52 0.58 0.14" +"light" "533" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1574 230 110" +"_color" "1.0 0.42 0.24" +"light" "246" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "1802 802 168" +"_color" "0.67 0.54 0.26" +"light" "368" +"texture" "lights/defaultPointLight" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da07_plague_town" +"origin" "-106 1561 0" +"angle" "253" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da07_plague_town" +"origin" "-612 1433 0" +"angle" "205" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da07_plague_town" +"origin" "1540 973 0" +"angle" "18" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da07_plague_town" +"origin" "70 -920 0" +"angle" "161" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da07_plague_town" +"origin" "-759 44 0" +"angle" "59" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da07_plague_town" +"origin" "1372 375 0" +"angle" "263" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da07_plague_town" +"origin" "1586 -1276 0" +"angle" "336" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da07_plague_town" +"origin" "1768 942 0" +"angle" "236" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da07_plague_town" +"origin" "-100 -1058 0" +"angle" "96" +} + +// entity 23 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da07_plague_town" +"origin" "331 201 0" +"angle" "318" +} + +// entity 24 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da07_plague_town" +"origin" "1306 761 0" +"angle" "320" +} + +// entity 25 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da07_plague_town" +"origin" "18 -1069 0" +"angle" "104" +} + +// entity 26 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_5_da07_plague_town" +"origin" "-699 969 0" +"angle" "67" +} + +// entity 27 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_6_da07_plague_town" +"origin" "-613 514 0" +"angle" "357" +} + +// entity 28 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da07_plague_town" +"origin" "193 -783 0" +"angle" "14" +} + +// entity 29 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da07_plague_town" +"origin" "788 1213 0" +"angle" "122" +} + +// entity 30 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da07_plague_town" +"origin" "1115 -632 0" +"angle" "159" +} + +// entity 31 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da07_plague_town" +"origin" "464 -1224 0" +"angle" "282" +} + +// entity 32 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_1_da07_plague_town" +"origin" "-121 -899 0" +"angle" "115" +} + +// entity 33 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_2_da07_plague_town" +"origin" "1654 -816 0" +"angle" "236" +} + +// entity 34 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_3_da07_plague_town" +"origin" "-1311 1373 0" +"angle" "78" +} + +// entity 35 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_4_da07_plague_town" +"origin" "249 1655 0" +"angle" "149" +} + +// entity 36 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_5_da07_plague_town" +"origin" "292 1609 0" +"angle" "139" +} + +// entity 37 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da07_plague_town" +"origin" "1627 184 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_2_da07_plague_town" +"origin" "-794 78 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_3_da07_plague_town" +"origin" "-1200 -221 0" +} + +// entity 40 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_4_da07_plague_town" +"origin" "663 289 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da07_plague_town" +"origin" "-1233 1747 0" +} + +// entity 42 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_6_da07_plague_town" +"origin" "-661 1372 0" +} + +// entity 43 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da07_plague_town" +"origin" "1707 -93 0" +} + +// entity 44 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_8_da07_plague_town" +"origin" "1434 287 0" +} + +// entity 45 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_9_da07_plague_town" +"origin" "1568 -1782 0" +} + +// entity 46 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_10_da07_plague_town" +"origin" "1181 -570 0" +} + +// entity 47 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_11_da07_plague_town" +"origin" "612 583 0" +} + +// entity 48 - Weapon pickup +{ +"classname" "weapon_darkages_sword" +"name" "weapon_pickup_da07_plague_town" +"origin" "234 -464 24" +} + +// entity 49 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 2510 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 50 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da08_iron_fortress" +} diff --git a/darkages/maps/darkages/da08_iron_fortress.map b/darkages/maps/darkages/da08_iron_fortress.map new file mode 100644 index 0000000000..e482aaff46 --- /dev/null +++ b/darkages/maps/darkages/da08_iron_fortress.map @@ -0,0 +1,461 @@ +Version 2 +// DOOM: The Dark Ages - Level 8: The Iron Fortress +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da08_iron_fortress" +"message" "The Iron Fortress" +"music" "music/darkages/da08_iron_fortress" +"ambientColor" "0.05 0.04 0.04" +"_color" "0.1 0.08 0.08" +"darkages_level" "8" +"darkages_act" "1" +"darkages_fog_color" "0.1 0.08 0.08" +"darkages_fog_distance" "2560" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( -2560 0 0 ) ( -2560 0 -16 ) ( -2560 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 2560 0 0 ) ( 2560 1 0 ) ( 2560 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 -2560 0 ) ( 1 -2560 0 ) ( 0 -2560 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 2560 0 ) ( 0 2560 -16 ) ( 1 2560 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2560 -2560 576 ) ( 2560 -2560 576 ) ( -2560 2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 592 ) ( -2560 2560 592 ) ( 2560 -2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 2560 576 ) ( -2560 -2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( 2560 -2560 576 ) ( 2560 -2560 592 ) ( 2560 2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 -2560 592 ) ( 2560 -2560 576 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +( -2560 2560 576 ) ( 2560 2560 576 ) ( -2560 2560 592 ) "textures/darkages/sky_overcast" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 414 703 0 ) ( 718 703 0 ) ( 414 703 205 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 1001 0 ) ( 414 1001 205 ) ( 718 1001 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 703 0 ) ( 414 1001 0 ) ( 718 703 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 703 205 ) ( 718 703 205 ) ( 414 1001 205 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 703 0 ) ( 414 703 205 ) ( 414 1001 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 718 703 0 ) ( 718 1001 0 ) ( 718 703 205 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 73 38 0 ) ( 297 38 0 ) ( 73 38 210 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 73 288 0 ) ( 73 288 210 ) ( 297 288 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 73 38 0 ) ( 73 288 0 ) ( 297 38 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 73 38 210 ) ( 297 38 210 ) ( 73 288 210 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 73 38 0 ) ( 73 38 210 ) ( 73 288 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 297 38 0 ) ( 297 288 0 ) ( 297 38 210 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -836 402 0 ) ( -686 402 0 ) ( -836 402 254 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -836 692 0 ) ( -836 692 254 ) ( -686 692 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -836 402 0 ) ( -836 692 0 ) ( -686 402 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -836 402 254 ) ( -686 402 254 ) ( -836 692 254 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -836 402 0 ) ( -836 402 254 ) ( -836 692 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -686 402 0 ) ( -686 692 0 ) ( -686 402 254 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 1096 281 0 ) ( 1421 281 0 ) ( 1096 281 190 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1096 486 0 ) ( 1096 486 190 ) ( 1421 486 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1096 281 0 ) ( 1096 486 0 ) ( 1421 281 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1096 281 190 ) ( 1421 281 190 ) ( 1096 486 190 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1096 281 0 ) ( 1096 281 190 ) ( 1096 486 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1421 281 0 ) ( 1421 486 0 ) ( 1421 281 190 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -1275 777 0 ) ( -978 777 0 ) ( -1275 777 176 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1275 956 0 ) ( -1275 956 176 ) ( -978 956 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1275 777 0 ) ( -1275 956 0 ) ( -978 777 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1275 777 176 ) ( -978 777 176 ) ( -1275 956 176 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1275 777 0 ) ( -1275 777 176 ) ( -1275 956 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -978 777 0 ) ( -978 956 0 ) ( -978 777 176 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 362 591 0 ) ( 497 591 0 ) ( 362 591 168 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 362 792 0 ) ( 362 792 168 ) ( 497 792 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 362 591 0 ) ( 362 792 0 ) ( 497 591 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 362 591 168 ) ( 497 591 168 ) ( 362 792 168 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 362 591 0 ) ( 362 591 168 ) ( 362 792 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( 497 591 0 ) ( 497 792 0 ) ( 497 591 168 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -1486 643 0 ) ( -1223 643 0 ) ( -1486 643 223 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1486 944 0 ) ( -1486 944 223 ) ( -1223 944 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1486 643 0 ) ( -1486 944 0 ) ( -1223 643 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1486 643 223 ) ( -1223 643 223 ) ( -1486 944 223 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1486 643 0 ) ( -1486 643 223 ) ( -1486 944 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1223 643 0 ) ( -1223 944 0 ) ( -1223 643 223 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2360 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-1391 643 236" +"_color" "0.93 0.39 0.09" +"light" "567" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "1949 -1754 222" +"_color" "0.53 0.52 0.28" +"light" "316" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1308 1507 89" +"_color" "0.88 0.55 0.03" +"light" "285" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "405 -1811 75" +"_color" "0.66 0.23 0.11" +"light" "420" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-856 -48 199" +"_color" "0.71 0.54 0.05" +"light" "289" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1402 1085 222" +"_color" "0.84 0.45 0.17" +"light" "318" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1729 32 181" +"_color" "0.63 0.2 0.24" +"light" "347" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-754 -1443 177" +"_color" "0.97 0.69 0.09" +"light" "417" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "0 1694 141" +"_color" "0.6 0.39 0.14" +"light" "321" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "1076 892 211" +"_color" "0.65 0.55 0.01" +"light" "537" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1194 200 66" +"_color" "0.78 0.54 0.22" +"light" "225" +"texture" "lights/defaultPointLight" +} + +// entity 13 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da08_iron_fortress" +"origin" "691 1772 0" +"angle" "254" +} + +// entity 14 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da08_iron_fortress" +"origin" "1619 -108 0" +"angle" "117" +} + +// entity 15 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da08_iron_fortress" +"origin" "694 163 0" +"angle" "112" +} + +// entity 16 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_4_da08_iron_fortress" +"origin" "815 -502 0" +"angle" "317" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da08_iron_fortress" +"origin" "-766 1496 0" +"angle" "337" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da08_iron_fortress" +"origin" "996 -720 0" +"angle" "321" +} + +// entity 19 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da08_iron_fortress" +"origin" "-1395 1290 0" +"angle" "330" +} + +// entity 20 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da08_iron_fortress" +"origin" "-1631 -15 0" +"angle" "225" +} + +// entity 21 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da08_iron_fortress" +"origin" "-1656 1093 0" +"angle" "186" +} + +// entity 22 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da08_iron_fortress" +"origin" "1207 -742 0" +"angle" "46" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da08_iron_fortress" +"origin" "-584 58 0" +"angle" "212" +} + +// entity 24 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da08_iron_fortress" +"origin" "-1073 -458 0" +"angle" "67" +} + +// entity 25 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da08_iron_fortress" +"origin" "1429 929 0" +"angle" "187" +} + +// entity 26 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da08_iron_fortress" +"origin" "382 775 0" +"angle" "139" +} + +// entity 27 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da08_iron_fortress" +"origin" "1609 -607 0" +"angle" "131" +} + +// entity 28 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_1_da08_iron_fortress" +"origin" "1511 -584 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_2_da08_iron_fortress" +"origin" "1773 -405 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_3_da08_iron_fortress" +"origin" "-1321 126 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da08_iron_fortress" +"origin" "-1216 1297 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da08_iron_fortress" +"origin" "1731 978 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_6_da08_iron_fortress" +"origin" "970 -165 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da08_iron_fortress" +"origin" "1503 490 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_8_da08_iron_fortress" +"origin" "-1423 1446 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_9_da08_iron_fortress" +"origin" "-1735 -709 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_10_da08_iron_fortress" +"origin" "-1286 70 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_11_da08_iron_fortress" +"origin" "963 1275 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_12_da08_iron_fortress" +"origin" "-719 602 0" +} + +// entity 40 - Weapon pickup +{ +"classname" "weapon_darkages_mace" +"name" "weapon_pickup_da08_iron_fortress" +"origin" "539 -8 24" +} + +// entity 41 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 2510 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 42 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da09_bone_wastes" +} diff --git a/darkages/maps/darkages/da09_bone_wastes.map b/darkages/maps/darkages/da09_bone_wastes.map new file mode 100644 index 0000000000..459b6e5f4c --- /dev/null +++ b/darkages/maps/darkages/da09_bone_wastes.map @@ -0,0 +1,404 @@ +Version 2 +// DOOM: The Dark Ages - Level 9: The Bone Wastes +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da09_bone_wastes" +"message" "The Bone Wastes" +"music" "music/darkages/da09_bone_wastes" +"ambientColor" "0.12 0.1 0.07" +"_color" "0.3 0.25 0.15" +"darkages_level" "9" +"darkages_act" "1" +"darkages_fog_color" "0.3 0.25 0.15" +"darkages_fog_distance" "2560" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( -2560 0 0 ) ( -2560 0 -16 ) ( -2560 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 2560 0 0 ) ( 2560 1 0 ) ( 2560 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 -2560 0 ) ( 1 -2560 0 ) ( 0 -2560 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 2560 0 ) ( 0 2560 -16 ) ( 1 2560 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2560 -2560 576 ) ( 2560 -2560 576 ) ( -2560 2560 576 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 592 ) ( -2560 2560 592 ) ( 2560 -2560 592 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 2560 576 ) ( -2560 -2560 592 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( 2560 -2560 576 ) ( 2560 -2560 592 ) ( 2560 2560 576 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 -2560 592 ) ( 2560 -2560 576 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -2560 2560 576 ) ( 2560 2560 576 ) ( -2560 2560 592 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 972 -323 0 ) ( 1341 -323 0 ) ( 972 -323 222 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 972 -183 0 ) ( 972 -183 222 ) ( 1341 -183 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 972 -323 0 ) ( 972 -183 0 ) ( 1341 -323 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 972 -323 222 ) ( 1341 -323 222 ) ( 972 -183 222 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 972 -323 0 ) ( 972 -323 222 ) ( 972 -183 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1341 -323 0 ) ( 1341 -183 0 ) ( 1341 -323 222 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 706 -374 0 ) ( 866 -374 0 ) ( 706 -374 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 706 -9 0 ) ( 706 -9 243 ) ( 866 -9 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 706 -374 0 ) ( 706 -9 0 ) ( 866 -374 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 706 -374 243 ) ( 866 -374 243 ) ( 706 -9 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 706 -374 0 ) ( 706 -374 243 ) ( 706 -9 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 866 -374 0 ) ( 866 -9 0 ) ( 866 -374 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 867 392 0 ) ( 1054 392 0 ) ( 867 392 75 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 867 591 0 ) ( 867 591 75 ) ( 1054 591 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 867 392 0 ) ( 867 591 0 ) ( 1054 392 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 867 392 75 ) ( 1054 392 75 ) ( 867 591 75 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 867 392 0 ) ( 867 392 75 ) ( 867 591 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1054 392 0 ) ( 1054 591 0 ) ( 1054 392 75 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -546 737 0 ) ( -359 737 0 ) ( -546 737 124 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -546 914 0 ) ( -546 914 124 ) ( -359 914 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -546 737 0 ) ( -546 914 0 ) ( -359 737 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -546 737 124 ) ( -359 737 124 ) ( -546 914 124 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -546 737 0 ) ( -546 737 124 ) ( -546 914 0 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +( -359 737 0 ) ( -359 914 0 ) ( -359 737 124 ) "textures/darkages/ground_dirt" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2360 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1668 991 235" +"_color" "0.97 0.55 0.16" +"light" "500" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-783 1350 231" +"_color" "0.55 0.44 0.12" +"light" "343" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1780 987 119" +"_color" "0.72 0.68 0.26" +"light" "250" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "961 890 79" +"_color" "0.7 0.29 0.04" +"light" "432" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-1298 -311 228" +"_color" "0.82 0.69 0.02" +"light" "370" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-53 -1017 208" +"_color" "0.6 0.61 0.17" +"light" "500" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-279 -140 148" +"_color" "0.89 0.59 0.18" +"light" "341" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-863 -984 202" +"_color" "0.63 0.29 0.2" +"light" "213" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-969 -1927 155" +"_color" "0.89 0.32 0.1" +"light" "289" +"texture" "lights/defaultPointLight" +} + +// entity 11 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da09_bone_wastes" +"origin" "-706 -1066 0" +"angle" "64" +} + +// entity 12 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da09_bone_wastes" +"origin" "1246 444 0" +"angle" "269" +} + +// entity 13 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da09_bone_wastes" +"origin" "-1327 1774 0" +"angle" "32" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da09_bone_wastes" +"origin" "158 556 0" +"angle" "185" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da09_bone_wastes" +"origin" "310 1151 0" +"angle" "55" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da09_bone_wastes" +"origin" "59 783 0" +"angle" "113" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da09_bone_wastes" +"origin" "727 -1103 0" +"angle" "337" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da09_bone_wastes" +"origin" "343 -45 0" +"angle" "234" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_9_da09_bone_wastes" +"origin" "843 -1153 0" +"angle" "31" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_10_da09_bone_wastes" +"origin" "169 365 0" +"angle" "218" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_11_da09_bone_wastes" +"origin" "1018 -838 0" +"angle" "251" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_12_da09_bone_wastes" +"origin" "1125 536 0" +"angle" "37" +} + +// entity 23 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da09_bone_wastes" +"origin" "-1462 39 0" +"angle" "311" +} + +// entity 24 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da09_bone_wastes" +"origin" "-1185 -1011 0" +"angle" "64" +} + +// entity 25 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da09_bone_wastes" +"origin" "-666 1277 0" +"angle" "324" +} + +// entity 26 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da09_bone_wastes" +"origin" "605 966 0" +"angle" "166" +} + +// entity 27 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da09_bone_wastes" +"origin" "-232 1166 0" +"angle" "271" +} + +// entity 28 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da09_bone_wastes" +"origin" "-585 578 0" +"angle" "258" +} + +// entity 29 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da09_bone_wastes" +"origin" "687 482 0" +"angle" "50" +} + +// entity 30 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_1_da09_bone_wastes" +"origin" "1701 889 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da09_bone_wastes" +"origin" "1357 466 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_3_da09_bone_wastes" +"origin" "1753 -912 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_4_da09_bone_wastes" +"origin" "57 -857 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_5_da09_bone_wastes" +"origin" "-404 1597 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_6_da09_bone_wastes" +"origin" "-159 -89 0" +} + +// entity 36 - Weapon pickup +{ +"classname" "weapon_darkages_axe" +"name" "weapon_pickup_da09_bone_wastes" +"origin" "-574 -128 24" +} + +// entity 37 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 2510 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 38 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da10_siege_demon_lair" +} diff --git a/darkages/maps/darkages/da10_siege_demon_lair.map b/darkages/maps/darkages/da10_siege_demon_lair.map new file mode 100644 index 0000000000..4b624da2ea --- /dev/null +++ b/darkages/maps/darkages/da10_siege_demon_lair.map @@ -0,0 +1,436 @@ +Version 2 +// DOOM: The Dark Ages - Level 10: Siege Demon's Lair +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da10_siege_demon_lair" +"message" "Siege Demon's Lair" +"music" "music/darkages/da10_siege_demon_lair" +"ambientColor" "0.15 0.06 0.03" +"_color" "0.4 0.15 0.05" +"darkages_level" "10" +"darkages_act" "1" +"darkages_fog_color" "0.4 0.15 0.05" +"darkages_fog_distance" "2560" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( -2560 0 0 ) ( -2560 0 -16 ) ( -2560 1 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 2560 0 0 ) ( 2560 1 0 ) ( 2560 0 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 -2560 0 ) ( 1 -2560 0 ) ( 0 -2560 -16 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +( 0 2560 0 ) ( 0 2560 -16 ) ( 1 2560 0 ) "textures/darkages/ground_dirt" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2560 2560 0 ) ( 2560 2560 0 ) ( -2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2576 0 ) ( -2560 2576 320 ) ( 2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2576 0 ) ( 2560 2560 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 320 ) ( 2560 2560 320 ) ( -2560 2576 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2560 2560 0 ) ( -2560 2560 320 ) ( -2560 2576 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2560 2560 0 ) ( 2560 2576 0 ) ( 2560 2560 320 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2560 -2560 576 ) ( 2560 -2560 576 ) ( -2560 2560 576 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 592 ) ( -2560 2560 592 ) ( 2560 -2560 592 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 2560 576 ) ( -2560 -2560 592 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 2560 -2560 576 ) ( 2560 -2560 592 ) ( 2560 2560 576 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2560 -2560 576 ) ( -2560 -2560 592 ) ( 2560 -2560 576 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2560 2560 576 ) ( 2560 2560 576 ) ( -2560 2560 592 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -512 -236 0 ) ( -193 -236 0 ) ( -512 -236 239 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -512 -30 0 ) ( -512 -30 239 ) ( -193 -30 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -512 -236 0 ) ( -512 -30 0 ) ( -193 -236 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -512 -236 239 ) ( -193 -236 239 ) ( -512 -30 239 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -512 -236 0 ) ( -512 -236 239 ) ( -512 -30 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -193 -236 0 ) ( -193 -30 0 ) ( -193 -236 239 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -1518 -907 0 ) ( -1347 -907 0 ) ( -1518 -907 174 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1518 -732 0 ) ( -1518 -732 174 ) ( -1347 -732 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1518 -907 0 ) ( -1518 -732 0 ) ( -1347 -907 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1518 -907 174 ) ( -1347 -907 174 ) ( -1518 -732 174 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1518 -907 0 ) ( -1518 -907 174 ) ( -1518 -732 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1347 -907 0 ) ( -1347 -732 0 ) ( -1347 -907 174 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 1257 246 0 ) ( 1451 246 0 ) ( 1257 246 214 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1257 404 0 ) ( 1257 404 214 ) ( 1451 404 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1257 246 0 ) ( 1257 404 0 ) ( 1451 246 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1257 246 214 ) ( 1451 246 214 ) ( 1257 404 214 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1257 246 0 ) ( 1257 246 214 ) ( 1257 404 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1451 246 0 ) ( 1451 404 0 ) ( 1451 246 214 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 952 -780 0 ) ( 1290 -780 0 ) ( 952 -780 234 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 952 -471 0 ) ( 952 -471 234 ) ( 1290 -471 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 952 -780 0 ) ( 952 -471 0 ) ( 1290 -780 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 952 -780 234 ) ( 1290 -780 234 ) ( 952 -471 234 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 952 -780 0 ) ( 952 -780 234 ) ( 952 -471 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1290 -780 0 ) ( 1290 -471 0 ) ( 1290 -780 234 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 1763 -1070 0 ) ( 2038 -1070 0 ) ( 1763 -1070 154 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1763 -783 0 ) ( 1763 -783 154 ) ( 2038 -783 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1763 -1070 0 ) ( 1763 -783 0 ) ( 2038 -1070 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1763 -1070 154 ) ( 2038 -1070 154 ) ( 1763 -783 154 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1763 -1070 0 ) ( 1763 -1070 154 ) ( 1763 -783 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2038 -1070 0 ) ( 2038 -783 0 ) ( 2038 -1070 154 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 575 798 0 ) ( 811 798 0 ) ( 575 798 232 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 575 1005 0 ) ( 575 1005 232 ) ( 811 1005 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 575 798 0 ) ( 575 1005 0 ) ( 811 798 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 575 798 232 ) ( 811 798 232 ) ( 575 1005 232 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 575 798 0 ) ( 575 798 232 ) ( 575 1005 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 811 798 0 ) ( 811 1005 0 ) ( 811 798 232 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -874 -837 0 ) ( -567 -837 0 ) ( -874 -837 93 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -874 -521 0 ) ( -874 -521 93 ) ( -567 -521 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -874 -837 0 ) ( -874 -521 0 ) ( -567 -837 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -874 -837 93 ) ( -567 -837 93 ) ( -874 -521 93 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -874 -837 0 ) ( -874 -837 93 ) ( -874 -521 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -567 -837 0 ) ( -567 -521 0 ) ( -567 -837 93 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2360 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-196 1467 207" +"_color" "0.99 0.61 0.18" +"light" "529" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-1833 142 71" +"_color" "0.59 0.55 0.09" +"light" "373" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "827 -1998 110" +"_color" "0.93 0.48 0.12" +"light" "272" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1797 -1297 255" +"_color" "0.77 0.39 0.14" +"light" "280" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "983 504 248" +"_color" "0.66 0.67 0.18" +"light" "226" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-774 -759 222" +"_color" "0.52 0.24 0.13" +"light" "417" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1930 1573 170" +"_color" "0.64 0.58 0.03" +"light" "420" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-1140 272 237" +"_color" "0.84 0.44 0.2" +"light" "223" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-242 1189 217" +"_color" "0.53 0.3 0.28" +"light" "592" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "-924 45 138" +"_color" "0.66 0.2 0.22" +"light" "289" +"texture" "lights/defaultPointLight" +} + +// entity 12 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da10_siege_demon_lair" +"origin" "-1263 277 0" +"angle" "272" +} + +// entity 13 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da10_siege_demon_lair" +"origin" "1090 -338 0" +"angle" "256" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da10_siege_demon_lair" +"origin" "496 1456 0" +"angle" "181" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da10_siege_demon_lair" +"origin" "-1497 346 0" +"angle" "21" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da10_siege_demon_lair" +"origin" "-6 -1204 0" +"angle" "235" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da10_siege_demon_lair" +"origin" "-1474 2 0" +"angle" "294" +} + +// entity 18 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da10_siege_demon_lair" +"origin" "-34 1068 0" +"angle" "207" +} + +// entity 19 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da10_siege_demon_lair" +"origin" "1114 1342 0" +"angle" "213" +} + +// entity 20 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da10_siege_demon_lair" +"origin" "-607 -809 0" +"angle" "207" +} + +// entity 21 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da10_siege_demon_lair" +"origin" "-1707 50 0" +"angle" "87" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da10_siege_demon_lair" +"origin" "1490 1251 0" +"angle" "235" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da10_siege_demon_lair" +"origin" "1615 1544 0" +"angle" "185" +} + +// entity 24 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da10_siege_demon_lair" +"origin" "-1432 508 0" +"angle" "54" +} + +// entity 25 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da10_siege_demon_lair" +"origin" "-796 504 0" +"angle" "301" +} + +// entity 26 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da10_siege_demon_lair" +"origin" "354 -1470 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da10_siege_demon_lair" +"origin" "1773 -522 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_3_da10_siege_demon_lair" +"origin" "-402 -885 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_4_da10_siege_demon_lair" +"origin" "1399 -1104 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da10_siege_demon_lair" +"origin" "298 801 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_6_da10_siege_demon_lair" +"origin" "381 296 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da10_siege_demon_lair" +"origin" "1387 -361 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_8_da10_siege_demon_lair" +"origin" "1187 1562 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_9_da10_siege_demon_lair" +"origin" "1546 -1188 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_10_da10_siege_demon_lair" +"origin" "-1371 -1193 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_11_da10_siege_demon_lair" +"origin" "-984 -1082 0" +} + +// entity 37 - Weapon pickup +{ +"classname" "weapon_darkages_crossbow" +"name" "weapon_pickup_da10_siege_demon_lair" +"origin" "-455 574 24" +} + +// entity 38 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 2510 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 39 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da11_frozen_depths" +} diff --git a/darkages/maps/darkages/da11_frozen_depths.map b/darkages/maps/darkages/da11_frozen_depths.map new file mode 100644 index 0000000000..640f6b2d77 --- /dev/null +++ b/darkages/maps/darkages/da11_frozen_depths.map @@ -0,0 +1,409 @@ +Version 2 +// DOOM: The Dark Ages - Level 11: The Frozen Depths +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da11_frozen_depths" +"message" "The Frozen Depths" +"music" "music/darkages/da11_frozen_depths" +"ambientColor" "0.07 0.08 0.15" +"_color" "0.2 0.25 0.4" +"darkages_level" "11" +"darkages_act" "2" +"darkages_fog_color" "0.2 0.25 0.4" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 448 ) ( 2048 -2048 448 ) ( -2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 464 ) ( -2048 2048 464 ) ( 2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 2048 448 ) ( -2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 448 ) ( 2048 -2048 464 ) ( 2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 -2048 464 ) ( 2048 -2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 448 ) ( 2048 2048 448 ) ( -2048 2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -708 999 0 ) ( -343 999 0 ) ( -708 999 151 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -708 1356 0 ) ( -708 1356 151 ) ( -343 1356 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -708 999 0 ) ( -708 1356 0 ) ( -343 999 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -708 999 151 ) ( -343 999 151 ) ( -708 1356 151 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -708 999 0 ) ( -708 999 151 ) ( -708 1356 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -343 999 0 ) ( -343 1356 0 ) ( -343 999 151 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 1136 270 0 ) ( 1341 270 0 ) ( 1136 270 72 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1136 623 0 ) ( 1136 623 72 ) ( 1341 623 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1136 270 0 ) ( 1136 623 0 ) ( 1341 270 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1136 270 72 ) ( 1341 270 72 ) ( 1136 623 72 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1136 270 0 ) ( 1136 270 72 ) ( 1136 623 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1341 270 0 ) ( 1341 623 0 ) ( 1341 270 72 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 378 216 0 ) ( 646 216 0 ) ( 378 216 109 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 378 372 0 ) ( 378 372 109 ) ( 646 372 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 378 216 0 ) ( 378 372 0 ) ( 646 216 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 378 216 109 ) ( 646 216 109 ) ( 378 372 109 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 378 216 0 ) ( 378 216 109 ) ( 378 372 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 646 216 0 ) ( 646 372 0 ) ( 646 216 109 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -162 867 0 ) ( 197 867 0 ) ( -162 867 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -162 1014 0 ) ( -162 1014 71 ) ( 197 1014 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -162 867 0 ) ( -162 1014 0 ) ( 197 867 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -162 867 71 ) ( 197 867 71 ) ( -162 1014 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -162 867 0 ) ( -162 867 71 ) ( -162 1014 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 197 867 0 ) ( 197 1014 0 ) ( 197 867 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-463 -1324 146" +"_color" "0.93 0.63 0.18" +"light" "459" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-64 257 138" +"_color" "0.78 0.6 0.27" +"light" "430" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "703 1031 88" +"_color" "0.66 0.44 0.05" +"light" "231" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "207 -1215 107" +"_color" "0.99 0.24 0.19" +"light" "220" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-624 1260 120" +"_color" "1.0 0.46 0.18" +"light" "386" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-111 -480 113" +"_color" "0.7 0.37 0.18" +"light" "523" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1013 -268 72" +"_color" "0.66 0.48 0.12" +"light" "329" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1326 1051 141" +"_color" "0.94 0.37 0.17" +"light" "272" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-206 -368 147" +"_color" "0.85 0.4 0.18" +"light" "243" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "-370 651 112" +"_color" "0.82 0.36 0.04" +"light" "559" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1388 1169 131" +"_color" "0.55 0.54 0.15" +"light" "209" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "-153 -373 87" +"_color" "0.98 0.37 0.23" +"light" "298" +"texture" "lights/defaultPointLight" +} + +// entity 14 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da11_frozen_depths" +"origin" "-506 -461 0" +"angle" "79" +} + +// entity 15 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da11_frozen_depths" +"origin" "-1117 187 0" +"angle" "51" +} + +// entity 16 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da11_frozen_depths" +"origin" "646 1186 0" +"angle" "269" +} + +// entity 17 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da11_frozen_depths" +"origin" "-1279 355 0" +"angle" "316" +} + +// entity 18 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_5_da11_frozen_depths" +"origin" "-897 1422 0" +"angle" "192" +} + +// entity 19 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_6_da11_frozen_depths" +"origin" "-802 -360 0" +"angle" "92" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da11_frozen_depths" +"origin" "1404 -346 0" +"angle" "224" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da11_frozen_depths" +"origin" "-1255 658 0" +"angle" "186" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da11_frozen_depths" +"origin" "1337 -52 0" +"angle" "227" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da11_frozen_depths" +"origin" "1067 143 0" +"angle" "229" +} + +// entity 24 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da11_frozen_depths" +"origin" "-475 1163 0" +"angle" "122" +} + +// entity 25 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da11_frozen_depths" +"origin" "-166 897 0" +"angle" "99" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da11_frozen_depths" +"origin" "73 1312 0" +"angle" "225" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da11_frozen_depths" +"origin" "458 130 0" +"angle" "195" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da11_frozen_depths" +"origin" "626 1136 0" +"angle" "214" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_1_da11_frozen_depths" +"origin" "-616 1043 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da11_frozen_depths" +"origin" "-409 -1220 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_3_da11_frozen_depths" +"origin" "535 87 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_4_da11_frozen_depths" +"origin" "-1013 680 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da11_frozen_depths" +"origin" "-923 -266 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_6_da11_frozen_depths" +"origin" "-777 -316 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_7_da11_frozen_depths" +"origin" "669 -830 0" +} + +// entity 36 - Weapon pickup +{ +"classname" "weapon_darkages_shield" +"name" "weapon_pickup_da11_frozen_depths" +"origin" "281 -427 24" +} + +// entity 37 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 38 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da12_lava_forge" +} diff --git a/darkages/maps/darkages/da12_lava_forge.map b/darkages/maps/darkages/da12_lava_forge.map new file mode 100644 index 0000000000..3443531dd2 --- /dev/null +++ b/darkages/maps/darkages/da12_lava_forge.map @@ -0,0 +1,419 @@ +Version 2 +// DOOM: The Dark Ages - Level 12: The Lava Forge +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da12_lava_forge" +"message" "The Lava Forge" +"music" "music/darkages/da12_lava_forge" +"ambientColor" "0.2 0.08 0.03" +"_color" "0.5 0.2 0.05" +"darkages_level" "12" +"darkages_act" "2" +"darkages_fog_color" "0.5 0.2 0.05" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 448 ) ( 2048 -2048 448 ) ( -2048 2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 464 ) ( -2048 2048 464 ) ( 2048 -2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 2048 448 ) ( -2048 -2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 448 ) ( 2048 -2048 464 ) ( 2048 2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 -2048 464 ) ( 2048 -2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 448 ) ( 2048 2048 448 ) ( -2048 2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 414 407 0 ) ( 555 407 0 ) ( 414 407 70 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 747 0 ) ( 414 747 70 ) ( 555 747 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 407 0 ) ( 414 747 0 ) ( 555 407 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 407 70 ) ( 555 407 70 ) ( 414 747 70 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 414 407 0 ) ( 414 407 70 ) ( 414 747 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 555 407 0 ) ( 555 747 0 ) ( 555 407 70 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 623 507 0 ) ( 871 507 0 ) ( 623 507 74 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 623 832 0 ) ( 623 832 74 ) ( 871 832 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 623 507 0 ) ( 623 832 0 ) ( 871 507 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 623 507 74 ) ( 871 507 74 ) ( 623 832 74 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 623 507 0 ) ( 623 507 74 ) ( 623 832 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 871 507 0 ) ( 871 832 0 ) ( 871 507 74 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -514 -909 0 ) ( -223 -909 0 ) ( -514 -909 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -514 -731 0 ) ( -514 -731 147 ) ( -223 -731 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -514 -909 0 ) ( -514 -731 0 ) ( -223 -909 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -514 -909 147 ) ( -223 -909 147 ) ( -514 -731 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -514 -909 0 ) ( -514 -909 147 ) ( -514 -731 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -223 -909 0 ) ( -223 -731 0 ) ( -223 -909 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -835 -461 0 ) ( -688 -461 0 ) ( -835 -461 124 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -835 -187 0 ) ( -835 -187 124 ) ( -688 -187 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -835 -461 0 ) ( -835 -187 0 ) ( -688 -461 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -835 -461 124 ) ( -688 -461 124 ) ( -835 -187 124 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -835 -461 0 ) ( -835 -461 124 ) ( -835 -187 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( -688 -461 0 ) ( -688 -187 0 ) ( -688 -461 124 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 488 813 0 ) ( 618 813 0 ) ( 488 813 66 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 488 981 0 ) ( 488 981 66 ) ( 618 981 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 488 813 0 ) ( 488 981 0 ) ( 618 813 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 488 813 66 ) ( 618 813 66 ) ( 488 981 66 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 488 813 0 ) ( 488 813 66 ) ( 488 981 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 618 813 0 ) ( 618 981 0 ) ( 618 813 66 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-1026 609 141" +"_color" "0.76 0.26 0.09" +"light" "354" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-1139 -1443 94" +"_color" "0.71 0.6 0.14" +"light" "256" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "409 806 132" +"_color" "0.51 0.46 0.07" +"light" "273" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-445 120 64" +"_color" "0.81 0.32 0.12" +"light" "540" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "1099 -1288 131" +"_color" "0.99 0.23 0.16" +"light" "459" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1583 441 134" +"_color" "0.51 0.64 0.01" +"light" "398" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-109 -600 66" +"_color" "0.68 0.23 0.07" +"light" "536" +"texture" "lights/defaultPointLight" +} + +// entity 9 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da12_lava_forge" +"origin" "1140 -600 0" +"angle" "297" +} + +// entity 10 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da12_lava_forge" +"origin" "-72 -478 0" +"angle" "22" +} + +// entity 11 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da12_lava_forge" +"origin" "10 1212 0" +"angle" "173" +} + +// entity 12 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_4_da12_lava_forge" +"origin" "1199 -307 0" +"angle" "350" +} + +// entity 13 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_5_da12_lava_forge" +"origin" "470 936 0" +"angle" "323" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da12_lava_forge" +"origin" "-687 -472 0" +"angle" "32" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da12_lava_forge" +"origin" "441 -873 0" +"angle" "150" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da12_lava_forge" +"origin" "-608 -845 0" +"angle" "102" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da12_lava_forge" +"origin" "-1262 268 0" +"angle" "158" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da12_lava_forge" +"origin" "678 607 0" +"angle" "278" +} + +// entity 19 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da12_lava_forge" +"origin" "506 13 0" +"angle" "18" +} + +// entity 20 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da12_lava_forge" +"origin" "1216 -242 0" +"angle" "146" +} + +// entity 21 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da12_lava_forge" +"origin" "29 -829 0" +"angle" "335" +} + +// entity 22 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da12_lava_forge" +"origin" "-74 95 0" +"angle" "63" +} + +// entity 23 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_1_da12_lava_forge" +"origin" "74 765 0" +"angle" "204" +} + +// entity 24 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_2_da12_lava_forge" +"origin" "368 559 0" +"angle" "173" +} + +// entity 25 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_3_da12_lava_forge" +"origin" "-668 1008 0" +"angle" "354" +} + +// entity 26 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_1_da12_lava_forge" +"origin" "71 693 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_2_da12_lava_forge" +"origin" "-1095 305 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_3_da12_lava_forge" +"origin" "330 1034 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_4_da12_lava_forge" +"origin" "-694 801 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da12_lava_forge" +"origin" "-118 -1013 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_6_da12_lava_forge" +"origin" "-90 1274 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_7_da12_lava_forge" +"origin" "-178 393 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_8_da12_lava_forge" +"origin" "312 -751 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_9_da12_lava_forge" +"origin" "385 6 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_10_da12_lava_forge" +"origin" "-1260 11 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_11_da12_lava_forge" +"origin" "348 -309 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_12_da12_lava_forge" +"origin" "-1199 -1126 0" +} + +// entity 38 - Weapon pickup +{ +"classname" "weapon_darkages_flail" +"name" "weapon_pickup_da12_lava_forge" +"origin" "217 130 24" +} + +// entity 39 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 40 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da13_tomb_of_heroes" +} diff --git a/darkages/maps/darkages/da13_tomb_of_heroes.map b/darkages/maps/darkages/da13_tomb_of_heroes.map new file mode 100644 index 0000000000..8ce65ec1f0 --- /dev/null +++ b/darkages/maps/darkages/da13_tomb_of_heroes.map @@ -0,0 +1,488 @@ +Version 2 +// DOOM: The Dark Ages - Level 13: Tomb of Fallen Heroes +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da13_tomb_of_heroes" +"message" "Tomb of Fallen Heroes" +"music" "music/darkages/da13_tomb_of_heroes" +"ambientColor" "0.04 0.04 0.06" +"_color" "0.1 0.1 0.12" +"darkages_level" "13" +"darkages_act" "2" +"darkages_fog_color" "0.1 0.1 0.12" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 448 ) ( 2048 -2048 448 ) ( -2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 464 ) ( -2048 2048 464 ) ( 2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 2048 448 ) ( -2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 448 ) ( 2048 -2048 464 ) ( 2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 -2048 464 ) ( 2048 -2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 448 ) ( 2048 2048 448 ) ( -2048 2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 1349 -369 0 ) ( 1492 -369 0 ) ( 1349 -369 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1349 -168 0 ) ( 1349 -168 141 ) ( 1492 -168 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1349 -369 0 ) ( 1349 -168 0 ) ( 1492 -369 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1349 -369 141 ) ( 1492 -369 141 ) ( 1349 -168 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1349 -369 0 ) ( 1349 -369 141 ) ( 1349 -168 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1492 -369 0 ) ( 1492 -168 0 ) ( 1492 -369 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -1291 -507 0 ) ( -1129 -507 0 ) ( -1291 -507 146 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1291 -259 0 ) ( -1291 -259 146 ) ( -1129 -259 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1291 -507 0 ) ( -1291 -259 0 ) ( -1129 -507 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1291 -507 146 ) ( -1129 -507 146 ) ( -1291 -259 146 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1291 -507 0 ) ( -1291 -507 146 ) ( -1291 -259 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1129 -507 0 ) ( -1129 -259 0 ) ( -1129 -507 146 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 50 544 0 ) ( 194 544 0 ) ( 50 544 150 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 50 750 0 ) ( 50 750 150 ) ( 194 750 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 50 544 0 ) ( 50 750 0 ) ( 194 544 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 50 544 150 ) ( 194 544 150 ) ( 50 750 150 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 50 544 0 ) ( 50 544 150 ) ( 50 750 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 194 544 0 ) ( 194 750 0 ) ( 194 544 150 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 86 499 0 ) ( 441 499 0 ) ( 86 499 137 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 86 666 0 ) ( 86 666 137 ) ( 441 666 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 86 499 0 ) ( 86 666 0 ) ( 441 499 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 86 499 137 ) ( 441 499 137 ) ( 86 666 137 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 86 499 0 ) ( 86 499 137 ) ( 86 666 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 441 499 0 ) ( 441 666 0 ) ( 441 499 137 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 735 479 0 ) ( 1066 479 0 ) ( 735 479 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 735 767 0 ) ( 735 767 147 ) ( 1066 767 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 735 479 0 ) ( 735 767 0 ) ( 1066 479 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 735 479 147 ) ( 1066 479 147 ) ( 735 767 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 735 479 0 ) ( 735 479 147 ) ( 735 767 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1066 479 0 ) ( 1066 767 0 ) ( 1066 479 147 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -411 -560 0 ) ( -270 -560 0 ) ( -411 -560 127 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -411 -337 0 ) ( -411 -337 127 ) ( -270 -337 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -411 -560 0 ) ( -411 -337 0 ) ( -270 -560 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -411 -560 127 ) ( -270 -560 127 ) ( -411 -337 127 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -411 -560 0 ) ( -411 -560 127 ) ( -411 -337 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -270 -560 0 ) ( -270 -337 0 ) ( -270 -560 127 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( 867 -542 0 ) ( 1129 -542 0 ) ( 867 -542 121 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 867 -281 0 ) ( 867 -281 121 ) ( 1129 -281 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 867 -542 0 ) ( 867 -281 0 ) ( 1129 -542 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 867 -542 121 ) ( 1129 -542 121 ) ( 867 -281 121 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 867 -542 0 ) ( 867 -542 121 ) ( 867 -281 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1129 -542 0 ) ( 1129 -281 0 ) ( 1129 -542 121 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( 1073 145 0 ) ( 1452 145 0 ) ( 1073 145 79 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1073 375 0 ) ( 1073 375 79 ) ( 1452 375 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1073 145 0 ) ( 1073 375 0 ) ( 1452 145 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1073 145 79 ) ( 1452 145 79 ) ( 1073 375 79 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1073 145 0 ) ( 1073 145 79 ) ( 1073 375 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +( 1452 145 0 ) ( 1452 375 0 ) ( 1452 145 79 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-1335 213 86" +"_color" "0.95 0.42 0.03" +"light" "549" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-329 1097 108" +"_color" "0.85 0.47 0.09" +"light" "353" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-993 1277 153" +"_color" "0.82 0.6 0.15" +"light" "262" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-815 1606 81" +"_color" "0.62 0.45 0.11" +"light" "493" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-127 276 134" +"_color" "0.56 0.64 0.02" +"light" "403" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1298 1306 125" +"_color" "0.76 0.58 0.25" +"light" "237" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-1125 -340 146" +"_color" "0.54 0.43 0.16" +"light" "265" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1557 620 145" +"_color" "0.79 0.58 0.04" +"light" "457" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-1412 -1130 130" +"_color" "0.58 0.28 0.1" +"light" "563" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "-715 -221 130" +"_color" "0.95 0.62 0.08" +"light" "525" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "618 -514 80" +"_color" "0.81 0.51 0.03" +"light" "528" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "-948 786 138" +"_color" "0.58 0.53 0.22" +"light" "509" +"texture" "lights/defaultPointLight" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da13_tomb_of_heroes" +"origin" "-51 1284 0" +"angle" "21" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da13_tomb_of_heroes" +"origin" "-1317 -692 0" +"angle" "23" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da13_tomb_of_heroes" +"origin" "1194 1338 0" +"angle" "135" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da13_tomb_of_heroes" +"origin" "1234 -161 0" +"angle" "292" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da13_tomb_of_heroes" +"origin" "273 -900 0" +"angle" "254" +} + +// entity 19 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da13_tomb_of_heroes" +"origin" "1135 1210 0" +"angle" "148" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da13_tomb_of_heroes" +"origin" "1196 213 0" +"angle" "247" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da13_tomb_of_heroes" +"origin" "-430 639 0" +"angle" "152" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da13_tomb_of_heroes" +"origin" "424 -726 0" +"angle" "352" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da13_tomb_of_heroes" +"origin" "-1188 -377 0" +"angle" "225" +} + +// entity 24 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da13_tomb_of_heroes" +"origin" "269 959 0" +"angle" "237" +} + +// entity 25 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da13_tomb_of_heroes" +"origin" "-598 369 0" +"angle" "310" +} + +// entity 26 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da13_tomb_of_heroes" +"origin" "-845 256 0" +"angle" "163" +} + +// entity 27 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da13_tomb_of_heroes" +"origin" "-19 609 0" +"angle" "66" +} + +// entity 28 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da13_tomb_of_heroes" +"origin" "84 1085 0" +"angle" "287" +} + +// entity 29 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da13_tomb_of_heroes" +"origin" "-999 283 0" +"angle" "123" +} + +// entity 30 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da13_tomb_of_heroes" +"origin" "-932 -338 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_2_da13_tomb_of_heroes" +"origin" "-418 -856 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_3_da13_tomb_of_heroes" +"origin" "-1226 -245 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da13_tomb_of_heroes" +"origin" "1087 279 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_5_da13_tomb_of_heroes" +"origin" "-779 -92 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_6_da13_tomb_of_heroes" +"origin" "-153 -656 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_7_da13_tomb_of_heroes" +"origin" "-781 607 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_8_da13_tomb_of_heroes" +"origin" "479 609 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_9_da13_tomb_of_heroes" +"origin" "604 -1339 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_10_da13_tomb_of_heroes" +"origin" "177 637 0" +} + +// entity 40 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_11_da13_tomb_of_heroes" +"origin" "-447 -552 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_12_da13_tomb_of_heroes" +"origin" "12 -1234 0" +} + +// entity 42 - Weapon pickup +{ +"classname" "weapon_darkages_throwaxe" +"name" "weapon_pickup_da13_tomb_of_heroes" +"origin" "-38 399 24" +} + +// entity 43 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 44 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da14_crystal_caverns" +} diff --git a/darkages/maps/darkages/da14_crystal_caverns.map b/darkages/maps/darkages/da14_crystal_caverns.map new file mode 100644 index 0000000000..ac2595aed5 --- /dev/null +++ b/darkages/maps/darkages/da14_crystal_caverns.map @@ -0,0 +1,448 @@ +Version 2 +// DOOM: The Dark Ages - Level 14: Crystal Caverns +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da14_crystal_caverns" +"message" "Crystal Caverns" +"music" "music/darkages/da14_crystal_caverns" +"ambientColor" "0.06 0.04 0.12" +"_color" "0.15 0.1 0.3" +"darkages_level" "14" +"darkages_act" "2" +"darkages_fog_color" "0.15 0.1 0.3" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 448 ) ( 2048 -2048 448 ) ( -2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 464 ) ( -2048 2048 464 ) ( 2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 2048 448 ) ( -2048 -2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 448 ) ( 2048 -2048 464 ) ( 2048 2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 -2048 464 ) ( 2048 -2048 448 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 448 ) ( 2048 2048 448 ) ( -2048 2048 464 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 1246 903 0 ) ( 1520 903 0 ) ( 1246 903 77 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1246 1035 0 ) ( 1246 1035 77 ) ( 1520 1035 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1246 903 0 ) ( 1246 1035 0 ) ( 1520 903 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1246 903 77 ) ( 1520 903 77 ) ( 1246 1035 77 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1246 903 0 ) ( 1246 903 77 ) ( 1246 1035 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1520 903 0 ) ( 1520 1035 0 ) ( 1520 903 77 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -885 59 0 ) ( -570 59 0 ) ( -885 59 110 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -885 393 0 ) ( -885 393 110 ) ( -570 393 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -885 59 0 ) ( -885 393 0 ) ( -570 59 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -885 59 110 ) ( -570 59 110 ) ( -885 393 110 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -885 59 0 ) ( -885 59 110 ) ( -885 393 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -570 59 0 ) ( -570 393 0 ) ( -570 59 110 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 207 -815 0 ) ( 434 -815 0 ) ( 207 -815 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 207 -502 0 ) ( 207 -502 134 ) ( 434 -502 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 207 -815 0 ) ( 207 -502 0 ) ( 434 -815 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 207 -815 134 ) ( 434 -815 134 ) ( 207 -502 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 207 -815 0 ) ( 207 -815 134 ) ( 207 -502 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 434 -815 0 ) ( 434 -502 0 ) ( 434 -815 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -1132 558 0 ) ( -746 558 0 ) ( -1132 558 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1132 916 0 ) ( -1132 916 134 ) ( -746 916 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1132 558 0 ) ( -1132 916 0 ) ( -746 558 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1132 558 134 ) ( -746 558 134 ) ( -1132 916 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1132 558 0 ) ( -1132 558 134 ) ( -1132 916 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -746 558 0 ) ( -746 916 0 ) ( -746 558 134 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 1119 -538 0 ) ( 1312 -538 0 ) ( 1119 -538 114 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1119 -361 0 ) ( 1119 -361 114 ) ( 1312 -361 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1119 -538 0 ) ( 1119 -361 0 ) ( 1312 -538 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1119 -538 114 ) ( 1312 -538 114 ) ( 1119 -361 114 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1119 -538 0 ) ( 1119 -538 114 ) ( 1119 -361 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1312 -538 0 ) ( 1312 -361 0 ) ( 1312 -538 114 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -45 473 0 ) ( 156 473 0 ) ( -45 473 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -45 702 0 ) ( -45 702 141 ) ( 156 702 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -45 473 0 ) ( -45 702 0 ) ( 156 473 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -45 473 141 ) ( 156 473 141 ) ( -45 702 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -45 473 0 ) ( -45 473 141 ) ( -45 702 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 156 473 0 ) ( 156 702 0 ) ( 156 473 141 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( 615 -860 0 ) ( 766 -860 0 ) ( 615 -860 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 615 -713 0 ) ( 615 -713 81 ) ( 766 -713 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 615 -860 0 ) ( 615 -713 0 ) ( 766 -860 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 615 -860 81 ) ( 766 -860 81 ) ( 615 -713 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 615 -860 0 ) ( 615 -860 81 ) ( 615 -713 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 766 -860 0 ) ( 766 -713 0 ) ( 766 -860 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( 507 847 0 ) ( 711 847 0 ) ( 507 847 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 507 1238 0 ) ( 507 1238 81 ) ( 711 1238 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 507 847 0 ) ( 507 1238 0 ) ( 711 847 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 507 847 81 ) ( 711 847 81 ) ( 507 1238 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 507 847 0 ) ( 507 847 81 ) ( 507 1238 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 711 847 0 ) ( 711 1238 0 ) ( 711 847 81 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-334 -973 114" +"_color" "1.0 0.57 0.09" +"light" "372" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "439 449 132" +"_color" "0.74 0.48 0.14" +"light" "208" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-130 -282 150" +"_color" "0.55 0.41 0.09" +"light" "571" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "1180 939 67" +"_color" "0.8 0.33 0.2" +"light" "597" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "731 727 93" +"_color" "0.86 0.49 0.05" +"light" "522" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1315 900 112" +"_color" "0.57 0.54 0.01" +"light" "558" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-1188 -857 66" +"_color" "0.72 0.41 0.12" +"light" "304" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "42 417 142" +"_color" "0.96 0.64 0.22" +"light" "231" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "1252 -1073 130" +"_color" "0.6 0.36 0.2" +"light" "469" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "-95 -353 86" +"_color" "0.73 0.47 0.16" +"light" "546" +"texture" "lights/defaultPointLight" +} + +// entity 12 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da14_crystal_caverns" +"origin" "1355 58 0" +"angle" "312" +} + +// entity 13 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da14_crystal_caverns" +"origin" "550 -237 0" +"angle" "126" +} + +// entity 14 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da14_crystal_caverns" +"origin" "-291 1261 0" +"angle" "152" +} + +// entity 15 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da14_crystal_caverns" +"origin" "-512 195 0" +"angle" "147" +} + +// entity 16 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_5_da14_crystal_caverns" +"origin" "-584 978 0" +"angle" "162" +} + +// entity 17 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da14_crystal_caverns" +"origin" "532 404 0" +"angle" "286" +} + +// entity 18 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da14_crystal_caverns" +"origin" "-313 154 0" +"angle" "62" +} + +// entity 19 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da14_crystal_caverns" +"origin" "915 1200 0" +"angle" "194" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da14_crystal_caverns" +"origin" "183 389 0" +"angle" "74" +} + +// entity 21 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_1_da14_crystal_caverns" +"origin" "-244 -852 0" +"angle" "147" +} + +// entity 22 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_2_da14_crystal_caverns" +"origin" "-1110 394 0" +"angle" "226" +} + +// entity 23 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_3_da14_crystal_caverns" +"origin" "1253 26 0" +"angle" "245" +} + +// entity 24 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_4_da14_crystal_caverns" +"origin" "-557 -197 0" +"angle" "275" +} + +// entity 25 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_5_da14_crystal_caverns" +"origin" "-323 1278 0" +"angle" "356" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da14_crystal_caverns" +"origin" "-321 -462 0" +"angle" "55" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da14_crystal_caverns" +"origin" "1088 1379 0" +"angle" "122" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da14_crystal_caverns" +"origin" "-440 -817 0" +"angle" "342" +} + +// entity 29 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_1_da14_crystal_caverns" +"origin" "1180 -480 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_2_da14_crystal_caverns" +"origin" "-1023 259 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_3_da14_crystal_caverns" +"origin" "501 -1022 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_4_da14_crystal_caverns" +"origin" "-870 -1412 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da14_crystal_caverns" +"origin" "-787 233 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_6_da14_crystal_caverns" +"origin" "515 522 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da14_crystal_caverns" +"origin" "-617 -257 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_8_da14_crystal_caverns" +"origin" "-264 1212 0" +} + +// entity 37 - Weapon pickup +{ +"classname" "weapon_darkages_sword" +"name" "weapon_pickup_da14_crystal_caverns" +"origin" "-431 561 24" +} + +// entity 38 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 39 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da15_dragon_den" +} diff --git a/darkages/maps/darkages/da15_dragon_den.map b/darkages/maps/darkages/da15_dragon_den.map new file mode 100644 index 0000000000..9d93b1cfd8 --- /dev/null +++ b/darkages/maps/darkages/da15_dragon_den.map @@ -0,0 +1,414 @@ +Version 2 +// DOOM: The Dark Ages - Level 15: The Dragon's Den +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da15_dragon_den" +"message" "The Dragon's Den" +"music" "music/darkages/da15_dragon_den" +"ambientColor" "0.18 0.08 0.03" +"_color" "0.5 0.25 0.05" +"darkages_level" "15" +"darkages_act" "2" +"darkages_fog_color" "0.5 0.25 0.05" +"darkages_fog_distance" "2048" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( -2048 0 0 ) ( -2048 0 -16 ) ( -2048 1 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 2048 0 0 ) ( 2048 1 0 ) ( 2048 0 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 -2048 0 ) ( 1 -2048 0 ) ( 0 -2048 -16 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +( 0 2048 0 ) ( 0 2048 -16 ) ( 1 2048 0 ) "textures/darkages/stone_dungeon_floor" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -2048 2048 0 ) ( 2048 2048 0 ) ( -2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2064 0 ) ( -2048 2064 192 ) ( 2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2064 0 ) ( 2048 2048 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 192 ) ( 2048 2048 192 ) ( -2048 2064 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( -2048 2048 0 ) ( -2048 2048 192 ) ( -2048 2064 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 2048 2048 0 ) ( 2048 2064 0 ) ( 2048 2048 192 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -2048 -2048 448 ) ( 2048 -2048 448 ) ( -2048 2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 464 ) ( -2048 2048 464 ) ( 2048 -2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 2048 448 ) ( -2048 -2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 2048 -2048 448 ) ( 2048 -2048 464 ) ( 2048 2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 -2048 448 ) ( -2048 -2048 464 ) ( 2048 -2048 448 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -2048 2048 448 ) ( 2048 2048 448 ) ( -2048 2048 464 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 758 -872 0 ) ( 975 -872 0 ) ( 758 -872 86 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 758 -531 0 ) ( 758 -531 86 ) ( 975 -531 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 758 -872 0 ) ( 758 -531 0 ) ( 975 -872 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 758 -872 86 ) ( 975 -872 86 ) ( 758 -531 86 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 758 -872 0 ) ( 758 -872 86 ) ( 758 -531 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 975 -872 0 ) ( 975 -531 0 ) ( 975 -872 86 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 193 1005 0 ) ( 416 1005 0 ) ( 193 1005 68 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 193 1281 0 ) ( 193 1281 68 ) ( 416 1281 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 193 1005 0 ) ( 193 1281 0 ) ( 416 1005 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 193 1005 68 ) ( 416 1005 68 ) ( 193 1281 68 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 193 1005 0 ) ( 193 1005 68 ) ( 193 1281 0 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +( 416 1005 0 ) ( 416 1281 0 ) ( 416 1005 68 ) "textures/darkages/stone_crypt_wall" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -211 -585 0 ) ( 88 -585 0 ) ( -211 -585 122 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -211 -312 0 ) ( -211 -312 122 ) ( 88 -312 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -211 -585 0 ) ( -211 -312 0 ) ( 88 -585 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -211 -585 122 ) ( 88 -585 122 ) ( -211 -312 122 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -211 -585 0 ) ( -211 -585 122 ) ( -211 -312 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 88 -585 0 ) ( 88 -312 0 ) ( 88 -585 122 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -884 893 0 ) ( -617 893 0 ) ( -884 893 78 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -884 1119 0 ) ( -884 1119 78 ) ( -617 1119 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -884 893 0 ) ( -884 1119 0 ) ( -617 893 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -884 893 78 ) ( -617 893 78 ) ( -884 1119 78 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -884 893 0 ) ( -884 893 78 ) ( -884 1119 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -617 893 0 ) ( -617 1119 0 ) ( -617 893 78 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -768 855 0 ) ( -509 855 0 ) ( -768 855 65 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -768 1078 0 ) ( -768 1078 65 ) ( -509 1078 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -768 855 0 ) ( -768 1078 0 ) ( -509 855 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -768 855 65 ) ( -509 855 65 ) ( -768 1078 65 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -768 855 0 ) ( -768 855 65 ) ( -768 1078 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -509 855 0 ) ( -509 1078 0 ) ( -509 855 65 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -1848 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-430 687 150" +"_color" "0.88 0.29 0.26" +"light" "407" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "113 472 105" +"_color" "0.54 0.53 0.06" +"light" "271" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "317 -313 95" +"_color" "0.5 0.39 0.13" +"light" "336" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-288 -402 138" +"_color" "0.86 0.21 0.2" +"light" "554" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-671 -1384 149" +"_color" "0.56 0.35 0.12" +"light" "457" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1243 1515 103" +"_color" "0.85 0.52 0.28" +"light" "388" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "879 -734 92" +"_color" "0.98 0.44 0.14" +"light" "510" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-108 65 153" +"_color" "0.77 0.44 0.16" +"light" "540" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-744 1482 95" +"_color" "0.84 0.5 0.24" +"light" "469" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "191 525 110" +"_color" "0.54 0.48 0.02" +"light" "480" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "432 -810 137" +"_color" "0.77 0.28 0.26" +"light" "426" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "-1162 1148 90" +"_color" "0.86 0.44 0.27" +"light" "428" +"texture" "lights/defaultPointLight" +} + +// entity 14 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_1_da15_dragon_den" +"origin" "-1206 833 0" +"angle" "67" +} + +// entity 15 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_2_da15_dragon_den" +"origin" "669 677 0" +"angle" "233" +} + +// entity 16 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_3_da15_dragon_den" +"origin" "876 -788 0" +"angle" "286" +} + +// entity 17 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da15_dragon_den" +"origin" "460 238 0" +"angle" "11" +} + +// entity 18 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da15_dragon_den" +"origin" "188 18 0" +"angle" "1" +} + +// entity 19 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da15_dragon_den" +"origin" "-541 1344 0" +"angle" "37" +} + +// entity 20 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da15_dragon_den" +"origin" "-1248 711 0" +"angle" "176" +} + +// entity 21 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da15_dragon_den" +"origin" "-1172 1192 0" +"angle" "30" +} + +// entity 22 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da15_dragon_den" +"origin" "-1151 909 0" +"angle" "16" +} + +// entity 23 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da15_dragon_den" +"origin" "-258 650 0" +"angle" "92" +} + +// entity 24 - dragonking +{ +"classname" "monster_darkages_dragonking" +"name" "dragonking_1_da15_dragon_den" +"origin" "-879 697 0" +"angle" "191" +} + +// entity 25 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da15_dragon_den" +"origin" "404 113 0" +} + +// entity 26 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da15_dragon_den" +"origin" "-1105 1363 0" +} + +// entity 27 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_3_da15_dragon_den" +"origin" "775 -889 0" +} + +// entity 28 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da15_dragon_den" +"origin" "-9 -948 0" +} + +// entity 29 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_5_da15_dragon_den" +"origin" "767 176 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_6_da15_dragon_den" +"origin" "-912 -521 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da15_dragon_den" +"origin" "-1419 -1340 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_8_da15_dragon_den" +"origin" "463 1325 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_9_da15_dragon_den" +"origin" "797 304 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_10_da15_dragon_den" +"origin" "120 -493 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_11_da15_dragon_den" +"origin" "453 -16 0" +} + +// entity 36 - Weapon pickup +{ +"classname" "weapon_darkages_mace" +"name" "weapon_pickup_da15_dragon_den" +"origin" "-50 -228 24" +} + +// entity 37 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 1998 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 38 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da16_ruined_abbey" +} diff --git a/darkages/maps/darkages/da16_ruined_abbey.map b/darkages/maps/darkages/da16_ruined_abbey.map new file mode 100644 index 0000000000..1742ee7d3e --- /dev/null +++ b/darkages/maps/darkages/da16_ruined_abbey.map @@ -0,0 +1,440 @@ +Version 2 +// DOOM: The Dark Ages - Level 16: The Ruined Abbey +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da16_ruined_abbey" +"message" "The Ruined Abbey" +"music" "music/darkages/da16_ruined_abbey" +"ambientColor" "0.08 0.04 0.08" +"_color" "0.2 0.1 0.2" +"darkages_level" "16" +"darkages_act" "3" +"darkages_fog_color" "0.2 0.1 0.2" +"darkages_fog_distance" "3072" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( -3072 0 0 ) ( -3072 0 -16 ) ( -3072 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 3072 0 0 ) ( 3072 1 0 ) ( 3072 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 -3072 0 ) ( 1 -3072 0 ) ( 0 -3072 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 3072 0 ) ( 0 3072 -16 ) ( 1 3072 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3072 -3072 640 ) ( 3072 -3072 640 ) ( -3072 3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 656 ) ( -3072 3072 656 ) ( 3072 -3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 3072 640 ) ( -3072 -3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 3072 -3072 640 ) ( 3072 -3072 656 ) ( 3072 3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 -3072 656 ) ( 3072 -3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 3072 640 ) ( 3072 3072 640 ) ( -3072 3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -1887 1168 0 ) ( -1545 1168 0 ) ( -1887 1168 125 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1887 1304 0 ) ( -1887 1304 125 ) ( -1545 1304 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1887 1168 0 ) ( -1887 1304 0 ) ( -1545 1168 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1887 1168 125 ) ( -1545 1168 125 ) ( -1887 1304 125 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1887 1168 0 ) ( -1887 1168 125 ) ( -1887 1304 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1545 1168 0 ) ( -1545 1304 0 ) ( -1545 1168 125 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -1599 -1123 0 ) ( -1454 -1123 0 ) ( -1599 -1123 217 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -1599 -767 0 ) ( -1599 -767 217 ) ( -1454 -767 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -1599 -1123 0 ) ( -1599 -767 0 ) ( -1454 -1123 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -1599 -1123 217 ) ( -1454 -1123 217 ) ( -1599 -767 217 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -1599 -1123 0 ) ( -1599 -1123 217 ) ( -1599 -767 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -1454 -1123 0 ) ( -1454 -767 0 ) ( -1454 -1123 217 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -146 1497 0 ) ( 4 1497 0 ) ( -146 1497 176 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -146 1830 0 ) ( -146 1830 176 ) ( 4 1830 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -146 1497 0 ) ( -146 1830 0 ) ( 4 1497 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -146 1497 176 ) ( 4 1497 176 ) ( -146 1830 176 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -146 1497 0 ) ( -146 1497 176 ) ( -146 1830 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 4 1497 0 ) ( 4 1830 0 ) ( 4 1497 176 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -371 -1305 0 ) ( -172 -1305 0 ) ( -371 -1305 138 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -371 -920 0 ) ( -371 -920 138 ) ( -172 -920 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -371 -1305 0 ) ( -371 -920 0 ) ( -172 -1305 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -371 -1305 138 ) ( -172 -1305 138 ) ( -371 -920 138 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -371 -1305 0 ) ( -371 -1305 138 ) ( -371 -920 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -172 -1305 0 ) ( -172 -920 0 ) ( -172 -1305 138 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2872 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "2262 155 211" +"_color" "0.8 0.54 0.1" +"light" "354" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-1284 1813 120" +"_color" "0.71 0.34 0.17" +"light" "502" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1023 1042 206" +"_color" "0.75 0.69 0.28" +"light" "543" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "665 1839 145" +"_color" "0.85 0.4 0.09" +"light" "294" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "1949 1422 125" +"_color" "0.92 0.35 0.21" +"light" "437" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1985 2150 169" +"_color" "0.98 0.48 0.04" +"light" "324" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-369 -792 148" +"_color" "0.82 0.66 0.25" +"light" "247" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1930 -897 77" +"_color" "0.63 0.54 0.18" +"light" "237" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-916 2356 249" +"_color" "0.84 0.31 0.06" +"light" "370" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "26 -2332 118" +"_color" "0.97 0.68 0.04" +"light" "586" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1466 -470 242" +"_color" "0.8 0.3 0.27" +"light" "482" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "177 -139 161" +"_color" "0.73 0.52 0.09" +"light" "384" +"texture" "lights/defaultPointLight" +} + +// entity 14 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_1_da16_ruined_abbey" +"origin" "2050 2079 0" +"angle" "254" +} + +// entity 15 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_2_da16_ruined_abbey" +"origin" "1667 -1133 0" +"angle" "240" +} + +// entity 16 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_3_da16_ruined_abbey" +"origin" "473 -704 0" +"angle" "189" +} + +// entity 17 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_4_da16_ruined_abbey" +"origin" "413 159 0" +"angle" "23" +} + +// entity 18 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_5_da16_ruined_abbey" +"origin" "-338 1500 0" +"angle" "74" +} + +// entity 19 - cultist +{ +"classname" "monster_darkages_cultist" +"name" "cultist_6_da16_ruined_abbey" +"origin" "-2018 -468 0" +"angle" "283" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da16_ruined_abbey" +"origin" "1270 -327 0" +"angle" "78" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da16_ruined_abbey" +"origin" "-543 -185 0" +"angle" "117" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da16_ruined_abbey" +"origin" "961 797 0" +"angle" "125" +} + +// entity 23 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da16_ruined_abbey" +"origin" "1940 719 0" +"angle" "335" +} + +// entity 24 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da16_ruined_abbey" +"origin" "615 -482 0" +"angle" "250" +} + +// entity 25 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da16_ruined_abbey" +"origin" "1868 351 0" +"angle" "86" +} + +// entity 26 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da16_ruined_abbey" +"origin" "735 -843 0" +"angle" "71" +} + +// entity 27 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da16_ruined_abbey" +"origin" "1850 -783 0" +"angle" "277" +} + +// entity 28 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_5_da16_ruined_abbey" +"origin" "-1669 610 0" +"angle" "17" +} + +// entity 29 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da16_ruined_abbey" +"origin" "-1542 1814 0" +"angle" "342" +} + +// entity 30 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da16_ruined_abbey" +"origin" "-1753 1594 0" +"angle" "3" +} + +// entity 31 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da16_ruined_abbey" +"origin" "1228 -973 0" +"angle" "322" +} + +// entity 32 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_1_da16_ruined_abbey" +"origin" "-1594 -913 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_2_da16_ruined_abbey" +"origin" "-359 1992 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_3_da16_ruined_abbey" +"origin" "907 -1655 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_4_da16_ruined_abbey" +"origin" "1808 1846 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da16_ruined_abbey" +"origin" "-2096 1219 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_6_da16_ruined_abbey" +"origin" "-2013 100 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_7_da16_ruined_abbey" +"origin" "198 -2010 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_8_da16_ruined_abbey" +"origin" "1377 -682 0" +} + +// entity 40 - Weapon pickup +{ +"classname" "weapon_darkages_axe" +"name" "weapon_pickup_da16_ruined_abbey" +"origin" "-724 152 24" +} + +// entity 41 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3022 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 42 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da17_blood_swamp" +} diff --git a/darkages/maps/darkages/da17_blood_swamp.map b/darkages/maps/darkages/da17_blood_swamp.map new file mode 100644 index 0000000000..368b3d2fd2 --- /dev/null +++ b/darkages/maps/darkages/da17_blood_swamp.map @@ -0,0 +1,501 @@ +Version 2 +// DOOM: The Dark Ages - Level 17: The Blood Swamp +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da17_blood_swamp" +"message" "The Blood Swamp" +"music" "music/darkages/da17_blood_swamp" +"ambientColor" "0.15 0.04 0.04" +"_color" "0.4 0.1 0.1" +"darkages_level" "17" +"darkages_act" "3" +"darkages_fog_color" "0.4 0.1 0.1" +"darkages_fog_distance" "3072" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( -3072 0 0 ) ( -3072 0 -16 ) ( -3072 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 3072 0 0 ) ( 3072 1 0 ) ( 3072 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 -3072 0 ) ( 1 -3072 0 ) ( 0 -3072 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 3072 0 ) ( 0 3072 -16 ) ( 1 3072 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3072 -3072 640 ) ( 3072 -3072 640 ) ( -3072 3072 640 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 656 ) ( -3072 3072 656 ) ( 3072 -3072 656 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 3072 640 ) ( -3072 -3072 656 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( 3072 -3072 640 ) ( 3072 -3072 656 ) ( 3072 3072 640 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 -3072 656 ) ( 3072 -3072 640 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +( -3072 3072 640 ) ( 3072 3072 640 ) ( -3072 3072 656 ) "textures/darkages/sky_burning" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -176 -750 0 ) ( 221 -750 0 ) ( -176 -750 272 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -176 -493 0 ) ( -176 -493 272 ) ( 221 -493 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -176 -750 0 ) ( -176 -493 0 ) ( 221 -750 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -176 -750 272 ) ( 221 -750 272 ) ( -176 -493 272 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -176 -750 0 ) ( -176 -750 272 ) ( -176 -493 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 221 -750 0 ) ( 221 -493 0 ) ( 221 -750 272 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 39 89 0 ) ( 207 89 0 ) ( 39 89 167 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 39 408 0 ) ( 39 408 167 ) ( 207 408 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 39 89 0 ) ( 39 408 0 ) ( 207 89 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 39 89 167 ) ( 207 89 167 ) ( 39 408 167 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 39 89 0 ) ( 39 89 167 ) ( 39 408 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 207 89 0 ) ( 207 408 0 ) ( 207 89 167 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -158 1319 0 ) ( 85 1319 0 ) ( -158 1319 239 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -158 1600 0 ) ( -158 1600 239 ) ( 85 1600 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -158 1319 0 ) ( -158 1600 0 ) ( 85 1319 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -158 1319 239 ) ( 85 1319 239 ) ( -158 1600 239 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -158 1319 0 ) ( -158 1319 239 ) ( -158 1600 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 85 1319 0 ) ( 85 1600 0 ) ( 85 1319 239 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -1891 -1154 0 ) ( -1556 -1154 0 ) ( -1891 -1154 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1891 -832 0 ) ( -1891 -832 160 ) ( -1556 -832 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1891 -1154 0 ) ( -1891 -832 0 ) ( -1556 -1154 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1891 -1154 160 ) ( -1556 -1154 160 ) ( -1891 -832 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1891 -1154 0 ) ( -1891 -1154 160 ) ( -1891 -832 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1556 -1154 0 ) ( -1556 -832 0 ) ( -1556 -1154 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -1691 1072 0 ) ( -1559 1072 0 ) ( -1691 1072 85 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1691 1287 0 ) ( -1691 1287 85 ) ( -1559 1287 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1691 1072 0 ) ( -1691 1287 0 ) ( -1559 1072 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1691 1072 85 ) ( -1559 1072 85 ) ( -1691 1287 85 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1691 1072 0 ) ( -1691 1072 85 ) ( -1691 1287 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1559 1072 0 ) ( -1559 1287 0 ) ( -1559 1072 85 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2872 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1097 256 208" +"_color" "0.99 0.69 0.27" +"light" "221" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-575 -726 294" +"_color" "0.93 0.64 0.14" +"light" "223" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1848 -161 294" +"_color" "0.77 0.53 0.05" +"light" "361" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-2329 -760 214" +"_color" "0.57 0.61 0.25" +"light" "239" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-6 -1127 208" +"_color" "0.62 0.62 0.12" +"light" "476" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "260 687 257" +"_color" "0.87 0.6 0.21" +"light" "240" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1645 376 77" +"_color" "0.55 0.32 0.02" +"light" "509" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "2422 792 262" +"_color" "0.66 0.52 0.24" +"light" "430" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "1562 -589 155" +"_color" "0.78 0.39 0.06" +"light" "499" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "656 -1755 261" +"_color" "0.81 0.6 0.21" +"light" "242" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "-262 -1194 161" +"_color" "0.86 0.52 0.22" +"light" "362" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "497 -1585 87" +"_color" "0.5 0.35 0.11" +"light" "338" +"texture" "lights/defaultPointLight" +} + +// entity 14 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da17_blood_swamp" +"origin" "-1313 -994 0" +"angle" "44" +} + +// entity 15 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da17_blood_swamp" +"origin" "-615 229 0" +"angle" "229" +} + +// entity 16 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da17_blood_swamp" +"origin" "2047 135 0" +"angle" "52" +} + +// entity 17 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da17_blood_swamp" +"origin" "-1935 -1169 0" +"angle" "181" +} + +// entity 18 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da17_blood_swamp" +"origin" "-1388 909 0" +"angle" "306" +} + +// entity 19 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_6_da17_blood_swamp" +"origin" "507 2001 0" +"angle" "197" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da17_blood_swamp" +"origin" "-2049 -341 0" +"angle" "211" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da17_blood_swamp" +"origin" "1026 1655 0" +"angle" "43" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da17_blood_swamp" +"origin" "-162 806 0" +"angle" "266" +} + +// entity 23 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da17_blood_swamp" +"origin" "-761 1271 0" +"angle" "194" +} + +// entity 24 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_5_da17_blood_swamp" +"origin" "-762 -968 0" +"angle" "137" +} + +// entity 25 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da17_blood_swamp" +"origin" "316 -437 0" +"angle" "252" +} + +// entity 26 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da17_blood_swamp" +"origin" "-955 -1277 0" +"angle" "85" +} + +// entity 27 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da17_blood_swamp" +"origin" "1410 -406 0" +"angle" "215" +} + +// entity 28 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da17_blood_swamp" +"origin" "305 447 0" +"angle" "39" +} + +// entity 29 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da17_blood_swamp" +"origin" "808 -506 0" +"angle" "126" +} + +// entity 30 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da17_blood_swamp" +"origin" "1911 896 0" +"angle" "315" +} + +// entity 31 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da17_blood_swamp" +"origin" "-549 339 0" +"angle" "54" +} + +// entity 32 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da17_blood_swamp" +"origin" "-1041 -289 0" +"angle" "3" +} + +// entity 33 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da17_blood_swamp" +"origin" "1091 -176 0" +"angle" "317" +} + +// entity 34 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da17_blood_swamp" +"origin" "962 1757 0" +"angle" "168" +} + +// entity 35 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_1_da17_blood_swamp" +"origin" "592 1377 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_2_da17_blood_swamp" +"origin" "-1035 311 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_3_da17_blood_swamp" +"origin" "-505 1774 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_4_da17_blood_swamp" +"origin" "-695 1112 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_5_da17_blood_swamp" +"origin" "237 1872 0" +} + +// entity 40 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_6_da17_blood_swamp" +"origin" "-165 519 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_7_da17_blood_swamp" +"origin" "146 1068 0" +} + +// entity 42 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_8_da17_blood_swamp" +"origin" "-1218 -514 0" +} + +// entity 43 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_9_da17_blood_swamp" +"origin" "-677 -1930 0" +} + +// entity 44 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_10_da17_blood_swamp" +"origin" "1631 -433 0" +} + +// entity 45 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_11_da17_blood_swamp" +"origin" "236 -1584 0" +} + +// entity 46 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_12_da17_blood_swamp" +"origin" "1201 1940 0" +} + +// entity 47 - Weapon pickup +{ +"classname" "weapon_darkages_crossbow" +"name" "weapon_pickup_da17_blood_swamp" +"origin" "376 -301 24" +} + +// entity 48 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3022 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 49 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da18_shadow_maze" +} diff --git a/darkages/maps/darkages/da18_shadow_maze.map b/darkages/maps/darkages/da18_shadow_maze.map new file mode 100644 index 0000000000..ce5877b1f1 --- /dev/null +++ b/darkages/maps/darkages/da18_shadow_maze.map @@ -0,0 +1,400 @@ +Version 2 +// DOOM: The Dark Ages - Level 18: The Shadow Maze +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da18_shadow_maze" +"message" "The Shadow Maze" +"music" "music/darkages/da18_shadow_maze" +"ambientColor" "0.02 0.02 0.04" +"_color" "0.05 0.05 0.1" +"darkages_level" "18" +"darkages_act" "3" +"darkages_fog_color" "0.05 0.05 0.1" +"darkages_fog_distance" "3072" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( -3072 0 0 ) ( -3072 0 -16 ) ( -3072 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 3072 0 0 ) ( 3072 1 0 ) ( 3072 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 -3072 0 ) ( 1 -3072 0 ) ( 0 -3072 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 3072 0 ) ( 0 3072 -16 ) ( 1 3072 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3072 -3072 640 ) ( 3072 -3072 640 ) ( -3072 3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 656 ) ( -3072 3072 656 ) ( 3072 -3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 3072 640 ) ( -3072 -3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( 3072 -3072 640 ) ( 3072 -3072 656 ) ( 3072 3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 -3072 656 ) ( 3072 -3072 640 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +( -3072 3072 640 ) ( 3072 3072 640 ) ( -3072 3072 656 ) "textures/darkages/sky_night" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -81 1161 0 ) ( 125 1161 0 ) ( -81 1161 266 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -81 1505 0 ) ( -81 1505 266 ) ( 125 1505 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -81 1161 0 ) ( -81 1505 0 ) ( 125 1161 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -81 1161 266 ) ( 125 1161 266 ) ( -81 1505 266 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -81 1161 0 ) ( -81 1161 266 ) ( -81 1505 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 125 1161 0 ) ( 125 1505 0 ) ( 125 1161 266 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -1545 303 0 ) ( -1172 303 0 ) ( -1545 303 200 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1545 636 0 ) ( -1545 636 200 ) ( -1172 636 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1545 303 0 ) ( -1545 636 0 ) ( -1172 303 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1545 303 200 ) ( -1172 303 200 ) ( -1545 636 200 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1545 303 0 ) ( -1545 303 200 ) ( -1545 636 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1172 303 0 ) ( -1172 636 0 ) ( -1172 303 200 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -1849 -64 0 ) ( -1678 -64 0 ) ( -1849 -64 260 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1849 119 0 ) ( -1849 119 260 ) ( -1678 119 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1849 -64 0 ) ( -1849 119 0 ) ( -1678 -64 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1849 -64 260 ) ( -1678 -64 260 ) ( -1849 119 260 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1849 -64 0 ) ( -1849 -64 260 ) ( -1849 119 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -1678 -64 0 ) ( -1678 119 0 ) ( -1678 -64 260 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 758 -855 0 ) ( 908 -855 0 ) ( 758 -855 256 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 758 -523 0 ) ( 758 -523 256 ) ( 908 -523 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 758 -855 0 ) ( 758 -523 0 ) ( 908 -855 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 758 -855 256 ) ( 908 -855 256 ) ( 758 -523 256 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 758 -855 0 ) ( 758 -855 256 ) ( 758 -523 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 908 -855 0 ) ( 908 -523 0 ) ( 908 -855 256 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 1376 -1103 0 ) ( 1509 -1103 0 ) ( 1376 -1103 130 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1376 -925 0 ) ( 1376 -925 130 ) ( 1509 -925 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1376 -1103 0 ) ( 1376 -925 0 ) ( 1509 -1103 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1376 -1103 130 ) ( 1509 -1103 130 ) ( 1376 -925 130 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1376 -1103 0 ) ( 1376 -1103 130 ) ( 1376 -925 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1509 -1103 0 ) ( 1509 -925 0 ) ( 1509 -1103 130 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2872 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1792 2114 212" +"_color" "0.84 0.31 0.11" +"light" "437" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "2364 1642 102" +"_color" "0.67 0.21 0.03" +"light" "412" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1754 -1507 276" +"_color" "0.97 0.27 0.09" +"light" "433" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-763 1811 187" +"_color" "0.67 0.25 0.22" +"light" "431" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "155 -1907 140" +"_color" "0.52 0.56 0.01" +"light" "375" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1562 -1111 302" +"_color" "0.99 0.32 0.05" +"light" "281" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "254 2129 173" +"_color" "0.98 0.32 0.12" +"light" "294" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-931 1083 165" +"_color" "0.51 0.51 0.06" +"light" "503" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "1061 728 65" +"_color" "0.85 0.3 0.23" +"light" "232" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "2272 -1624 268" +"_color" "0.94 0.29 0.1" +"light" "434" +"texture" "lights/defaultPointLight" +} + +// entity 12 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da18_shadow_maze" +"origin" "-1217 -462 0" +"angle" "343" +} + +// entity 13 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da18_shadow_maze" +"origin" "1859 625 0" +"angle" "327" +} + +// entity 14 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da18_shadow_maze" +"origin" "417 909 0" +"angle" "198" +} + +// entity 15 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da18_shadow_maze" +"origin" "1065 868 0" +"angle" "58" +} + +// entity 16 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_5_da18_shadow_maze" +"origin" "700 -95 0" +"angle" "234" +} + +// entity 17 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_6_da18_shadow_maze" +"origin" "-737 1797 0" +"angle" "344" +} + +// entity 18 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_7_da18_shadow_maze" +"origin" "286 980 0" +"angle" "302" +} + +// entity 19 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_8_da18_shadow_maze" +"origin" "-1456 1216 0" +"angle" "68" +} + +// entity 20 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da18_shadow_maze" +"origin" "415 -1054 0" +"angle" "122" +} + +// entity 21 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da18_shadow_maze" +"origin" "351 -1057 0" +"angle" "93" +} + +// entity 22 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da18_shadow_maze" +"origin" "908 1304 0" +"angle" "72" +} + +// entity 23 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da18_shadow_maze" +"origin" "2034 55 0" +"angle" "214" +} + +// entity 24 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da18_shadow_maze" +"origin" "-1021 818 0" +"angle" "196" +} + +// entity 25 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da18_shadow_maze" +"origin" "1315 -776 0" +"angle" "249" +} + +// entity 26 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da18_shadow_maze" +"origin" "-731 736 0" +"angle" "85" +} + +// entity 27 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da18_shadow_maze" +"origin" "1861 -353 0" +"angle" "71" +} + +// entity 28 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da18_shadow_maze" +"origin" "-618 -248 0" +"angle" "230" +} + +// entity 29 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da18_shadow_maze" +"origin" "791 -2072 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_2_da18_shadow_maze" +"origin" "-1032 -552 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_3_da18_shadow_maze" +"origin" "995 1990 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_4_da18_shadow_maze" +"origin" "1904 1201 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da18_shadow_maze" +"origin" "1878 1254 0" +} + +// entity 34 - Weapon pickup +{ +"classname" "weapon_darkages_shield" +"name" "weapon_pickup_da18_shadow_maze" +"origin" "799 -12 24" +} + +// entity 35 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3022 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 36 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da19_demon_arena" +} diff --git a/darkages/maps/darkages/da19_demon_arena.map b/darkages/maps/darkages/da19_demon_arena.map new file mode 100644 index 0000000000..656ac96293 --- /dev/null +++ b/darkages/maps/darkages/da19_demon_arena.map @@ -0,0 +1,594 @@ +Version 2 +// DOOM: The Dark Ages - Level 19: The Demon Arena +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da19_demon_arena" +"message" "The Demon Arena" +"music" "music/darkages/da19_demon_arena" +"ambientColor" "0.12 0.05 0.03" +"_color" "0.3 0.1 0.05" +"darkages_level" "19" +"darkages_act" "3" +"darkages_fog_color" "0.3 0.1 0.05" +"darkages_fog_distance" "3072" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( -3072 0 0 ) ( -3072 0 -16 ) ( -3072 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 3072 0 0 ) ( 3072 1 0 ) ( 3072 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 -3072 0 ) ( 1 -3072 0 ) ( 0 -3072 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 3072 0 ) ( 0 3072 -16 ) ( 1 3072 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3072 -3072 640 ) ( 3072 -3072 640 ) ( -3072 3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 656 ) ( -3072 3072 656 ) ( 3072 -3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 3072 640 ) ( -3072 -3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3072 -3072 640 ) ( 3072 -3072 656 ) ( 3072 3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 -3072 656 ) ( 3072 -3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 3072 640 ) ( 3072 3072 640 ) ( -3072 3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -780 -1198 0 ) ( -637 -1198 0 ) ( -780 -1198 138 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -780 -958 0 ) ( -780 -958 138 ) ( -637 -958 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -780 -1198 0 ) ( -780 -958 0 ) ( -637 -1198 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -780 -1198 138 ) ( -637 -1198 138 ) ( -780 -958 138 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -780 -1198 0 ) ( -780 -1198 138 ) ( -780 -958 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -637 -1198 0 ) ( -637 -958 0 ) ( -637 -1198 138 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 101 -616 0 ) ( 376 -616 0 ) ( 101 -616 263 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 101 -402 0 ) ( 101 -402 263 ) ( 376 -402 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 101 -616 0 ) ( 101 -402 0 ) ( 376 -616 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 101 -616 263 ) ( 376 -616 263 ) ( 101 -402 263 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 101 -616 0 ) ( 101 -616 263 ) ( 101 -402 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 376 -616 0 ) ( 376 -402 0 ) ( 376 -616 263 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 1907 715 0 ) ( 2296 715 0 ) ( 1907 715 210 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1907 900 0 ) ( 1907 900 210 ) ( 2296 900 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1907 715 0 ) ( 1907 900 0 ) ( 2296 715 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1907 715 210 ) ( 2296 715 210 ) ( 1907 900 210 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1907 715 0 ) ( 1907 715 210 ) ( 1907 900 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 2296 715 0 ) ( 2296 900 0 ) ( 2296 715 210 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 44 688 0 ) ( 359 688 0 ) ( 44 688 258 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 44 837 0 ) ( 44 837 258 ) ( 359 837 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 44 688 0 ) ( 44 837 0 ) ( 359 688 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 44 688 258 ) ( 359 688 258 ) ( 44 837 258 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 44 688 0 ) ( 44 688 258 ) ( 44 837 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 359 688 0 ) ( 359 837 0 ) ( 359 688 258 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -360 205 0 ) ( -180 205 0 ) ( -360 205 140 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -360 459 0 ) ( -360 459 140 ) ( -180 459 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -360 205 0 ) ( -360 459 0 ) ( -180 205 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -360 205 140 ) ( -180 205 140 ) ( -360 459 140 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -360 205 0 ) ( -360 205 140 ) ( -360 459 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -180 205 0 ) ( -180 459 0 ) ( -180 205 140 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 1534 -460 0 ) ( 1840 -460 0 ) ( 1534 -460 176 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1534 -288 0 ) ( 1534 -288 176 ) ( 1840 -288 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1534 -460 0 ) ( 1534 -288 0 ) ( 1840 -460 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1534 -460 176 ) ( 1840 -460 176 ) ( 1534 -288 176 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1534 -460 0 ) ( 1534 -460 176 ) ( 1534 -288 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 1840 -460 0 ) ( 1840 -288 0 ) ( 1840 -460 176 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -209 -677 0 ) ( 98 -677 0 ) ( -209 -677 106 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -209 -330 0 ) ( -209 -330 106 ) ( 98 -330 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -209 -677 0 ) ( -209 -330 0 ) ( 98 -677 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -209 -677 106 ) ( 98 -677 106 ) ( -209 -330 106 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( -209 -677 0 ) ( -209 -677 106 ) ( -209 -330 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 98 -677 0 ) ( 98 -330 0 ) ( 98 -677 106 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2872 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-765 -762 270" +"_color" "0.53 0.38 0.08" +"light" "475" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-1078 194 244" +"_color" "0.65 0.49 0.29" +"light" "463" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1677 -1347 256" +"_color" "0.89 0.66 0.3" +"light" "535" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1418 -1370 127" +"_color" "0.57 0.36 0.07" +"light" "546" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "760 1552 100" +"_color" "0.79 0.33 0.12" +"light" "431" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1839 -1695 167" +"_color" "0.76 0.34 0.28" +"light" "388" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "1267 1541 147" +"_color" "0.79 0.63 0.25" +"light" "247" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1298 477 281" +"_color" "0.53 0.47 0.07" +"light" "419" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-722 1595 132" +"_color" "0.66 0.34 0.16" +"light" "266" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "2180 1518 265" +"_color" "0.67 0.54 0.01" +"light" "250" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "1307 -2324 95" +"_color" "0.96 0.28 0.14" +"light" "419" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "-800 -1377 289" +"_color" "0.82 0.28 0.28" +"light" "340" +"texture" "lights/defaultPointLight" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da19_demon_arena" +"origin" "-1386 1145 0" +"angle" "184" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da19_demon_arena" +"origin" "-99 -1199 0" +"angle" "190" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da19_demon_arena" +"origin" "-795 -1324 0" +"angle" "202" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da19_demon_arena" +"origin" "352 1437 0" +"angle" "358" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da19_demon_arena" +"origin" "-232 222 0" +"angle" "335" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da19_demon_arena" +"origin" "-1403 1346 0" +"angle" "48" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da19_demon_arena" +"origin" "-2142 -662 0" +"angle" "244" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da19_demon_arena" +"origin" "-1512 -993 0" +"angle" "303" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_9_da19_demon_arena" +"origin" "-298 591 0" +"angle" "348" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_10_da19_demon_arena" +"origin" "1495 -1498 0" +"angle" "4" +} + +// entity 24 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da19_demon_arena" +"origin" "664 1810 0" +"angle" "61" +} + +// entity 25 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da19_demon_arena" +"origin" "1309 1306 0" +"angle" "67" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da19_demon_arena" +"origin" "1763 -1246 0" +"angle" "117" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da19_demon_arena" +"origin" "988 -1171 0" +"angle" "52" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da19_demon_arena" +"origin" "-1305 -253 0" +"angle" "188" +} + +// entity 29 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da19_demon_arena" +"origin" "301 -975 0" +"angle" "195" +} + +// entity 30 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_7_da19_demon_arena" +"origin" "-1060 1091 0" +"angle" "346" +} + +// entity 31 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_8_da19_demon_arena" +"origin" "-980 -1256 0" +"angle" "271" +} + +// entity 32 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da19_demon_arena" +"origin" "-2081 963 0" +"angle" "332" +} + +// entity 33 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da19_demon_arena" +"origin" "-806 266 0" +"angle" "179" +} + +// entity 34 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da19_demon_arena" +"origin" "-405 1036 0" +"angle" "77" +} + +// entity 35 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da19_demon_arena" +"origin" "1222 987 0" +"angle" "351" +} + +// entity 36 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da19_demon_arena" +"origin" "1474 1986 0" +"angle" "111" +} + +// entity 37 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_6_da19_demon_arena" +"origin" "-1440 2136 0" +"angle" "51" +} + +// entity 38 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da19_demon_arena" +"origin" "-1004 1546 0" +"angle" "63" +} + +// entity 39 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da19_demon_arena" +"origin" "995 -97 0" +"angle" "219" +} + +// entity 40 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da19_demon_arena" +"origin" "426 1704 0" +"angle" "71" +} + +// entity 41 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da19_demon_arena" +"origin" "-121 -402 0" +"angle" "330" +} + +// entity 42 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da19_demon_arena" +"origin" "-1460 -520 0" +"angle" "283" +} + +// entity 43 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da19_demon_arena" +"origin" "184 1654 0" +"angle" "353" +} + +// entity 44 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da19_demon_arena" +"origin" "-1931 1936 0" +"angle" "337" +} + +// entity 45 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da19_demon_arena" +"origin" "321 -695 0" +"angle" "265" +} + +// entity 46 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da19_demon_arena" +"origin" "2024 -764 0" +"angle" "200" +} + +// entity 47 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da19_demon_arena" +"origin" "-1703 -190 0" +} + +// entity 48 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_2_da19_demon_arena" +"origin" "1011 -1227 0" +} + +// entity 49 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_3_da19_demon_arena" +"origin" "1942 -1569 0" +} + +// entity 50 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_4_da19_demon_arena" +"origin" "-2052 808 0" +} + +// entity 51 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_5_da19_demon_arena" +"origin" "-1069 1018 0" +} + +// entity 52 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_6_da19_demon_arena" +"origin" "1297 843 0" +} + +// entity 53 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_7_da19_demon_arena" +"origin" "-735 1708 0" +} + +// entity 54 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_8_da19_demon_arena" +"origin" "-1553 -2014 0" +} + +// entity 55 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_9_da19_demon_arena" +"origin" "-1597 -2038 0" +} + +// entity 56 - Weapon pickup +{ +"classname" "weapon_darkages_flail" +"name" "weapon_pickup_da19_demon_arena" +"origin" "-480 -840 24" +} + +// entity 57 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3022 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 58 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da20_tower_of_despair" +} diff --git a/darkages/maps/darkages/da20_tower_of_despair.map b/darkages/maps/darkages/da20_tower_of_despair.map new file mode 100644 index 0000000000..efa8dcc56f --- /dev/null +++ b/darkages/maps/darkages/da20_tower_of_despair.map @@ -0,0 +1,387 @@ +Version 2 +// DOOM: The Dark Ages - Level 20: Tower of Despair +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da20_tower_of_despair" +"message" "Tower of Despair" +"music" "music/darkages/da20_tower_of_despair" +"ambientColor" "0.1 0.03 0.07" +"_color" "0.25 0.05 0.15" +"darkages_level" "20" +"darkages_act" "3" +"darkages_fog_color" "0.25 0.05 0.15" +"darkages_fog_distance" "3072" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( -3072 0 0 ) ( -3072 0 -16 ) ( -3072 1 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 3072 0 0 ) ( 3072 1 0 ) ( 3072 0 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 -3072 0 ) ( 1 -3072 0 ) ( 0 -3072 -16 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +( 0 3072 0 ) ( 0 3072 -16 ) ( 1 3072 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3072 3072 0 ) ( 3072 3072 0 ) ( -3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3088 0 ) ( -3072 3088 384 ) ( 3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3088 0 ) ( 3072 3072 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 384 ) ( 3072 3072 384 ) ( -3072 3088 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -3072 3072 0 ) ( -3072 3072 384 ) ( -3072 3088 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( 3072 3072 0 ) ( 3072 3088 0 ) ( 3072 3072 384 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3072 -3072 640 ) ( 3072 -3072 640 ) ( -3072 3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 656 ) ( -3072 3072 656 ) ( 3072 -3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 3072 640 ) ( -3072 -3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3072 -3072 640 ) ( 3072 -3072 656 ) ( 3072 3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 -3072 640 ) ( -3072 -3072 656 ) ( 3072 -3072 640 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3072 3072 640 ) ( 3072 3072 640 ) ( -3072 3072 656 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 1110 539 0 ) ( 1384 539 0 ) ( 1110 539 260 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1110 923 0 ) ( 1110 923 260 ) ( 1384 923 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1110 539 0 ) ( 1110 923 0 ) ( 1384 539 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1110 539 260 ) ( 1384 539 260 ) ( 1110 923 260 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1110 539 0 ) ( 1110 539 260 ) ( 1110 923 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1384 539 0 ) ( 1384 923 0 ) ( 1384 539 260 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 1319 1338 0 ) ( 1652 1338 0 ) ( 1319 1338 227 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1319 1508 0 ) ( 1319 1508 227 ) ( 1652 1508 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1319 1338 0 ) ( 1319 1508 0 ) ( 1652 1338 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1319 1338 227 ) ( 1652 1338 227 ) ( 1319 1508 227 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1319 1338 0 ) ( 1319 1338 227 ) ( 1319 1508 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 1652 1338 0 ) ( 1652 1508 0 ) ( 1652 1338 227 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 123 -1194 0 ) ( 409 -1194 0 ) ( 123 -1194 194 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 123 -1026 0 ) ( 123 -1026 194 ) ( 409 -1026 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 123 -1194 0 ) ( 123 -1026 0 ) ( 409 -1194 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 123 -1194 194 ) ( 409 -1194 194 ) ( 123 -1026 194 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 123 -1194 0 ) ( 123 -1194 194 ) ( 123 -1026 0 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +( 409 -1194 0 ) ( 409 -1026 0 ) ( 409 -1194 194 ) "textures/darkages/ground_bone_debris" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -878 661 0 ) ( -583 661 0 ) ( -878 661 214 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -878 989 0 ) ( -878 989 214 ) ( -583 989 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -878 661 0 ) ( -878 989 0 ) ( -583 661 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -878 661 214 ) ( -583 661 214 ) ( -878 989 214 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -878 661 0 ) ( -878 661 214 ) ( -878 989 0 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +( -583 661 0 ) ( -583 989 0 ) ( -583 661 214 ) "textures/darkages/stone_mossy" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -2872 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1126 -503 78" +"_color" "0.62 0.66 0.03" +"light" "513" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-2007 76 234" +"_color" "0.87 0.57 0.04" +"light" "562" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-1333 -2365 105" +"_color" "0.75 0.37 0.16" +"light" "569" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-334 -1090 159" +"_color" "0.56 0.59 0.08" +"light" "260" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "-2217 287 270" +"_color" "0.71 0.46 0.08" +"light" "495" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1826 1607 180" +"_color" "0.76 0.23 0.26" +"light" "285" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "555 -1169 129" +"_color" "0.89 0.65 0.2" +"light" "259" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-586 1711 64" +"_color" "0.52 0.63 0.07" +"light" "441" +"texture" "lights/defaultPointLight" +} + +// entity 10 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da20_tower_of_despair" +"origin" "831 32 0" +"angle" "76" +} + +// entity 11 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da20_tower_of_despair" +"origin" "-684 1976 0" +"angle" "18" +} + +// entity 12 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da20_tower_of_despair" +"origin" "1285 -617 0" +"angle" "164" +} + +// entity 13 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da20_tower_of_despair" +"origin" "-117 168 0" +"angle" "163" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da20_tower_of_despair" +"origin" "72 1847 0" +"angle" "39" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da20_tower_of_despair" +"origin" "904 -1047 0" +"angle" "257" +} + +// entity 16 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da20_tower_of_despair" +"origin" "-1719 -802 0" +"angle" "114" +} + +// entity 17 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da20_tower_of_despair" +"origin" "2075 -1348 0" +"angle" "205" +} + +// entity 18 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da20_tower_of_despair" +"origin" "-1586 2056 0" +"angle" "238" +} + +// entity 19 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da20_tower_of_despair" +"origin" "162 1632 0" +"angle" "159" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_5_da20_tower_of_despair" +"origin" "531 -1183 0" +"angle" "283" +} + +// entity 21 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da20_tower_of_despair" +"origin" "1591 -1504 0" +"angle" "188" +} + +// entity 22 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da20_tower_of_despair" +"origin" "-507 -342 0" +"angle" "288" +} + +// entity 23 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da20_tower_of_despair" +"origin" "339 1493 0" +"angle" "318" +} + +// entity 24 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da20_tower_of_despair" +"origin" "-163 364 0" +"angle" "188" +} + +// entity 25 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da20_tower_of_despair" +"origin" "1891 1628 0" +"angle" "100" +} + +// entity 26 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da20_tower_of_despair" +"origin" "-142 -920 0" +"angle" "3" +} + +// entity 27 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da20_tower_of_despair" +"origin" "1209 -1439 0" +"angle" "119" +} + +// entity 28 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da20_tower_of_despair" +"origin" "687 1068 0" +"angle" "355" +} + +// entity 29 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_1_da20_tower_of_despair" +"origin" "594 -2139 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_2_da20_tower_of_despair" +"origin" "932 369 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_3_da20_tower_of_despair" +"origin" "-470 -199 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da20_tower_of_despair" +"origin" "1880 -1660 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_5_da20_tower_of_despair" +"origin" "142 -1388 0" +} + +// entity 34 - Weapon pickup +{ +"classname" "weapon_darkages_throwaxe" +"name" "weapon_pickup_da20_tower_of_despair" +"origin" "-447 916 24" +} + +// entity 35 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3022 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 36 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da21_gates_of_hell" +} diff --git a/darkages/maps/darkages/da21_gates_of_hell.map b/darkages/maps/darkages/da21_gates_of_hell.map new file mode 100644 index 0000000000..9002c693df --- /dev/null +++ b/darkages/maps/darkages/da21_gates_of_hell.map @@ -0,0 +1,554 @@ +Version 2 +// DOOM: The Dark Ages - Level 21: Gates of Hell +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da21_gates_of_hell" +"message" "Gates of Hell" +"music" "music/darkages/da21_gates_of_hell" +"ambientColor" "0.2 0.05 0.02" +"_color" "0.5 0.1 0.0" +"darkages_level" "21" +"darkages_act" "4" +"darkages_fog_color" "0.5 0.1 0.0" +"darkages_fog_distance" "3584" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( -3584 0 0 ) ( -3584 0 -16 ) ( -3584 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 3584 0 0 ) ( 3584 1 0 ) ( 3584 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 -3584 0 ) ( 1 -3584 0 ) ( 0 -3584 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 3584 0 ) ( 0 3584 -16 ) ( 1 3584 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3584 -3584 768 ) ( 3584 -3584 768 ) ( -3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 784 ) ( -3584 3584 784 ) ( 3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 3584 768 ) ( -3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3584 -3584 768 ) ( 3584 -3584 784 ) ( 3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 -3584 784 ) ( 3584 -3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 3584 768 ) ( 3584 3584 768 ) ( -3584 3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 875 1078 0 ) ( 1193 1078 0 ) ( 875 1078 107 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 875 1440 0 ) ( 875 1440 107 ) ( 1193 1440 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 875 1078 0 ) ( 875 1440 0 ) ( 1193 1078 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 875 1078 107 ) ( 1193 1078 107 ) ( 875 1440 107 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 875 1078 0 ) ( 875 1078 107 ) ( 875 1440 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1193 1078 0 ) ( 1193 1440 0 ) ( 1193 1078 107 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 1632 -1246 0 ) ( 1961 -1246 0 ) ( 1632 -1246 367 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1632 -1080 0 ) ( 1632 -1080 367 ) ( 1961 -1080 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1632 -1246 0 ) ( 1632 -1080 0 ) ( 1961 -1246 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1632 -1246 367 ) ( 1961 -1246 367 ) ( 1632 -1080 367 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1632 -1246 0 ) ( 1632 -1246 367 ) ( 1632 -1080 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1961 -1246 0 ) ( 1961 -1080 0 ) ( 1961 -1246 367 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 1055 921 0 ) ( 1249 921 0 ) ( 1055 921 213 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1055 1170 0 ) ( 1055 1170 213 ) ( 1249 1170 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1055 921 0 ) ( 1055 1170 0 ) ( 1249 921 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1055 921 213 ) ( 1249 921 213 ) ( 1055 1170 213 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1055 921 0 ) ( 1055 921 213 ) ( 1055 1170 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1249 921 0 ) ( 1249 1170 0 ) ( 1249 921 213 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 72 1488 0 ) ( 401 1488 0 ) ( 72 1488 226 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 72 1783 0 ) ( 72 1783 226 ) ( 401 1783 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 72 1488 0 ) ( 72 1783 0 ) ( 401 1488 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 72 1488 226 ) ( 401 1488 226 ) ( 72 1783 226 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 72 1488 0 ) ( 72 1488 226 ) ( 72 1783 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 401 1488 0 ) ( 401 1783 0 ) ( 401 1488 226 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( -281 -836 0 ) ( -115 -836 0 ) ( -281 -836 133 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -281 -605 0 ) ( -281 -605 133 ) ( -115 -605 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -281 -836 0 ) ( -281 -605 0 ) ( -115 -836 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -281 -836 133 ) ( -115 -836 133 ) ( -281 -605 133 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -281 -836 0 ) ( -281 -836 133 ) ( -281 -605 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -115 -836 0 ) ( -115 -605 0 ) ( -115 -836 133 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -1235 -1360 0 ) ( -1023 -1360 0 ) ( -1235 -1360 302 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1235 -1002 0 ) ( -1235 -1002 302 ) ( -1023 -1002 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1235 -1360 0 ) ( -1235 -1002 0 ) ( -1023 -1360 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1235 -1360 302 ) ( -1023 -1360 302 ) ( -1235 -1002 302 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1235 -1360 0 ) ( -1235 -1360 302 ) ( -1235 -1002 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1023 -1360 0 ) ( -1023 -1002 0 ) ( -1023 -1360 302 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( 822 -1298 0 ) ( 1133 -1298 0 ) ( 822 -1298 295 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 822 -1064 0 ) ( 822 -1064 295 ) ( 1133 -1064 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 822 -1298 0 ) ( 822 -1064 0 ) ( 1133 -1298 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 822 -1298 295 ) ( 1133 -1298 295 ) ( 822 -1064 295 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 822 -1298 0 ) ( 822 -1298 295 ) ( 822 -1064 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1133 -1298 0 ) ( 1133 -1064 0 ) ( 1133 -1298 295 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( 1287 -707 0 ) ( 1476 -707 0 ) ( 1287 -707 144 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1287 -533 0 ) ( 1287 -533 144 ) ( 1476 -533 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1287 -707 0 ) ( 1287 -533 0 ) ( 1476 -707 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1287 -707 144 ) ( 1476 -707 144 ) ( 1287 -533 144 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1287 -707 0 ) ( 1287 -707 144 ) ( 1287 -533 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1476 -707 0 ) ( 1476 -533 0 ) ( 1476 -707 144 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -3384 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "2841 2075 84" +"_color" "0.61 0.63 0.04" +"light" "564" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-834 47 266" +"_color" "0.76 0.54 0.08" +"light" "289" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-2613 445 295" +"_color" "0.78 0.48 0.03" +"light" "252" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1722 -1873 70" +"_color" "0.53 0.59 0.07" +"light" "301" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "414 182 386" +"_color" "0.97 0.24 0.18" +"light" "238" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-2689 -2339 165" +"_color" "0.95 0.42 0.04" +"light" "369" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-1864 -2518 300" +"_color" "0.53 0.66 0.13" +"light" "570" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "368 1197 79" +"_color" "0.69 0.41 0.11" +"light" "295" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-615 -575 292" +"_color" "0.94 0.22 0.19" +"light" "325" +"texture" "lights/defaultPointLight" +} + +// entity 11 - Light +{ +"classname" "light" +"name" "light_10" +"origin" "2435 -450 319" +"_color" "0.71 0.48 0.02" +"light" "343" +"texture" "lights/defaultPointLight" +} + +// entity 12 - Light +{ +"classname" "light" +"name" "light_11" +"origin" "270 -1743 278" +"_color" "0.6 0.64 0.16" +"light" "522" +"texture" "lights/defaultPointLight" +} + +// entity 13 - Light +{ +"classname" "light" +"name" "light_12" +"origin" "1586 -2708 259" +"_color" "0.89 0.38 0.16" +"light" "448" +"texture" "lights/defaultPointLight" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da21_gates_of_hell" +"origin" "310 2323 0" +"angle" "164" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da21_gates_of_hell" +"origin" "673 423 0" +"angle" "92" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da21_gates_of_hell" +"origin" "-2295 820 0" +"angle" "305" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da21_gates_of_hell" +"origin" "-714 -1552 0" +"angle" "143" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da21_gates_of_hell" +"origin" "-2029 2072 0" +"angle" "271" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da21_gates_of_hell" +"origin" "420 114 0" +"angle" "81" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da21_gates_of_hell" +"origin" "-1688 238 0" +"angle" "336" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da21_gates_of_hell" +"origin" "-533 391 0" +"angle" "273" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_9_da21_gates_of_hell" +"origin" "-2050 5 0" +"angle" "294" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_10_da21_gates_of_hell" +"origin" "673 1114 0" +"angle" "88" +} + +// entity 24 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da21_gates_of_hell" +"origin" "-1066 145 0" +"angle" "303" +} + +// entity 25 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da21_gates_of_hell" +"origin" "97 1147 0" +"angle" "302" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da21_gates_of_hell" +"origin" "-2277 1088 0" +"angle" "290" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da21_gates_of_hell" +"origin" "2109 -628 0" +"angle" "288" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da21_gates_of_hell" +"origin" "-966 2240 0" +"angle" "277" +} + +// entity 29 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da21_gates_of_hell" +"origin" "23 -354 0" +"angle" "251" +} + +// entity 30 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_7_da21_gates_of_hell" +"origin" "-2198 -1053 0" +"angle" "28" +} + +// entity 31 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_8_da21_gates_of_hell" +"origin" "-603 0 0" +"angle" "10" +} + +// entity 32 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da21_gates_of_hell" +"origin" "1804 2123 0" +"angle" "0" +} + +// entity 33 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da21_gates_of_hell" +"origin" "209 -142 0" +"angle" "66" +} + +// entity 34 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da21_gates_of_hell" +"origin" "283 -339 0" +"angle" "165" +} + +// entity 35 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da21_gates_of_hell" +"origin" "-2021 -1613 0" +"angle" "75" +} + +// entity 36 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da21_gates_of_hell" +"origin" "2297 -632 0" +"angle" "56" +} + +// entity 37 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da21_gates_of_hell" +"origin" "1803 1197 0" +"angle" "37" +} + +// entity 38 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da21_gates_of_hell" +"origin" "552 1448 0" +"angle" "300" +} + +// entity 39 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_1_da21_gates_of_hell" +"origin" "-1681 965 0" +"angle" "154" +} + +// entity 40 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_1_da21_gates_of_hell" +"origin" "-1391 -1218 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_2_da21_gates_of_hell" +"origin" "1070 1483 0" +} + +// entity 42 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_3_da21_gates_of_hell" +"origin" "91 -1081 0" +} + +// entity 43 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_4_da21_gates_of_hell" +"origin" "2095 415 0" +} + +// entity 44 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_5_da21_gates_of_hell" +"origin" "2316 -1072 0" +} + +// entity 45 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_6_da21_gates_of_hell" +"origin" "5 -96 0" +} + +// entity 46 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_7_da21_gates_of_hell" +"origin" "-1053 -2494 0" +} + +// entity 47 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_8_da21_gates_of_hell" +"origin" "2184 699 0" +} + +// entity 48 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_9_da21_gates_of_hell" +"origin" "2140 -2243 0" +} + +// entity 49 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_10_da21_gates_of_hell" +"origin" "2426 98 0" +} + +// entity 50 - Weapon pickup +{ +"classname" "weapon_darkages_sword" +"name" "weapon_pickup_da21_gates_of_hell" +"origin" "-171 -649 24" +} + +// entity 51 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3534 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 52 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da22_river_of_souls" +} diff --git a/darkages/maps/darkages/da22_river_of_souls.map b/darkages/maps/darkages/da22_river_of_souls.map new file mode 100644 index 0000000000..d2de985a81 --- /dev/null +++ b/darkages/maps/darkages/da22_river_of_souls.map @@ -0,0 +1,476 @@ +Version 2 +// DOOM: The Dark Ages - Level 22: River of Lost Souls +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da22_river_of_souls" +"message" "River of Lost Souls" +"music" "music/darkages/da22_river_of_souls" +"ambientColor" "0.06 0.03 0.08" +"_color" "0.15 0.05 0.2" +"darkages_level" "22" +"darkages_act" "4" +"darkages_fog_color" "0.15 0.05 0.2" +"darkages_fog_distance" "3584" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( -3584 0 0 ) ( -3584 0 -16 ) ( -3584 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 3584 0 0 ) ( 3584 1 0 ) ( 3584 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 -3584 0 ) ( 1 -3584 0 ) ( 0 -3584 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 3584 0 ) ( 0 3584 -16 ) ( 1 3584 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3584 -3584 768 ) ( 3584 -3584 768 ) ( -3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 784 ) ( -3584 3584 784 ) ( 3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 3584 768 ) ( -3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3584 -3584 768 ) ( 3584 -3584 784 ) ( 3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 -3584 784 ) ( 3584 -3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 3584 768 ) ( 3584 3584 768 ) ( -3584 3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -1356 -436 0 ) ( -1189 -436 0 ) ( -1356 -436 241 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1356 -187 0 ) ( -1356 -187 241 ) ( -1189 -187 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1356 -436 0 ) ( -1356 -187 0 ) ( -1189 -436 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1356 -436 241 ) ( -1189 -436 241 ) ( -1356 -187 241 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1356 -436 0 ) ( -1356 -436 241 ) ( -1356 -187 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1189 -436 0 ) ( -1189 -187 0 ) ( -1189 -436 241 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -1133 813 0 ) ( -960 813 0 ) ( -1133 813 292 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1133 1112 0 ) ( -1133 1112 292 ) ( -960 1112 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1133 813 0 ) ( -1133 1112 0 ) ( -960 813 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1133 813 292 ) ( -960 813 292 ) ( -1133 1112 292 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1133 813 0 ) ( -1133 813 292 ) ( -1133 1112 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -960 813 0 ) ( -960 1112 0 ) ( -960 813 292 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -336 -934 0 ) ( -81 -934 0 ) ( -336 -934 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -336 -772 0 ) ( -336 -772 243 ) ( -81 -772 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -336 -934 0 ) ( -336 -772 0 ) ( -81 -934 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -336 -934 243 ) ( -81 -934 243 ) ( -336 -772 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -336 -934 0 ) ( -336 -934 243 ) ( -336 -772 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -81 -934 0 ) ( -81 -772 0 ) ( -81 -934 243 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -1623 1158 0 ) ( -1495 1158 0 ) ( -1623 1158 261 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1623 1310 0 ) ( -1623 1310 261 ) ( -1495 1310 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1623 1158 0 ) ( -1623 1310 0 ) ( -1495 1158 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1623 1158 261 ) ( -1495 1158 261 ) ( -1623 1310 261 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1623 1158 0 ) ( -1623 1158 261 ) ( -1623 1310 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1495 1158 0 ) ( -1495 1310 0 ) ( -1495 1158 261 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 929 -1111 0 ) ( 1268 -1111 0 ) ( 929 -1111 257 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 929 -731 0 ) ( 929 -731 257 ) ( 1268 -731 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 929 -1111 0 ) ( 929 -731 0 ) ( 1268 -1111 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 929 -1111 257 ) ( 1268 -1111 257 ) ( 929 -731 257 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 929 -1111 0 ) ( 929 -1111 257 ) ( 929 -731 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1268 -1111 0 ) ( 1268 -731 0 ) ( 1268 -1111 257 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( 1965 -255 0 ) ( 2144 -255 0 ) ( 1965 -255 359 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1965 118 0 ) ( 1965 118 359 ) ( 2144 118 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1965 -255 0 ) ( 1965 118 0 ) ( 2144 -255 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1965 -255 359 ) ( 2144 -255 359 ) ( 1965 118 359 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1965 -255 0 ) ( 1965 -255 359 ) ( 1965 118 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 2144 -255 0 ) ( 2144 118 0 ) ( 2144 -255 359 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -1176 56 0 ) ( -1011 56 0 ) ( -1176 56 214 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1176 201 0 ) ( -1176 201 214 ) ( -1011 201 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1176 56 0 ) ( -1176 201 0 ) ( -1011 56 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1176 56 214 ) ( -1011 56 214 ) ( -1176 201 214 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1176 56 0 ) ( -1176 56 214 ) ( -1176 201 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -1011 56 0 ) ( -1011 201 0 ) ( -1011 56 214 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -3384 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-728 -2010 101" +"_color" "0.67 0.64 0.05" +"light" "238" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "1614 -2105 237" +"_color" "0.8 0.51 0.14" +"light" "215" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "666 2487 148" +"_color" "0.8 0.42 0.02" +"light" "369" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-1184 -1311 273" +"_color" "0.85 0.56 0.22" +"light" "335" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "2544 -561 216" +"_color" "0.62 0.22 0.17" +"light" "451" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1609 -2421 248" +"_color" "0.5 0.24 0.25" +"light" "520" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "2049 1067 166" +"_color" "0.55 0.3 0.19" +"light" "241" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "1012 -1921 221" +"_color" "0.89 0.44 0.27" +"light" "335" +"texture" "lights/defaultPointLight" +} + +// entity 10 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_1_da22_river_of_souls" +"origin" "-1762 1382 0" +"angle" "94" +} + +// entity 11 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_2_da22_river_of_souls" +"origin" "531 1332 0" +"angle" "189" +} + +// entity 12 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_3_da22_river_of_souls" +"origin" "-980 1859 0" +"angle" "22" +} + +// entity 13 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_4_da22_river_of_souls" +"origin" "-352 1810 0" +"angle" "238" +} + +// entity 14 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_5_da22_river_of_souls" +"origin" "-351 61 0" +"angle" "137" +} + +// entity 15 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_6_da22_river_of_souls" +"origin" "2114 -1288 0" +"angle" "77" +} + +// entity 16 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_7_da22_river_of_souls" +"origin" "-1716 -1090 0" +"angle" "342" +} + +// entity 17 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_8_da22_river_of_souls" +"origin" "308 1599 0" +"angle" "301" +} + +// entity 18 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_9_da22_river_of_souls" +"origin" "-645 -1293 0" +"angle" "198" +} + +// entity 19 - wraith +{ +"classname" "monster_darkages_wraith" +"name" "wraith_10_da22_river_of_souls" +"origin" "1772 1637 0" +"angle" "274" +} + +// entity 20 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da22_river_of_souls" +"origin" "1381 138 0" +"angle" "243" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da22_river_of_souls" +"origin" "-60 -1146 0" +"angle" "202" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da22_river_of_souls" +"origin" "-2224 2321 0" +"angle" "292" +} + +// entity 23 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da22_river_of_souls" +"origin" "1725 -585 0" +"angle" "61" +} + +// entity 24 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_5_da22_river_of_souls" +"origin" "1170 -376 0" +"angle" "85" +} + +// entity 25 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da22_river_of_souls" +"origin" "-773 -214 0" +"angle" "64" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da22_river_of_souls" +"origin" "-2159 1676 0" +"angle" "40" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da22_river_of_souls" +"origin" "1058 -138 0" +"angle" "321" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da22_river_of_souls" +"origin" "-1297 320 0" +"angle" "163" +} + +// entity 29 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da22_river_of_souls" +"origin" "-1960 -1080 0" +"angle" "198" +} + +// entity 30 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da22_river_of_souls" +"origin" "2049 1463 0" +"angle" "282" +} + +// entity 31 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da22_river_of_souls" +"origin" "163 470 0" +"angle" "266" +} + +// entity 32 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da22_river_of_souls" +"origin" "1245 -1691 0" +"angle" "358" +} + +// entity 33 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da22_river_of_souls" +"origin" "2305 2488 0" +"angle" "214" +} + +// entity 34 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da22_river_of_souls" +"origin" "-1587 1603 0" +"angle" "76" +} + +// entity 35 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_1_da22_river_of_souls" +"origin" "2133 2308 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_2_da22_river_of_souls" +"origin" "-1688 -1643 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_3_da22_river_of_souls" +"origin" "-1681 -165 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_4_da22_river_of_souls" +"origin" "1879 308 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da22_river_of_souls" +"origin" "-345 629 0" +} + +// entity 40 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_6_da22_river_of_souls" +"origin" "1469 2178 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_7_da22_river_of_souls" +"origin" "1367 -2202 0" +} + +// entity 42 - Weapon pickup +{ +"classname" "weapon_darkages_mace" +"name" "weapon_pickup_da22_river_of_souls" +"origin" "53 575 24" +} + +// entity 43 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3534 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 44 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da23_fortress_of_doom" +} diff --git a/darkages/maps/darkages/da23_fortress_of_doom.map b/darkages/maps/darkages/da23_fortress_of_doom.map new file mode 100644 index 0000000000..15add1caf6 --- /dev/null +++ b/darkages/maps/darkages/da23_fortress_of_doom.map @@ -0,0 +1,493 @@ +Version 2 +// DOOM: The Dark Ages - Level 23: Fortress of Doom +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da23_fortress_of_doom" +"message" "Fortress of Doom" +"music" "music/darkages/da23_fortress_of_doom" +"ambientColor" "0.15 0.04 0.02" +"_color" "0.4 0.08 0.02" +"darkages_level" "23" +"darkages_act" "4" +"darkages_fog_color" "0.4 0.08 0.02" +"darkages_fog_distance" "3584" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( -3584 0 0 ) ( -3584 0 -16 ) ( -3584 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 3584 0 0 ) ( 3584 1 0 ) ( 3584 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 -3584 0 ) ( 1 -3584 0 ) ( 0 -3584 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 3584 0 ) ( 0 3584 -16 ) ( 1 3584 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3584 -3584 768 ) ( 3584 -3584 768 ) ( -3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 784 ) ( -3584 3584 784 ) ( 3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 3584 768 ) ( -3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3584 -3584 768 ) ( 3584 -3584 784 ) ( 3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 -3584 784 ) ( 3584 -3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 3584 768 ) ( 3584 3584 768 ) ( -3584 3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 2478 996 0 ) ( 2811 996 0 ) ( 2478 996 266 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2478 1143 0 ) ( 2478 1143 266 ) ( 2811 1143 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2478 996 0 ) ( 2478 1143 0 ) ( 2811 996 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2478 996 266 ) ( 2811 996 266 ) ( 2478 1143 266 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2478 996 0 ) ( 2478 996 266 ) ( 2478 1143 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 2811 996 0 ) ( 2811 1143 0 ) ( 2811 996 266 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( -562 -1591 0 ) ( -191 -1591 0 ) ( -562 -1591 254 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -562 -1326 0 ) ( -562 -1326 254 ) ( -191 -1326 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -562 -1591 0 ) ( -562 -1326 0 ) ( -191 -1591 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -562 -1591 254 ) ( -191 -1591 254 ) ( -562 -1326 254 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -562 -1591 0 ) ( -562 -1591 254 ) ( -562 -1326 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -191 -1591 0 ) ( -191 -1326 0 ) ( -191 -1591 254 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( 259 1556 0 ) ( 542 1556 0 ) ( 259 1556 207 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 259 1843 0 ) ( 259 1843 207 ) ( 542 1843 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 259 1556 0 ) ( 259 1843 0 ) ( 542 1556 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 259 1556 207 ) ( 542 1556 207 ) ( 259 1843 207 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 259 1556 0 ) ( 259 1556 207 ) ( 259 1843 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 542 1556 0 ) ( 542 1843 0 ) ( 542 1556 207 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( -1704 1767 0 ) ( -1460 1767 0 ) ( -1704 1767 217 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1704 1963 0 ) ( -1704 1963 217 ) ( -1460 1963 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1704 1767 0 ) ( -1704 1963 0 ) ( -1460 1767 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1704 1767 217 ) ( -1460 1767 217 ) ( -1704 1963 217 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1704 1767 0 ) ( -1704 1767 217 ) ( -1704 1963 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -1460 1767 0 ) ( -1460 1963 0 ) ( -1460 1767 217 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 120 -689 0 ) ( 461 -689 0 ) ( 120 -689 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 120 -516 0 ) ( 120 -516 160 ) ( 461 -516 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 120 -689 0 ) ( 120 -516 0 ) ( 461 -689 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 120 -689 160 ) ( 461 -689 160 ) ( 120 -516 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 120 -689 0 ) ( 120 -689 160 ) ( 120 -516 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 461 -689 0 ) ( 461 -516 0 ) ( 461 -689 160 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -3384 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "468 1101 328" +"_color" "0.93 0.61 0.15" +"light" "281" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "-2330 -319 323" +"_color" "0.7 0.59 0.16" +"light" "491" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-2630 -1444 162" +"_color" "0.94 0.3 0.02" +"light" "216" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "872 -2453 248" +"_color" "0.85 0.34 0.25" +"light" "458" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "384 2338 127" +"_color" "0.84 0.32 0.15" +"light" "428" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-1413 1020 364" +"_color" "0.78 0.37 0.25" +"light" "332" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "2776 -2127 209" +"_color" "0.51 0.22 0.26" +"light" "599" +"texture" "lights/defaultPointLight" +} + +// entity 9 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da23_fortress_of_doom" +"origin" "-753 21 0" +"angle" "331" +} + +// entity 10 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da23_fortress_of_doom" +"origin" "-664 -99 0" +"angle" "137" +} + +// entity 11 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da23_fortress_of_doom" +"origin" "846 2412 0" +"angle" "10" +} + +// entity 12 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da23_fortress_of_doom" +"origin" "-2436 2091 0" +"angle" "67" +} + +// entity 13 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da23_fortress_of_doom" +"origin" "-1090 -1723 0" +"angle" "114" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da23_fortress_of_doom" +"origin" "-441 710 0" +"angle" "329" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_7_da23_fortress_of_doom" +"origin" "-253 1679 0" +"angle" "192" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_8_da23_fortress_of_doom" +"origin" "348 1968 0" +"angle" "129" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_9_da23_fortress_of_doom" +"origin" "-721 2031 0" +"angle" "154" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_10_da23_fortress_of_doom" +"origin" "1757 1461 0" +"angle" "299" +} + +// entity 19 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da23_fortress_of_doom" +"origin" "-1670 -1732 0" +"angle" "261" +} + +// entity 20 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da23_fortress_of_doom" +"origin" "557 523 0" +"angle" "152" +} + +// entity 21 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da23_fortress_of_doom" +"origin" "-1623 2154 0" +"angle" "32" +} + +// entity 22 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_4_da23_fortress_of_doom" +"origin" "246 472 0" +"angle" "327" +} + +// entity 23 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_5_da23_fortress_of_doom" +"origin" "155 476 0" +"angle" "133" +} + +// entity 24 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da23_fortress_of_doom" +"origin" "-61 -249 0" +"angle" "76" +} + +// entity 25 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da23_fortress_of_doom" +"origin" "1729 176 0" +"angle" "29" +} + +// entity 26 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_3_da23_fortress_of_doom" +"origin" "2407 1518 0" +"angle" "338" +} + +// entity 27 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da23_fortress_of_doom" +"origin" "110 -646 0" +"angle" "13" +} + +// entity 28 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da23_fortress_of_doom" +"origin" "1566 629 0" +"angle" "132" +} + +// entity 29 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da23_fortress_of_doom" +"origin" "920 1522 0" +"angle" "198" +} + +// entity 30 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da23_fortress_of_doom" +"origin" "-2219 -237 0" +"angle" "175" +} + +// entity 31 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da23_fortress_of_doom" +"origin" "-687 2105 0" +"angle" "343" +} + +// entity 32 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da23_fortress_of_doom" +"origin" "428 2363 0" +"angle" "153" +} + +// entity 33 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da23_fortress_of_doom" +"origin" "-1116 -309 0" +"angle" "150" +} + +// entity 34 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da23_fortress_of_doom" +"origin" "-1709 2064 0" +"angle" "65" +} + +// entity 35 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da23_fortress_of_doom" +"origin" "-390 -293 0" +"angle" "348" +} + +// entity 36 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_6_da23_fortress_of_doom" +"origin" "241 -1061 0" +"angle" "113" +} + +// entity 37 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_1_da23_fortress_of_doom" +"origin" "-679 7 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_2_da23_fortress_of_doom" +"origin" "206 536 0" +} + +// entity 39 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_3_da23_fortress_of_doom" +"origin" "2288 -100 0" +} + +// entity 40 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_4_da23_fortress_of_doom" +"origin" "-1544 1346 0" +} + +// entity 41 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_5_da23_fortress_of_doom" +"origin" "2272 2245 0" +} + +// entity 42 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_6_da23_fortress_of_doom" +"origin" "-1925 1360 0" +} + +// entity 43 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_7_da23_fortress_of_doom" +"origin" "1591 -1527 0" +} + +// entity 44 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_8_da23_fortress_of_doom" +"origin" "618 1832 0" +} + +// entity 45 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_9_da23_fortress_of_doom" +"origin" "876 -2066 0" +} + +// entity 46 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_10_da23_fortress_of_doom" +"origin" "-1273 -1383 0" +} + +// entity 47 - Weapon pickup +{ +"classname" "weapon_darkages_axe" +"name" "weapon_pickup_da23_fortress_of_doom" +"origin" "328 601 24" +} + +// entity 48 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3534 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 49 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da24_throne_of_darkness" +} diff --git a/darkages/maps/darkages/da24_throne_of_darkness.map b/darkages/maps/darkages/da24_throne_of_darkness.map new file mode 100644 index 0000000000..5abdc2faf6 --- /dev/null +++ b/darkages/maps/darkages/da24_throne_of_darkness.map @@ -0,0 +1,460 @@ +Version 2 +// DOOM: The Dark Ages - Level 24: Throne of Darkness +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da24_throne_of_darkness" +"message" "Throne of Darkness" +"music" "music/darkages/da24_throne_of_darkness" +"ambientColor" "0.2 0.03 0.01" +"_color" "0.5 0.05 0.0" +"darkages_level" "24" +"darkages_act" "4" +"darkages_fog_color" "0.5 0.05 0.0" +"darkages_fog_distance" "3584" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( -3584 0 0 ) ( -3584 0 -16 ) ( -3584 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 3584 0 0 ) ( 3584 1 0 ) ( 3584 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 -3584 0 ) ( 1 -3584 0 ) ( 0 -3584 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 3584 0 ) ( 0 3584 -16 ) ( 1 3584 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3584 -3584 768 ) ( 3584 -3584 768 ) ( -3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 784 ) ( -3584 3584 784 ) ( 3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 3584 768 ) ( -3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3584 -3584 768 ) ( 3584 -3584 784 ) ( 3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 -3584 784 ) ( 3584 -3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 3584 768 ) ( 3584 3584 768 ) ( -3584 3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( 1240 -1206 0 ) ( 1529 -1206 0 ) ( 1240 -1206 105 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1240 -986 0 ) ( 1240 -986 105 ) ( 1529 -986 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1240 -1206 0 ) ( 1240 -986 0 ) ( 1529 -1206 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1240 -1206 105 ) ( 1529 -1206 105 ) ( 1240 -986 105 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1240 -1206 0 ) ( 1240 -1206 105 ) ( 1240 -986 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1529 -1206 0 ) ( 1529 -986 0 ) ( 1529 -1206 105 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 216 792 0 ) ( 434 792 0 ) ( 216 792 388 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 216 1080 0 ) ( 216 1080 388 ) ( 434 1080 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 216 792 0 ) ( 216 1080 0 ) ( 434 792 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 216 792 388 ) ( 434 792 388 ) ( 216 1080 388 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 216 792 0 ) ( 216 792 388 ) ( 216 1080 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 434 792 0 ) ( 434 1080 0 ) ( 434 792 388 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -2470 59 0 ) ( -2202 59 0 ) ( -2470 59 150 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( -2470 294 0 ) ( -2470 294 150 ) ( -2202 294 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( -2470 59 0 ) ( -2470 294 0 ) ( -2202 59 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( -2470 59 150 ) ( -2202 59 150 ) ( -2470 294 150 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( -2470 59 0 ) ( -2470 59 150 ) ( -2470 294 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( -2202 59 0 ) ( -2202 294 0 ) ( -2202 59 150 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 1502 1424 0 ) ( 1675 1424 0 ) ( 1502 1424 378 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1502 1618 0 ) ( 1502 1618 378 ) ( 1675 1618 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1502 1424 0 ) ( 1502 1618 0 ) ( 1675 1424 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1502 1424 378 ) ( 1675 1424 378 ) ( 1502 1618 378 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1502 1424 0 ) ( 1502 1424 378 ) ( 1502 1618 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 1675 1424 0 ) ( 1675 1618 0 ) ( 1675 1424 378 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 1009 -140 0 ) ( 1356 -140 0 ) ( 1009 -140 260 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1009 232 0 ) ( 1009 232 260 ) ( 1356 232 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1009 -140 0 ) ( 1009 232 0 ) ( 1356 -140 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1009 -140 260 ) ( 1356 -140 260 ) ( 1009 232 260 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1009 -140 0 ) ( 1009 -140 260 ) ( 1009 232 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1356 -140 0 ) ( 1356 232 0 ) ( 1356 -140 260 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -2199 394 0 ) ( -1969 394 0 ) ( -2199 394 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2199 713 0 ) ( -2199 713 71 ) ( -1969 713 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2199 394 0 ) ( -2199 713 0 ) ( -1969 394 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2199 394 71 ) ( -1969 394 71 ) ( -2199 713 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2199 394 0 ) ( -2199 394 71 ) ( -2199 713 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1969 394 0 ) ( -1969 713 0 ) ( -1969 394 71 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( 1842 -1012 0 ) ( 1979 -1012 0 ) ( 1842 -1012 384 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1842 -882 0 ) ( 1842 -882 384 ) ( 1979 -882 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1842 -1012 0 ) ( 1842 -882 0 ) ( 1979 -1012 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1842 -1012 384 ) ( 1979 -1012 384 ) ( 1842 -882 384 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1842 -1012 0 ) ( 1842 -1012 384 ) ( 1842 -882 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1979 -1012 0 ) ( 1979 -882 0 ) ( 1979 -1012 384 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( -655 1048 0 ) ( -351 1048 0 ) ( -655 1048 130 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -655 1335 0 ) ( -655 1335 130 ) ( -351 1335 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -655 1048 0 ) ( -655 1335 0 ) ( -351 1048 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -655 1048 130 ) ( -351 1048 130 ) ( -655 1335 130 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -655 1048 0 ) ( -655 1048 130 ) ( -655 1335 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -351 1048 0 ) ( -351 1335 0 ) ( -351 1048 130 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -3384 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "1256 1955 220" +"_color" "0.58 0.61 0.09" +"light" "348" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "867 1395 369" +"_color" "0.76 0.42 0.21" +"light" "268" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "-60 1148 247" +"_color" "0.88 0.28 0.27" +"light" "406" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "-2711 -996 178" +"_color" "0.86 0.27 0.22" +"light" "501" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "1266 -1483 127" +"_color" "0.68 0.53 0.01" +"light" "527" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "-772 1513 383" +"_color" "0.52 0.7 0.2" +"light" "534" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-2706 -2472 123" +"_color" "0.71 0.39 0.16" +"light" "442" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "-1613 -1184 386" +"_color" "0.5 0.41 0.03" +"light" "466" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "-656 2234 374" +"_color" "0.85 0.41 0.27" +"light" "461" +"texture" "lights/defaultPointLight" +} + +// entity 11 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da24_throne_of_darkness" +"origin" "-1544 523 0" +"angle" "58" +} + +// entity 12 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da24_throne_of_darkness" +"origin" "-1638 2285 0" +"angle" "101" +} + +// entity 13 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da24_throne_of_darkness" +"origin" "2480 -156 0" +"angle" "134" +} + +// entity 14 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da24_throne_of_darkness" +"origin" "1777 -140 0" +"angle" "183" +} + +// entity 15 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da24_throne_of_darkness" +"origin" "848 627 0" +"angle" "82" +} + +// entity 16 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da24_throne_of_darkness" +"origin" "-2186 2274 0" +"angle" "106" +} + +// entity 17 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_7_da24_throne_of_darkness" +"origin" "1429 916 0" +"angle" "120" +} + +// entity 18 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_8_da24_throne_of_darkness" +"origin" "-2486 -1688 0" +"angle" "343" +} + +// entity 19 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da24_throne_of_darkness" +"origin" "-1779 -888 0" +"angle" "293" +} + +// entity 20 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da24_throne_of_darkness" +"origin" "1539 -571 0" +"angle" "46" +} + +// entity 21 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da24_throne_of_darkness" +"origin" "1683 -1178 0" +"angle" "51" +} + +// entity 22 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da24_throne_of_darkness" +"origin" "-412 101 0" +"angle" "233" +} + +// entity 23 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da24_throne_of_darkness" +"origin" "-83 371 0" +"angle" "237" +} + +// entity 24 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da24_throne_of_darkness" +"origin" "-2098 -975 0" +"angle" "89" +} + +// entity 25 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da24_throne_of_darkness" +"origin" "-2185 588 0" +"angle" "184" +} + +// entity 26 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da24_throne_of_darkness" +"origin" "53 1697 0" +"angle" "59" +} + +// entity 27 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da24_throne_of_darkness" +"origin" "-1730 -1417 0" +"angle" "4" +} + +// entity 28 - darklord +{ +"classname" "monster_darkages_darklord" +"name" "darklord_1_da24_throne_of_darkness" +"origin" "-1375 -396 0" +"angle" "168" +} + +// entity 29 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_1_da24_throne_of_darkness" +"origin" "1077 -311 0" +} + +// entity 30 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_2_da24_throne_of_darkness" +"origin" "-1747 544 0" +} + +// entity 31 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_3_da24_throne_of_darkness" +"origin" "299 -1010 0" +} + +// entity 32 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_4_da24_throne_of_darkness" +"origin" "775 770 0" +} + +// entity 33 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_5_da24_throne_of_darkness" +"origin" "-282 651 0" +} + +// entity 34 - Item +{ +"classname" "item_darkages_bolts_small" +"name" "item_6_da24_throne_of_darkness" +"origin" "1409 946 0" +} + +// entity 35 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_7_da24_throne_of_darkness" +"origin" "-1142 -1582 0" +} + +// entity 36 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_8_da24_throne_of_darkness" +"origin" "-2028 -1203 0" +} + +// entity 37 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_9_da24_throne_of_darkness" +"origin" "900 2331 0" +} + +// entity 38 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_10_da24_throne_of_darkness" +"origin" "2152 1081 0" +} + +// entity 39 - Weapon pickup +{ +"classname" "weapon_darkages_crossbow" +"name" "weapon_pickup_da24_throne_of_darkness" +"origin" "480 393 24" +} + +// entity 40 - Level exit +{ +"classname" "trigger_once" +"name" "level_exit" +"origin" "0 3534 32" +"mins" "-128 -16 0" +"maxs" "128 16 128" +"target" "target_endlevel" +} + +// entity 41 - End level target +{ +"classname" "target_endlevel" +"name" "target_endlevel" +"nextMap" "maps/darkages/da25_final_stand" +} diff --git a/darkages/maps/darkages/da25_final_stand.map b/darkages/maps/darkages/da25_final_stand.map new file mode 100644 index 0000000000..b0ec0f5ded --- /dev/null +++ b/darkages/maps/darkages/da25_final_stand.map @@ -0,0 +1,668 @@ +Version 2 +// DOOM: The Dark Ages - Level 25: The Final Stand +// entity 0 - worldspawn +{ +"classname" "worldspawn" +"name" "da25_final_stand" +"message" "The Final Stand" +"music" "music/darkages/da25_final_stand" +"ambientColor" "0.25 0.05 0.02" +"_color" "0.6 0.1 0.0" +"darkages_level" "25" +"darkages_act" "4" +"darkages_fog_color" "0.6 0.1 0.0" +"darkages_fog_distance" "3584" + +// Floor +{ +( 0 0 0 ) ( 1 0 0 ) ( 0 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 0 -16 ) ( 0 1 -16 ) ( 1 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( -3584 0 0 ) ( -3584 0 -16 ) ( -3584 1 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 3584 0 0 ) ( 3584 1 0 ) ( 3584 0 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 -3584 0 ) ( 1 -3584 0 ) ( 0 -3584 -16 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +( 0 3584 0 ) ( 0 3584 -16 ) ( 1 3584 0 ) "textures/darkages/ground_ash" 0 0 0 0.5 0.5 0 0 0 +} +// North wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// South wall +{ +( -3584 3584 0 ) ( 3584 3584 0 ) ( -3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3600 0 ) ( -3584 3600 512 ) ( 3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3600 0 ) ( 3584 3584 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 512 ) ( 3584 3584 512 ) ( -3584 3600 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -3584 3584 0 ) ( -3584 3584 512 ) ( -3584 3600 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 3584 3584 0 ) ( 3584 3600 0 ) ( 3584 3584 512 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Ceiling +{ +( -3584 -3584 768 ) ( 3584 -3584 768 ) ( -3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 784 ) ( -3584 3584 784 ) ( 3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 3584 768 ) ( -3584 -3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( 3584 -3584 768 ) ( 3584 -3584 784 ) ( 3584 3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 -3584 768 ) ( -3584 -3584 784 ) ( 3584 -3584 768 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +( -3584 3584 768 ) ( 3584 3584 768 ) ( -3584 3584 784 ) "textures/darkages/sky_hell" 0 0 0 0.5 0.5 0 0 0 +} +// Structure 1 +{ +( -2272 1741 0 ) ( -2078 1741 0 ) ( -2272 1741 313 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -2272 2116 0 ) ( -2272 2116 313 ) ( -2078 2116 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -2272 1741 0 ) ( -2272 2116 0 ) ( -2078 1741 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -2272 1741 313 ) ( -2078 1741 313 ) ( -2272 2116 313 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -2272 1741 0 ) ( -2272 1741 313 ) ( -2272 2116 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( -2078 1741 0 ) ( -2078 2116 0 ) ( -2078 1741 313 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 2 +{ +( 861 13 0 ) ( 1012 13 0 ) ( 861 13 197 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 861 173 0 ) ( 861 173 197 ) ( 1012 173 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 861 13 0 ) ( 861 173 0 ) ( 1012 13 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 861 13 197 ) ( 1012 13 197 ) ( 861 173 197 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 861 13 0 ) ( 861 13 197 ) ( 861 173 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( 1012 13 0 ) ( 1012 173 0 ) ( 1012 13 197 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 3 +{ +( -2407 1093 0 ) ( -2011 1093 0 ) ( -2407 1093 406 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2407 1335 0 ) ( -2407 1335 406 ) ( -2011 1335 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2407 1093 0 ) ( -2407 1335 0 ) ( -2011 1093 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2407 1093 406 ) ( -2011 1093 406 ) ( -2407 1335 406 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2407 1093 0 ) ( -2407 1093 406 ) ( -2407 1335 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -2011 1093 0 ) ( -2011 1335 0 ) ( -2011 1093 406 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 4 +{ +( 1744 350 0 ) ( 1920 350 0 ) ( 1744 350 402 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1744 699 0 ) ( 1744 699 402 ) ( 1920 699 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1744 350 0 ) ( 1744 699 0 ) ( 1920 350 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1744 350 402 ) ( 1920 350 402 ) ( 1744 699 402 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1744 350 0 ) ( 1744 350 402 ) ( 1744 699 0 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +( 1920 350 0 ) ( 1920 699 0 ) ( 1920 350 402 ) "textures/darkages/ground_ash" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 5 +{ +( 1439 -376 0 ) ( 1764 -376 0 ) ( 1439 -376 349 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1439 -172 0 ) ( 1439 -172 349 ) ( 1764 -172 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1439 -376 0 ) ( 1439 -172 0 ) ( 1764 -376 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1439 -376 349 ) ( 1764 -376 349 ) ( 1439 -172 349 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1439 -376 0 ) ( 1439 -376 349 ) ( 1439 -172 0 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +( 1764 -376 0 ) ( 1764 -172 0 ) ( 1764 -376 349 ) "textures/darkages/metal_iron_dark" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 6 +{ +( -2413 843 0 ) ( -2205 843 0 ) ( -2413 843 304 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -2413 1229 0 ) ( -2413 1229 304 ) ( -2205 1229 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -2413 843 0 ) ( -2413 1229 0 ) ( -2205 843 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -2413 843 304 ) ( -2205 843 304 ) ( -2413 1229 304 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -2413 843 0 ) ( -2413 843 304 ) ( -2413 1229 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -2205 843 0 ) ( -2205 1229 0 ) ( -2205 843 304 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 7 +{ +( -1154 -1486 0 ) ( -775 -1486 0 ) ( -1154 -1486 187 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1154 -1194 0 ) ( -1154 -1194 187 ) ( -775 -1194 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1154 -1486 0 ) ( -1154 -1194 0 ) ( -775 -1486 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1154 -1486 187 ) ( -775 -1486 187 ) ( -1154 -1194 187 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -1154 -1486 0 ) ( -1154 -1486 187 ) ( -1154 -1194 0 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +( -775 -1486 0 ) ( -775 -1194 0 ) ( -775 -1486 187 ) "textures/darkages/stone_brick_old" 0 0 0 0.25 0.25 0 0 0 +} +// Structure 8 +{ +( -230 -1586 0 ) ( 157 -1586 0 ) ( -230 -1586 345 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -230 -1344 0 ) ( -230 -1344 345 ) ( 157 -1344 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -230 -1586 0 ) ( -230 -1344 0 ) ( 157 -1586 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -230 -1586 345 ) ( 157 -1586 345 ) ( -230 -1344 345 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( -230 -1586 0 ) ( -230 -1586 345 ) ( -230 -1344 0 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +( 157 -1586 0 ) ( 157 -1344 0 ) ( 157 -1586 345 ) "textures/darkages/wood_dark_planks" 0 0 0 0.25 0.25 0 0 0 +} +} + +// entity 1 - Player spawn +{ +"classname" "info_player_start" +"name" "info_player_start_1" +"origin" "0 -3384 24" +"angle" "90" +} + +// entity 2 - Light +{ +"classname" "light" +"name" "light_1" +"origin" "-942 -2222 299" +"_color" "0.72 0.49 0.03" +"light" "455" +"texture" "lights/defaultPointLight" +} + +// entity 3 - Light +{ +"classname" "light" +"name" "light_2" +"origin" "795 -278 124" +"_color" "0.99 0.57 0.01" +"light" "406" +"texture" "lights/defaultPointLight" +} + +// entity 4 - Light +{ +"classname" "light" +"name" "light_3" +"origin" "510 -2574 349" +"_color" "0.77 0.61 0.24" +"light" "516" +"texture" "lights/defaultPointLight" +} + +// entity 5 - Light +{ +"classname" "light" +"name" "light_4" +"origin" "2355 -372 324" +"_color" "0.78 0.53 0.14" +"light" "374" +"texture" "lights/defaultPointLight" +} + +// entity 6 - Light +{ +"classname" "light" +"name" "light_5" +"origin" "109 -2423 178" +"_color" "0.92 0.37 0.23" +"light" "507" +"texture" "lights/defaultPointLight" +} + +// entity 7 - Light +{ +"classname" "light" +"name" "light_6" +"origin" "1008 2516 250" +"_color" "0.86 0.26 0.23" +"light" "313" +"texture" "lights/defaultPointLight" +} + +// entity 8 - Light +{ +"classname" "light" +"name" "light_7" +"origin" "-2850 -71 245" +"_color" "0.91 0.68 0.09" +"light" "467" +"texture" "lights/defaultPointLight" +} + +// entity 9 - Light +{ +"classname" "light" +"name" "light_8" +"origin" "195 -1997 87" +"_color" "0.95 0.45 0.25" +"light" "580" +"texture" "lights/defaultPointLight" +} + +// entity 10 - Light +{ +"classname" "light" +"name" "light_9" +"origin" "485 -1991 194" +"_color" "0.81 0.29 0.28" +"light" "401" +"texture" "lights/defaultPointLight" +} + +// entity 11 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_1_da25_final_stand" +"origin" "-742 1952 0" +"angle" "97" +} + +// entity 12 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_2_da25_final_stand" +"origin" "260 -910 0" +"angle" "212" +} + +// entity 13 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_3_da25_final_stand" +"origin" "-2128 -783 0" +"angle" "230" +} + +// entity 14 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_4_da25_final_stand" +"origin" "1238 2338 0" +"angle" "68" +} + +// entity 15 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_5_da25_final_stand" +"origin" "1578 -1757 0" +"angle" "271" +} + +// entity 16 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_6_da25_final_stand" +"origin" "-2111 1753 0" +"angle" "299" +} + +// entity 17 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_7_da25_final_stand" +"origin" "1448 2372 0" +"angle" "90" +} + +// entity 18 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_8_da25_final_stand" +"origin" "2231 -370 0" +"angle" "65" +} + +// entity 19 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_9_da25_final_stand" +"origin" "-1660 1381 0" +"angle" "336" +} + +// entity 20 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_10_da25_final_stand" +"origin" "2411 844 0" +"angle" "258" +} + +// entity 21 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_11_da25_final_stand" +"origin" "643 1637 0" +"angle" "311" +} + +// entity 22 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_12_da25_final_stand" +"origin" "-475 449 0" +"angle" "203" +} + +// entity 23 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_13_da25_final_stand" +"origin" "300 617 0" +"angle" "231" +} + +// entity 24 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_14_da25_final_stand" +"origin" "-1416 -661 0" +"angle" "211" +} + +// entity 25 - undead_soldier +{ +"classname" "monster_darkages_undead_soldier" +"name" "undead_soldier_15_da25_final_stand" +"origin" "2427 2404 0" +"angle" "153" +} + +// entity 26 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_1_da25_final_stand" +"origin" "1979 779 0" +"angle" "283" +} + +// entity 27 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_2_da25_final_stand" +"origin" "-728 -147 0" +"angle" "107" +} + +// entity 28 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_3_da25_final_stand" +"origin" "-128 1036 0" +"angle" "344" +} + +// entity 29 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_4_da25_final_stand" +"origin" "-1422 -336 0" +"angle" "257" +} + +// entity 30 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_5_da25_final_stand" +"origin" "1936 848 0" +"angle" "59" +} + +// entity 31 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_6_da25_final_stand" +"origin" "377 2143 0" +"angle" "298" +} + +// entity 32 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_7_da25_final_stand" +"origin" "2166 1627 0" +"angle" "345" +} + +// entity 33 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_8_da25_final_stand" +"origin" "1865 550 0" +"angle" "216" +} + +// entity 34 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_9_da25_final_stand" +"origin" "-2404 2490 0" +"angle" "54" +} + +// entity 35 - dark_knight +{ +"classname" "monster_darkages_dark_knight" +"name" "dark_knight_10_da25_final_stand" +"origin" "-2301 1328 0" +"angle" "74" +} + +// entity 36 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_1_da25_final_stand" +"origin" "-2074 -1329 0" +"angle" "102" +} + +// entity 37 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_2_da25_final_stand" +"origin" "-321 -474 0" +"angle" "146" +} + +// entity 38 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_3_da25_final_stand" +"origin" "-456 -593 0" +"angle" "31" +} + +// entity 39 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_4_da25_final_stand" +"origin" "-91 -121 0" +"angle" "277" +} + +// entity 40 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_5_da25_final_stand" +"origin" "-2244 1146 0" +"angle" "231" +} + +// entity 41 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_6_da25_final_stand" +"origin" "-1669 45 0" +"angle" "331" +} + +// entity 42 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_7_da25_final_stand" +"origin" "2089 1393 0" +"angle" "121" +} + +// entity 43 - hellhound +{ +"classname" "monster_darkages_hellhound" +"name" "hellhound_8_da25_final_stand" +"origin" "1677 564 0" +"angle" "354" +} + +// entity 44 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_1_da25_final_stand" +"origin" "-2124 1333 0" +"angle" "198" +} + +// entity 45 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_2_da25_final_stand" +"origin" "904 769 0" +"angle" "282" +} + +// entity 46 - siege_demon +{ +"classname" "monster_darkages_siege_demon" +"name" "siege_demon_3_da25_final_stand" +"origin" "-2068 -1686 0" +"angle" "128" +} + +// entity 47 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_1_da25_final_stand" +"origin" "-845 1837 0" +"angle" "115" +} + +// entity 48 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_2_da25_final_stand" +"origin" "504 -183 0" +"angle" "99" +} + +// entity 49 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_3_da25_final_stand" +"origin" "-99 1884 0" +"angle" "90" +} + +// entity 50 - irongolem +{ +"classname" "monster_darkages_irongolem" +"name" "irongolem_4_da25_final_stand" +"origin" "-1898 -261 0" +"angle" "88" +} + +// entity 51 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_1_da25_final_stand" +"origin" "1701 -815 0" +"angle" "193" +} + +// entity 52 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_2_da25_final_stand" +"origin" "-2176 1718 0" +"angle" "142" +} + +// entity 53 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_3_da25_final_stand" +"origin" "2051 372 0" +"angle" "66" +} + +// entity 54 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_4_da25_final_stand" +"origin" "-1190 297 0" +"angle" "2" +} + +// entity 55 - sorcerer +{ +"classname" "monster_darkages_sorcerer" +"name" "sorcerer_5_da25_final_stand" +"origin" "199 2028 0" +"angle" "79" +} + +// entity 56 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_1_da25_final_stand" +"origin" "-2181 -533 0" +"angle" "165" +} + +// entity 57 - firedrake +{ +"classname" "monster_darkages_firedrake" +"name" "firedrake_2_da25_final_stand" +"origin" "2381 -1376 0" +"angle" "320" +} + +// entity 58 - Item +{ +"classname" "item_darkages_armor_chainmail" +"name" "item_1_da25_final_stand" +"origin" "1510 2183 0" +} + +// entity 59 - Item +{ +"classname" "item_darkages_throwaxes" +"name" "item_2_da25_final_stand" +"origin" "425 -1911 0" +} + +// entity 60 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_3_da25_final_stand" +"origin" "95 1796 0" +} + +// entity 61 - Item +{ +"classname" "item_darkages_health_small" +"name" "item_4_da25_final_stand" +"origin" "-1002 1756 0" +} + +// entity 62 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_5_da25_final_stand" +"origin" "1630 -1203 0" +} + +// entity 63 - Item +{ +"classname" "item_darkages_armor_shard" +"name" "item_6_da25_final_stand" +"origin" "1940 1891 0" +} + +// entity 64 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_7_da25_final_stand" +"origin" "-1755 354 0" +} + +// entity 65 - Item +{ +"classname" "item_darkages_health_large" +"name" "item_8_da25_final_stand" +"origin" "-761 210 0" +} + +// entity 66 - Item +{ +"classname" "item_darkages_health_medium" +"name" "item_9_da25_final_stand" +"origin" "447 -104 0" +} + +// entity 67 - Weapon pickup +{ +"classname" "weapon_darkages_shield" +"name" "weapon_pickup_da25_final_stand" +"origin" "870 -1039 24" +} diff --git a/darkages/materials/darkages_world.mtr b/darkages/materials/darkages_world.mtr new file mode 100644 index 0000000000..dd612d2f8c --- /dev/null +++ b/darkages/materials/darkages_world.mtr @@ -0,0 +1,369 @@ +// ============================================================================ +// DOOM: THE DARK AGES - World Material Definitions +// Dark medieval textures and surfaces +// ============================================================================ + +// ============================================================================ +// STONE MATERIALS +// ============================================================================ + +textures/darkages/stone_castle_wall { + qer_editorimage textures/darkages/stone_castle_wall_d + bumpmap textures/darkages/stone_castle_wall_n + diffusemap textures/darkages/stone_castle_wall_d + specularmap textures/darkages/stone_castle_wall_s + { + blend bumpmap + map textures/darkages/stone_castle_wall_n + } + { + blend diffusemap + map textures/darkages/stone_castle_wall_d + } + { + blend specularmap + map textures/darkages/stone_castle_wall_s + } +} + +textures/darkages/stone_dungeon_floor { + qer_editorimage textures/darkages/stone_dungeon_floor_d + bumpmap textures/darkages/stone_dungeon_floor_n + diffusemap textures/darkages/stone_dungeon_floor_d + specularmap textures/darkages/stone_dungeon_floor_s +} + +textures/darkages/stone_crypt_wall { + qer_editorimage textures/darkages/stone_crypt_wall_d + bumpmap textures/darkages/stone_crypt_wall_n + diffusemap textures/darkages/stone_crypt_wall_d + specularmap textures/darkages/stone_crypt_wall_s +} + +textures/darkages/stone_cathedral_pillar { + qer_editorimage textures/darkages/stone_cathedral_pillar_d + bumpmap textures/darkages/stone_cathedral_pillar_n + diffusemap textures/darkages/stone_cathedral_pillar_d + specularmap textures/darkages/stone_cathedral_pillar_s +} + +textures/darkages/stone_cobblestone { + qer_editorimage textures/darkages/stone_cobblestone_d + bumpmap textures/darkages/stone_cobblestone_n + diffusemap textures/darkages/stone_cobblestone_d + specularmap textures/darkages/stone_cobblestone_s +} + +textures/darkages/stone_brick_old { + qer_editorimage textures/darkages/stone_brick_old_d + bumpmap textures/darkages/stone_brick_old_n + diffusemap textures/darkages/stone_brick_old_d + specularmap textures/darkages/stone_brick_old_s +} + +textures/darkages/stone_mossy { + qer_editorimage textures/darkages/stone_mossy_d + bumpmap textures/darkages/stone_mossy_n + diffusemap textures/darkages/stone_mossy_d + specularmap textures/darkages/stone_mossy_s +} + +// ============================================================================ +// METAL MATERIALS +// ============================================================================ + +textures/darkages/metal_iron_dark { + qer_editorimage textures/darkages/metal_iron_dark_d + bumpmap textures/darkages/metal_iron_dark_n + diffusemap textures/darkages/metal_iron_dark_d + specularmap textures/darkages/metal_iron_dark_s + { + blend specularmap + map textures/darkages/metal_iron_dark_s + rgb 0.6 + } +} + +textures/darkages/metal_rusty_grate { + qer_editorimage textures/darkages/metal_rusty_grate_d + bumpmap textures/darkages/metal_rusty_grate_n + diffusemap textures/darkages/metal_rusty_grate_d + specularmap textures/darkages/metal_rusty_grate_s + twoSided +} + +textures/darkages/metal_chain { + qer_editorimage textures/darkages/metal_chain_d + bumpmap textures/darkages/metal_chain_n + diffusemap textures/darkages/metal_chain_d + specularmap textures/darkages/metal_chain_s + twoSided + alphaTest 0.5 +} + +textures/darkages/metal_armor_plate { + qer_editorimage textures/darkages/metal_armor_plate_d + bumpmap textures/darkages/metal_armor_plate_n + diffusemap textures/darkages/metal_armor_plate_d + specularmap textures/darkages/metal_armor_plate_s +} + +textures/darkages/metal_blood_stained { + qer_editorimage textures/darkages/metal_blood_stained_d + bumpmap textures/darkages/metal_blood_stained_n + diffusemap textures/darkages/metal_blood_stained_d + specularmap textures/darkages/metal_blood_stained_s +} + +// ============================================================================ +// WOOD MATERIALS +// ============================================================================ + +textures/darkages/wood_dark_planks { + qer_editorimage textures/darkages/wood_dark_planks_d + bumpmap textures/darkages/wood_dark_planks_n + diffusemap textures/darkages/wood_dark_planks_d + specularmap textures/darkages/wood_dark_planks_s +} + +textures/darkages/wood_old_door { + qer_editorimage textures/darkages/wood_old_door_d + bumpmap textures/darkages/wood_old_door_n + diffusemap textures/darkages/wood_old_door_d + specularmap textures/darkages/wood_old_door_s +} + +textures/darkages/wood_charred { + qer_editorimage textures/darkages/wood_charred_d + bumpmap textures/darkages/wood_charred_n + diffusemap textures/darkages/wood_charred_d +} + +textures/darkages/wood_scaffold { + qer_editorimage textures/darkages/wood_scaffold_d + bumpmap textures/darkages/wood_scaffold_n + diffusemap textures/darkages/wood_scaffold_d + specularmap textures/darkages/wood_scaffold_s +} + +// ============================================================================ +// ORGANIC / TERRAIN MATERIALS +// ============================================================================ + +textures/darkages/ground_dirt { + qer_editorimage textures/darkages/ground_dirt_d + bumpmap textures/darkages/ground_dirt_n + diffusemap textures/darkages/ground_dirt_d +} + +textures/darkages/ground_mud_blood { + qer_editorimage textures/darkages/ground_mud_blood_d + bumpmap textures/darkages/ground_mud_blood_n + diffusemap textures/darkages/ground_mud_blood_d + specularmap textures/darkages/ground_mud_blood_s +} + +textures/darkages/ground_bone_debris { + qer_editorimage textures/darkages/ground_bone_debris_d + bumpmap textures/darkages/ground_bone_debris_n + diffusemap textures/darkages/ground_bone_debris_d +} + +textures/darkages/ground_snow_bloody { + qer_editorimage textures/darkages/ground_snow_bloody_d + bumpmap textures/darkages/ground_snow_bloody_n + diffusemap textures/darkages/ground_snow_bloody_d + specularmap textures/darkages/ground_snow_bloody_s +} + +textures/darkages/ground_ash { + qer_editorimage textures/darkages/ground_ash_d + bumpmap textures/darkages/ground_ash_n + diffusemap textures/darkages/ground_ash_d +} + +// ============================================================================ +// SPECIAL EFFECTS MATERIALS +// ============================================================================ + +textures/darkages/lava_flow { + qer_editorimage textures/darkages/lava_flow_d + nonsolid + noimpact + { + blend add + map textures/darkages/lava_flow_d + scroll time * 0.02 , time * 0.01 + rgb 2 + } + { + blend add + map textures/darkages/lava_glow + scroll time * -0.01 , time * 0.015 + rgb parm0 + } +} + +textures/darkages/blood_pool { + qer_editorimage textures/darkages/blood_pool_d + nonsolid + { + blend blend + map textures/darkages/blood_pool_d + scroll time * 0.005 , time * 0.003 + alpha 0.9 + } +} + +textures/darkages/water_dark { + qer_editorimage textures/darkages/water_dark_d + nonsolid + water + { + blend blend + map textures/darkages/water_dark_d + scroll time * 0.01 , time * 0.008 + alpha 0.7 + } +} + +textures/darkages/portal_hell { + qer_editorimage textures/darkages/portal_hell_d + nonsolid + { + blend add + map textures/darkages/portal_hell_d + rotate time * 0.1 + rgb 1.5 + red parm0 + } +} + +textures/darkages/fire_torch { + qer_editorimage textures/darkages/fire_torch_d + nonsolid + twoSided + { + blend add + map textures/darkages/fire_torch_d + scroll 0 , time * -2 + rgb 2 + } +} + +textures/darkages/crystal_dark { + qer_editorimage textures/darkages/crystal_dark_d + translucent + { + blend blend + map textures/darkages/crystal_dark_d + alpha 0.6 + } + { + blend add + map textures/darkages/crystal_dark_glow + rgb sinTable[ time * 0.5 ] * 0.5 + 0.5 + } +} + +// ============================================================================ +// SKY MATERIALS +// ============================================================================ + +textures/darkages/sky_overcast { + qer_editorimage textures/darkages/sky_overcast_d + noShadows + forceOpaque + { + blend diffusemap + map textures/darkages/sky_overcast_d + scroll time * 0.001 , 0 + } +} + +textures/darkages/sky_burning { + qer_editorimage textures/darkages/sky_burning_d + noShadows + forceOpaque + { + blend diffusemap + map textures/darkages/sky_burning_d + } + { + blend add + map textures/darkages/sky_burning_embers + scroll time * 0.005 , time * 0.02 + rgb 0.5 + } +} + +textures/darkages/sky_hell { + qer_editorimage textures/darkages/sky_hell_d + noShadows + forceOpaque + { + blend diffusemap + map textures/darkages/sky_hell_d + } + { + blend add + map textures/darkages/sky_hell_lightning + rgb sinTable[ time * 2 ] > 0.9 ? 2 : 0 + } +} + +textures/darkages/sky_night { + qer_editorimage textures/darkages/sky_night_d + noShadows + forceOpaque + { + blend diffusemap + map textures/darkages/sky_night_d + } +} + +// ============================================================================ +// DECAL MATERIALS +// ============================================================================ + +textures/darkages/decal_blood_splatter { + qer_editorimage textures/darkages/decal_blood_splatter_d + nonsolid + noimpact + noShadows + polygonOffset + { + blend blend + map textures/darkages/decal_blood_splatter_d + alphaTest 0.5 + } +} + +textures/darkages/decal_slash_mark { + qer_editorimage textures/darkages/decal_slash_mark_d + nonsolid + noimpact + noShadows + polygonOffset + { + blend blend + map textures/darkages/decal_slash_mark_d + alphaTest 0.5 + } +} + +textures/darkages/decal_rune_glow { + qer_editorimage textures/darkages/decal_rune_glow_d + nonsolid + noimpact + noShadows + polygonOffset + { + blend add + map textures/darkages/decal_rune_glow_d + rgb sinTable[ time * 0.5 ] * 0.5 + 0.5 + red 1 + green 0.3 + blue 0 + } +} diff --git a/darkages/particles/darkages_combat.prt b/darkages/particles/darkages_combat.prt new file mode 100644 index 0000000000..6d85c56fe7 --- /dev/null +++ b/darkages/particles/darkages_combat.prt @@ -0,0 +1,176 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Combat Particle Effects +// ============================================================================ + +particle sword_sparks { + { + count 12 + material textures/particles/spark + time 0.3 + cycles 1 + color 1.00 0.70 0.20 1.00 + fadeColor 1.00 0.30 0.00 0.00 + size 1.0 3.0 + speed "80" to "200" + gravity 200 + randomDistribution 1 + boundsExpansion 16 + } +} + +particle mace_sparks { + { + count 20 + material textures/particles/spark + time 0.5 + cycles 1 + color 1.00 0.80 0.30 1.00 + fadeColor 0.80 0.40 0.00 0.00 + size 2.0 5.0 + speed "100" to "300" + gravity 300 + randomDistribution 1 + boundsExpansion 24 + } +} + +particle axe_sparks { + { + count 15 + material textures/particles/spark + time 0.4 + cycles 1 + color 1.00 0.60 0.15 1.00 + fadeColor 0.90 0.30 0.00 0.00 + size 1.5 4.0 + speed "90" to "250" + gravity 250 + randomDistribution 1 + boundsExpansion 20 + } +} + +particle blood_spray { + { + count 8 + material textures/particles/blood_drop + time 0.6 + cycles 1 + color 0.60 0.00 0.00 1.00 + fadeColor 0.30 0.00 0.00 0.00 + size 3.0 8.0 + speed "60" to "200" + gravity 400 + randomDistribution 1 + boundsExpansion 32 + } +} + +particle blood_mist { + { + count 4 + material textures/particles/blood_mist + time 1.0 + cycles 1 + color 0.50 0.00 0.00 0.50 + fadeColor 0.20 0.00 0.00 0.00 + size 16.0 32.0 + speed "10" to "30" + gravity -20 + randomDistribution 1 + boundsExpansion 48 + } +} + +particle glory_kill_burst { + { + count 30 + material textures/particles/blood_drop + time 1.0 + cycles 1 + color 0.80 0.00 0.00 1.00 + fadeColor 0.40 0.00 0.00 0.00 + size 2.0 6.0 + speed "150" to "400" + gravity 500 + randomDistribution 1 + boundsExpansion 64 + } + { + count 10 + material textures/particles/bone_shard + time 1.5 + cycles 1 + color 0.90 0.85 0.70 1.00 + fadeColor 0.50 0.45 0.30 0.00 + size 1.0 4.0 + speed "100" to "300" + gravity 600 + randomDistribution 1 + boundsExpansion 48 + } +} + +particle shield_block_spark { + { + count 8 + material textures/particles/spark + time 0.2 + cycles 1 + color 0.70 0.80 1.00 1.00 + fadeColor 0.30 0.40 0.80 0.00 + size 2.0 4.0 + speed "100" to "200" + gravity 100 + randomDistribution 1 + boundsExpansion 16 + } +} + +particle parry_flash { + { + count 16 + material textures/particles/spark + time 0.3 + cycles 1 + color 1.00 1.00 0.50 1.00 + fadeColor 1.00 0.80 0.00 0.00 + size 3.0 6.0 + speed "150" to "350" + gravity 50 + randomDistribution 1 + boundsExpansion 32 + } +} + +particle hellfire_projectile { + { + count 5 + material textures/particles/fire + time 0.5 + cycles 0 + color 1.00 0.40 0.00 1.00 + fadeColor 0.80 0.20 0.00 0.00 + size 8.0 16.0 + speed "5" to "15" + gravity -30 + randomDistribution 1 + boundsExpansion 20 + } +} + +particle drakefire_projectile { + { + count 8 + material textures/particles/fire + time 0.8 + cycles 0 + color 1.00 0.50 0.00 1.00 + fadeColor 1.00 0.20 0.00 0.00 + size 12.0 24.0 + speed "8" to "20" + gravity -40 + randomDistribution 1 + boundsExpansion 32 + } +} diff --git a/darkages/renderprogs/darkages_atmosphere.pixel b/darkages/renderprogs/darkages_atmosphere.pixel new file mode 100644 index 0000000000..39a5a7e969 --- /dev/null +++ b/darkages/renderprogs/darkages_atmosphere.pixel @@ -0,0 +1,58 @@ +// ============================================================================ +// DOOM: The Dark Ages - Atmosphere Post-Processing Pixel Shader +// Creates the dark, gritty medieval atmosphere +// Optimized for Intel HD 520 (minimal ALU, no complex sampling) +// ============================================================================ + +uniform sampler2D samp0 : register(s0); // Current frame +uniform sampler2D samp1 : register(s1); // Depth buffer + +// Atmosphere parameters +uniform float4 rpDarkAgesAtmosphere : register(c0); // fogR, fogG, fogB, fogDensity +uniform float4 rpDarkAgesColor : register(c1); // tintR, tintG, tintB, saturation +uniform float4 rpDarkAgesParams : register(c2); // contrast, brightness, vignetteStrength, filmGrain + +struct PS_IN { + float4 position : VPOS; + float2 texcoord0 : TEXCOORD0; +}; + +struct PS_OUT { + float4 color : COLOR; +}; + +void main( PS_IN fragment, out PS_OUT result ) { + // Sample the scene color + float4 sceneColor = tex2D( samp0, fragment.texcoord0 ); + + // --- Distance Fog --- + float depth = tex2D( samp1, fragment.texcoord0 ).r; + float fogFactor = 1.0 - exp( -rpDarkAgesAtmosphere.w * depth * depth ); + fogFactor = clamp( fogFactor, 0.0, 1.0 ); + + float3 fogColor = rpDarkAgesAtmosphere.rgb; + sceneColor.rgb = lerp( sceneColor.rgb, fogColor, fogFactor ); + + // --- Desaturation (medieval grit) --- + float luminance = dot( sceneColor.rgb, float3( 0.299, 0.587, 0.114 ) ); + float saturation = rpDarkAgesColor.w; + sceneColor.rgb = lerp( float3( luminance, luminance, luminance ), sceneColor.rgb, saturation ); + + // --- Color Tint --- + sceneColor.rgb *= rpDarkAgesColor.rgb; + + // --- Contrast & Brightness --- + float contrast = rpDarkAgesParams.x; + float brightness = rpDarkAgesParams.y; + sceneColor.rgb = ( sceneColor.rgb - 0.5 ) * contrast + 0.5; + sceneColor.rgb *= brightness; + + // --- Vignette (dark edges) --- + float2 vignetteUV = fragment.texcoord0 * 2.0 - 1.0; + float vignette = 1.0 - dot( vignetteUV, vignetteUV ) * rpDarkAgesParams.z; + vignette = clamp( vignette, 0.0, 1.0 ); + sceneColor.rgb *= vignette; + + // --- Clamp output --- + result.color = float4( clamp( sceneColor.rgb, 0.0, 1.0 ), 1.0 ); +} diff --git a/darkages/renderprogs/darkages_atmosphere.vertex b/darkages/renderprogs/darkages_atmosphere.vertex new file mode 100644 index 0000000000..11855c1096 --- /dev/null +++ b/darkages/renderprogs/darkages_atmosphere.vertex @@ -0,0 +1,19 @@ +// ============================================================================ +// DOOM: The Dark Ages - Atmosphere Post-Processing Vertex Shader +// Simple fullscreen quad pass-through +// ============================================================================ + +struct VS_IN { + float4 position : POSITION; + float2 texcoord : TEXCOORD0; +}; + +struct VS_OUT { + float4 position : POSITION; + float2 texcoord0 : TEXCOORD0; +}; + +void main( VS_IN vertex, out VS_OUT result ) { + result.position = vertex.position; + result.texcoord0 = vertex.texcoord; +} diff --git a/darkages/renderprogs/darkages_blood_fx.pixel b/darkages/renderprogs/darkages_blood_fx.pixel new file mode 100644 index 0000000000..2c970f841f --- /dev/null +++ b/darkages/renderprogs/darkages_blood_fx.pixel @@ -0,0 +1,53 @@ +// ============================================================================ +// DOOM: The Dark Ages - Blood/Damage Screen Effect Pixel Shader +// Red screen flash when taking damage, healing pulse effects +// ============================================================================ + +uniform sampler2D samp0 : register(s0); // Scene + +uniform float4 rpDarkAgesBlood : register(c0); // intensity, pulseTime, healthRatio, unused + +struct PS_IN { + float4 position : VPOS; + float2 texcoord0 : TEXCOORD0; +}; + +struct PS_OUT { + float4 color : COLOR; +}; + +void main( PS_IN fragment, out PS_OUT result ) { + float4 sceneColor = tex2D( samp0, fragment.texcoord0 ); + + float intensity = rpDarkAgesBlood.x; + + if ( intensity > 0.01 ) { + // Blood overlay - edges glow red + float2 uv = fragment.texcoord0 * 2.0 - 1.0; + float edgeDist = max( abs(uv.x), abs(uv.y) ); + float bloodMask = smoothstep( 0.3, 1.0, edgeDist ) * intensity; + + // Pulsating red + float pulse = sin( rpDarkAgesBlood.y * 6.28 ) * 0.3 + 0.7; + float3 bloodColor = float3( 0.6, 0.0, 0.0 ) * pulse; + + sceneColor.rgb = lerp( sceneColor.rgb, bloodColor, bloodMask * 0.6 ); + + // Slight desaturation during damage + float lum = dot( sceneColor.rgb, float3( 0.299, 0.587, 0.114 ) ); + sceneColor.rgb = lerp( sceneColor.rgb, float3( lum, lum, lum ), intensity * 0.3 ); + } + + // Low health warning (screen edge pulse) + if ( rpDarkAgesBlood.z < 0.25 ) { + float2 uv = fragment.texcoord0 * 2.0 - 1.0; + float edgeDist = max( abs(uv.x), abs(uv.y) ); + float warningPulse = sin( rpDarkAgesBlood.y * 3.14 ) * 0.5 + 0.5; + float warningMask = smoothstep( 0.5, 1.0, edgeDist ) * warningPulse; + warningMask *= ( 0.25 - rpDarkAgesBlood.z ) * 4.0; + + sceneColor.rgb = lerp( sceneColor.rgb, float3( 0.4, 0.0, 0.0 ), warningMask * 0.4 ); + } + + result.color = float4( sceneColor.rgb, 1.0 ); +} diff --git a/darkages/scripts/darkages_main.script b/darkages/scripts/darkages_main.script new file mode 100644 index 0000000000..e968f3e964 --- /dev/null +++ b/darkages/scripts/darkages_main.script @@ -0,0 +1,730 @@ +// ============================================================================ +// DOOM: THE DARK AGES - Main Game Script +// Core game logic, weapon behaviors, enemy AI scripts +// ============================================================================ + +// ============================================================================ +// GLOBAL VARIABLES +// ============================================================================ + +float darkages_combo_count; +float darkages_combo_timer; +float darkages_stamina; +float darkages_shield_active; +float darkages_glory_kill_available; +float darkages_current_level; +float darkages_secrets_found; +float darkages_total_kills; + +// ============================================================================ +// INITIALIZATION +// ============================================================================ + +void darkages_init() { + darkages_combo_count = 0; + darkages_combo_timer = 0; + darkages_stamina = 100; + darkages_shield_active = 0; + darkages_glory_kill_available = 0; + darkages_current_level = 0; + darkages_secrets_found = 0; + darkages_total_kills = 0; + + sys.println("DOOM: The Dark Ages initialized"); + sys.println("================================="); +} + +// ============================================================================ +// WEAPON SCRIPTS +// ============================================================================ + +// --- DARK BROADSWORD --- +object weapon_darkages_sword : weapon_base { + float next_attack; + float combo_count; + float combo_timer; + float charge_time; + float is_charging; + + void init(); + void Lower(); + void Raise(); + void Idle(); + void Fire(); + void HeavyAttack(); + void Reload(); +}; + +void weapon_darkages_sword::init() { + next_attack = 0; + combo_count = 0; + combo_timer = 0; + charge_time = 0; + is_charging = 0; + + weaponState("Raise", 0); +} + +void weapon_darkages_sword::Lower() { + weaponState("Lower", 4); + playAnim(ANIMCHANNEL_ALL, "putaway"); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponReady(); +} + +void weapon_darkages_sword::Raise() { + weaponState("Raise", 0); + playAnim(ANIMCHANNEL_ALL, "raise"); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponState("Idle", 4); +} + +void weapon_darkages_sword::Idle() { + weaponState("Idle", 0); + + // Combo timer decay + if (combo_count > 0) { + combo_timer = combo_timer - 0.016; + if (combo_timer <= 0) { + combo_count = 0; + } + } + + playCycle(ANIMCHANNEL_ALL, "idle"); + + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); + } + if (WEAPON_RELOAD) { + weaponState("HeavyAttack", 0); + } + waitFrame(); + } +} + +void weapon_darkages_sword::Fire() { + weaponState("Fire", 0); + + next_attack = sys.getTime() + 0.4; + + // Combo system + if (combo_timer > 0 && combo_count < 5) { + combo_count = combo_count + 1; + } else { + combo_count = 1; + } + combo_timer = 0.8; // Combo window + + // Different attack animations based on combo count + if (combo_count == 1) { + playAnim(ANIMCHANNEL_ALL, "slash_right"); + } else if (combo_count == 2) { + playAnim(ANIMCHANNEL_ALL, "slash_left"); + } else if (combo_count == 3) { + playAnim(ANIMCHANNEL_ALL, "overhead"); + } else if (combo_count == 4) { + playAnim(ANIMCHANNEL_ALL, "thrust"); + } else { + playAnim(ANIMCHANNEL_ALL, "finisher"); + combo_count = 0; // Reset after finisher + } + + // Deal damage with combo multiplier + float damage_mult; + damage_mult = 1.0 + (combo_count - 1) * 0.25; + melee(getFloatKey("melee_distance"), damage_mult, MASK_SHOT_RENDERMODEL); + + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponState("Idle", 4); +} + +void weapon_darkages_sword::HeavyAttack() { + weaponState("HeavyAttack", 0); + + // Charge attack + charge_time = 0; + is_charging = 1; + + playAnim(ANIMCHANNEL_ALL, "charge_start"); + + while (WEAPON_RELOAD && charge_time < 2.0) { + charge_time = charge_time + 0.016; + waitFrame(); + } + + is_charging = 0; + + // Heavy strike + float heavy_mult; + heavy_mult = 1.5 + charge_time; + + playAnim(ANIMCHANNEL_ALL, "heavy_strike"); + melee(getFloatKey("melee_distance") + 16, heavy_mult, MASK_SHOT_RENDERMODEL); + + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + combo_count = 0; + weaponState("Idle", 4); +} + +void weapon_darkages_sword::Reload() { + // Sword doesn't reload + weaponState("Idle", 0); +} + +// --- WAR MACE --- +object weapon_darkages_mace : weapon_base { + void init(); + void Idle(); + void Fire(); +}; + +void weapon_darkages_mace::init() { + weaponState("Raise", 0); +} + +void weapon_darkages_mace::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); + } + waitFrame(); + } +} + +void weapon_darkages_mace::Fire() { + playAnim(ANIMCHANNEL_ALL, "smash"); + melee(getFloatKey("melee_distance"), 1.0, MASK_SHOT_RENDERMODEL); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponState("Idle", 4); +} + +// --- BATTLE AXE --- +object weapon_darkages_axe : weapon_base { + float combo; + + void init(); + void Idle(); + void Fire(); +}; + +void weapon_darkages_axe::init() { + combo = 0; + weaponState("Raise", 0); +} + +void weapon_darkages_axe::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); + } + waitFrame(); + } +} + +void weapon_darkages_axe::Fire() { + combo = combo + 1; + if (combo > 4) { + combo = 1; + } + + if (combo == 1) { + playAnim(ANIMCHANNEL_ALL, "chop_right"); + } else if (combo == 2) { + playAnim(ANIMCHANNEL_ALL, "chop_left"); + } else if (combo == 3) { + playAnim(ANIMCHANNEL_ALL, "heavy_chop"); + } else { + playAnim(ANIMCHANNEL_ALL, "cleave"); + combo = 0; + } + + melee(getFloatKey("melee_distance"), 1.0 + combo * 0.15, MASK_SHOT_RENDERMODEL); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponState("Idle", 4); +} + +// --- CROSSBOW --- +object weapon_darkages_crossbow : weapon_base { + float is_loaded; + + void init(); + void Idle(); + void Fire(); + void Reload(); +}; + +void weapon_darkages_crossbow::init() { + is_loaded = 1; + weaponState("Raise", 0); +} + +void weapon_darkages_crossbow::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK && is_loaded) { + weaponState("Fire", 0); + } + if (WEAPON_RELOAD || (!is_loaded && ammoAvailable())) { + weaponState("Reload", 0); + } + waitFrame(); + } +} + +void weapon_darkages_crossbow::Fire() { + playAnim(ANIMCHANNEL_ALL, "fire"); + launchProjectiles(1, 0, 0, 1.0, 1.0); + is_loaded = 0; + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + + if (ammoAvailable()) { + weaponState("Reload", 4); + } else { + weaponState("Idle", 4); + } +} + +void weapon_darkages_crossbow::Reload() { + playAnim(ANIMCHANNEL_ALL, "reload"); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + is_loaded = 1; + addToClip(1); + weaponState("Idle", 4); +} + +// --- TOWER SHIELD --- +object weapon_darkages_shield : weapon_base { + float is_blocking; + float block_timer; + + void init(); + void Idle(); + void Fire(); + void Block(); +}; + +void weapon_darkages_shield::init() { + is_blocking = 0; + block_timer = 0; + weaponState("Raise", 0); +} + +void weapon_darkages_shield::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); // Shield bash + } + if (WEAPON_RELOAD) { + weaponState("Block", 0); // Block + } + waitFrame(); + } +} + +void weapon_darkages_shield::Fire() { + // Shield bash - stuns enemies + playAnim(ANIMCHANNEL_ALL, "bash"); + melee(getFloatKey("melee_distance"), 1.0, MASK_SHOT_RENDERMODEL); + waitUntil(animDone(ANIMCHANNEL_ALL, 4)); + weaponState("Idle", 4); +} + +void weapon_darkages_shield::Block() { + is_blocking = 1; + block_timer = 0; + playAnim(ANIMCHANNEL_ALL, "block_start"); + + // Block until button released + while (WEAPON_RELOAD) { + block_timer = block_timer + 0.016; + + // Parry window (first 0.3 seconds) + if (block_timer <= 0.3) { + // Perfect parry - reflected damage + } + + waitFrame(); + } + + is_blocking = 0; + playAnim(ANIMCHANNEL_ALL, "block_end"); + waitUntil(animDone(ANIMCHANNEL_ALL, 2)); + weaponState("Idle", 2); +} + +// --- HELLFIRE STAFF --- +object weapon_darkages_hellstaff : weapon_base { + void init(); + void Idle(); + void Fire(); + void Reload(); +}; + +void weapon_darkages_hellstaff::init() { + weaponState("Raise", 0); +} + +void weapon_darkages_hellstaff::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); + } + waitFrame(); + } +} + +void weapon_darkages_hellstaff::Fire() { + playAnim(ANIMCHANNEL_ALL, "fire"); + launchProjectiles(1, 2, 0, 1.0, 1.0); + waitUntil(animDone(ANIMCHANNEL_ALL, 2)); + weaponState("Idle", 2); +} + +void weapon_darkages_hellstaff::Reload() { + weaponState("Idle", 0); +} + +// --- GREAT HAMMER --- +object weapon_darkages_greathammer : weapon_base { + float charge; + + void init(); + void Idle(); + void Fire(); + void GroundPound(); +}; + +void weapon_darkages_greathammer::init() { + charge = 0; + weaponState("Raise", 0); +} + +void weapon_darkages_greathammer::Idle() { + playCycle(ANIMCHANNEL_ALL, "idle"); + while (1) { + if (WEAPON_ATTACK) { + weaponState("Fire", 0); + } + if (WEAPON_RELOAD) { + weaponState("GroundPound", 0); + } + waitFrame(); + } +} + +void weapon_darkages_greathammer::Fire() { + playAnim(ANIMCHANNEL_ALL, "smash"); + melee(getFloatKey("melee_distance"), 1.0, MASK_SHOT_RENDERMODEL); + waitUntil(animDone(ANIMCHANNEL_ALL, 6)); + weaponState("Idle", 6); +} + +void weapon_darkages_greathammer::GroundPound() { + // Wind up + playAnim(ANIMCHANNEL_ALL, "windup"); + charge = 0; + + while (WEAPON_RELOAD && charge < 2.0) { + charge = charge + 0.016; + waitFrame(); + } + + // Ground pound - area damage + playAnim(ANIMCHANNEL_ALL, "groundpound"); + + // Apply radial damage based on charge + float radius; + radius = 150 + charge * 75; + // radiusDamage(getOrigin(), self, self, self, "damage_greathammer_groundpound", 1.0 + charge); + + waitUntil(animDone(ANIMCHANNEL_ALL, 8)); + weaponState("Idle", 8); +} + +// ============================================================================ +// ENEMY AI SCRIPTS +// ============================================================================ + +// --- UNDEAD SOLDIER AI --- +object monster_darkages_undead_soldier : monster_base { + float attack_timer; + + void init(); + void state_Begin(); + void state_Idle(); + void state_Combat(); + void do_attack(); +}; + +void monster_darkages_undead_soldier::init() { + attack_timer = 0; + setState("state_Begin"); +} + +void monster_darkages_undead_soldier::state_Begin() { + setMoveType(MOVETYPE_ANIM); + setState("state_Idle"); +} + +void monster_darkages_undead_soldier::state_Idle() { + wait_for_enemy(); + setState("state_Combat"); +} + +void monster_darkages_undead_soldier::state_Combat() { + while (getEnemy()) { + if (canReachEnemy()) { + if (enemyRange() < getFloatKey("melee_range")) { + do_attack(); + } else { + moveToEnemy(); + } + } else { + moveToEnemy(); + } + waitFrame(); + } + setState("state_Idle"); +} + +void monster_darkages_undead_soldier::do_attack() { + faceEnemy(); + + float roll; + roll = sys.random(100); + + if (roll < 50) { + animState(ANIMCHANNEL_TORSO, "melee_slash", 4); + } else if (roll < 80) { + animState(ANIMCHANNEL_TORSO, "melee_overhead", 4); + } else { + animState(ANIMCHANNEL_TORSO, "melee_thrust", 4); + } + + combat_melee(); +} + +// --- DARK KNIGHT AI --- +object monster_darkages_dark_knight : monster_base { + float block_chance; + float was_hit; + + void init(); + void state_Begin(); + void state_Idle(); + void state_Combat(); + void do_attack(); + void do_block(); +}; + +void monster_darkages_dark_knight::init() { + block_chance = 40; + was_hit = 0; + setState("state_Begin"); +} + +void monster_darkages_dark_knight::state_Begin() { + setMoveType(MOVETYPE_ANIM); + setState("state_Idle"); +} + +void monster_darkages_dark_knight::state_Idle() { + wait_for_enemy(); + setState("state_Combat"); +} + +void monster_darkages_dark_knight::state_Combat() { + while (getEnemy()) { + if (enemyRange() < getFloatKey("melee_range")) { + // Decide: attack or block + float roll; + roll = sys.random(100); + + if (roll < block_chance && was_hit) { + do_block(); + was_hit = 0; + } else { + do_attack(); + } + } else { + // Close distance, circling + if (sys.random(100) < 30) { + // Strafe + moveToEnemy(); + } else { + moveToEnemy(); + } + } + waitFrame(); + } + setState("state_Idle"); +} + +void monster_darkages_dark_knight::do_attack() { + faceEnemy(); + + float roll; + roll = sys.random(100); + + if (roll < 30) { + // 2-hit combo + animState(ANIMCHANNEL_TORSO, "melee_combo_1", 4); + combat_melee(); + animState(ANIMCHANNEL_TORSO, "melee_combo_2", 4); + combat_melee(); + } else if (roll < 60) { + animState(ANIMCHANNEL_TORSO, "melee_overhead", 4); + combat_melee(); + } else if (roll < 80) { + // Shield bash + animState(ANIMCHANNEL_TORSO, "shield_bash", 4); + combat_melee(); + } else { + animState(ANIMCHANNEL_TORSO, "melee_thrust", 4); + combat_melee(); + } +} + +void monster_darkages_dark_knight::do_block() { + faceEnemy(); + animState(ANIMCHANNEL_TORSO, "block", 2); + sys.wait(0.5 + sys.random(0.5)); +} + +// --- HELLHOUND AI --- +object monster_darkages_hellhound : monster_base { + void init(); + void state_Begin(); + void state_Idle(); + void state_Combat(); +}; + +void monster_darkages_hellhound::init() { + setState("state_Begin"); +} + +void monster_darkages_hellhound::state_Begin() { + setMoveType(MOVETYPE_ANIM); + setState("state_Idle"); +} + +void monster_darkages_hellhound::state_Idle() { + wait_for_enemy(); + setState("state_Combat"); +} + +void monster_darkages_hellhound::state_Combat() { + while (getEnemy()) { + if (enemyRange() < getFloatKey("melee_range")) { + faceEnemy(); + animState(ANIMCHANNEL_TORSO, "bite", 2); + combat_melee(); + } else { + // Sprint toward enemy + moveToEnemy(); + } + waitFrame(); + } + setState("state_Idle"); +} + +// --- PLAGUE SORCERER AI --- +object monster_darkages_sorcerer : monster_base { + float summon_count; + float summon_timer; + + void init(); + void state_Begin(); + void state_Idle(); + void state_Combat(); + void do_ranged_attack(); + void do_summon(); +}; + +void monster_darkages_sorcerer::init() { + summon_count = 0; + summon_timer = 0; + setState("state_Begin"); +} + +void monster_darkages_sorcerer::state_Begin() { + setMoveType(MOVETYPE_ANIM); + setState("state_Idle"); +} + +void monster_darkages_sorcerer::state_Idle() { + wait_for_enemy(); + setState("state_Combat"); +} + +void monster_darkages_sorcerer::state_Combat() { + while (getEnemy()) { + if (enemyRange() < 128) { + // Too close - retreat + moveAwayFromEnemy(); + } else if (enemyRange() < getFloatKey("attack_ranged_range")) { + float roll; + roll = sys.random(100); + + if (roll < 20 && summon_count < 3 && summon_timer <= 0) { + do_summon(); + } else { + do_ranged_attack(); + } + } else { + moveToEnemy(); + } + + summon_timer = summon_timer - 0.016; + waitFrame(); + } + setState("state_Idle"); +} + +void monster_darkages_sorcerer::do_ranged_attack() { + faceEnemy(); + animState(ANIMCHANNEL_TORSO, "cast_attack", 4); + attack_ranged(); +} + +void monster_darkages_sorcerer::do_summon() { + animState(ANIMCHANNEL_TORSO, "cast_summon", 4); + // Spawn an undead soldier near the sorcerer + summon_count = summon_count + 1; + summon_timer = 15; +} + +// ============================================================================ +// LEVEL SCRIPTS +// ============================================================================ + +void darkages_level_start() { + sys.println("Level started: " + sys.getEntity("worldspawn").getKey("message")); + darkages_secrets_found = 0; +} + +void darkages_level_complete() { + sys.println("Level complete!"); + // Transition to next level + entity ws; + ws = sys.getEntity("worldspawn"); + string next_map; + next_map = ws.getKey("nextMap"); + if (next_map != "") { + sys.sessionCommand("map " + next_map); + } +} + +void secret_found(float secret_num) { + darkages_secrets_found = darkages_secrets_found + 1; + sys.println("Secret found! (" + darkages_secrets_found + " total)"); +} + +void enemy_killed() { + darkages_total_kills = darkages_total_kills + 1; +} diff --git a/darkages/strings/darkages_english.lang b/darkages/strings/darkages_english.lang new file mode 100644 index 0000000000..005427e378 --- /dev/null +++ b/darkages/strings/darkages_english.lang @@ -0,0 +1,182 @@ +// ============================================================================ +// DOOM: THE DARK AGES - English String Table +// ============================================================================ + +// ============================================================================ +// MAIN MENU +// ============================================================================ +"#str_darkages_title" "DOOM: THE DARK AGES" +"#str_darkages_subtitle" "A Medieval Nightmare" +"#str_darkages_new_game" "New Campaign" +"#str_darkages_continue" "Continue" +"#str_darkages_load_game" "Load Game" +"#str_darkages_options" "Options" +"#str_darkages_upgrades" "Forge (Upgrades)" +"#str_darkages_quit" "Quit" + +// ============================================================================ +// DIFFICULTY +// ============================================================================ +"#str_darkages_diff_squire" "Squire" +"#str_darkages_diff_squire_desc" "For those new to the Dark Ages. Enemies are weaker and items are plentiful." +"#str_darkages_diff_knight" "Knight" +"#str_darkages_diff_knight_desc" "The true Dark Ages experience. Balanced challenge for seasoned warriors." +"#str_darkages_diff_champion" "Champion" +"#str_darkages_diff_champion_desc" "For veteran slayers. Enemies are stronger, smarter, and more numerous." +"#str_darkages_diff_nightmare" "Nightmare" +"#str_darkages_diff_nightmare_desc" "Pure torment. Every encounter is a battle for survival. No mercy." + +// ============================================================================ +// ACT TITLES +// ============================================================================ +"#str_darkages_act1" "ACT I: THE FALLEN KINGDOM" +"#str_darkages_act2" "ACT II: THE DARK LANDS" +"#str_darkages_act3" "ACT III: THE UNDERWORLD" +"#str_darkages_act4" "ACT IV: THE CURSED REALM" +"#str_darkages_act5" "ACT V: HELL'S DOMAIN" + +// ============================================================================ +// LEVEL NAMES +// ============================================================================ +"#str_darkages_l01" "The Burning Village" +"#str_darkages_l02" "Castle Under Siege" +"#str_darkages_l03" "The King's Crypt" +"#str_darkages_l04" "Forest of Shadows" +"#str_darkages_l05" "The Mountain Pass" +"#str_darkages_l06" "The Dark Cathedral" +"#str_darkages_l07" "Plague Town" +"#str_darkages_l08" "The Iron Fortress" +"#str_darkages_l09" "The Bone Wastes" +"#str_darkages_l10" "Siege Demon's Lair" +"#str_darkages_l11" "The Frozen Depths" +"#str_darkages_l12" "The Lava Forge" +"#str_darkages_l13" "Tomb of Fallen Heroes" +"#str_darkages_l14" "Crystal Caverns" +"#str_darkages_l15" "The Dragon's Den" +"#str_darkages_l16" "The Ruined Abbey" +"#str_darkages_l17" "The Blood Swamp" +"#str_darkages_l18" "The Shadow Maze" +"#str_darkages_l19" "The Demon Arena" +"#str_darkages_l20" "Tower of Despair" +"#str_darkages_l21" "Gates of Hell" +"#str_darkages_l22" "River of Lost Souls" +"#str_darkages_l23" "Fortress of Doom" +"#str_darkages_l24" "Throne of Darkness" +"#str_darkages_l25" "The Final Stand" + +// ============================================================================ +// WEAPONS +// ============================================================================ +"#str_darkages_wpn_fists" "Fists" +"#str_darkages_wpn_sword" "Dark Broadsword" +"#str_darkages_wpn_mace" "War Mace" +"#str_darkages_wpn_axe" "Battle Axe" +"#str_darkages_wpn_flail" "Chain Flail" +"#str_darkages_wpn_crossbow" "Heavy Crossbow" +"#str_darkages_wpn_throwaxe" "Throwing Axes" +"#str_darkages_wpn_shield" "Tower Shield" +"#str_darkages_wpn_hellstaff" "Hellfire Staff" +"#str_darkages_wpn_greathammer" "Great Hammer of Doom" + +// ============================================================================ +// ENEMIES +// ============================================================================ +"#str_darkages_enemy_undead" "Undead Soldier" +"#str_darkages_enemy_knight" "Dark Knight" +"#str_darkages_enemy_hound" "Hell Hound" +"#str_darkages_enemy_sorcerer" "Plague Sorcerer" +"#str_darkages_enemy_siege" "Siege Demon" +"#str_darkages_enemy_wraith" "Wraith" +"#str_darkages_enemy_drake" "Fire Drake" +"#str_darkages_enemy_golem" "Iron Golem" +"#str_darkages_enemy_cultist" "Dark Cultist" +"#str_darkages_enemy_dragonking" "Dragon King" +"#str_darkages_enemy_darklord" "The Dark Lord" + +// ============================================================================ +// HUD +// ============================================================================ +"#str_darkages_hud_health" "VITALITY" +"#str_darkages_hud_armor" "ARMOR" +"#str_darkages_hud_stamina" "STAMINA" +"#str_darkages_hud_combo" "COMBO" +"#str_darkages_hud_souls" "SOULS" +"#str_darkages_hud_ammo" "AMMO" +"#str_darkages_hud_parry" "PARRY!" +"#str_darkages_hud_backstab" "BACKSTAB!" +"#str_darkages_hud_glory_kill" "GLORY KILL!" +"#str_darkages_hud_secret" "SECRET FOUND!" +"#str_darkages_hud_checkpoint" "CHECKPOINT REACHED" +"#str_darkages_hud_new_weapon" "NEW WEAPON ACQUIRED" + +// ============================================================================ +// LEVEL COMPLETE SCREEN +// ============================================================================ +"#str_darkages_complete_title" "LEVEL COMPLETE" +"#str_darkages_complete_kills" "Demons Slain" +"#str_darkages_complete_secrets" "Secrets Found" +"#str_darkages_complete_time" "Completion Time" +"#str_darkages_complete_combo" "Best Combo" +"#str_darkages_complete_parries" "Successful Parries" +"#str_darkages_complete_souls" "Soul Essences Earned" +"#str_darkages_complete_rating" "Rating" +"#str_darkages_complete_continue" "Press ENTER to continue" + +// ============================================================================ +// DEATH SCREEN +// ============================================================================ +"#str_darkages_death_title" "YOU HAVE FALLEN" +"#str_darkages_death_retry" "Retry" +"#str_darkages_death_load" "Load Save" +"#str_darkages_death_quit" "Quit to Menu" + +// ============================================================================ +// TUTORIAL +// ============================================================================ +"#str_darkages_tut_move" "WASD - Move" +"#str_darkages_tut_attack" "Left Click - Attack" +"#str_darkages_tut_heavy" "F - Heavy Attack (hold to charge)" +"#str_darkages_tut_block" "Right Click - Block with Shield" +"#str_darkages_tut_parry" "Time your block just before impact to PARRY" +"#str_darkages_tut_dodge" "Q - Dodge Roll" +"#str_darkages_tut_combo" "Chain attacks quickly to build COMBOS" +"#str_darkages_tut_backstab" "Attack enemies from behind for BACKSTAB damage" +"#str_darkages_tut_glory_kill" "Stagger enemies then press E for a GLORY KILL" +"#str_darkages_tut_stamina" "All actions consume STAMINA - manage it wisely" +"#str_darkages_tut_save" "F5 - Quick Save / F9 - Quick Load" + +// ============================================================================ +// STORY / LORE +// ============================================================================ +"#str_darkages_story_intro" "In an age of darkness, when the barriers between worlds grow thin, an ancient evil stirs. The Dark Lord has risen, commanding legions of the undead and demonic hordes. As the last Knight of the fallen Order, you must forge your path through five acts of relentless combat, from the burning villages of the mortal realm to the very throne of darkness in Hell itself." + +"#str_darkages_story_act1" "The kingdom burns. The Dark Lord's forces have breached the outer defenses, and the undead march through village streets. You must fight through the carnage, descend into ancient crypts, navigate cursed forests, and cross treacherous mountain passes guarded by dragons. The fallen kingdom cries out for a champion." + +"#str_darkages_story_act2" "Beyond the mountains lie the Dark Lands - territories corrupted by centuries of demonic influence. Massive cathedrals serve as temples to darkness. Plague ravages the towns. Iron fortresses house unstoppable golems. The Bone Wastes stretch endlessly, and somewhere in the depths, Siege Demons prepare for war." + +"#str_darkages_story_act3" "Deep beneath the earth, the Underworld awaits. Frozen caverns and rivers of lava guard the path forward. Ancient heroes lie entombed, their rest disturbed by corruption. Crystal caverns pulse with demonic energy. And at the heart of it all, the Dragon King waits upon its throne of fire and bone." + +"#str_darkages_story_act4" "Reality itself fractures in the Cursed Realm. Ruined abbeys straddle the border between worlds. Blood swamps breed new horrors. The Shadow Maze shifts and changes, trapping the unwary. The Demon Arena demands blood sport. And the Tower of Despair reaches toward the sky, each floor more terrible than the last." + +"#str_darkages_story_act5" "The gates of Hell lie open. A river of lost souls flows between impossible architecture. The Fortress of Doom guards the Dark Lord's throne. This is where it ends - at the Throne of Darkness itself. Defeat the Dark Lord, and close the portal before Hell consumes everything. The Final Stand begins." + +// ============================================================================ +// UPGRADE MENU +// ============================================================================ +"#str_darkages_forge_title" "THE FORGE" +"#str_darkages_forge_souls" "Soul Essences: " +"#str_darkages_forge_combat" "COMBAT" +"#str_darkages_forge_defense" "DEFENSE" +"#str_darkages_forge_mobility" "MOBILITY" +"#str_darkages_forge_utility" "UTILITY" +"#str_darkages_forge_purchase" "Hold ENTER to purchase" +"#str_darkages_forge_maxed" "MAXED OUT" +"#str_darkages_forge_insufficient" "Insufficient Soul Essences" + +// ============================================================================ +// BOSS INTRODUCTIONS +// ============================================================================ +"#str_darkages_boss_firedrake" "THE FIRE DRAKE DESCENDS" +"#str_darkages_boss_siege" "THE SIEGE LORD AWAKENS" +"#str_darkages_boss_dragonking" "THE DRAGON KING STIRS" +"#str_darkages_boss_darklord" "THE DARK LORD RISES" diff --git a/neo/_Common.props b/neo/_Common.props index 8394752a6d..1d08e578cb 100644 --- a/neo/_Common.props +++ b/neo/_Common.props @@ -10,7 +10,7 @@ - _CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) + DARKAGES_BUILD;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;_USE_32BIT_TIME_T;%(PreprocessorDefinitions) Level4 diff --git a/neo/_DoomExe.props b/neo/_DoomExe.props index 8a438e3d07..e5ac04fe74 100644 --- a/neo/_DoomExe.props +++ b/neo/_DoomExe.props @@ -2,7 +2,8 @@ <_ProjectFileVersion>10.0.40219.1 - <_PropertySheetDisplayName>Doom III Executable + <_PropertySheetDisplayName>DOOM: The Dark Ages Executable + DarkAges diff --git a/neo/d3xp/Achievements.cpp b/neo/d3xp/Achievements.cpp index f0ced887ed..737c60e513 100644 --- a/neo/d3xp/Achievements.cpp +++ b/neo/d3xp/Achievements.cpp @@ -29,7 +29,7 @@ If you have questions concerning this license or the applicable additional terms #pragma hdrstop #include "Game_local.h" -#include "..\..\doomclassic\doom\doomdef.h" +#include "../../doomclassic/doom/doomdef.h" idCVar achievements_Verbose( "achievements_Verbose", "1", CVAR_BOOL, "debug spam" ); idCVar g_demoMode( "g_demoMode", "0", CVAR_INTEGER, "this is a demo" ); diff --git a/neo/d3xp/Game_local.h b/neo/d3xp/Game_local.h index 465a63f835..53784bb742 100644 --- a/neo/d3xp/Game_local.h +++ b/neo/d3xp/Game_local.h @@ -47,7 +47,11 @@ extern idRenderWorld * gameRenderWorld; extern idSoundWorld * gameSoundWorld; // the "gameversion" client command will print this plus compile date +#ifdef DARKAGES_BUILD +#define GAME_VERSION "DOOM-TheDarkAges-1.0" +#else #define GAME_VERSION "baseDOOM-1" +#endif // classes used by idGameLocal class idEntity; diff --git a/neo/d3xp/Game_network.cpp b/neo/d3xp/Game_network.cpp index ed2fdf9339..4be42d63a7 100644 --- a/neo/d3xp/Game_network.cpp +++ b/neo/d3xp/Game_network.cpp @@ -30,7 +30,7 @@ If you have questions concerning this license or the applicable additional terms #pragma hdrstop #include "Game_local.h" -#include "..\framework\Common_local.h" +#include "../framework/Common_local.h" static const int SNAP_GAMESTATE = 0; static const int SNAP_SHADERPARMS = 1; diff --git a/neo/darkages/DarkAgesCombat.cpp b/neo/darkages/DarkAgesCombat.cpp new file mode 100644 index 0000000000..0d6421f34c --- /dev/null +++ b/neo/darkages/DarkAgesCombat.cpp @@ -0,0 +1,384 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Combat System Implementation + +=========================================================================== +*/ + +#include "DarkAgesCombat.h" +#include +#include + +// ============================================================================ +// DarkAgesCombatSystem Implementation +// ============================================================================ + +DarkAgesCombatSystem & DarkAgesCombatSystem::Instance() { + static DarkAgesCombatSystem instance; + return instance; +} + +DarkAgesCombatSystem::DarkAgesCombatSystem() : + stamina( DA_STAMINA_MAX ), + comboCount( 0 ), + lastHitTime( 0.0f ), + comboWindowTimer( 0.0f ), + activeCombo( NULL ), + comboStep( 0 ), + gloryKillAvailable( false ) +{ +} + +void DarkAgesCombatSystem::Init() { + stamina = DA_STAMINA_MAX; + comboCount = 0; + lastHitTime = 0.0f; + comboWindowTimer = 0.0f; + activeCombo = NULL; + comboStep = 0; + gloryKillAvailable = false; +} + +void DarkAgesCombatSystem::Update( float deltaTime ) { + RegenerateStamina( deltaTime ); + + // Update combo window + if ( comboCount > 0 ) { + comboWindowTimer -= deltaTime; + if ( comboWindowTimer <= 0.0f ) { + ResetCombo(); + } + } +} + +// ============================================================================ +// Attack Processing +// ============================================================================ + +float DarkAgesCombatSystem::ProcessMeleeAttack( darkAgesWeaponType_t weapon, darkAgesMeleeType_t type, float baseDamage ) { + float staminaCost = DA_STAMINA_ATTACK_COST; + + // Heavy attacks cost more stamina + if ( type == DA_MELEE_HEAVY || type == DA_MELEE_OVERHEAD ) { + staminaCost *= 1.5f; + } + + // Check stamina + if ( !HasStamina( staminaCost ) ) { + return 0.0f; + } + + ConsumeStamina( staminaCost ); + + // Register the hit for combo tracking + RegisterHit( weapon, type ); + + // Calculate damage with combo multiplier + float damage = baseDamage * GetComboMultiplier(); + + // Apply difficulty settings + const darkAgesDifficultySettings_t * diff = DarkAgesGame::Instance().GetDifficultySettings(); + damage *= diff->playerDamageMult; + + return damage; +} + +bool DarkAgesCombatSystem::ProcessBlock( float incomingDamage, float attackAngle, float & reducedDamage ) { + if ( !HasStamina( DA_STAMINA_BLOCK_COST ) ) { + reducedDamage = incomingDamage; + return false; + } + + // Check if attack is within block arc + if ( fabsf( attackAngle ) > DA_SHIELD_BLOCK_ARC * 0.5f ) { + reducedDamage = incomingDamage; + return false; + } + + ConsumeStamina( DA_STAMINA_BLOCK_COST ); + + // Reduce damage based on shield + reducedDamage = incomingDamage * DA_SHIELD_BLOCK_MULT; + + return true; +} + +bool DarkAgesCombatSystem::ProcessParry( float attackTime, float & counterDamage ) { + float timeSinceBlock = attackTime - lastHitTime; + + // Parry window check + if ( timeSinceBlock > DA_PARRY_WINDOW ) { + return false; + } + + if ( !HasStamina( DA_STAMINA_BLOCK_COST * 0.5f ) ) { + return false; + } + + ConsumeStamina( DA_STAMINA_BLOCK_COST * 0.5f ); + + // Successful parry - counter damage + counterDamage = 50.0f * DA_PARRY_DAMAGE_MULT; + + DarkAgesGame::Instance().RecordParry(); + + return true; +} + +bool DarkAgesCombatSystem::ProcessDodge( float dodgeDirection ) { + if ( !HasStamina( DA_STAMINA_DODGE_COST ) ) { + return false; + } + + ConsumeStamina( DA_STAMINA_DODGE_COST ); + + return true; +} + +// ============================================================================ +// Combo System +// ============================================================================ + +void DarkAgesCombatSystem::RegisterHit( darkAgesWeaponType_t weapon, darkAgesMeleeType_t type ) { + // Check if within combo window + if ( comboWindowTimer > 0.0f && comboCount > 0 ) { + comboCount++; + if ( comboCount > DA_MAX_COMBO_HITS ) { + comboCount = DA_MAX_COMBO_HITS; + } + } else { + comboCount = 1; + } + + // Reset combo window timer + comboWindowTimer = DA_MELEE_COMBO_WINDOW; + + // Try to match a combo chain + if ( comboCount == 1 ) { + // Start matching combo chains + switch ( weapon ) { + case DA_WEAPON_SWORD: + activeCombo = &DA_COMBO_SWORD_FURY; + break; + case DA_WEAPON_MACE: + activeCombo = &DA_COMBO_MACE_CRUSHER; + break; + case DA_WEAPON_AXE: + activeCombo = &DA_COMBO_AXE_CLEAVE; + break; + case DA_WEAPON_FLAIL: + activeCombo = &DA_COMBO_FLAIL_CHAOS; + break; + case DA_WEAPON_GREATHAMMER: + activeCombo = &DA_COMBO_HAMMER_EARTHQUAKE; + break; + default: + activeCombo = NULL; + break; + } + comboStep = 0; + } else if ( activeCombo != NULL ) { + comboStep++; + if ( comboStep >= activeCombo->numMoves ) { + comboStep = activeCombo->numMoves - 1; + } + } +} + +float DarkAgesCombatSystem::GetComboMultiplier() const { + if ( comboCount <= 1 ) { + return 1.0f; + } + + float mult = 1.0f + ( comboCount - 1 ) * DA_COMBO_DAMAGE_MULT; + + // If we're in a named combo chain, use the chain's multiplier + if ( activeCombo != NULL && comboStep < activeCombo->numMoves ) { + mult *= activeCombo->moves[comboStep].damageMultiplier; + } + + return mult; +} + +void DarkAgesCombatSystem::ResetCombo() { + comboCount = 0; + comboWindowTimer = 0.0f; + activeCombo = NULL; + comboStep = 0; +} + +bool DarkAgesCombatSystem::IsComboFinisher() const { + if ( activeCombo == NULL ) { + return false; + } + return comboStep == activeCombo->numMoves - 1; +} + +// ============================================================================ +// Stamina Management +// ============================================================================ + +void DarkAgesCombatSystem::ConsumeStamina( float amount ) { + stamina -= amount; + if ( stamina < 0.0f ) { + stamina = 0.0f; + } +} + +void DarkAgesCombatSystem::RegenerateStamina( float deltaTime ) { + stamina += DA_STAMINA_REGEN_RATE * deltaTime; + if ( stamina > DA_STAMINA_MAX ) { + stamina = DA_STAMINA_MAX; + } +} + +// ============================================================================ +// Glory Kill System +// ============================================================================ + +bool DarkAgesCombatSystem::CanGloryKill() const { + return gloryKillAvailable; +} + +float DarkAgesCombatSystem::GetGloryKillDamage() const { + return 9999.0f; +} + +void DarkAgesCombatSystem::PerformGloryKill() { + gloryKillAvailable = false; + // Restore some health on glory kill +} + +// ============================================================================ +// Backstab Detection +// ============================================================================ + +bool DarkAgesCombatSystem::IsBackstab( float attackerYaw, float victimYaw ) const { + float angleDiff = fabsf( attackerYaw - victimYaw ); + if ( angleDiff > 180.0f ) { + angleDiff = 360.0f - angleDiff; + } + + // If attacker is behind the victim (within 60 degree cone) + return angleDiff < 30.0f; +} + +// ============================================================================ +// DarkAgesEnemyCombatAI Implementation +// ============================================================================ + +void DarkAgesEnemyCombatAI::Init( int enemyType, float healthMultiplier, float dmgMult ) { + state = ESTATE_IDLE; + maxHealth = 100.0f * healthMultiplier; + health = maxHealth; + damageMult = dmgMult; + blockChance = 0.0f; + aggressionLevel = 0.5f; + lastAttackTime = 0.0f; + lastBlockTime = 0.0f; + staggerTimer = 0.0f; + hitsTaken = 0; + groupId = -1; + isLeader = false; + + // Set per-enemy-type parameters + switch ( enemyType ) { + case 0: // Undead Soldier + blockChance = 0.1f; + aggressionLevel = 0.7f; + break; + case 1: // Dark Knight + blockChance = 0.4f; + aggressionLevel = 0.5f; + break; + case 2: // Hell Hound + blockChance = 0.0f; + aggressionLevel = 0.9f; + break; + case 3: // Plague Sorcerer + blockChance = 0.1f; + aggressionLevel = 0.3f; + break; + case 4: // Siege Demon + blockChance = 0.2f; + aggressionLevel = 0.6f; + break; + case 5: // Wraith + blockChance = 0.0f; + aggressionLevel = 0.4f; + break; + case 6: // Fire Drake + blockChance = 0.0f; + aggressionLevel = 0.5f; + break; + case 7: // Iron Golem + blockChance = 0.6f; + aggressionLevel = 0.4f; + break; + default: + break; + } +} + +void DarkAgesEnemyCombatAI::Update( float deltaTime ) { + // Update stagger timer + if ( staggerTimer > 0.0f ) { + staggerTimer -= deltaTime; + if ( staggerTimer <= 0.0f ) { + staggerTimer = 0.0f; + if ( state == ESTATE_STAGGERED ) { + state = ESTATE_PURSUING; + } + } + } +} + +void DarkAgesEnemyCombatAI::SetState( enemyState_t newState ) { + state = newState; +} + +DarkAgesEnemyCombatAI::attackPattern_t DarkAgesEnemyCombatAI::ChooseAttack() const { + // Higher aggression = more combos + float roll = (float)( rand() % 100 ) / 100.0f; + + if ( aggressionLevel > 0.7f ) { + if ( roll < 0.3f ) return EATTACK_COMBO_3; + if ( roll < 0.6f ) return EATTACK_COMBO_2; + if ( roll < 0.8f ) return EATTACK_LUNGE; + return EATTACK_SINGLE; + } else if ( aggressionLevel > 0.4f ) { + if ( roll < 0.2f ) return EATTACK_COMBO_2; + if ( roll < 0.5f ) return EATTACK_SINGLE; + if ( roll < 0.7f ) return EATTACK_SWEEP; + return EATTACK_SINGLE; + } else { + if ( roll < 0.5f ) return EATTACK_RANGED; + if ( roll < 0.7f ) return EATTACK_SINGLE; + return EATTACK_SPECIAL; + } +} + +bool DarkAgesEnemyCombatAI::ShouldBlock() const { + if ( blockChance <= 0.0f ) return false; + float roll = (float)( rand() % 100 ) / 100.0f; + return roll < blockChance; +} + +bool DarkAgesEnemyCombatAI::ShouldRetreat() const { + float healthRatio = health / maxHealth; + return healthRatio < 0.2f && aggressionLevel < 0.5f; +} + +bool DarkAgesEnemyCombatAI::ShouldFlank() const { + return hitsTaken > 3 && aggressionLevel > 0.3f; +} + +void DarkAgesEnemyCombatAI::RegisterWithGroup() { + // Would register with nearby enemies for coordinated attacks +} + +void DarkAgesEnemyCombatAI::CoordinateAttack() { + // Only one enemy in the group attacks at a time (Dark Souls style) + // Others circle and look for openings +} diff --git a/neo/darkages/DarkAgesCombat.h b/neo/darkages/DarkAgesCombat.h new file mode 100644 index 0000000000..3c666f6e5a --- /dev/null +++ b/neo/darkages/DarkAgesCombat.h @@ -0,0 +1,260 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Combat System +Advanced melee combat with combos, parries, dodges, and shield blocking + +=========================================================================== +*/ + +#ifndef __DARKAGES_COMBAT_H__ +#define __DARKAGES_COMBAT_H__ + +#include "DarkAgesGame.h" + +// ============================================================================ +// Melee Attack Types +// ============================================================================ + +enum darkAgesMeleeType_t { + DA_MELEE_LIGHT = 0, + DA_MELEE_HEAVY, + DA_MELEE_THRUST, + DA_MELEE_OVERHEAD, + DA_MELEE_SWEEP, + DA_MELEE_UPPERCUT, + DA_MELEE_COUNT +}; + +// ============================================================================ +// Combat Combo Definitions +// Each weapon has unique combos +// ============================================================================ + +struct darkAgesComboMove_t { + darkAgesMeleeType_t attackType; + float damageMultiplier; + float speedMultiplier; + float staminaCost; + float knockback; + bool canChain; + const char * animName; +}; + +struct darkAgesComboChain_t { + const char * name; + darkAgesWeaponType_t weapon; + int numMoves; + darkAgesComboMove_t moves[DA_MAX_COMBO_HITS]; + float finisherDamageMult; + const char * finisherFx; +}; + +// ============================================================================ +// Predefined Combo Chains +// ============================================================================ + +// Sword combos +static const darkAgesComboChain_t DA_COMBO_SWORD_FURY = { + "Fury of Steel", + DA_WEAPON_SWORD, + 5, + { + { DA_MELEE_LIGHT, 1.0f, 1.0f, 8.0f, 2000.0f, true, "sword_slash_r" }, + { DA_MELEE_LIGHT, 1.1f, 1.1f, 8.0f, 2500.0f, true, "sword_slash_l" }, + { DA_MELEE_HEAVY, 1.5f, 0.8f, 15.0f, 5000.0f, true, "sword_overhead" }, + { DA_MELEE_THRUST, 1.3f, 1.2f, 12.0f, 3000.0f, true, "sword_thrust" }, + { DA_MELEE_OVERHEAD, 2.5f, 0.6f, 25.0f, 10000.0f, false, "sword_finisher" }, + }, + 3.0f, + "fx/combat/sword_fury_finisher" +}; + +static const darkAgesComboChain_t DA_COMBO_SWORD_WHIRLWIND = { + "Whirlwind", + DA_WEAPON_SWORD, + 3, + { + { DA_MELEE_SWEEP, 0.8f, 1.3f, 10.0f, 3000.0f, true, "sword_sweep_1" }, + { DA_MELEE_SWEEP, 0.9f, 1.4f, 10.0f, 3500.0f, true, "sword_sweep_2" }, + { DA_MELEE_SWEEP, 1.5f, 1.5f, 20.0f, 8000.0f, false, "sword_sweep_3" }, + }, + 2.0f, + "fx/combat/sword_whirlwind" +}; + +// Mace combos +static const darkAgesComboChain_t DA_COMBO_MACE_CRUSHER = { + "Skull Crusher", + DA_WEAPON_MACE, + 4, + { + { DA_MELEE_HEAVY, 1.2f, 0.8f, 12.0f, 5000.0f, true, "mace_smash_1" }, + { DA_MELEE_HEAVY, 1.4f, 0.7f, 15.0f, 7000.0f, true, "mace_smash_2" }, + { DA_MELEE_OVERHEAD, 1.8f, 0.6f, 20.0f, 10000.0f, true, "mace_overhead" }, + { DA_MELEE_OVERHEAD, 3.0f, 0.4f, 30.0f, 20000.0f, false, "mace_finisher" }, + }, + 4.0f, + "fx/combat/mace_crusher_finisher" +}; + +// Axe combos +static const darkAgesComboChain_t DA_COMBO_AXE_CLEAVE = { + "Cleaving Storm", + DA_WEAPON_AXE, + 4, + { + { DA_MELEE_LIGHT, 1.0f, 1.1f, 9.0f, 3000.0f, true, "axe_chop_r" }, + { DA_MELEE_LIGHT, 1.1f, 1.2f, 9.0f, 3500.0f, true, "axe_chop_l" }, + { DA_MELEE_HEAVY, 1.6f, 0.7f, 18.0f, 8000.0f, true, "axe_heavy_chop" }, + { DA_MELEE_SWEEP, 2.0f, 0.8f, 22.0f, 12000.0f, false, "axe_cleave" }, + }, + 2.5f, + "fx/combat/axe_cleave_finisher" +}; + +// Flail combos +static const darkAgesComboChain_t DA_COMBO_FLAIL_CHAOS = { + "Chains of Chaos", + DA_WEAPON_FLAIL, + 4, + { + { DA_MELEE_SWEEP, 0.9f, 1.2f, 10.0f, 4000.0f, true, "flail_spin_1" }, + { DA_MELEE_SWEEP, 1.0f, 1.3f, 10.0f, 4500.0f, true, "flail_spin_2" }, + { DA_MELEE_SWEEP, 1.2f, 1.4f, 12.0f, 5000.0f, true, "flail_spin_3" }, + { DA_MELEE_OVERHEAD, 2.5f, 0.5f, 25.0f, 15000.0f, false, "flail_overhead" }, + }, + 3.0f, + "fx/combat/flail_chaos_finisher" +}; + +// Great Hammer combos +static const darkAgesComboChain_t DA_COMBO_HAMMER_EARTHQUAKE = { + "Earthquake", + DA_WEAPON_GREATHAMMER, + 3, + { + { DA_MELEE_HEAVY, 1.5f, 0.6f, 15.0f, 8000.0f, true, "hammer_smash_1" }, + { DA_MELEE_HEAVY, 2.0f, 0.5f, 20.0f, 12000.0f, true, "hammer_smash_2" }, + { DA_MELEE_OVERHEAD, 4.0f, 0.3f, 40.0f, 25000.0f, false, "hammer_groundpound" }, + }, + 5.0f, + "fx/combat/hammer_earthquake" +}; + +// ============================================================================ +// DarkAgesCombatSystem class +// Manages all combat interactions +// ============================================================================ + +class DarkAgesCombatSystem { +public: + static DarkAgesCombatSystem & Instance(); + + void Init(); + void Update( float deltaTime ); + + // Attack processing + float ProcessMeleeAttack( darkAgesWeaponType_t weapon, darkAgesMeleeType_t type, float baseDamage ); + bool ProcessBlock( float incomingDamage, float attackAngle, float & reducedDamage ); + bool ProcessParry( float attackTime, float & counterDamage ); + bool ProcessDodge( float dodgeDirection ); + + // Combo system + void RegisterHit( darkAgesWeaponType_t weapon, darkAgesMeleeType_t type ); + int GetComboCount() const { return comboCount; } + float GetComboMultiplier() const; + void ResetCombo(); + bool IsComboFinisher() const; + const darkAgesComboChain_t * GetActiveCombo() const { return activeCombo; } + + // Stamina management + float GetStamina() const { return stamina; } + bool HasStamina( float cost ) const { return stamina >= cost; } + void ConsumeStamina( float amount ); + void RegenerateStamina( float deltaTime ); + + // Glory Kill system (execution moves on staggered enemies) + bool CanGloryKill() const; + float GetGloryKillDamage() const; + void PerformGloryKill(); + + // Backstab detection + bool IsBackstab( float attackerYaw, float victimYaw ) const; + +private: + DarkAgesCombatSystem(); + + float stamina; + int comboCount; + float lastHitTime; + float comboWindowTimer; + const darkAgesComboChain_t * activeCombo; + int comboStep; + bool gloryKillAvailable; +}; + +// ============================================================================ +// DarkAgesEnemyCombatAI +// Enhanced AI combat behaviors for medieval combat +// ============================================================================ + +class DarkAgesEnemyCombatAI { +public: + enum enemyState_t { + ESTATE_IDLE, + ESTATE_PATROL, + ESTATE_ALERT, + ESTATE_PURSUING, + ESTATE_ATTACKING, + ESTATE_BLOCKING, + ESTATE_STAGGERED, + ESTATE_RETREATING, + ESTATE_FLANKING, + ESTATE_CIRCLING, + ESTATE_DEAD + }; + + enum attackPattern_t { + EATTACK_SINGLE, + EATTACK_COMBO_2, + EATTACK_COMBO_3, + EATTACK_LUNGE, + EATTACK_SWEEP, + EATTACK_RANGED, + EATTACK_SPECIAL + }; + + void Init( int enemyType, float healthMult, float damageMult ); + void Update( float deltaTime ); + + // State management + enemyState_t GetState() const { return state; } + void SetState( enemyState_t newState ); + + // Combat decisions + attackPattern_t ChooseAttack() const; + bool ShouldBlock() const; + bool ShouldRetreat() const; + bool ShouldFlank() const; + + // Group combat coordination + void RegisterWithGroup(); + void CoordinateAttack(); + +private: + enemyState_t state; + float health; + float maxHealth; + float damageMult; + float blockChance; + float aggressionLevel; + float lastAttackTime; + float lastBlockTime; + float staggerTimer; + int hitsTaken; + int groupId; + bool isLeader; +}; + +#endif /* !__DARKAGES_COMBAT_H__ */ diff --git a/neo/darkages/DarkAgesGame.cpp b/neo/darkages/DarkAgesGame.cpp new file mode 100644 index 0000000000..0fcded2744 --- /dev/null +++ b/neo/darkages/DarkAgesGame.cpp @@ -0,0 +1,325 @@ +/* +=========================================================================== + +DOOM: The Dark Ages +Copyright (C) 2024 - Dark Ages Total Conversion + +Based on Doom 3 BFG Edition GPL Source Code +Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. + +=========================================================================== +*/ + +#include "DarkAgesGame.h" +#include +#include +#include + +// ============================================================================ +// DarkAgesGame Implementation +// ============================================================================ + +DarkAgesGame & DarkAgesGame::Instance() { + static DarkAgesGame instance; + return instance; +} + +DarkAgesGame::DarkAgesGame() : + currentLevel( 0 ), + difficulty( DA_DIFFICULTY_KNIGHT ), + isInitialized( false ) +{ + memset( &stats, 0, sizeof( stats ) ); + memset( &combatState, 0, sizeof( combatState ) ); + combatState.stamina = DA_STAMINA_MAX; +} + +DarkAgesGame::~DarkAgesGame() { + Shutdown(); +} + +void DarkAgesGame::Init() { + if ( isInitialized ) { + return; + } + + currentLevel = 0; + difficulty = DA_DIFFICULTY_KNIGHT; + memset( &stats, 0, sizeof( stats ) ); + combatState.stamina = DA_STAMINA_MAX; + combatState.comboCount = 0; + combatState.lastAttackTime = 0.0f; + combatState.lastBlockTime = 0.0f; + combatState.lastDodgeTime = 0.0f; + combatState.isBlocking = false; + combatState.isParrying = false; + combatState.isDodging = false; + combatState.currentCombo = DA_COMBO_NONE; + + OptimizeForHardware(); + + isInitialized = true; +} + +void DarkAgesGame::Shutdown() { + isInitialized = false; +} + +// ============================================================================ +// Campaign Management +// ============================================================================ + +void DarkAgesGame::StartNewGame( darkAgesDifficulty_t diff ) { + difficulty = diff; + currentLevel = 0; + memset( &stats, 0, sizeof( stats ) ); + combatState.stamina = DA_STAMINA_MAX; + + LoadLevel( 0 ); +} + +void DarkAgesGame::LoadLevel( int levelIndex ) { + if ( levelIndex < 0 || levelIndex >= DA_NUM_LEVELS ) { + return; + } + + currentLevel = levelIndex; + + const darkAgesLevelInfo_t * info = &DA_CAMPAIGN[levelIndex]; + + stats.totalSecrets = info->numSecrets; + stats.secretsFound = 0; +} + +void DarkAgesGame::NextLevel() { + if ( currentLevel < DA_NUM_LEVELS - 1 ) { + LoadLevel( currentLevel + 1 ); + } +} + +bool DarkAgesGame::IsLevelComplete() const { + return false; +} + +int DarkAgesGame::GetCurrentAct() const { + if ( currentLevel < DA_NUM_LEVELS ) { + return DA_CAMPAIGN[currentLevel].actNumber; + } + return 0; +} + +const darkAgesLevelInfo_t * DarkAgesGame::GetLevelInfo( int index ) const { + if ( index >= 0 && index < DA_NUM_LEVELS ) { + return &DA_CAMPAIGN[index]; + } + return NULL; +} + +// ============================================================================ +// Difficulty +// ============================================================================ + +const darkAgesDifficultySettings_t * DarkAgesGame::GetDifficultySettings() const { + return &DA_DIFFICULTIES[difficulty]; +} + +// ============================================================================ +// Combat System +// ============================================================================ + +void DarkAgesGame::UpdateCombat( float deltaTime ) { + // Regenerate stamina + if ( !combatState.isBlocking && !combatState.isDodging ) { + combatState.stamina += DA_STAMINA_REGEN_RATE * deltaTime; + if ( combatState.stamina > DA_STAMINA_MAX ) { + combatState.stamina = DA_STAMINA_MAX; + } + } + + // Reset combo if too much time has passed + if ( combatState.comboCount > 0 ) { + float timeSinceAttack = deltaTime; + if ( timeSinceAttack > DA_MELEE_COMBO_WINDOW ) { + combatState.comboCount = 0; + combatState.currentCombo = DA_COMBO_NONE; + } + } + + // Update parry window + if ( combatState.isParrying ) { + float parryElapsed = deltaTime; + if ( parryElapsed > DA_PARRY_WINDOW ) { + combatState.isParrying = false; + } + } +} + +float DarkAgesGame::CalculateMeleeDamage( float baseDamage, int comboCount ) const { + float damage = baseDamage; + + // Combo multiplier: each successive hit does more damage + if ( comboCount > 1 ) { + damage *= 1.0f + ( comboCount - 1 ) * DA_COMBO_DAMAGE_MULT; + } + + // Cap at max combo + if ( comboCount > DA_MAX_COMBO_HITS ) { + damage *= 1.0f + ( DA_MAX_COMBO_HITS - 1 ) * DA_COMBO_DAMAGE_MULT; + } + + // Apply difficulty modifier + const darkAgesDifficultySettings_t * diffSettings = GetDifficultySettings(); + damage *= diffSettings->playerDamageMult; + + return damage; +} + +bool DarkAgesGame::CheckParry( float attackTime ) const { + if ( !combatState.isParrying ) { + return false; + } + + float parryElapsed = attackTime - combatState.lastBlockTime; + return parryElapsed <= DA_PARRY_WINDOW; +} + +bool DarkAgesGame::CheckBlock( float attackAngle ) const { + if ( !combatState.isBlocking ) { + return false; + } + + return fabsf( attackAngle ) <= DA_SHIELD_BLOCK_ARC * 0.5f; +} + +float DarkAgesGame::GetStaminaCost( darkAgesPlayerState_t action ) const { + switch ( action ) { + case DA_PSTATE_SPRINTING: + return DA_STAMINA_SPRINT_COST; + case DA_PSTATE_ATTACKING: + return DA_STAMINA_ATTACK_COST; + case DA_PSTATE_BLOCKING: + return DA_STAMINA_BLOCK_COST; + case DA_PSTATE_DODGING: + return DA_STAMINA_DODGE_COST; + default: + return 0.0f; + } +} + +// ============================================================================ +// Stats Tracking +// ============================================================================ + +void DarkAgesGame::RecordKill() { + stats.totalKills++; +} + +void DarkAgesGame::RecordDeath() { + stats.totalDeaths++; +} + +void DarkAgesGame::RecordSecret() { + stats.secretsFound++; +} + +void DarkAgesGame::RecordParry() { + stats.parriesSuccessful++; +} + +void DarkAgesGame::RecordBackstab() { + stats.backstabs++; +} + +// ============================================================================ +// Save/Load +// ============================================================================ + +void DarkAgesGame::SaveGame( const char * saveName ) { + // Save game state to file + char filename[256]; + snprintf( filename, sizeof(filename), "savegames/%s.dksave", saveName ); + + FILE * f = fopen( filename, "wb" ); + if ( f == NULL ) { + return; + } + + // Write header + const char header[] = "DKAG"; + fwrite( header, 1, 4, f ); + + // Write version + int version = 1; + fwrite( &version, sizeof(int), 1, f ); + + // Write game state + fwrite( ¤tLevel, sizeof(int), 1, f ); + fwrite( &difficulty, sizeof(int), 1, f ); + fwrite( &stats, sizeof(darkAgesPlayerStats_t), 1, f ); + fwrite( &combatState, sizeof(darkAgesCombatState_t), 1, f ); + + fclose( f ); +} + +void DarkAgesGame::LoadGame( const char * saveName ) { + char filename[256]; + snprintf( filename, sizeof(filename), "savegames/%s.dksave", saveName ); + + FILE * f = fopen( filename, "rb" ); + if ( f == NULL ) { + return; + } + + // Read and verify header + char header[4]; + fread( header, 1, 4, f ); + if ( header[0] != 'D' || header[1] != 'K' || header[2] != 'A' || header[3] != 'G' ) { + fclose( f ); + return; + } + + // Read version + int version; + fread( &version, sizeof(int), 1, f ); + + if ( version != 1 ) { + fclose( f ); + return; + } + + // Read game state + fread( ¤tLevel, sizeof(int), 1, f ); + fread( &difficulty, sizeof(int), 1, f ); + fread( &stats, sizeof(darkAgesPlayerStats_t), 1, f ); + fread( &combatState, sizeof(darkAgesCombatState_t), 1, f ); + + fclose( f ); +} + +// ============================================================================ +// Performance Optimization +// ============================================================================ + +void DarkAgesGame::OptimizeForHardware() { + // Auto-detect and apply optimizations + ApplyT460sOptimizations(); +} + +void DarkAgesGame::ApplyT460sOptimizations() { + // ThinkPad T460s optimization settings: + // - Intel Core i5-6300U (2C/4T, 2.4-3.0GHz) + // - Intel HD Graphics 520 (24 EUs, 300-1050MHz) + // - 8-20GB DDR4-2133 + // - 1920x1080 display + // + // Target: 120+ FPS + // Strategy: + // 1. Reduce shadow quality (biggest GPU impact on Intel HD) + // 2. Use lower-res shadow maps + // 3. Reduce particle count + // 4. Use simpler shaders where possible + // 5. Aggressive LOD distance + // 6. Limit dynamic lights + // 7. Use forward rendering path (lighter on Intel integrated) + // 8. Reduce post-processing +} diff --git a/neo/darkages/DarkAgesGame.h b/neo/darkages/DarkAgesGame.h new file mode 100644 index 0000000000..9b809b7dc8 --- /dev/null +++ b/neo/darkages/DarkAgesGame.h @@ -0,0 +1,310 @@ +/* +=========================================================================== + +DOOM: The Dark Ages +Copyright (C) 2024 - Dark Ages Total Conversion + +Based on Doom 3 BFG Edition GPL Source Code +Copyright (C) 1993-2012 id Software LLC, a ZeniMax Media company. + +This file is part of DOOM: The Dark Ages. + +=========================================================================== +*/ + +#ifndef __DARKAGES_GAME_H__ +#define __DARKAGES_GAME_H__ + +// ============================================================================ +// DOOM: The Dark Ages - Core Game System +// Medieval FPS inspired by DOOM: The Dark Ages +// ============================================================================ + +#define DARKAGES_VERSION "1.0.0" +#define DARKAGES_GAME_NAME "DOOM: The Dark Ages" +#define DARKAGES_WINDOW_TITLE "DOOM: The Dark Ages" + +// ============================================================================ +// Game Constants +// ============================================================================ + +static const int DA_MAX_LEVELS = 25; +static const int DA_MAX_WEAPONS = 10; +static const int DA_MAX_ENEMIES_PER_LEVEL = 64; +static const int DA_MAX_ITEMS_PER_LEVEL = 128; +static const int DA_MAX_SECRETS_PER_LEVEL = 10; +static const int DA_MAX_OBJECTIVES = 8; +static const int DA_NUM_ACTS = 5; + +// Player constants +static const int DA_PLAYER_MAX_HEALTH = 200; +static const int DA_PLAYER_MAX_ARMOR = 200; +static const int DA_PLAYER_START_HEALTH = 100; +static const int DA_PLAYER_START_ARMOR = 0; +static const float DA_PLAYER_WALK_SPEED = 140.0f; +static const float DA_PLAYER_RUN_SPEED = 280.0f; +static const float DA_PLAYER_SPRINT_SPEED = 400.0f; +static const float DA_PLAYER_JUMP_HEIGHT = 48.0f; + +// Combat constants +static const float DA_MELEE_COMBO_WINDOW = 0.8f; +static const int DA_MAX_COMBO_HITS = 5; +static const float DA_COMBO_DAMAGE_MULT = 0.25f; +static const float DA_SHIELD_BLOCK_ARC = 60.0f; +static const float DA_SHIELD_BLOCK_MULT = 0.2f; +static const float DA_PARRY_WINDOW = 0.3f; +static const float DA_PARRY_DAMAGE_MULT = 2.0f; +static const float DA_BACKSTAB_MULT = 3.0f; + +// Stamina system +static const float DA_STAMINA_MAX = 100.0f; +static const float DA_STAMINA_REGEN_RATE = 15.0f; +static const float DA_STAMINA_SPRINT_COST = 20.0f; +static const float DA_STAMINA_ATTACK_COST = 10.0f; +static const float DA_STAMINA_BLOCK_COST = 5.0f; +static const float DA_STAMINA_DODGE_COST = 25.0f; + +// ============================================================================ +// Enumerations +// ============================================================================ + +enum darkAgesAct_t { + DA_ACT_FALLEN_KINGDOM = 0, + DA_ACT_DARK_LANDS, + DA_ACT_UNDERWORLD, + DA_ACT_CURSED_REALM, + DA_ACT_HELLS_DOMAIN, + DA_ACT_COUNT +}; + +enum darkAgesWeaponType_t { + DA_WEAPON_FISTS = 0, + DA_WEAPON_SWORD, + DA_WEAPON_MACE, + DA_WEAPON_AXE, + DA_WEAPON_FLAIL, + DA_WEAPON_CROSSBOW, + DA_WEAPON_THROWAXE, + DA_WEAPON_SHIELD, + DA_WEAPON_HELLSTAFF, + DA_WEAPON_GREATHAMMER, + DA_WEAPON_COUNT +}; + +enum darkAgesDifficulty_t { + DA_DIFFICULTY_SQUIRE = 0, + DA_DIFFICULTY_KNIGHT, + DA_DIFFICULTY_CHAMPION, + DA_DIFFICULTY_NIGHTMARE, + DA_DIFFICULTY_COUNT +}; + +enum darkAgesPlayerState_t { + DA_PSTATE_IDLE = 0, + DA_PSTATE_RUNNING, + DA_PSTATE_SPRINTING, + DA_PSTATE_ATTACKING, + DA_PSTATE_BLOCKING, + DA_PSTATE_DODGING, + DA_PSTATE_PARRYING, + DA_PSTATE_STAGGERED, + DA_PSTATE_DEAD +}; + +enum darkAgesComboType_t { + DA_COMBO_NONE = 0, + DA_COMBO_LIGHT_LIGHT, + DA_COMBO_LIGHT_HEAVY, + DA_COMBO_HEAVY_LIGHT, + DA_COMBO_HEAVY_HEAVY, + DA_COMBO_SPECIAL +}; + +// ============================================================================ +// Structures +// ============================================================================ + +struct darkAgesLevelInfo_t { + const char * name; + const char * mapFile; + const char * description; + int actNumber; + int levelNumber; + int numSecrets; + int estimatedMinutes; + bool hasBoss; + const char * bossType; + const char * nextMap; +}; + +struct darkAgesPlayerStats_t { + int totalKills; + int totalDeaths; + int secretsFound; + int totalSecrets; + float completionTime; + int comboMaxHits; + int parriesSuccessful; + int backstabs; + int itemsCollected; + float damageDealt; + float damageTaken; +}; + +struct darkAgesCombatState_t { + float stamina; + int comboCount; + float lastAttackTime; + float lastBlockTime; + float lastDodgeTime; + bool isBlocking; + bool isParrying; + bool isDodging; + darkAgesComboType_t currentCombo; +}; + +struct darkAgesUpgrade_t { + const char * name; + const char * description; + int cost; + int maxLevel; + int currentLevel; +}; + +// ============================================================================ +// Campaign Structure +// ============================================================================ + +static const darkAgesLevelInfo_t DA_CAMPAIGN[] = { + // ACT I: The Fallen Kingdom + { "The Burning Village", "maps/darkages/da01_burning_village", "Your village burns...", 0, 1, 3, 45, false, "", "maps/darkages/da02_castle_siege" }, + { "Castle Under Siege", "maps/darkages/da02_castle_siege", "Defend the castle...", 0, 2, 4, 60, false, "", "maps/darkages/da03_kings_crypt" }, + { "The King's Crypt", "maps/darkages/da03_kings_crypt", "Descend into the crypts...", 0, 3, 5, 50, false, "", "maps/darkages/da04_forest_of_shadows" }, + { "Forest of Shadows", "maps/darkages/da04_forest_of_shadows", "A cursed forest...", 0, 4, 6, 55, false, "", "maps/darkages/da05_mountain_pass" }, + { "The Mountain Pass", "maps/darkages/da05_mountain_pass", "Cross the mountain...", 0, 5, 4, 70, true, "monster_darkages_firedrake", "maps/darkages/da06_dark_cathedral" }, + + // ACT II: The Dark Lands + { "The Dark Cathedral", "maps/darkages/da06_dark_cathedral", "A corrupted cathedral...", 1, 6, 5, 65, false, "", "maps/darkages/da07_plague_town" }, + { "Plague Town", "maps/darkages/da07_plague_town", "A plagued town...", 1, 7, 4, 70, false, "", "maps/darkages/da08_iron_fortress" }, + { "The Iron Fortress", "maps/darkages/da08_iron_fortress", "A fortress of black iron...", 1, 8, 6, 75, false, "", "maps/darkages/da09_bone_wastes" }, + { "The Bone Wastes", "maps/darkages/da09_bone_wastes", "A desert of bones...", 1, 9, 5, 60, false, "", "maps/darkages/da10_siege_demon_lair" }, + { "Siege Demon's Lair", "maps/darkages/da10_siege_demon_lair", "Siege Demon lair...", 1, 10, 4, 80, true, "monster_darkages_siege_demon", "maps/darkages/da11_frozen_depths" }, + + // ACT III: The Underworld + { "The Frozen Depths", "maps/darkages/da11_frozen_depths", "Ice caverns...", 2, 11, 5, 55, false, "", "maps/darkages/da12_lava_forge" }, + { "The Lava Forge", "maps/darkages/da12_lava_forge", "An ancient forge...", 2, 12, 4, 65, false, "", "maps/darkages/da13_tomb_of_heroes" }, + { "Tomb of Fallen Heroes", "maps/darkages/da13_tomb_of_heroes", "Ancient tomb...", 2, 13, 7, 60, false, "", "maps/darkages/da14_crystal_caverns" }, + { "Crystal Caverns", "maps/darkages/da14_crystal_caverns", "Crystal-filled caverns...", 2, 14, 5, 70, false, "", "maps/darkages/da15_dragon_den" }, + { "The Dragon's Den", "maps/darkages/da15_dragon_den", "Dragon King's lair...", 2, 15, 4, 90, true, "monster_darkages_dragonking", "maps/darkages/da16_ruined_abbey" }, + + // ACT IV: The Cursed Realm + { "The Ruined Abbey", "maps/darkages/da16_ruined_abbey", "Fractured reality...", 3, 16, 5, 55, false, "", "maps/darkages/da17_blood_swamp" }, + { "The Blood Swamp", "maps/darkages/da17_blood_swamp", "Swamp of blood...", 3, 17, 4, 65, false, "", "maps/darkages/da18_shadow_maze" }, + { "The Shadow Maze", "maps/darkages/da18_shadow_maze", "Shifting maze...", 3, 18, 8, 75, false, "", "maps/darkages/da19_demon_arena" }, + { "The Demon Arena", "maps/darkages/da19_demon_arena", "Demonic colosseum...", 3, 19, 3, 80, false, "", "maps/darkages/da20_tower_of_despair" }, + { "Tower of Despair", "maps/darkages/da20_tower_of_despair", "Towering hellspire...", 3, 20, 6, 85, false, "", "maps/darkages/da21_gates_of_hell" }, + + // ACT V: Hell's Domain + { "Gates of Hell", "maps/darkages/da21_gates_of_hell", "The gates of Hell...", 4, 21, 5, 75, false, "", "maps/darkages/da22_river_of_souls" }, + { "River of Lost Souls", "maps/darkages/da22_river_of_souls", "River of souls...", 4, 22, 4, 65, false, "", "maps/darkages/da23_fortress_of_doom" }, + { "Fortress of Doom", "maps/darkages/da23_fortress_of_doom", "The Dark Lord's fortress...", 4, 23, 7, 90, false, "", "maps/darkages/da24_throne_of_darkness" }, + { "Throne of Darkness", "maps/darkages/da24_throne_of_darkness","The final throne...", 4, 24, 5, 100, true, "monster_darkages_darklord", "maps/darkages/da25_final_stand" }, + { "The Final Stand", "maps/darkages/da25_final_stand", "Hell collapses...", 4, 25, 10, 90, false, "", "" }, +}; + +static const int DA_NUM_LEVELS = sizeof(DA_CAMPAIGN) / sizeof(DA_CAMPAIGN[0]); + +// ============================================================================ +// Act Names +// ============================================================================ + +static const char * DA_ACT_NAMES[] = { + "Act I: The Fallen Kingdom", + "Act II: The Dark Lands", + "Act III: The Underworld", + "Act IV: The Cursed Realm", + "Act V: Hell's Domain" +}; + +// ============================================================================ +// Difficulty Settings +// ============================================================================ + +struct darkAgesDifficultySettings_t { + const char * name; + float enemyHealthMult; + float enemyDamageMult; + float playerDamageMult; + float enemySpeedMult; + float itemDropMult; + int extraEnemies; +}; + +static const darkAgesDifficultySettings_t DA_DIFFICULTIES[] = { + { "Squire", 0.6f, 0.5f, 1.5f, 0.8f, 1.5f, 0 }, + { "Knight", 1.0f, 1.0f, 1.0f, 1.0f, 1.0f, 0 }, + { "Champion", 1.5f, 1.5f, 0.8f, 1.2f, 0.7f, 4 }, + { "Nightmare", 2.5f, 2.0f, 0.5f, 1.5f, 0.5f, 8 }, +}; + +// ============================================================================ +// DarkAgesGame class +// Main game management class for the Dark Ages total conversion +// ============================================================================ + +class DarkAgesGame { +public: + static DarkAgesGame & Instance(); + + void Init(); + void Shutdown(); + + // Campaign management + void StartNewGame( darkAgesDifficulty_t difficulty ); + void LoadLevel( int levelIndex ); + void NextLevel(); + bool IsLevelComplete() const; + int GetCurrentLevel() const { return currentLevel; } + int GetCurrentAct() const; + const darkAgesLevelInfo_t * GetLevelInfo( int index ) const; + + // Difficulty + void SetDifficulty( darkAgesDifficulty_t diff ) { difficulty = diff; } + darkAgesDifficulty_t GetDifficulty() const { return difficulty; } + const darkAgesDifficultySettings_t * GetDifficultySettings() const; + + // Combat system + void UpdateCombat( float deltaTime ); + float CalculateMeleeDamage( float baseDamage, int comboCount ) const; + bool CheckParry( float attackTime ) const; + bool CheckBlock( float attackAngle ) const; + float GetStaminaCost( darkAgesPlayerState_t action ) const; + + // Stats tracking + void RecordKill(); + void RecordDeath(); + void RecordSecret(); + void RecordParry(); + void RecordBackstab(); + const darkAgesPlayerStats_t & GetStats() const { return stats; } + + // Save/Load + void SaveGame( const char * saveName ); + void LoadGame( const char * saveName ); + + // Performance + void OptimizeForHardware(); + void ApplyT460sOptimizations(); + +private: + DarkAgesGame(); + ~DarkAgesGame(); + + int currentLevel; + darkAgesDifficulty_t difficulty; + darkAgesPlayerStats_t stats; + darkAgesCombatState_t combatState; + bool isInitialized; +}; + +#endif /* !__DARKAGES_GAME_H__ */ diff --git a/neo/darkages/DarkAgesProgression.cpp b/neo/darkages/DarkAgesProgression.cpp new file mode 100644 index 0000000000..185241f173 --- /dev/null +++ b/neo/darkages/DarkAgesProgression.cpp @@ -0,0 +1,230 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Progression System Implementation + +=========================================================================== +*/ + +#include "DarkAgesProgression.h" +#include +#include + +// ============================================================================ +// DarkAgesProgression Implementation +// ============================================================================ + +DarkAgesProgression & DarkAgesProgression::Instance() { + static DarkAgesProgression instance; + return instance; +} + +DarkAgesProgression::DarkAgesProgression() : + soulEssences( 0 ), + totalStars( 0 ) +{ + memset( upgradeLevels, 0, sizeof( upgradeLevels ) ); + memset( levelStars, 0, sizeof( levelStars ) ); + memset( levelsCompleted, 0, sizeof( levelsCompleted ) ); +} + +void DarkAgesProgression::Init() { + soulEssences = 0; + totalStars = 0; + memset( upgradeLevels, 0, sizeof( upgradeLevels ) ); + memset( levelStars, 0, sizeof( levelStars ) ); + memset( levelsCompleted, 0, sizeof( levelsCompleted ) ); +} + +// ============================================================================ +// Soul Essences +// ============================================================================ + +void DarkAgesProgression::AddSoulEssences( int amount ) { + float soulGainMult = 1.0f + GetUpgradeValue( DA_UPG_SOUL_GAIN ); + soulEssences += (int)( amount * soulGainMult ); +} + +bool DarkAgesProgression::SpendSoulEssences( int amount ) { + if ( soulEssences < amount ) { + return false; + } + soulEssences -= amount; + return true; +} + +// ============================================================================ +// Upgrades +// ============================================================================ + +int DarkAgesProgression::GetUpgradeLevel( darkAgesUpgradeId_t id ) const { + if ( id < 0 || id >= DA_UPG_COUNT ) return 0; + return upgradeLevels[id]; +} + +bool DarkAgesProgression::CanPurchaseUpgrade( darkAgesUpgradeId_t id ) const { + if ( id < 0 || id >= DA_UPG_COUNT ) return false; + if ( upgradeLevels[id] >= DA_UPGRADES[id].maxLevel ) return false; + return soulEssences >= GetUpgradeCost( id ); +} + +int DarkAgesProgression::GetUpgradeCost( darkAgesUpgradeId_t id ) const { + if ( id < 0 || id >= DA_UPG_COUNT ) return 999999; + return DA_UPGRADES[id].baseCost + DA_UPGRADES[id].costPerLevel * upgradeLevels[id]; +} + +bool DarkAgesProgression::PurchaseUpgrade( darkAgesUpgradeId_t id ) { + if ( !CanPurchaseUpgrade( id ) ) { + return false; + } + + int cost = GetUpgradeCost( id ); + if ( !SpendSoulEssences( cost ) ) { + return false; + } + + upgradeLevels[id]++; + return true; +} + +float DarkAgesProgression::GetUpgradeValue( darkAgesUpgradeId_t id ) const { + if ( id < 0 || id >= DA_UPG_COUNT ) return 0.0f; + return DA_UPGRADES[id].baseValue * upgradeLevels[id]; +} + +// ============================================================================ +// Calculated Stats +// ============================================================================ + +float DarkAgesProgression::GetMeleeDamageMult() const { + return 1.0f + GetUpgradeValue( DA_UPG_MELEE_DAMAGE ); +} + +float DarkAgesProgression::GetRangedDamageMult() const { + return 1.0f + GetUpgradeValue( DA_UPG_RANGED_DAMAGE ); +} + +float DarkAgesProgression::GetMaxHealth() const { + return DA_PLAYER_MAX_HEALTH + GetUpgradeValue( DA_UPG_MAX_HEALTH ); +} + +float DarkAgesProgression::GetMaxArmor() const { + return DA_PLAYER_MAX_ARMOR + GetUpgradeValue( DA_UPG_MAX_ARMOR ); +} + +float DarkAgesProgression::GetMaxStamina() const { + return DA_STAMINA_MAX + GetUpgradeValue( DA_UPG_STAMINA_MAX ); +} + +float DarkAgesProgression::GetSprintSpeedMult() const { + return 1.0f + GetUpgradeValue( DA_UPG_SPRINT_SPEED ); +} + +float DarkAgesProgression::GetParryWindow() const { + return DA_PARRY_WINDOW + GetUpgradeValue( DA_UPG_PARRY_WINDOW ); +} + +float DarkAgesProgression::GetShieldBlockMult() const { + return DA_SHIELD_BLOCK_MULT - GetUpgradeValue( DA_UPG_SHIELD_STRENGTH ); +} + +float DarkAgesProgression::GetBackstabMult() const { + return DA_BACKSTAB_MULT + GetUpgradeValue( DA_UPG_BACKSTAB_DAMAGE ); +} + +float DarkAgesProgression::GetDamageResist() const { + return GetUpgradeValue( DA_UPG_DAMAGE_RESIST ); +} + +float DarkAgesProgression::GetStaminaRegenMult() const { + return 1.0f + GetUpgradeValue( DA_UPG_STAMINA_REGEN ); +} + +int DarkAgesProgression::GetGloryKillHeal() const { + return 25 + (int)GetUpgradeValue( DA_UPG_GLORY_KILL_HEAL ); +} + +// ============================================================================ +// Level Completion +// ============================================================================ + +void DarkAgesProgression::OnLevelComplete( int levelNumber, int kills, int secrets, int totalSecrets, float time ) { + if ( levelNumber < 0 || levelNumber >= DA_MAX_LEVELS ) return; + + levelsCompleted[levelNumber] = true; + + // Calculate stars (1-3) + int stars = 1; + + // Star for finding all secrets + if ( secrets >= totalSecrets ) { + stars++; + } + + // Star for fast completion (under estimated time) + const darkAgesLevelInfo_t * info = &DA_CAMPAIGN[levelNumber]; + if ( time < info->estimatedMinutes * 60.0f ) { + stars++; + } + + if ( stars > levelStars[levelNumber] ) { + totalStars += stars - levelStars[levelNumber]; + levelStars[levelNumber] = stars; + } + + // Soul essence rewards + int baseReward = 50 + levelNumber * 20; + int secretBonus = secrets * 25; + int starBonus = stars * 50; + AddSoulEssences( baseReward + secretBonus + starBonus ); +} + +// ============================================================================ +// Save/Load +// ============================================================================ + +void DarkAgesProgression::Save( const char * filename ) { + FILE * f = fopen( filename, "wb" ); + if ( f == NULL ) return; + + const char header[] = "DKPG"; + fwrite( header, 1, 4, f ); + + int version = 1; + fwrite( &version, sizeof(int), 1, f ); + + fwrite( &soulEssences, sizeof(int), 1, f ); + fwrite( &totalStars, sizeof(int), 1, f ); + fwrite( upgradeLevels, sizeof(int), DA_UPG_COUNT, f ); + fwrite( levelStars, sizeof(int), DA_MAX_LEVELS, f ); + fwrite( levelsCompleted, sizeof(bool), DA_MAX_LEVELS, f ); + + fclose( f ); +} + +void DarkAgesProgression::Load( const char * filename ) { + FILE * f = fopen( filename, "rb" ); + if ( f == NULL ) return; + + char header[4]; + fread( header, 1, 4, f ); + if ( header[0] != 'D' || header[1] != 'K' || header[2] != 'P' || header[3] != 'G' ) { + fclose( f ); + return; + } + + int version; + fread( &version, sizeof(int), 1, f ); + if ( version != 1 ) { + fclose( f ); + return; + } + + fread( &soulEssences, sizeof(int), 1, f ); + fread( &totalStars, sizeof(int), 1, f ); + fread( upgradeLevels, sizeof(int), DA_UPG_COUNT, f ); + fread( levelStars, sizeof(int), DA_MAX_LEVELS, f ); + fread( levelsCompleted, sizeof(bool), DA_MAX_LEVELS, f ); + + fclose( f ); +} diff --git a/neo/darkages/DarkAgesProgression.h b/neo/darkages/DarkAgesProgression.h new file mode 100644 index 0000000000..705d66fe11 --- /dev/null +++ b/neo/darkages/DarkAgesProgression.h @@ -0,0 +1,164 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Player Progression & Upgrade System +Soul Essences earned from kills power permanent upgrades + +=========================================================================== +*/ + +#ifndef __DARKAGES_PROGRESSION_H__ +#define __DARKAGES_PROGRESSION_H__ + +#include "DarkAgesGame.h" + +// ============================================================================ +// Upgrade Categories +// ============================================================================ + +enum darkAgesUpgradeCategory_t { + DA_UPGRADE_COMBAT = 0, + DA_UPGRADE_DEFENSE, + DA_UPGRADE_MOBILITY, + DA_UPGRADE_UTILITY, + DA_UPGRADE_CATEGORY_COUNT +}; + +enum darkAgesUpgradeId_t { + // Combat upgrades + DA_UPG_MELEE_DAMAGE = 0, + DA_UPG_COMBO_SPEED, + DA_UPG_COMBO_WINDOW, + DA_UPG_HEAVY_DAMAGE, + DA_UPG_BACKSTAB_DAMAGE, + DA_UPG_GLORY_KILL_HEAL, + DA_UPG_RANGED_DAMAGE, + DA_UPG_AMMO_CAPACITY, + + // Defense upgrades + DA_UPG_MAX_HEALTH, + DA_UPG_MAX_ARMOR, + DA_UPG_SHIELD_STRENGTH, + DA_UPG_PARRY_WINDOW, + DA_UPG_DAMAGE_RESIST, + DA_UPG_HEALTH_REGEN, + + // Mobility upgrades + DA_UPG_SPRINT_SPEED, + DA_UPG_DODGE_DISTANCE, + DA_UPG_STAMINA_MAX, + DA_UPG_STAMINA_REGEN, + DA_UPG_JUMP_HEIGHT, + + // Utility upgrades + DA_UPG_ITEM_MAGNET, + DA_UPG_SECRET_SENSE, + DA_UPG_SOUL_GAIN, + DA_UPG_ARMOR_EFFICIENCY, + + DA_UPG_COUNT +}; + +// ============================================================================ +// Upgrade Definitions +// ============================================================================ + +struct darkAgesUpgradeDef_t { + const char * name; + const char * description; + darkAgesUpgradeCategory_t category; + int maxLevel; + int baseCost; + int costPerLevel; + float baseValue; + float valuePerLevel; +}; + +static const darkAgesUpgradeDef_t DA_UPGRADES[] = { + // Combat + { "Melee Damage", "Increase melee damage by 10% per level", DA_UPGRADE_COMBAT, 5, 100, 50, 0.1f, 0.1f }, + { "Combo Speed", "Attack 8% faster in combos per level", DA_UPGRADE_COMBAT, 4, 150, 75, 0.08f, 0.08f }, + { "Combo Window", "Extend combo window by 0.1s per level", DA_UPGRADE_COMBAT, 3, 200, 100, 0.1f, 0.1f }, + { "Heavy Damage", "Heavy attacks deal 15% more damage", DA_UPGRADE_COMBAT, 5, 120, 60, 0.15f, 0.15f }, + { "Backstab Damage", "Backstab multiplier +0.5x per level", DA_UPGRADE_COMBAT, 4, 180, 90, 0.5f, 0.5f }, + { "Glory Kill Heal", "Heal 10 more HP per glory kill per level", DA_UPGRADE_COMBAT, 5, 100, 50, 10.0f, 10.0f }, + { "Ranged Damage", "Ranged weapons deal 10% more damage", DA_UPGRADE_COMBAT, 5, 130, 65, 0.1f, 0.1f }, + { "Ammo Capacity", "Increase max ammo by 20% per level", DA_UPGRADE_COMBAT, 4, 80, 40, 0.2f, 0.2f }, + + // Defense + { "Max Health", "Increase max health by 25 per level", DA_UPGRADE_DEFENSE, 5, 100, 50, 25.0f, 25.0f }, + { "Max Armor", "Increase max armor by 25 per level", DA_UPGRADE_DEFENSE, 5, 100, 50, 25.0f, 25.0f }, + { "Shield Strength", "Shield blocks 10% more damage per level", DA_UPGRADE_DEFENSE, 5, 120, 60, 0.1f, 0.1f }, + { "Parry Window", "Parry window +0.05s per level", DA_UPGRADE_DEFENSE, 4, 200, 100, 0.05f, 0.05f }, + { "Damage Resist", "Take 5% less damage per level", DA_UPGRADE_DEFENSE, 5, 150, 75, 0.05f, 0.05f }, + { "Health Regen", "Slowly regenerate HP (1/s per level)", DA_UPGRADE_DEFENSE, 3, 250, 125, 1.0f, 1.0f }, + + // Mobility + { "Sprint Speed", "Sprint 8% faster per level", DA_UPGRADE_MOBILITY, 4, 80, 40, 0.08f, 0.08f }, + { "Dodge Distance", "Dodge 15% further per level", DA_UPGRADE_MOBILITY, 3, 120, 60, 0.15f, 0.15f }, + { "Stamina Max", "Increase max stamina by 15 per level", DA_UPGRADE_MOBILITY, 5, 80, 40, 15.0f, 15.0f }, + { "Stamina Regen", "Stamina regenerates 15% faster per level", DA_UPGRADE_MOBILITY, 5, 100, 50, 0.15f, 0.15f }, + { "Jump Height", "Jump 10% higher per level", DA_UPGRADE_MOBILITY, 3, 100, 50, 0.1f, 0.1f }, + + // Utility + { "Item Magnet", "Pick up items from 50% further away", DA_UPGRADE_UTILITY, 3, 80, 40, 0.5f, 0.5f }, + { "Secret Sense", "Nearby secrets glow (range +50 per level)", DA_UPGRADE_UTILITY, 3, 150, 75, 50.0f, 50.0f }, + { "Soul Gain", "Earn 15% more soul essences per level", DA_UPGRADE_UTILITY, 5, 100, 50, 0.15f, 0.15f }, + { "Armor Efficiency", "Armor absorbs 10% more damage per level", DA_UPGRADE_UTILITY, 4, 120, 60, 0.1f, 0.1f }, +}; + +// ============================================================================ +// DarkAgesProgression class +// ============================================================================ + +class DarkAgesProgression { +public: + static DarkAgesProgression & Instance(); + + void Init(); + + // Soul Essences (currency) + int GetSoulEssences() const { return soulEssences; } + void AddSoulEssences( int amount ); + bool SpendSoulEssences( int amount ); + + // Upgrades + int GetUpgradeLevel( darkAgesUpgradeId_t id ) const; + bool CanPurchaseUpgrade( darkAgesUpgradeId_t id ) const; + int GetUpgradeCost( darkAgesUpgradeId_t id ) const; + bool PurchaseUpgrade( darkAgesUpgradeId_t id ); + float GetUpgradeValue( darkAgesUpgradeId_t id ) const; + + // Calculated stats + float GetMeleeDamageMult() const; + float GetRangedDamageMult() const; + float GetMaxHealth() const; + float GetMaxArmor() const; + float GetMaxStamina() const; + float GetSprintSpeedMult() const; + float GetParryWindow() const; + float GetShieldBlockMult() const; + float GetBackstabMult() const; + float GetDamageResist() const; + float GetStaminaRegenMult() const; + int GetGloryKillHeal() const; + + // Level completion + void OnLevelComplete( int levelNumber, int kills, int secrets, int totalSecrets, float time ); + int GetTotalStars() const { return totalStars; } + + // Save/Load + void Save( const char * filename ); + void Load( const char * filename ); + +private: + DarkAgesProgression(); + + int soulEssences; + int upgradeLevels[DA_UPG_COUNT]; + int totalStars; + int levelStars[DA_MAX_LEVELS]; + bool levelsCompleted[DA_MAX_LEVELS]; +}; + +#endif /* !__DARKAGES_PROGRESSION_H__ */ diff --git a/neo/darkages/DarkAgesRenderer.cpp b/neo/darkages/DarkAgesRenderer.cpp new file mode 100644 index 0000000000..0cd63104a3 --- /dev/null +++ b/neo/darkages/DarkAgesRenderer.cpp @@ -0,0 +1,183 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Renderer Implementation + +=========================================================================== +*/ + +#include "DarkAgesRenderer.h" +#include +#include + +// ============================================================================ +// DarkAgesRenderer Implementation +// ============================================================================ + +DarkAgesRenderer & DarkAgesRenderer::Instance() { + static DarkAgesRenderer instance; + return instance; +} + +DarkAgesRenderer::DarkAgesRenderer() : + currentSettings( &DA_RENDER_T460S ), + currentAtmosphere( &DA_ATMOSPHERE_ACT1 ), + resolutionScale( 1.0f ), + avgFrameTime( 8.33f ), + frameTimeIndex( 0 ), + targetFrameTime( 8.33f ) +{ + memset( frameTimeHistory, 0, sizeof( frameTimeHistory ) ); +} + +void DarkAgesRenderer::Init() { + // Default to T460s optimized preset + SetQualityPreset( DA_QUALITY_T460S_OPTIMIZED ); + SetActAtmosphere( 0 ); +} + +void DarkAgesRenderer::Shutdown() { +} + +// ============================================================================ +// Quality Settings +// ============================================================================ + +void DarkAgesRenderer::SetQualityPreset( darkAgesQualityPreset_t preset ) { + switch ( preset ) { + case DA_QUALITY_LOW: + currentSettings = &DA_RENDER_LOW; + break; + case DA_QUALITY_MEDIUM: + currentSettings = &DA_RENDER_MEDIUM; + break; + case DA_QUALITY_HIGH: + currentSettings = &DA_RENDER_HIGH; + break; + case DA_QUALITY_ULTRA: + currentSettings = &DA_RENDER_ULTRA; + break; + case DA_QUALITY_T460S_OPTIMIZED: + default: + currentSettings = &DA_RENDER_T460S; + break; + } + + targetFrameTime = 1000.0f / currentSettings->dynamicResTarget; + ApplySettings( *currentSettings ); +} + +void DarkAgesRenderer::ApplySettings( const darkAgesRenderSettings_t & settings ) { + // Apply shadow settings + // r_shadowMapSize -> settings.shadowMapSize + // r_maxShadowLights -> settings.maxShadowLights + // r_shadowDistance -> settings.shadowDistance + + // Apply lighting settings + // r_maxDynamicLights -> settings.maxDynamicLights + + // Apply particle settings + // r_maxParticles -> settings.maxParticles + + // Apply LOD settings + // r_lodDistance1 -> settings.lodDistance1 + + // Apply post-processing + // r_fxaa -> settings.fxaa + // r_bloom -> settings.bloom + // r_bloomIntensity -> settings.bloomIntensity + // r_motionBlur -> settings.motionBlur + + // Apply atmosphere + // r_fogEnable -> settings.fog + // r_fogDensity -> settings.fogDensity + + // Set dynamic resolution boundaries + if ( settings.dynamicResolution ) { + resolutionScale = 1.0f; + } +} + +// ============================================================================ +// Atmosphere +// ============================================================================ + +void DarkAgesRenderer::SetAtmosphere( const darkAgesAtmosphere_t & atmosphere ) { + currentAtmosphere = &atmosphere; + + // Apply fog + // r_fogColor -> atmosphere.fogColorR, G, B + // r_fogDensity -> atmosphere.fogDensity + // r_fogStart -> atmosphere.fogStart + // r_fogEnd -> atmosphere.fogEnd + + // Apply ambient light + // r_ambientColor -> atmosphere.ambientR, G, B + // r_ambientIntensity -> atmosphere.ambientIntensity + + // Apply color grading (post-process) + // r_saturation -> atmosphere.saturation + // r_contrast -> atmosphere.contrast + // r_brightness -> atmosphere.brightness + // r_colorTint -> atmosphere.colorTintR, G, B +} + +void DarkAgesRenderer::SetActAtmosphere( int actNumber ) { + if ( actNumber >= 0 && actNumber < DA_ACT_COUNT ) { + SetAtmosphere( *DA_ACT_ATMOSPHERES[actNumber] ); + } +} + +// ============================================================================ +// Dynamic Resolution +// ============================================================================ + +void DarkAgesRenderer::UpdateDynamicResolution( float frameTimeMs ) { + if ( currentSettings == NULL || !currentSettings->dynamicResolution ) { + return; + } + + // Store frame time in history + frameTimeHistory[frameTimeIndex] = frameTimeMs; + frameTimeIndex = ( frameTimeIndex + 1 ) % 120; + + // Calculate average frame time over last 120 frames + float total = 0.0f; + for ( int i = 0; i < 120; i++ ) { + total += frameTimeHistory[i]; + } + avgFrameTime = total / 120.0f; + + // Adjust resolution scale based on performance + float currentFPS = 1000.0f / avgFrameTime; + float targetFPS = currentSettings->dynamicResTarget; + + if ( currentFPS < targetFPS * 0.9f ) { + // Below target - decrease resolution + resolutionScale -= 0.02f; + if ( resolutionScale < currentSettings->dynamicResMin ) { + resolutionScale = currentSettings->dynamicResMin; + } + } else if ( currentFPS > targetFPS * 1.1f ) { + // Above target - increase resolution + resolutionScale += 0.01f; + if ( resolutionScale > currentSettings->dynamicResMax ) { + resolutionScale = currentSettings->dynamicResMax; + } + } +} + +// ============================================================================ +// Performance Monitoring +// ============================================================================ + +float DarkAgesRenderer::GetCurrentFPS() const { + if ( avgFrameTime <= 0.0f ) { + return 0.0f; + } + return 1000.0f / avgFrameTime; +} + +bool DarkAgesRenderer::IsAboveTargetFPS() const { + return GetCurrentFPS() >= currentSettings->dynamicResTarget; +} diff --git a/neo/darkages/DarkAgesRenderer.h b/neo/darkages/DarkAgesRenderer.h new file mode 100644 index 0000000000..89b6920d2f --- /dev/null +++ b/neo/darkages/DarkAgesRenderer.h @@ -0,0 +1,355 @@ +/* +=========================================================================== + +DOOM: The Dark Ages - Renderer Modifications +Optimized rendering pipeline for Intel HD 520 (120+ FPS target) +Dark medieval atmosphere rendering + +=========================================================================== +*/ + +#ifndef __DARKAGES_RENDERER_H__ +#define __DARKAGES_RENDERER_H__ + +// ============================================================================ +// Performance Targets +// ThinkPad T460s: Intel HD Graphics 520 +// Resolution: 1920x1080 (or dynamic resolution scaling) +// Target: 120+ FPS (8.33ms per frame budget) +// ============================================================================ + +// ============================================================================ +// Rendering Quality Presets +// ============================================================================ + +enum darkAgesQualityPreset_t { + DA_QUALITY_LOW = 0, + DA_QUALITY_MEDIUM, + DA_QUALITY_HIGH, + DA_QUALITY_ULTRA, + DA_QUALITY_T460S_OPTIMIZED, + DA_QUALITY_COUNT +}; + +struct darkAgesRenderSettings_t { + const char * presetName; + + // Resolution + int renderWidth; + int renderHeight; + bool dynamicResolution; + float dynamicResMin; + float dynamicResMax; + float dynamicResTarget; + + // Shadows + int shadowMapSize; + int maxShadowLights; + float shadowDistance; + bool softShadows; + bool stencilShadows; + + // Lighting + int maxDynamicLights; + bool ambientOcclusion; + int aoQuality; + bool volumetricLighting; + + // Effects + int maxParticles; + float particleLODDistance; + bool motionBlur; + bool bloom; + float bloomIntensity; + bool filmGrain; + float filmGrainIntensity; + + // Geometry + float lodDistance1; + float lodDistance2; + float lodDistance3; + int maxDecals; + + // Post-Processing + bool fxaa; + int fxaaQuality; + bool chromaticAberration; + bool vignette; + float vignetteIntensity; + + // Atmosphere + bool fog; + bool rain; + bool snow; + float fogDensity; + int weatherParticleCount; +}; + +// ============================================================================ +// T460s Optimized Preset (120+ FPS target) +// ============================================================================ + +static const darkAgesRenderSettings_t DA_RENDER_T460S = { + "T460s Optimized (120+ FPS)", + + // Resolution - use dynamic resolution around 70-100% + 1920, 1080, + true, 0.65f, 1.0f, 120.0f, + + // Shadows - minimal for performance + 512, 2, 512.0f, + false, false, + + // Lighting - reduced + 4, false, 0, false, + + // Effects - minimal particles, no expensive effects + 256, 256.0f, + false, true, 0.3f, + false, 0.0f, + + // Geometry - aggressive LOD + 128.0f, 256.0f, 512.0f, 32, + + // Post-Processing - lightweight FXAA only + true, 1, + false, true, 0.15f, + + // Atmosphere - lightweight + true, false, false, 0.003f, 0 +}; + +static const darkAgesRenderSettings_t DA_RENDER_LOW = { + "Low", + + 1280, 720, + false, 0.5f, 1.0f, 60.0f, + + 256, 1, 256.0f, + false, false, + + 2, false, 0, false, + + 128, 128.0f, + false, false, 0.0f, + false, 0.0f, + + 64.0f, 128.0f, 256.0f, 16, + + false, 0, + false, false, 0.0f, + + true, false, false, 0.005f, 0 +}; + +static const darkAgesRenderSettings_t DA_RENDER_MEDIUM = { + "Medium", + + 1920, 1080, + false, 0.7f, 1.0f, 60.0f, + + 1024, 4, 1024.0f, + true, false, + + 6, true, 1, false, + + 512, 512.0f, + false, true, 0.4f, + false, 0.0f, + + 256.0f, 512.0f, 1024.0f, 64, + + true, 2, + false, true, 0.2f, + + true, true, false, 0.002f, 256 +}; + +static const darkAgesRenderSettings_t DA_RENDER_HIGH = { + "High", + + 1920, 1080, + false, 0.8f, 1.0f, 60.0f, + + 2048, 8, 2048.0f, + true, true, + + 12, true, 2, true, + + 1024, 1024.0f, + true, true, 0.5f, + true, 0.02f, + + 512.0f, 1024.0f, 2048.0f, 128, + + true, 3, + true, true, 0.25f, + + true, true, true, 0.001f, 512 +}; + +static const darkAgesRenderSettings_t DA_RENDER_ULTRA = { + "Ultra", + + 1920, 1080, + false, 1.0f, 1.0f, 60.0f, + + 4096, 16, 4096.0f, + true, true, + + 24, true, 3, true, + + 2048, 2048.0f, + true, true, 0.6f, + true, 0.03f, + + 1024.0f, 2048.0f, 4096.0f, 256, + + true, 4, + true, true, 0.3f, + + true, true, true, 0.0005f, 1024 +}; + +// ============================================================================ +// Dark Ages Atmosphere System +// ============================================================================ + +struct darkAgesAtmosphere_t { + // Fog settings + float fogColorR; + float fogColorG; + float fogColorB; + float fogDensity; + float fogStart; + float fogEnd; + + // Ambient lighting + float ambientR; + float ambientG; + float ambientB; + float ambientIntensity; + + // Color grading + float saturation; + float contrast; + float brightness; + float colorTintR; + float colorTintG; + float colorTintB; + + // Weather + bool hasRain; + bool hasSnow; + bool hasAsh; + bool hasEmbers; + float weatherIntensity; +}; + +// Per-act atmospheres +static const darkAgesAtmosphere_t DA_ATMOSPHERE_ACT1 = { + // Fog: warm orange/brown (burning village) + 0.5f, 0.3f, 0.15f, 0.003f, 100.0f, 2000.0f, + // Ambient: dim warm + 0.15f, 0.1f, 0.08f, 0.3f, + // Color grading: desaturated, warm + 0.7f, 1.1f, 0.95f, 1.0f, 0.9f, 0.8f, + // Weather + false, false, true, true, 0.3f +}; + +static const darkAgesAtmosphere_t DA_ATMOSPHERE_ACT2 = { + // Fog: sickly green (plague lands) + 0.2f, 0.25f, 0.1f, 0.004f, 50.0f, 1500.0f, + // Ambient: very dim greenish + 0.08f, 0.12f, 0.06f, 0.25f, + // Color grading: green tint, low saturation + 0.6f, 1.2f, 0.9f, 0.8f, 1.0f, 0.7f, + // Weather + true, false, false, false, 0.2f +}; + +static const darkAgesAtmosphere_t DA_ATMOSPHERE_ACT3 = { + // Fog: cool blue (underground) + 0.1f, 0.15f, 0.3f, 0.005f, 20.0f, 1000.0f, + // Ambient: dark blue + 0.05f, 0.06f, 0.12f, 0.2f, + // Color grading: blue cold + 0.5f, 1.3f, 0.85f, 0.7f, 0.8f, 1.2f, + // Weather + false, true, false, false, 0.4f +}; + +static const darkAgesAtmosphere_t DA_ATMOSPHERE_ACT4 = { + // Fog: deep red/purple (cursed realm) + 0.3f, 0.05f, 0.15f, 0.004f, 30.0f, 1200.0f, + // Ambient: dark purple + 0.1f, 0.04f, 0.1f, 0.25f, + // Color grading: purple tint + 0.55f, 1.25f, 0.88f, 1.1f, 0.6f, 1.1f, + // Weather + false, false, true, false, 0.5f +}; + +static const darkAgesAtmosphere_t DA_ATMOSPHERE_ACT5 = { + // Fog: hellish red/orange + 0.5f, 0.1f, 0.0f, 0.003f, 50.0f, 3000.0f, + // Ambient: hellish glow + 0.2f, 0.05f, 0.02f, 0.35f, + // Color grading: extreme red + 0.4f, 1.4f, 0.92f, 1.3f, 0.5f, 0.3f, + // Weather + false, false, true, true, 0.8f +}; + +static const darkAgesAtmosphere_t * DA_ACT_ATMOSPHERES[] = { + &DA_ATMOSPHERE_ACT1, + &DA_ATMOSPHERE_ACT2, + &DA_ATMOSPHERE_ACT3, + &DA_ATMOSPHERE_ACT4, + &DA_ATMOSPHERE_ACT5 +}; + +// ============================================================================ +// DarkAgesRenderer class +// ============================================================================ + +class DarkAgesRenderer { +public: + static DarkAgesRenderer & Instance(); + + void Init(); + void Shutdown(); + + // Quality settings + void SetQualityPreset( darkAgesQualityPreset_t preset ); + void ApplySettings( const darkAgesRenderSettings_t & settings ); + const darkAgesRenderSettings_t * GetCurrentSettings() const { return currentSettings; } + + // Atmosphere + void SetAtmosphere( const darkAgesAtmosphere_t & atmosphere ); + void SetActAtmosphere( int actNumber ); + const darkAgesAtmosphere_t * GetCurrentAtmosphere() const { return currentAtmosphere; } + + // Dynamic resolution + void UpdateDynamicResolution( float frameTimeMs ); + float GetCurrentResolutionScale() const { return resolutionScale; } + + // Performance monitoring + float GetAverageFrameTime() const { return avgFrameTime; } + float GetCurrentFPS() const; + bool IsAboveTargetFPS() const; + +private: + DarkAgesRenderer(); + + const darkAgesRenderSettings_t * currentSettings; + const darkAgesAtmosphere_t * currentAtmosphere; + float resolutionScale; + float avgFrameTime; + float frameTimeHistory[120]; + int frameTimeIndex; + float targetFrameTime; +}; + +#endif /* !__DARKAGES_RENDERER_H__ */ diff --git a/neo/doomexe.vcxproj b/neo/doomexe.vcxproj index 6a7bcb4b1d..eb73f434d1 100644 --- a/neo/doomexe.vcxproj +++ b/neo/doomexe.vcxproj @@ -510,11 +510,21 @@ - + - + + + + + + + + + + + diff --git a/neo/framework/Licensee.h b/neo/framework/Licensee.h index 695faa4498..ed73ab1589 100644 --- a/neo/framework/Licensee.h +++ b/neo/framework/Licensee.h @@ -34,14 +34,19 @@ If you have questions concerning this license or the applicable additional terms =============================================================================== */ +#ifdef DARKAGES_BUILD +#define GAME_NAME "DOOM: The Dark Ages" // appears on window titles and errors +#define SAVE_PATH "\\id Software\\DOOM Dark Ages" +#define ENGINE_VERSION "DarkAges 1.0" // printed in console +#define BASE_GAMEDIR "darkages" +#define CONFIG_FILE "DarkAgesConfig.cfg" +#else #define GAME_NAME "DOOM 3: BFG Edition" // appears on window titles and errors #define SAVE_PATH "\\id Software\\DOOM 3 BFG" - #define ENGINE_VERSION "D3BFG 1" // printed in console - #define BASE_GAMEDIR "base" - #define CONFIG_FILE "D3BFGConfig.cfg" +#endif // see ASYNC_PROTOCOL_VERSION // use a different major for each game @@ -53,6 +58,12 @@ If you have questions concerning this license or the applicable additional terms #define RENDERDEMO_VERSION 3 // win32 info +#ifdef DARKAGES_BUILD +#define WIN32_CONSOLE_CLASS "DarkAges_WinConsole" +#define WIN32_WINDOW_CLASS_NAME "DarkAges" +#define WIN32_FAKE_WINDOW_CLASS_NAME "DarkAges_WGL_FAKE" +#else #define WIN32_CONSOLE_CLASS "D3BFG_WinConsole" #define WIN32_WINDOW_CLASS_NAME "D3BFG" #define WIN32_FAKE_WINDOW_CLASS_NAME "D3BFG_WGL_FAKE" +#endif diff --git a/neo/idlib/StrStatic.h b/neo/idlib/StrStatic.h index 15eb1129c5..cf724b09bc 100644 --- a/neo/idlib/StrStatic.h +++ b/neo/idlib/StrStatic.h @@ -88,35 +88,40 @@ class idStrStatic : public idStr { idStr() { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( b ); + idStr tmp( b ); + idStr::operator=( tmp ); } ID_INLINE explicit idStrStatic( const char c ) : idStr() { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( c ); + idStr tmp( c ); + idStr::operator=( tmp ); } ID_INLINE explicit idStrStatic( const int i ) : idStr() { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( i ); + idStr tmp( i ); + idStr::operator=( tmp ); } ID_INLINE explicit idStrStatic( const unsigned u ) : idStr() { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( u ); + idStr tmp( u ); + idStr::operator=( tmp ); } ID_INLINE explicit idStrStatic( const float f ) : idStr() { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( f ); + idStr tmp( f ); + idStr::operator=( tmp ); } private: diff --git a/neo/idlib/geometry/RenderMatrix.cpp b/neo/idlib/geometry/RenderMatrix.cpp index b15e702a28..0b34f5add4 100644 --- a/neo/idlib/geometry/RenderMatrix.cpp +++ b/neo/idlib/geometry/RenderMatrix.cpp @@ -1013,7 +1013,7 @@ idRenderMatrix::Inverse inverse( M ) = ( 1 / determinant( M ) ) * transpose( cofactor( M ) ) -This code is based on the code written by C�dric Lallain, published on "Cell Performance" +This code is based on the code written by Cédric Lallain, published on "Cell Performance" (by Mike Acton) and released under the BSD 3-Clause ("BSD New" or "BSD Simplified") license. https://code.google.com/p/cellperformance-snippets/ diff --git a/neo/idlib/math/Simd.cpp b/neo/idlib/math/Simd.cpp index 17fb4ed408..83688f1bef 100644 --- a/neo/idlib/math/Simd.cpp +++ b/neo/idlib/math/Simd.cpp @@ -128,6 +128,20 @@ long baseClocks = 0; #define TIME_TYPE int +#ifdef __GNUC__ + +#define StartRecordTime( start ) \ + { unsigned int lo, hi; \ + __asm__ __volatile__ ("cpuid\n\trdtsc" : "=a"(lo), "=d"(hi) :: "ebx", "ecx"); \ + start = (int)lo; } + +#define StopRecordTime( end ) \ + { unsigned int lo, hi; \ + __asm__ __volatile__ ("cpuid\n\trdtsc" : "=a"(lo), "=d"(hi) :: "ebx", "ecx"); \ + end = (int)lo; } + +#else // _MSC_VER + #pragma warning(disable : 4731) // frame pointer register 'ebx' modified by inline assembly code long saved_ebx = 0; @@ -150,6 +164,8 @@ long saved_ebx = 0; __asm xor eax, eax \ __asm cpuid +#endif + #define GetBest( start, end, best ) \ if ( !best || end - start < best ) { \ diff --git a/neo/idlib/sys/sys_defines.h b/neo/idlib/sys/sys_defines.h index b20e61694f..022ed301ec 100644 --- a/neo/idlib/sys/sys_defines.h +++ b/neo/idlib/sys/sys_defines.h @@ -95,9 +95,15 @@ If you have questions concerning this license or the applicable additional terms #define BUILD_STRING "win-" CPUSTRING #define BUILD_OS_ID 0 +#ifdef __GNUC__ +#define ALIGN16( x ) x __attribute__((aligned(16))) +#define ALIGNTYPE16 __attribute__((aligned(16))) +#define ALIGNTYPE128 __attribute__((aligned(128))) +#else #define ALIGN16( x ) __declspec(align(16)) x #define ALIGNTYPE16 __declspec(align(16)) #define ALIGNTYPE128 __declspec(align(128)) +#endif #define FORMAT_PRINTF( x ) #define PATHSEPARATOR_STR "\\" @@ -105,13 +111,20 @@ If you have questions concerning this license or the applicable additional terms #define NEWLINE "\r\n" #define ID_INLINE inline +#ifdef __GNUC__ +#define ID_FORCE_INLINE __attribute__((always_inline)) inline +#else #define ID_FORCE_INLINE __forceinline +#endif // lint complains that extern used with definition is a hazard, but it // has the benefit (?) of making it illegal to take the address of the function #ifdef _lint #define ID_INLINE_EXTERN inline -#define ID_FORCE_INLINE_EXTERN __forceinline +#define ID_FORCE_INLINE_EXTERN ID_FORCE_INLINE +#elif defined(__GNUC__) +#define ID_INLINE_EXTERN inline +#define ID_FORCE_INLINE_EXTERN inline #else #define ID_INLINE_EXTERN extern inline #define ID_FORCE_INLINE_EXTERN extern __forceinline @@ -165,34 +178,33 @@ bulk of the codebase, so it is the best place for analyze pragmas. #if defined( ID_WIN32 ) +#ifdef _MSC_VER // disable some /analyze warnings here -#pragma warning( disable: 6255 ) // warning C6255: _alloca indicates failure by raising a stack overflow exception. Consider using _malloca instead. (Note: _malloca requires _freea.) -#pragma warning( disable: 6262 ) // warning C6262: Function uses '36924' bytes of stack: exceeds /analyze:stacksize'32768'. Consider moving some data to heap +#pragma warning( disable: 6255 ) // warning C6255: _alloca indicates failure by raising a stack overflow exception. +#pragma warning( disable: 6262 ) // warning C6262: Function uses too much stack #pragma warning( disable: 6326 ) // warning C6326: Potential comparison of a constant with another constant - -#pragma warning( disable: 6031 ) // warning C6031: Return value ignored -// this warning fires whenever you have two calls to new in a function, but we assume new never fails, so it is not relevant for us -#pragma warning( disable: 6211 ) // warning C6211: Leaking memory 'staticModel' due to an exception. Consider using a local catch block to clean up memory - -// we want to fix all these at some point... -#pragma warning( disable: 6246 ) // warning C6246: Local declaration of 'es' hides declaration of the same name in outer scope. For additional information, see previous declaration at line '969' of 'w:\tech5\rage\game\ai\fsm\fsm_combat.cpp': Lines: 969 -#pragma warning( disable: 6244 ) // warning C6244: Local declaration of 'viewList' hides previous declaration at line '67' of 'w:\tech5\engine\renderer\rendertools.cpp' - -// win32 needs this, but 360 doesn't -#pragma warning( disable: 6540 ) // warning C6540: The use of attribute annotations on this function will invalidate all of its existing __declspec annotations [D:\tech5\engine\engine-10.vcxproj] - +#pragma warning( disable: 6031 ) // warning C6031: Return value ignored +#pragma warning( disable: 6211 ) // warning C6211: Leaking memory due to an exception +#pragma warning( disable: 6246 ) // warning C6246: Local declaration hides outer scope +#pragma warning( disable: 6244 ) // warning C6244: Local declaration hides previous declaration +#pragma warning( disable: 6540 ) // warning C6540: attribute annotations // checking format strings catches a LOT of errors #include #define VERIFY_FORMAT_STRING [SA_FormatString(Style="printf")] - // We need to inform the compiler that Error() and FatalError() will // never return, so any conditions that leeds to them being called are // guaranteed to be false in the following code #define NO_RETURN __declspec(noreturn) -#endif +#else // __GNUC__ (MinGW) +#define VERIFY_FORMAT_STRING +#define NO_RETURN __attribute__((noreturn)) +#define __analysis_assume(x) +#endif // _MSC_VER + +#endif // ID_WIN32 // I don't want to disable "warning C6031: Return value ignored" from /analyze // but there are several cases with sprintf where we pre-initialized the variables diff --git a/neo/idlib/sys/sys_includes.h b/neo/idlib/sys/sys_includes.h index 9aea3ff36c..a31396396f 100644 --- a/neo/idlib/sys/sys_includes.h +++ b/neo/idlib/sys/sys_includes.h @@ -59,13 +59,19 @@ If you have questions concerning this license or the applicable additional terms #endif /* !GAME_DLL */ #endif /* !_D3SDK */ +#ifdef _MSC_VER #include // needed for intrinsics like _mm_setzero_si28 +#else +#include +#endif +#ifdef _MSC_VER #pragma warning(disable : 4100) // unreferenced formal parameter #pragma warning(disable : 4127) // conditional expression is constant #pragma warning(disable : 4244) // conversion to smaller type, possible loss of data #pragma warning(disable : 4714) // function marked as __forceinline not inlined #pragma warning(disable : 4996) // unsafe string operations +#endif #include // no malloc.h on mac or unix #include // for qgl.h diff --git a/neo/idlib/sys/sys_mingw_compat.h b/neo/idlib/sys/sys_mingw_compat.h new file mode 100644 index 0000000000..dca476ec6f --- /dev/null +++ b/neo/idlib/sys/sys_mingw_compat.h @@ -0,0 +1,58 @@ +/* +=========================================================================== +MinGW Compatibility Header for DOOM 3 BFG / Dark Ages +Provides compatibility shims for MSVC-specific constructs when building +with MinGW (GCC for Windows cross-compilation). +=========================================================================== +*/ +#ifndef SYS_MINGW_COMPAT_H +#define SYS_MINGW_COMPAT_H + +#if defined(__GNUC__) && defined(_WIN32) + +// MinGW defines _WIN32 but doesn't have MSVC-specific features + +// Alignment +#undef ALIGN16 +#undef ALIGNTYPE16 +#undef ALIGNTYPE128 +#define ALIGN16( x ) x __attribute__((aligned(16))) +#define ALIGNTYPE16 __attribute__((aligned(16))) +#define ALIGNTYPE128 __attribute__((aligned(128))) + +// Inlining +#undef ID_FORCE_INLINE +#undef ID_FORCE_INLINE_EXTERN +#define ID_FORCE_INLINE __attribute__((always_inline)) inline +#define ID_FORCE_INLINE_EXTERN extern __attribute__((always_inline)) inline + +// No-return +#undef NO_RETURN +#define NO_RETURN __attribute__((noreturn)) + +// Format string verification (no-op on MinGW) +#undef VERIFY_FORMAT_STRING +#define VERIFY_FORMAT_STRING + +// Suppress MSVC #pragma warning (GCC ignores unknown pragmas with -Wno-unknown-pragmas) + +// MSVC intrinsics compatibility +#ifndef _MSC_VER +#define __analysis_assume(x) +#endif + +// _alloca on MinGW is alloca +#ifndef _alloca +#include +#define _alloca alloca +#endif + +// UINT_PTR for MinGW +#ifndef UINT_PTR +#include +#define UINT_PTR uintptr_t +#endif + +#endif // __GNUC__ && _WIN32 + +#endif // SYS_MINGW_COMPAT_H diff --git a/neo/idlib/sys/sys_types.h b/neo/idlib/sys/sys_types.h index 11acbf24b1..c5f9561b07 100644 --- a/neo/idlib/sys/sys_types.h +++ b/neo/idlib/sys/sys_types.h @@ -144,6 +144,8 @@ ID_INLINE void WriteIndexPair( triIndex_t * dest, const triIndex_t a, const triI #if defined(_DEBUG) || defined(_lint) #define NODEFAULT default: assert( 0 ) +#elif defined(__GNUC__) +#define NODEFAULT default: __builtin_unreachable() #else #define NODEFAULT default: __assume( 0 ) #endif diff --git a/neo/idlib/sys/win32/win_thread.cpp b/neo/idlib/sys/win32/win_thread.cpp index 1f1c2b5a71..b49a947aa4 100644 --- a/neo/idlib/sys/win32/win_thread.cpp +++ b/neo/idlib/sys/win32/win_thread.cpp @@ -53,6 +53,7 @@ void Sys_SetThreadName( DWORD threadID, const char * name ) { info.dwThreadID = threadID; info.dwFlags = 0; +#ifdef _MSC_VER __try { RaiseException( MS_VC_EXCEPTION, 0, sizeof(info)/sizeof(DWORD), (const ULONG_PTR *)&info ); } @@ -60,6 +61,10 @@ void Sys_SetThreadName( DWORD threadID, const char * name ) { __except( GetExceptionCode() == MS_VC_EXCEPTION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH ) { info.dwFlags = 0; } +#else + // MinGW doesn't support SEH, silently ignore + (void)info; +#endif } /* @@ -82,7 +87,7 @@ uintptr_t Sys_CreateThread( xthread_t function, void *parms, xthreadPriority pri // Without this flag the 'dwStackSize' parameter to CreateThread specifies the "Stack Commit Size" // and the "Stack Reserve Size" is set to the value specified at link-time. // With this flag the 'dwStackSize' parameter to CreateThread specifies the "Stack Reserve Size" - // and the �Stack Commit Size� is set to the value specified at link-time. + // and the “Stack Commit Size” is set to the value specified at link-time. // For various reasons (some of which historic) we reserve a large amount of stack space in the // project settings. By setting this flag and by specifying 64 kB for the "Stack Commit Size" in // the project settings we can create new threads with a much smaller reserved (and committed) diff --git a/neo/renderer/AutoRenderBink.cpp b/neo/renderer/AutoRenderBink.cpp index b9c50a3a11..551e410ebf 100644 --- a/neo/renderer/AutoRenderBink.cpp +++ b/neo/renderer/AutoRenderBink.cpp @@ -28,5 +28,5 @@ If you have questions concerning this license or the applicable additional terms #pragma hdrstop #include "../idlib/precompiled.h" #include "tr_local.h" -#include "..\sound\snd_local.h" +#include "../sound/snd_local.h" diff --git a/neo/renderer/OpenGL/qgl.h b/neo/renderer/OpenGL/qgl.h index 79afac3aff..89f24cfc26 100644 --- a/neo/renderer/OpenGL/qgl.h +++ b/neo/renderer/OpenGL/qgl.h @@ -33,7 +33,11 @@ If you have questions concerning this license or the applicable additional terms #define __QGL_H__ +#ifdef __GNUC__ +#include +#else #include +#endif #ifndef APIENTRY diff --git a/neo/renderer/jpeg-6/jload.cpp b/neo/renderer/jpeg-6/jload.cpp index 12aea4f4e9..e0f74b0af7 100644 --- a/neo/renderer/jpeg-6/jload.cpp +++ b/neo/renderer/jpeg-6/jload.cpp @@ -1,6 +1,6 @@ #include "../Shared/Shared.h" -#include "..\Common\Common.h" +#include "../Common/Common.h" /* * Include file for users of JPEG library. diff --git a/neo/sound/snd_local.h b/neo/sound/snd_local.h index ee7c1b0367..e4ef2561b4 100644 --- a/neo/sound/snd_local.h +++ b/neo/sound/snd_local.h @@ -82,8 +82,8 @@ typedef enum { #define OPERATION_SET 1 +#ifdef _MSC_VER #include - #include #include #include @@ -91,6 +91,9 @@ typedef enum { #include "XAudio2/XA2_SoundSample.h" #include "XAudio2/XA2_SoundVoice.h" #include "XAudio2/XA2_SoundHardware.h" +#else +// MinGW stub - XAudio2 not available, sound will use OpenAL fallback +#endif diff --git a/neo/sys/snapshot_jobs.h b/neo/sys/snapshot_jobs.h new file mode 120000 index 0000000000..dd13f9b234 --- /dev/null +++ b/neo/sys/snapshot_jobs.h @@ -0,0 +1 @@ +Snapshot_Jobs.h \ No newline at end of file diff --git a/neo/sys/win32/darkages.rc b/neo/sys/win32/darkages.rc new file mode 100644 index 0000000000..971b1591e0 --- /dev/null +++ b/neo/sys/win32/darkages.rc @@ -0,0 +1,39 @@ +// ============================================================================ +// DOOM: The Dark Ages - Windows Resource File +// Embeds the game icon and version info into the EXE +// ============================================================================ + +#include + +// Application Icon +IDI_ICON1 ICON "..\\..\\..\\darkages\\icon\\darkages.ico" + +// Version Information +VS_VERSION_INFO VERSIONINFO +FILEVERSION 1,0,0,0 +PRODUCTVERSION 1,0,0,0 +FILEFLAGSMASK VS_FFI_FILEFLAGSMASK +FILEFLAGS 0 +FILEOS VOS_NT_WINDOWS32 +FILETYPE VFT_APP +FILESUBTYPE VFT2_UNKNOWN +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "CompanyName", "Dark Ages Team\0" + VALUE "FileDescription", "DOOM: The Dark Ages - Medieval FPS\0" + VALUE "FileVersion", "1.0.0.0\0" + VALUE "InternalName", "DarkAges\0" + VALUE "LegalCopyright", "Based on DOOM 3 BFG Edition GPL Source Code. Copyright (C) id Software LLC.\0" + VALUE "OriginalFilename", "DarkAges.exe\0" + VALUE "ProductName", "DOOM: The Dark Ages\0" + VALUE "ProductVersion", "1.0.0.0\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0409, 0x04B0 + END +END diff --git a/neo/sys/win32/rc/darkages.rc b/neo/sys/win32/rc/darkages.rc new file mode 100644 index 0000000000..f094971942 --- /dev/null +++ b/neo/sys/win32/rc/darkages.rc @@ -0,0 +1,61 @@ +// ============================================================================ +// DOOM: The Dark Ages - Windows Resource File +// Replaces the default DOOM 3 BFG icon with Dark Ages icon +// ============================================================================ + +#include "doom_resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +#include "afxres.h" +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +///////////////////////////////////////////////////////////////////////////// +// Icon +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON1 ICON "res\\darkages.ico" + +///////////////////////////////////////////////////////////////////////////// +// Version + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,0 + PRODUCTVERSION 1,0,0,0 + FILEFLAGSMASK 0x17L +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x4L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Dark Ages Team" + VALUE "FileDescription", "DOOM: The Dark Ages" + VALUE "FileVersion", "1, 0, 0, 0" + VALUE "InternalName", "DarkAges" + VALUE "LegalCopyright", "Based on DOOM 3 BFG Edition GPL Source Code (C) id Software LLC" + VALUE "OriginalFilename", "DarkAges.exe" + VALUE "ProductName", "DOOM: The Dark Ages" + VALUE "ProductVersion", "1, 0, 0, 0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + +#endif // English (United States) resources diff --git a/neo/sys/win32/rc/res/darkages.ico b/neo/sys/win32/rc/res/darkages.ico new file mode 100644 index 0000000000..bc8f41442a Binary files /dev/null and b/neo/sys/win32/rc/res/darkages.ico differ