- 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)
This commit is contained in:
Christoph Oelckers 2009-01-28 08:48:52 +00:00
parent d08c0e08f2
commit fb9601b9eb
3 changed files with 47 additions and 20 deletions

View file

@ -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 January 27, 2009
- More GCC warning removal, the most egregious of which was the security - More GCC warning removal, the most egregious of which was the security
vulnerability "format not a string literal and no format arguments". vulnerability "format not a string literal and no format arguments".
@ -12,6 +18,18 @@ January 26, 2009
for the normal voice processing. for the normal voice processing.
January 25, 2009 (Changes by Graf Zahl) 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 - fixed: AFastProjectile::Tick must call Effect only 8 times per tic, regardless
of the amount of steps taken. of the amount of steps taken.
- fixed: momentum checks in AFastProjectile did not use absolute values. - fixed: momentum checks in AFastProjectile did not use absolute values.

View file

@ -523,7 +523,7 @@ CUSTOM_CVAR (Int, compatflags, 0, CVAR_ARCHIVE|CVAR_SERVERINFO)
i_compatflags = GetCompatibility(self); 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; 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) case 2: // same as 1 but stricter (NO_PASSMOBJ and INVISIBILITY are also set)
v = COMPATF_SHORTTEX|COMPATF_STAIRINDEX|COMPATF_USEBLOCKING|COMPATF_NODOORLIGHT| v = COMPATF_SHORTTEX|COMPATF_STAIRINDEX|COMPATF_USEBLOCKING|COMPATF_NODOORLIGHT|
COMPATF_TRACE|COMPATF_MISSILECLIP|COMPATF_SOUNDTARGET|COMPATF_NO_PASSMOBJ|COMPATF_LIMITPAIN| COMPATF_TRACE|COMPATF_MISSILECLIP|COMPATF_SOUNDTARGET|COMPATF_NO_PASSMOBJ|COMPATF_LIMITPAIN|
COMPATF_DEHHEALTH|COMPATF_INVISIBILITY; COMPATF_DEHHEALTH|COMPATF_INVISIBILITY|COMPATF_CROSSDROPOFF;
break; break;
case 3: case 3:

View file

@ -2157,24 +2157,28 @@ void DLevelScript::DoSetFont (int fontnum)
} }
} }
#define APROP_Health 0 enum
#define APROP_Speed 1 {
#define APROP_Damage 2 APROP_Health = 0,
#define APROP_Alpha 3 APROP_Speed = 1,
#define APROP_RenderStyle 4 APROP_Damage = 2,
#define APROP_Ambush 10 APROP_Alpha = 3,
#define APROP_Invulnerable 11 APROP_RenderStyle = 4,
#define APROP_JumpZ 12 // [GRB] APROP_SeeSound = 5, // Sounds can only be set, not gotten
#define APROP_ChaseGoal 13 APROP_AttackSound = 6,
#define APROP_Frightened 14 APROP_PainSound = 7,
#define APROP_Gravity 15 APROP_DeathSound = 8,
#define APROP_Friendly 16 APROP_ActiveSound = 9,
#define APROP_SpawnHealth 17 APROP_Ambush = 10,
#define APROP_SeeSound 5 // Sounds can only be set, not gotten APROP_Invulnerable = 11,
#define APROP_AttackSound 6 APROP_JumpZ = 12, // [GRB]
#define APROP_PainSound 7 APROP_ChaseGoal = 13,
#define APROP_DeathSound 8 APROP_Frightened = 14,
#define APROP_ActiveSound 9 APROP_Gravity = 15,
APROP_Friendly = 16,
APROP_SpawnHealth = 17,
APROP_Dropped = 18,
};
// These are needed for ACS's APROP_RenderStyle // These are needed for ACS's APROP_RenderStyle
static const int LegacyRenderStyleIndices[] = 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; if (value) actor->flags |= MF_AMBUSH; else actor->flags &= ~MF_AMBUSH;
break; break;
case APROP_Dropped:
if (value) actor->flags |= MF_DROPPED; else actor->flags &= ~MF_DROPPED;
break;
case APROP_Invulnerable: case APROP_Invulnerable:
if (value) actor->flags2 |= MF2_INVULNERABLE; else actor->flags2 &= ~MF2_INVULNERABLE; if (value) actor->flags2 |= MF2_INVULNERABLE; else actor->flags2 &= ~MF2_INVULNERABLE;
break; break;
@ -2356,6 +2364,7 @@ int DLevelScript::GetActorProperty (int tid, int property)
return STYLE_Normal; return STYLE_Normal;
case APROP_Gravity: return actor->gravity; case APROP_Gravity: return actor->gravity;
case APROP_Ambush: return !!(actor->flags & MF_AMBUSH); 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_ChaseGoal: return !!(actor->flags5 & MF5_CHASEGOAL);
case APROP_Frightened: return !!(actor->flags4 & MF4_FRIGHTENED); case APROP_Frightened: return !!(actor->flags4 & MF4_FRIGHTENED);
case APROP_Friendly: return !!(actor->flags & MF_FRIENDLY); case APROP_Friendly: return !!(actor->flags & MF_FRIENDLY);