mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-14 00:20:38 +00:00
- Added a SECF_NORESPAWN flag for sectors that prevents players from being respawned
in such a sector. As a workaround for current map formats a new actor (DoomEdNum 9041) was added that can set the extended sector flags without the use of ACS and sector tags. The new flag can also be set with Sector_ChangeFlags. - Fixed: Players ignored MF2_TELESTOMP and always telefragged what was in the way. - Fixed: Actors with MF5_NOINTERACTION were not affected by the time freezer. SVN r1315 (trunk)
This commit is contained in:
parent
34ab6ba862
commit
bd9e318863
9 changed files with 65 additions and 5 deletions
|
@ -1,3 +1,11 @@
|
||||||
|
December 12, 2008 (Changes by Graf Zahl)
|
||||||
|
- Added a SECF_NORESPAWN flag for sectors that prevents players from being respawned
|
||||||
|
in such a sector. As a workaround for current map formats a new actor
|
||||||
|
(DoomEdNum 9041) was added that can set the extended sector flags without the
|
||||||
|
use of ACS and sector tags. The new flag can also be set with Sector_ChangeFlags.
|
||||||
|
- Fixed: Players ignored MF2_TELESTOMP and always telefragged what was in the way.
|
||||||
|
- Fixed: Actors with MF5_NOINTERACTION were not affected by the time freezer.
|
||||||
|
|
||||||
December 7, 2008 (Changes by Graf Zahl)
|
December 7, 2008 (Changes by Graf Zahl)
|
||||||
- Added a strbin1 function that does the same as strbin but creates a copy
|
- Added a strbin1 function that does the same as strbin but creates a copy
|
||||||
instead of overwriting the original string. ACS performing this operation
|
instead of overwriting the original string. ACS performing this operation
|
||||||
|
|
|
@ -134,8 +134,8 @@ Note: All <bool> fields default to false unless mentioned otherwise.
|
||||||
yscaleceiling = <float>; // Y texture scale of ceiling texture, Default = 1.0.
|
yscaleceiling = <float>; // Y texture scale of ceiling texture, Default = 1.0.
|
||||||
rotationfloor = <float>; // Rotation of floor texture in degrees, Default = 0.0.
|
rotationfloor = <float>; // Rotation of floor texture in degrees, Default = 0.0.
|
||||||
rotationceiling = <float>; // Rotation of ceiling texture in degrees, Default = 0.0.
|
rotationceiling = <float>; // Rotation of ceiling texture in degrees, Default = 0.0.
|
||||||
lightfloor = <float>; // The floor's light level. Default is 0.
|
lightfloor = <integer>; // The floor's light level. Default is 0.
|
||||||
lightceiling = <float>; // The ceiling's light level. Default is 0.
|
lightceiling = <integer>; // The ceiling's light level. Default is 0.
|
||||||
lightfloorabsolute = <bool>; // true = 'lightfloor' is an absolute value. Default is
|
lightfloorabsolute = <bool>; // true = 'lightfloor' is an absolute value. Default is
|
||||||
// relative to the owning sector's light level.
|
// relative to the owning sector's light level.
|
||||||
lightceilingabsolute = <bool>; // true = 'lightceiling' is an absolute value. Default is
|
lightceilingabsolute = <bool>; // true = 'lightceiling' is an absolute value. Default is
|
||||||
|
@ -146,7 +146,8 @@ 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
|
||||||
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
|
||||||
|
|
||||||
* Note about dropactors
|
* Note about dropactors
|
||||||
|
|
||||||
|
@ -218,6 +219,12 @@ Added 'nofakecontrast' option to sidedefs.
|
||||||
1.2 21.08.2008
|
1.2 21.08.2008
|
||||||
Added smooth lighting option to linedefs
|
Added smooth lighting option to linedefs
|
||||||
|
|
||||||
|
1.3 12.12.2008
|
||||||
|
Added NoRespawn sector flag
|
||||||
|
Fixed lightfloor and lightceiling properties for sectors. They are of type
|
||||||
|
integer, not float
|
||||||
|
|
||||||
|
|
||||||
===============================================================================
|
===============================================================================
|
||||||
EOF
|
EOF
|
||||||
===============================================================================
|
===============================================================================
|
||||||
|
|
|
@ -228,3 +228,19 @@ void ASectorSilencer::Destroy ()
|
||||||
Sector->Flags &= ~SECF_SILENT;
|
Sector->Flags &= ~SECF_SILENT;
|
||||||
Super::Destroy ();
|
Super::Destroy ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ASectorFlagSetter : public AActor
|
||||||
|
{
|
||||||
|
DECLARE_CLASS (ASectorFlagSetter, AActor)
|
||||||
|
public:
|
||||||
|
void BeginPlay ();
|
||||||
|
};
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS (ASectorFlagSetter)
|
||||||
|
|
||||||
|
void ASectorFlagSetter::BeginPlay ()
|
||||||
|
{
|
||||||
|
Super::BeginPlay ();
|
||||||
|
Sector->Flags |= args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -397,6 +397,7 @@ xx(Desaturation)
|
||||||
xx(Silent)
|
xx(Silent)
|
||||||
xx(Nofallingdamage)
|
xx(Nofallingdamage)
|
||||||
xx(Dropactors)
|
xx(Dropactors)
|
||||||
|
xx(NoRespawn)
|
||||||
|
|
||||||
xx(offsetx_top)
|
xx(offsetx_top)
|
||||||
xx(offsety_top)
|
xx(offsety_top)
|
||||||
|
|
|
@ -245,7 +245,7 @@ bool P_TeleportMove (AActor *thing, fixed_t x, fixed_t y, fixed_t z, bool telefr
|
||||||
|
|
||||||
spechit.Clear ();
|
spechit.Clear ();
|
||||||
|
|
||||||
bool StompAlwaysFrags = thing->player || (thing->flags2 & MF2_TELESTOMP) ||
|
bool StompAlwaysFrags = (thing->flags2 & MF2_TELESTOMP) ||
|
||||||
(level.flags & LEVEL_MONSTERSTELEFRAG) || telefrag;
|
(level.flags & LEVEL_MONSTERSTELEFRAG) || telefrag;
|
||||||
|
|
||||||
FBoundingBox box(x, y, thing->radius);
|
FBoundingBox box(x, y, thing->radius);
|
||||||
|
|
|
@ -2484,7 +2484,20 @@ void AActor::Tick ()
|
||||||
|
|
||||||
if (flags5 & MF5_NOINTERACTION)
|
if (flags5 & MF5_NOINTERACTION)
|
||||||
{
|
{
|
||||||
// only do the minimally necessary things here to save time.
|
// only do the minimally necessary things here to save time:
|
||||||
|
// Check the time freezer
|
||||||
|
// apply momentum
|
||||||
|
// ensure that the actor is not linked into the blockmap
|
||||||
|
|
||||||
|
if (!(flags5 & MF5_NOTIMEFREEZE))
|
||||||
|
{
|
||||||
|
//Added by MC: Freeze mode.
|
||||||
|
if (bglobal.freeze || level.flags & LEVEL_FROZEN)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UnlinkFromWorld ();
|
UnlinkFromWorld ();
|
||||||
flags |= MF_NOBLOCKMAP;
|
flags |= MF_NOBLOCKMAP;
|
||||||
x += momx;
|
x += momx;
|
||||||
|
@ -2524,6 +2537,7 @@ void AActor::Tick ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (cl_rockettrails & 2)
|
if (cl_rockettrails & 2)
|
||||||
{
|
{
|
||||||
if (effects & FX_ROCKET)
|
if (effects & FX_ROCKET)
|
||||||
|
@ -3464,6 +3478,7 @@ APlayerPawn *P_SpawnPlayer (FMapThing *mthing, bool tempplayer)
|
||||||
( deathmatch == false ) &&
|
( deathmatch == false ) &&
|
||||||
( gameaction != ga_worlddone ) &&
|
( gameaction != ga_worlddone ) &&
|
||||||
( p->mo != NULL ) &&
|
( p->mo != NULL ) &&
|
||||||
|
( !(p->mo->Sector->Flags & SECF_NORESPAWN) ) &&
|
||||||
( (p->mo->Sector->special & 255) != Damage_InstantDeath ))
|
( (p->mo->Sector->special & 255) != Damage_InstantDeath ))
|
||||||
{
|
{
|
||||||
spawn_x = p->mo->x;
|
spawn_x = p->mo->x;
|
||||||
|
|
|
@ -924,6 +924,10 @@ struct UDMFParser
|
||||||
Flag(sec->Flags, SECF_SILENT, key);
|
Flag(sec->Flags, SECF_SILENT, key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case NAME_NoRespawn:
|
||||||
|
Flag(sec->Flags, SECF_NORESPAWN, key);
|
||||||
|
break;
|
||||||
|
|
||||||
case NAME_Nofallingdamage:
|
case NAME_Nofallingdamage:
|
||||||
Flag(sec->Flags, SECF_NOFALLINGDAMAGE, key);
|
Flag(sec->Flags, SECF_NOFALLINGDAMAGE, key);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -253,6 +253,7 @@ enum
|
||||||
SECF_SILENT = 1, // actors in sector make no noise
|
SECF_SILENT = 1, // actors in sector make no noise
|
||||||
SECF_NOFALLINGDAMAGE= 2, // No falling damage in this sector
|
SECF_NOFALLINGDAMAGE= 2, // No falling damage in this sector
|
||||||
SECF_FLOORDROP = 4, // all actors standing on this floor will remain on it when it lowers very fast.
|
SECF_FLOORDROP = 4, // all actors standing on this floor will remain on it when it lowers very fast.
|
||||||
|
SECF_NORESPAWN = 8, // players can not respawn in this sector
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -146,4 +146,12 @@ ACTOR FastProjectile native
|
||||||
Projectile
|
Projectile
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sector flag setter -----------------------------------------------------------
|
||||||
|
|
||||||
|
ACTOR SectorFlagSetter 9041 native
|
||||||
|
{
|
||||||
|
+NOBLOCKMAP
|
||||||
|
+NOGRAVITY
|
||||||
|
+DONTSPLASH
|
||||||
|
RenderStyle None
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue