From fb9601b9eb30c942b6337a8954aa2df429a7a3b3 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 28 Jan 2009 08:48:52 +0000 Subject: [PATCH] - Added APROP_Dropped actor property. - Fixed: The compatmode CVAR needs CVAR_NOINITCALL so that the compatibility flags don't get reset each start. - Fixed: compatmode Doom(strict) was missing COMPAT_CROSSDROPOFF SVN r1376 (trunk) --- docs/rh-log.txt | 18 ++++++++++++++++++ src/d_main.cpp | 4 ++-- src/p_acs.cpp | 45 +++++++++++++++++++++++++++------------------ 3 files changed, 47 insertions(+), 20 deletions(-) diff --git a/docs/rh-log.txt b/docs/rh-log.txt index b2a242e9d..8dede0f27 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,3 +1,9 @@ +January 28, 2009 (Changes by Graf Zahl) +- Added APROP_Dropped actor property. +- Fixed: The compatmode CVAR needs CVAR_NOINITCALL so that the compatibility + flags don't get reset each start. +- Fixed: compatmode Doom(strict) was missing COMPAT_CROSSDROPOFF + January 27, 2009 - More GCC warning removal, the most egregious of which was the security vulnerability "format not a string literal and no format arguments". @@ -12,6 +18,18 @@ January 26, 2009 for the normal voice processing. January 25, 2009 (Changes by Graf Zahl) +- fixed some issues with P_FindFloorCeiling's coordinate processing. +- added a new compatmode CVAR which allows setting some generic compatibility + flag combinations: + Doom: sets the options needed to make most Doom.exe compatible map play without + errors. + Doom (strict): Same as above but sets a few more options. Please note that this + does not mean full Doom.exe behavior emulation. + Boom: Sets all options that consider differences between ZDoom and Boom. + ZDoom 2.0.63: Sets only the COMPATF_SOUNDTARGET option which is needed for + many older ZDoom maps. +- added new COMPAT_CROSSDROPOFF option to block monsters from being pushed over + dropoffs by damage kickback. - fixed: AFastProjectile::Tick must call Effect only 8 times per tic, regardless of the amount of steps taken. - fixed: momentum checks in AFastProjectile did not use absolute values. diff --git a/src/d_main.cpp b/src/d_main.cpp index f2b825710..7599cdde4 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -523,7 +523,7 @@ CUSTOM_CVAR (Int, compatflags, 0, CVAR_ARCHIVE|CVAR_SERVERINFO) i_compatflags = GetCompatibility(self); } -CUSTOM_CVAR(Int, compatmode, 0, CVAR_ARCHIVE|CVAR_SERVERINFO) +CUSTOM_CVAR(Int, compatmode, 0, CVAR_ARCHIVE|CVAR_SERVERINFO|CVAR_NOINITCALL) { int v; @@ -542,7 +542,7 @@ CUSTOM_CVAR(Int, compatmode, 0, CVAR_ARCHIVE|CVAR_SERVERINFO) case 2: // same as 1 but stricter (NO_PASSMOBJ and INVISIBILITY are also set) v = COMPATF_SHORTTEX|COMPATF_STAIRINDEX|COMPATF_USEBLOCKING|COMPATF_NODOORLIGHT| COMPATF_TRACE|COMPATF_MISSILECLIP|COMPATF_SOUNDTARGET|COMPATF_NO_PASSMOBJ|COMPATF_LIMITPAIN| - COMPATF_DEHHEALTH|COMPATF_INVISIBILITY; + COMPATF_DEHHEALTH|COMPATF_INVISIBILITY|COMPATF_CROSSDROPOFF; break; case 3: diff --git a/src/p_acs.cpp b/src/p_acs.cpp index 3769328f4..8d56ebda5 100644 --- a/src/p_acs.cpp +++ b/src/p_acs.cpp @@ -2157,24 +2157,28 @@ void DLevelScript::DoSetFont (int fontnum) } } -#define APROP_Health 0 -#define APROP_Speed 1 -#define APROP_Damage 2 -#define APROP_Alpha 3 -#define APROP_RenderStyle 4 -#define APROP_Ambush 10 -#define APROP_Invulnerable 11 -#define APROP_JumpZ 12 // [GRB] -#define APROP_ChaseGoal 13 -#define APROP_Frightened 14 -#define APROP_Gravity 15 -#define APROP_Friendly 16 -#define APROP_SpawnHealth 17 -#define APROP_SeeSound 5 // Sounds can only be set, not gotten -#define APROP_AttackSound 6 -#define APROP_PainSound 7 -#define APROP_DeathSound 8 -#define APROP_ActiveSound 9 +enum +{ + APROP_Health = 0, + APROP_Speed = 1, + APROP_Damage = 2, + APROP_Alpha = 3, + APROP_RenderStyle = 4, + APROP_SeeSound = 5, // Sounds can only be set, not gotten + APROP_AttackSound = 6, + APROP_PainSound = 7, + APROP_DeathSound = 8, + APROP_ActiveSound = 9, + APROP_Ambush = 10, + APROP_Invulnerable = 11, + APROP_JumpZ = 12, // [GRB] + APROP_ChaseGoal = 13, + APROP_Frightened = 14, + APROP_Gravity = 15, + APROP_Friendly = 16, + APROP_SpawnHealth = 17, + APROP_Dropped = 18, +}; // These are needed for ACS's APROP_RenderStyle static const int LegacyRenderStyleIndices[] = @@ -2253,6 +2257,10 @@ void DLevelScript::DoSetActorProperty (AActor *actor, int property, int value) if (value) actor->flags |= MF_AMBUSH; else actor->flags &= ~MF_AMBUSH; break; + case APROP_Dropped: + if (value) actor->flags |= MF_DROPPED; else actor->flags &= ~MF_DROPPED; + break; + case APROP_Invulnerable: if (value) actor->flags2 |= MF2_INVULNERABLE; else actor->flags2 &= ~MF2_INVULNERABLE; break; @@ -2356,6 +2364,7 @@ int DLevelScript::GetActorProperty (int tid, int property) return STYLE_Normal; case APROP_Gravity: return actor->gravity; case APROP_Ambush: return !!(actor->flags & MF_AMBUSH); + case APROP_Dropped: return !!(actor->flags & MF_DROPPED); case APROP_ChaseGoal: return !!(actor->flags5 & MF5_CHASEGOAL); case APROP_Frightened: return !!(actor->flags4 & MF4_FRIGHTENED); case APROP_Friendly: return !!(actor->flags & MF_FRIENDLY);