- Fixed: Monster reaction time was always zero with fast monsters and not just on nightmare.

This commit is contained in:
drfrag 2021-01-12 23:37:45 +01:00 committed by Rachael Alexanderson
parent f384c7bc1f
commit 4ff72e937f
8 changed files with 18 additions and 1 deletions

View file

@ -476,6 +476,7 @@ enum ESkillProperty
SKILLP_Infight, SKILLP_Infight,
SKILLP_PlayerRespawn, SKILLP_PlayerRespawn,
SKILLP_SpawnMulti, SKILLP_SpawnMulti,
SKILLP_InstantReaction,
}; };
enum EFSkillProperty // floating point properties enum EFSkillProperty // floating point properties
{ {
@ -520,6 +521,7 @@ struct FSkillInfo
double Aggressiveness; double Aggressiveness;
int SpawnFilter; int SpawnFilter;
bool SpawnMulti; bool SpawnMulti;
bool InstantReaction;
int ACSReturn; int ACSReturn;
FString MenuName; FString MenuName;
FString PicName; FString PicName;

View file

@ -77,6 +77,7 @@ void FMapInfoParser::ParseSkill ()
skill.Aggressiveness = 1.; skill.Aggressiveness = 1.;
skill.SpawnFilter = 0; skill.SpawnFilter = 0;
skill.SpawnMulti = false; skill.SpawnMulti = false;
skill.InstantReaction = false;
skill.ACSReturn = 0; skill.ACSReturn = 0;
skill.MustConfirm = false; skill.MustConfirm = false;
skill.Shortcut = 0; skill.Shortcut = 0;
@ -197,6 +198,10 @@ void FMapInfoParser::ParseSkill ()
{ {
skill.SpawnMulti = true; skill.SpawnMulti = true;
} }
else if (sc.Compare ("InstantReaction"))
{
skill.InstantReaction = true;
}
else if (sc.Compare("ACSReturn")) else if (sc.Compare("ACSReturn"))
{ {
ParseAssign(); ParseAssign();
@ -400,8 +405,12 @@ int G_SkillProperty(ESkillProperty prop)
case SKILLP_PlayerRespawn: case SKILLP_PlayerRespawn:
return AllSkills[gameskill].PlayerRespawn; return AllSkills[gameskill].PlayerRespawn;
case SKILLP_SpawnMulti: case SKILLP_SpawnMulti:
return AllSkills[gameskill].SpawnMulti; return AllSkills[gameskill].SpawnMulti;
case SKILLP_InstantReaction:
return AllSkills[gameskill].InstantReaction;
} }
} }
return 0; return 0;
@ -540,6 +549,7 @@ FSkillInfo &FSkillInfo::operator=(const FSkillInfo &other)
Aggressiveness= other.Aggressiveness; Aggressiveness= other.Aggressiveness;
SpawnFilter = other.SpawnFilter; SpawnFilter = other.SpawnFilter;
SpawnMulti = other.SpawnMulti; SpawnMulti = other.SpawnMulti;
InstantReaction = other.InstantReaction;
ACSReturn = other.ACSReturn; ACSReturn = other.ACSReturn;
MenuName = other.MenuName; MenuName = other.MenuName;
PicName = other.PicName; PicName = other.PicName;

View file

@ -4477,7 +4477,7 @@ void ConstructActor(AActor *actor, const DVector3 &pos, bool SpawningMapThing)
FRandom &rng = Level->BotInfo.m_Thinking ? pr_botspawnmobj : pr_spawnmobj; FRandom &rng = Level->BotInfo.m_Thinking ? pr_botspawnmobj : pr_spawnmobj;
if (actor->isFast() && actor->flags3 & MF3_ISMONSTER) if (!!G_SkillProperty(SKILLP_InstantReaction) && actor->flags3 & MF3_ISMONSTER)
actor->reactiontime = 0; actor->reactiontime = 0;
if (actor->flags3 & MF3_ISMONSTER) if (actor->flags3 & MF3_ISMONSTER)

View file

@ -183,6 +183,7 @@ skill nightmare
{ {
AmmoFactor = 2 AmmoFactor = 2
FastMonsters FastMonsters
InstantReaction
DisableCheats DisableCheats
RespawnTime = 12 RespawnTime = 12
SpawnFilter = Nightmare SpawnFilter = Nightmare

View file

@ -217,6 +217,7 @@ skill nightmare
{ {
AmmoFactor = 2 AmmoFactor = 2
FastMonsters FastMonsters
InstantReaction
DisableCheats DisableCheats
RespawnTime = 12 RespawnTime = 12
SpawnFilter = Nightmare SpawnFilter = Nightmare

View file

@ -315,6 +315,7 @@ skill nightmare
AmmoFactor = 1.5 AmmoFactor = 1.5
DoubleAmmoFactor = 1.5 DoubleAmmoFactor = 1.5
FastMonsters FastMonsters
InstantReaction
DisableCheats DisableCheats
SpawnFilter = Nightmare SpawnFilter = Nightmare
Name = "$MNU_BLACKPLAGUE" Name = "$MNU_BLACKPLAGUE"

View file

@ -456,6 +456,7 @@ skill nightmare
AmmoFactor = 1.5 AmmoFactor = 1.5
DoubleAmmoFactor = 1.5 DoubleAmmoFactor = 1.5
FastMonsters FastMonsters
InstantReaction
DisableCheats DisableCheats
SpawnFilter = Nightmare SpawnFilter = Nightmare
Name = "$MNU_BLACKPLAGUE" Name = "$MNU_BLACKPLAGUE"

View file

@ -963,6 +963,7 @@ enum ESkillProperty
SKILLP_Infight, SKILLP_Infight,
SKILLP_PlayerRespawn, SKILLP_PlayerRespawn,
SKILLP_SpawnMulti, SKILLP_SpawnMulti,
SKILLP_InstantReaction,
}; };
enum EFSkillProperty // floating point properties enum EFSkillProperty // floating point properties
{ {