mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-10 23:01:59 +00:00
- Added a check to P_CheckMissileSpawn to decrease the monster counter
if it was called for spawning a monster with A_CustomMissile. - Added a ML_BLOCK_PLAYERS line flag. SVN r380 (trunk)
This commit is contained in:
parent
e5bce37755
commit
f6f15ba764
8 changed files with 33 additions and 10 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
November 10, 2006 (Changes by Graf Zahl)
|
||||||
|
- Added a check to P_CheckMissileSpawn to decrease the monster counter
|
||||||
|
if it was called for spawning a monster with A_CustomMissile.
|
||||||
|
- Added a ML_BLOCK_PLAYERS line flag.
|
||||||
|
|
||||||
November 5, 2006 (Changes by Graf Zahl)
|
November 5, 2006 (Changes by Graf Zahl)
|
||||||
- Converted Heretic's and Hexen's players to DECORATE.
|
- Converted Heretic's and Hexen's players to DECORATE.
|
||||||
- Made Hexenarmor factors configurable by DECORATE.
|
- Made Hexenarmor factors configurable by DECORATE.
|
||||||
|
|
|
@ -52,7 +52,7 @@ static bool PTR_Reachable (intercept_t *in)
|
||||||
{
|
{
|
||||||
line = in->d.line;
|
line = in->d.line;
|
||||||
|
|
||||||
if (!(line->flags & ML_TWOSIDED) || (line->flags & ML_BLOCKING))
|
if (!(line->flags & ML_TWOSIDED) || (line->flags & (ML_BLOCKING|ML_BLOCKEVERYTHING|ML_BLOCK_PLAYERS)))
|
||||||
{
|
{
|
||||||
return (reachable = false); //Cannot continue.
|
return (reachable = false); //Cannot continue.
|
||||||
}
|
}
|
||||||
|
|
|
@ -175,6 +175,7 @@ static inline int GET_SPAC (int flags)
|
||||||
#define ML_BLOCK_FLOATERS 0x00040000
|
#define ML_BLOCK_FLOATERS 0x00040000
|
||||||
#define ML_CLIP_MIDTEX 0x00080000 // Automatic for every Strife line
|
#define ML_CLIP_MIDTEX 0x00080000 // Automatic for every Strife line
|
||||||
#define ML_WRAP_MIDTEX 0x00100000
|
#define ML_WRAP_MIDTEX 0x00100000
|
||||||
|
#define ML_BLOCK_PLAYERS 0x00200000
|
||||||
|
|
||||||
// Sector definition, from editing
|
// Sector definition, from editing
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -4028,21 +4028,25 @@ int DLevelScript::RunScript ()
|
||||||
switch (STACK(1))
|
switch (STACK(1))
|
||||||
{
|
{
|
||||||
case BLOCK_NOTHING:
|
case BLOCK_NOTHING:
|
||||||
lines[line].flags &= ~(ML_BLOCKING|ML_BLOCKEVERYTHING|ML_RAILING);
|
lines[line].flags &= ~(ML_BLOCKING|ML_BLOCKEVERYTHING|ML_RAILING|ML_BLOCK_PLAYERS);
|
||||||
break;
|
break;
|
||||||
case BLOCK_CREATURES:
|
case BLOCK_CREATURES:
|
||||||
default:
|
default:
|
||||||
lines[line].flags &= ~(ML_BLOCKEVERYTHING|ML_RAILING);
|
lines[line].flags &= ~(ML_BLOCKEVERYTHING|ML_RAILING|ML_BLOCK_PLAYERS);
|
||||||
lines[line].flags |= ML_BLOCKING;
|
lines[line].flags |= ML_BLOCKING;
|
||||||
break;
|
break;
|
||||||
case BLOCK_EVERYTHING:
|
case BLOCK_EVERYTHING:
|
||||||
lines[line].flags &= ~ML_RAILING;
|
lines[line].flags &= ~(ML_RAILING|ML_BLOCK_PLAYERS);
|
||||||
lines[line].flags |= ML_BLOCKING|ML_BLOCKEVERYTHING;
|
lines[line].flags |= ML_BLOCKING|ML_BLOCKEVERYTHING;
|
||||||
break;
|
break;
|
||||||
case BLOCK_RAILING:
|
case BLOCK_RAILING:
|
||||||
lines[line].flags &= ~ML_BLOCKEVERYTHING;
|
lines[line].flags &= ~(ML_BLOCKEVERYTHING|ML_BLOCK_PLAYERS);
|
||||||
lines[line].flags |= ML_RAILING|ML_BLOCKING;
|
lines[line].flags |= ML_RAILING|ML_BLOCKING;
|
||||||
break;
|
break;
|
||||||
|
case BLOCK_PLAYERS:
|
||||||
|
lines[line].flags &= ~(ML_BLOCKEVERYTHING|ML_BLOCKING|ML_RAILING);
|
||||||
|
lines[line].flags |= ML_BLOCK_PLAYERS;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -578,7 +578,8 @@ public:
|
||||||
BLOCK_NOTHING = 0,
|
BLOCK_NOTHING = 0,
|
||||||
BLOCK_CREATURES = 1,
|
BLOCK_CREATURES = 1,
|
||||||
BLOCK_EVERYTHING = 2,
|
BLOCK_EVERYTHING = 2,
|
||||||
BLOCK_RAILING = 3
|
BLOCK_RAILING = 3,
|
||||||
|
BLOCK_PLAYERS = 4
|
||||||
};
|
};
|
||||||
enum {
|
enum {
|
||||||
LEVELINFO_PAR_TIME,
|
LEVELINFO_PAR_TIME,
|
||||||
|
|
|
@ -675,9 +675,10 @@ bool PIT_CheckLine (line_t *ld)
|
||||||
{
|
{
|
||||||
rail = true;
|
rail = true;
|
||||||
}
|
}
|
||||||
else if ((ld->flags & (ML_BLOCKING|ML_BLOCKEVERYTHING)) || // explicitly blocking everything
|
else if ((ld->flags & (ML_BLOCKING|ML_BLOCKEVERYTHING)) || // explicitly blocking everything
|
||||||
(!(tmthing->flags3 & MF3_NOBLOCKMONST) && (ld->flags & ML_BLOCKMONSTERS)) || // block monsters only
|
(!(tmthing->flags3 & MF3_NOBLOCKMONST) && (ld->flags & ML_BLOCKMONSTERS)) || // block monsters only
|
||||||
((ld->flags & ML_BLOCK_FLOATERS) && (tmthing->flags & MF_FLOAT))) // block floaters
|
(tmthing->player != NULL && (ld->flags & ML_BLOCK_PLAYERS)) || // block players
|
||||||
|
((ld->flags & ML_BLOCK_FLOATERS) && (tmthing->flags & MF_FLOAT))) // block floaters
|
||||||
{
|
{
|
||||||
if (tmthing->flags2 & MF2_BLASTED)
|
if (tmthing->flags2 & MF2_BLASTED)
|
||||||
{
|
{
|
||||||
|
@ -2063,6 +2064,10 @@ bool PTR_SlideTraverse (intercept_t* in)
|
||||||
{
|
{
|
||||||
goto isblocking;
|
goto isblocking;
|
||||||
}
|
}
|
||||||
|
if (li->flags & ML_BLOCK_PLAYERS && slidemo->player != NULL)
|
||||||
|
{
|
||||||
|
goto isblocking;
|
||||||
|
}
|
||||||
|
|
||||||
// set openrange, opentop, openbottom
|
// set openrange, opentop, openbottom
|
||||||
P_LineOpening (li, trace.x + FixedMul (trace.dx, in->frac),
|
P_LineOpening (li, trace.x + FixedMul (trace.dx, in->frac),
|
||||||
|
@ -3290,7 +3295,7 @@ bool PTR_NoWayTraverse (intercept_t *in)
|
||||||
// [GrafZahl] de-obfuscated. Was I the only one who was unable to makes sense out of
|
// [GrafZahl] de-obfuscated. Was I the only one who was unable to makes sense out of
|
||||||
// this convoluted mess?
|
// this convoluted mess?
|
||||||
if (ld->special) return true;
|
if (ld->special) return true;
|
||||||
if (ld->flags&(ML_BLOCKING|ML_BLOCKEVERYTHING)) return false;
|
if (ld->flags&(ML_BLOCKING|ML_BLOCKEVERYTHING|ML_BLOCK_PLAYERS)) return false;
|
||||||
P_LineOpening(ld, trace.x+FixedMul(trace.dx, in->frac),trace.y+FixedMul(trace.dy, in->frac));
|
P_LineOpening(ld, trace.x+FixedMul(trace.dx, in->frac),trace.y+FixedMul(trace.dy, in->frac));
|
||||||
return openrange >0 &&
|
return openrange >0 &&
|
||||||
openbottom <= usething->z + usething->MaxStepHeight &&
|
openbottom <= usething->z + usething->MaxStepHeight &&
|
||||||
|
|
|
@ -4224,6 +4224,12 @@ bool P_CheckMissileSpawn (AActor* th)
|
||||||
// [RH] Don't explode ripping missiles that spawn inside something
|
// [RH] Don't explode ripping missiles that spawn inside something
|
||||||
if (BlockingMobj == NULL || !(th->flags2 & MF2_RIP))
|
if (BlockingMobj == NULL || !(th->flags2 & MF2_RIP))
|
||||||
{
|
{
|
||||||
|
// If this is a monster spawned by A_CustomMissile subtract it from the counter.
|
||||||
|
if (th->CountsAsKill())
|
||||||
|
{
|
||||||
|
th->flags&=~MF_COUNTKILL;
|
||||||
|
level.total_monsters--;
|
||||||
|
}
|
||||||
// [RH] Don't explode missiles that spawn on top of horizon lines
|
// [RH] Don't explode missiles that spawn on top of horizon lines
|
||||||
if (BlockingLine != NULL && BlockingLine->special == Line_Horizon)
|
if (BlockingLine != NULL && BlockingLine->special == Line_Horizon)
|
||||||
{
|
{
|
||||||
|
|
|
@ -59,6 +59,7 @@ ACTOR Demon 3002
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
ACTOR Spectre : Demon 58
|
ACTOR Spectre : Demon 58
|
||||||
{
|
{
|
||||||
|
Game Doom
|
||||||
SpawnID 9
|
SpawnID 9
|
||||||
+SHADOW
|
+SHADOW
|
||||||
RenderStyle OptFuzzy
|
RenderStyle OptFuzzy
|
||||||
|
|
Loading…
Reference in a new issue