- added a NOATTACK sector flag which prevents monsters from going to their attack states if present.

This commit is contained in:
Christoph Oelckers 2017-02-26 20:27:02 +01:00
parent 9aff224891
commit 8cac2d8c84
5 changed files with 11 additions and 2 deletions

View file

@ -197,6 +197,7 @@ Note: All <bool> fields default to false unless mentioned otherwise.
desaturation = <float>; // Color desaturation factor. 0 = none, 1 = full, default = 0. desaturation = <float>; // Color desaturation factor. 0 = none, 1 = full, default = 0.
silent = <bool>; // Actors in this sector make no sound, silent = <bool>; // Actors in this sector make no sound,
nofallingdamage = <bool>; // Falling damage is disabled in this sector nofallingdamage = <bool>; // Falling damage is disabled in this sector
noattack = <bool>; // Blocks monster attacks in this sector.
dropactors = <bool>; // Actors drop with instantly moving floors (*) dropactors = <bool>; // Actors drop with instantly moving floors (*)
norespawn = <bool>; // Players can not respawn in this sector norespawn = <bool>; // Players can not respawn in this sector
soundsequence = <string>; // The sound sequence to play when this sector moves. Placing a soundsequence = <string>; // The sound sequence to play when this sector moves. Placing a

View file

@ -773,6 +773,7 @@ xx(BuiltinGetDefault)
xx(BuiltinClassCast) xx(BuiltinClassCast)
xx(BuiltinFormat) xx(BuiltinFormat)
xx(Damage) xx(Damage)
xx(Noattack)
// basic type names // basic type names
xx(Default) xx(Default)

View file

@ -349,7 +349,7 @@ bool AActor::CheckMeleeRange ()
double dist; double dist;
if (!pl) if (!pl || (Sector->Flags & SECF_NOATTACK))
return false; return false;
dist = Distance2D (pl); dist = Distance2D (pl);
@ -398,7 +398,7 @@ bool P_CheckMeleeRange2 (AActor *actor)
double dist; double dist;
if (!actor->target) if (!actor->target || (actor->Sector->Flags & SECF_NOATTACK))
{ {
return false; return false;
} }
@ -445,6 +445,8 @@ bool P_CheckMissileRange (AActor *actor)
{ {
double dist; double dist;
if ((actor->Sector->Flags & SECF_NOATTACK)) return false;
if (!P_CheckSight (actor, actor->target, SF_SEEPASTBLOCKEVERYTHING)) if (!P_CheckSight (actor, actor->target, SF_SEEPASTBLOCKEVERYTHING))
return false; return false;

View file

@ -1658,6 +1658,10 @@ public:
sec->planes[sector_t::ceiling].GlowHeight = (float)CheckFloat(key); sec->planes[sector_t::ceiling].GlowHeight = (float)CheckFloat(key);
break; break;
case NAME_Noattack:
Flag(sec->Flags, SECF_NOATTACK, key);
break;
case NAME_MoreIds: case NAME_MoreIds:
// delay parsing of the tag string until parsing of the sector is complete // delay parsing of the tag string until parsing of the sector is complete
// This ensures that the ID is always the first tag in the list. // This ensures that the ID is always the first tag in the list.

View file

@ -494,6 +494,7 @@ enum
SECF_ENDGODMODE = 256, // getting damaged by this sector ends god mode SECF_ENDGODMODE = 256, // getting damaged by this sector ends god mode
SECF_ENDLEVEL = 512, // ends level when health goes below 10 SECF_ENDLEVEL = 512, // ends level when health goes below 10
SECF_HAZARD = 1024, // Change to Strife's delayed damage handling. SECF_HAZARD = 1024, // Change to Strife's delayed damage handling.
SECF_NOATTACK = 2048, // monsters cannot start attacks in this sector.
SECF_WASSECRET = 1 << 30, // a secret that was discovered SECF_WASSECRET = 1 << 30, // a secret that was discovered
SECF_SECRET = 1 << 31, // a secret sector SECF_SECRET = 1 << 31, // a secret sector