- Fixed: Resurrecting a player must set mo->special1 to 0 because it is used

as a counter by the Hexen fighter's fist weapon.
- Fixed: The Wraithwerge's spirits shouldn't attack friends.
- Fixed: The Heresiarch's balls must not adjust their z-position after the
  Heresiarch dies.
- Added damage type specific pain chances and an MF5_NOPAIN flag that can be used
  to suppress entering the pain state altogether.
- Changed font initialization so that you can define replacements for the default
  fonts in FONTDEFS.
- Removed the 'add a bot' menu option since bots are beyond repair and therefore
  mostly useless.
- Fixed: Hitscan attacks must always spawn a puff so that it and its properties
  can be used as damage inflictor.


SVN r534 (trunk)
This commit is contained in:
Christoph Oelckers 2007-05-26 10:50:32 +00:00
commit 87383a32c6
13 changed files with 114 additions and 34 deletions

View file

@ -229,6 +229,7 @@ static flagdef ActorFlags[]=
DEFINE_FLAG(MF5, PIERCEARMOR, AActor, flags5),
DEFINE_FLAG(MF5, NOBLOODDECALS, AActor, flags5),
DEFINE_FLAG(MF5, USESPECIAL, AActor, flags5),
DEFINE_FLAG(MF5, NOPAIN, AActor, flags5),
// Effect flags
DEFINE_FLAG(FX, VISIBILITYPULSE, AActor, effects),
@ -1181,6 +1182,12 @@ static FActorInfo * CreateNewActor(FActorInfo ** parentc, Baggage *bag)
info->DamageFactors = new DmgFactors;
*info->DamageFactors = *parent->ActorInfo->DamageFactors;
}
if (parent->ActorInfo->PainChances != NULL)
{
// copy pain chances from parent
info->PainChances = new PainChanceList;
*info->PainChances = *parent->ActorInfo->PainChances;
}
// Check for "replaces"
SC_MustGetString ();
@ -2552,7 +2559,18 @@ static void ActorReactionTime (AActor *defaults, Baggage &bag)
//==========================================================================
static void ActorPainChance (AActor *defaults, Baggage &bag)
{
SC_MustGetNumber();
if (!SC_CheckNumber())
{
FName painType;
if (SC_Compare("Normal")) painType = NAME_None;
else painType=sc_String;
SC_MustGetToken(',');
SC_MustGetNumber();
if (bag.Info->PainChances == NULL) bag.Info->PainChances=new PainChanceList;
(*bag.Info->PainChances)[painType] = (BYTE)sc_Number;
return;
}
defaults->PainChance=sc_Number;
}