From 47d2a8d27fd3dc2e94343ec428f238b80874f50e Mon Sep 17 00:00:00 2001 From: Daniel Gibson Date: Wed, 17 Jul 2024 22:38:00 +0200 Subject: [PATCH] Integrate Perfected Doom3 into build system and fix build --- CMakeLists.txt | 4 +-- README.md | 62 ++++----------------------------------------- d3xp/Item.cpp | 4 +-- d3xp/Projectile.cpp | 4 ++- 4 files changed, 12 insertions(+), 62 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27a0a6f..40198c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,11 +2,11 @@ cmake_minimum_required(VERSION 2.8...3.22 FATAL_ERROR) project(dhewm3sdk) option(BASE "Build the base (game/) game code" ON) -set(BASE_NAME "sikkmod" CACHE STRING "Name of the mod built from game/ (will result in \${BASE_NAME}.dll)") +set(BASE_NAME "perfected" CACHE STRING "Name of the mod built from game/ (will result in \${BASE_NAME}.dll)") set(BASE_DEFS "GAME_DLL" CACHE STRING "Compiler definitions for the mod built from game/") option(D3XP "Build the d3xp/ game code" ON) -set(D3XP_NAME "sikkmodd3xp" CACHE STRING "Name of the mod built from d3xp/ (will result in \${D3XP_NAME}.dll)") +set(D3XP_NAME "perfected_roe" CACHE STRING "Name of the mod built from d3xp/ (will result in \${D3XP_NAME}.dll)") set(D3XP_DEFS "GAME_DLL;_D3XP;CTF" CACHE STRING "Compiler definitions for the mod built from d3xp/") option(ONATIVE "Optimize for the host CPU" OFF) diff --git a/README.md b/README.md index 16b0078..f398ab9 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,9 @@ -# Sikkmod +# Perfected Doom 3 -**Short description from the original Sikkmod 1.2 README:** +The source code to build the game DLLs for both Perfected Doom 3 and Perfected Doom 3 RoE for dhewm3. -Sikkmod is a general enhancement mod for id Software's 2004 FPS: Doom 3. Its main -purposes are to update visuals of Doom 3 to a more modern level and to allow the user -to customize various aspects of the game to suit their preferred styles all while -maintaining the core mechanics and aesthetics originally put in by id Software. +Thanks to *VGames* for releasing the source under GPL! -The mod also includes a number of fixes to and better organization of stock files in order -to create a clean and more stable base for future mods. +You can download the mod itself at https://www.moddb.com/mods/perfected-doom-3-version-500/downloads ----- - -This is a dhewm3 port of Sikkmod v1.2 for the base game and v1.1 for Resurrection of Evil (d3xp; -apparently there was no Sikkmod v1.2 for Resurrection of Evil). - -You can get the game data at https://www.moddb.com/mods/sikkmod/downloads/sikkmod-v12 -and https://www.moddb.com/mods/sikkmod/downloads/sikkmod-v11-roe - -## License - -For a long time it was unclear whether the Sikkmod C++ source could be released under GPL, because -Sikkpin disappeared from the scene many years ago and I wasn't able to contact him to ask for permission. - -Luckily it turned out that *eezstreet* **did** ask him for permission back in 2011, soon after the -Doom3 source code was released under GPL, see https://github.com/dhewm/dhewm3/issues/120#issuecomment-1555662168 - -I'll quote the mail exchange here: - -*Eezstreet wrote:* -> **From:** *(eezstreet's mail address)* -> **To:** *(sikkpin's mail address)* -> **Subject:** using sikkmod src with doom3.gpl -> **Date:** Fri, 25 Nov 2011 10:34:32 -0500 -> -> I was wondering if it was okay to use sikkmod as a base in my doom3.gpl project? The visuals are -> extremely pleasing and other features (picking up physics objects for example) would be handy. - -*Sikkpin's reply:* -> **To:** *(eezstreet's mail address)* -> -> Yeah, of course. The only stipulation is that anything that is being used from the mod that is my -> work can not be sold or used in any commercial product. Also, keep in mind that there are some -> things in there that are not my own so you would need to get permission from the respective authors -> (check the readme). And one last thing, there's a lot in there that does not fall under the gpl -> and can not be included legally. Basically, the only stuff I can legally give your permission to -> use is the code and the shadrs, everything else (scripts, defs, sounds, textures, etc.) that aren't -> completely custom can't be used. -> -> Feel free to contact me again if you have any questions. -> -> -> Cheers, -> -> Sikk - -So the C++ source code (found here) and the shaders may be used under GPL, but the game data can't. - -Furthermore, Sikkpin would apparently prefer if his work wasn't used in commercial products (even -though the GPL allows that), so please be nice and respect his wish :-) +**Note** that you should **rename the `Perfected/` game directory to `perfected/`**, and **`Perfected_ROE` to `perfected_roe`**, because Doom3 doesn't like upper-case characters in mod directories, especially on operating systems that are case-sensitive, like Linux. diff --git a/d3xp/Item.cpp b/d3xp/Item.cpp index 2adc34c..338be77 100644 --- a/d3xp/Item.cpp +++ b/d3xp/Item.cpp @@ -36,6 +36,8 @@ If you have questions concerning this license or the applicable additional terms #include "Item.h" +#define WEAPON_COUNT_STOP 2 // doomtrinity-dual weapon + /* =============================================================================== @@ -750,8 +752,6 @@ bool idItemPowerup::GiveToPlayer( idPlayer *player ) { #ifdef CTF -#define WEAPON_COUNT_STOP 2 // doomtrinity-dual weapon - /* =============================================================================== diff --git a/d3xp/Projectile.cpp b/d3xp/Projectile.cpp index 105bac9..91dcec6 100644 --- a/d3xp/Projectile.cpp +++ b/d3xp/Projectile.cpp @@ -1000,7 +1000,9 @@ void idProjectile::Explode( const trace_t &collision, idEntity *ignore ) { } // sikk---> Entities hit directly by a projectile will no longer be ignored by splash damage PD3 // PostEventSec( &EV_RadiusDamage, delay, ignore ); - PostEventSec( &EV_RadiusDamage, delay, NULL ); + //PostEventSec( &EV_RadiusDamage, delay, NULL ); + // DG: the previous line didn't compile, I hope this is equivalent to the original intention + PostEventSec( &EV_RadiusDamage, delay ); } else { // Event_RadiusDamage( ignore ); Event_RadiusDamage( NULL );