mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-08 01:02:25 +00:00
Prevent Pyrefly fire from warping up nearby ledges.
This commit is contained in:
parent
6504557393
commit
e7a7a3b213
2 changed files with 14 additions and 12 deletions
|
@ -5198,11 +5198,11 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] =
|
||||||
0, // speed
|
0, // speed
|
||||||
24*FRACUNIT, // radius
|
24*FRACUNIT, // radius
|
||||||
34*FRACUNIT, // height
|
34*FRACUNIT, // height
|
||||||
0, // display offset
|
1, // display offset
|
||||||
DMG_FIRE, // mass
|
DMG_FIRE, // mass
|
||||||
0, // damage
|
0, // damage
|
||||||
sfx_None, // activesound
|
sfx_None, // activesound
|
||||||
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_FIRE|MF_PAIN, // flags
|
MF_NOGRAVITY|MF_NOBLOCKMAP|MF_NOCLIPHEIGHT|MF_FIRE|MF_PAIN, // flags
|
||||||
S_NULL // raisestate
|
S_NULL // raisestate
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
22
src/p_mobj.c
22
src/p_mobj.c
|
@ -395,13 +395,13 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
||||||
if (skin)
|
if (skin)
|
||||||
{
|
{
|
||||||
UINT16 stateframe = st->frame;
|
UINT16 stateframe = st->frame;
|
||||||
|
|
||||||
// Add/Remove FF_SPR2SUPER based on certain conditions
|
// Add/Remove FF_SPR2SUPER based on certain conditions
|
||||||
if (player->charflags & SF_NOSUPERSPRITES)
|
if (player->charflags & SF_NOSUPERSPRITES)
|
||||||
stateframe = stateframe & ~FF_SPR2SUPER;
|
stateframe = stateframe & ~FF_SPR2SUPER;
|
||||||
else if (player->powers[pw_super])
|
else if (player->powers[pw_super])
|
||||||
stateframe = stateframe | FF_SPR2SUPER;
|
stateframe = stateframe | FF_SPR2SUPER;
|
||||||
|
|
||||||
if (stateframe & FF_SPR2SUPER)
|
if (stateframe & FF_SPR2SUPER)
|
||||||
{
|
{
|
||||||
if (mobj->eflags & MFE_FORCENOSUPER)
|
if (mobj->eflags & MFE_FORCENOSUPER)
|
||||||
|
@ -409,11 +409,11 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state)
|
||||||
}
|
}
|
||||||
else if (mobj->eflags & MFE_FORCESUPER)
|
else if (mobj->eflags & MFE_FORCESUPER)
|
||||||
stateframe = stateframe | FF_SPR2SUPER;
|
stateframe = stateframe | FF_SPR2SUPER;
|
||||||
|
|
||||||
// Get the sprite2 and frame number
|
// Get the sprite2 and frame number
|
||||||
spr2 = P_GetSkinSprite2(skin, (stateframe & FF_FRAMEMASK), mobj->player);
|
spr2 = P_GetSkinSprite2(skin, (stateframe & FF_FRAMEMASK), mobj->player);
|
||||||
numframes = skin->sprites[spr2].numframes;
|
numframes = skin->sprites[spr2].numframes;
|
||||||
|
|
||||||
if (state == S_PLAY_STND && (spr2 & FF_SPR2SUPER) && skin->sprites[SPR2_WAIT|FF_SPR2SUPER].numframes == 0)
|
if (state == S_PLAY_STND && (spr2 & FF_SPR2SUPER) && skin->sprites[SPR2_WAIT|FF_SPR2SUPER].numframes == 0)
|
||||||
mobj->tics = -1; // If no super wait, don't wait at all
|
mobj->tics = -1; // If no super wait, don't wait at all
|
||||||
}
|
}
|
||||||
|
@ -541,7 +541,7 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
|
||||||
if (skin)
|
if (skin)
|
||||||
{
|
{
|
||||||
UINT16 stateframe = st->frame;
|
UINT16 stateframe = st->frame;
|
||||||
|
|
||||||
// Add/Remove FF_SPR2SUPER based on certain conditions
|
// Add/Remove FF_SPR2SUPER based on certain conditions
|
||||||
if (stateframe & FF_SPR2SUPER)
|
if (stateframe & FF_SPR2SUPER)
|
||||||
{
|
{
|
||||||
|
@ -550,11 +550,11 @@ boolean P_SetMobjState(mobj_t *mobj, statenum_t state)
|
||||||
}
|
}
|
||||||
else if (mobj->eflags & MFE_FORCESUPER)
|
else if (mobj->eflags & MFE_FORCESUPER)
|
||||||
stateframe = stateframe | FF_SPR2SUPER;
|
stateframe = stateframe | FF_SPR2SUPER;
|
||||||
|
|
||||||
// Get the sprite2 and frame number
|
// Get the sprite2 and frame number
|
||||||
spr2 = P_GetSkinSprite2(skin, (stateframe & FF_FRAMEMASK), NULL);
|
spr2 = P_GetSkinSprite2(skin, (stateframe & FF_FRAMEMASK), NULL);
|
||||||
numframes = skin->sprites[spr2].numframes;
|
numframes = skin->sprites[spr2].numframes;
|
||||||
|
|
||||||
if (state == S_PLAY_STND && (spr2 & FF_SPR2SUPER) && skin->sprites[SPR2_WAIT|FF_SPR2SUPER].numframes == 0)
|
if (state == S_PLAY_STND && (spr2 & FF_SPR2SUPER) && skin->sprites[SPR2_WAIT|FF_SPR2SUPER].numframes == 0)
|
||||||
mobj->tics = -1; // If no super wait, don't wait at all
|
mobj->tics = -1; // If no super wait, don't wait at all
|
||||||
}
|
}
|
||||||
|
@ -1872,7 +1872,7 @@ void P_XYMovement(mobj_t *mo)
|
||||||
// blocked move
|
// blocked move
|
||||||
moved = false;
|
moved = false;
|
||||||
|
|
||||||
if (player)
|
if (player)
|
||||||
B_MoveBlocked(player);
|
B_MoveBlocked(player);
|
||||||
|
|
||||||
if (LUA_HookMobjMoveBlocked(mo, tmhitthing, blockingline))
|
if (LUA_HookMobjMoveBlocked(mo, tmhitthing, blockingline))
|
||||||
|
@ -3323,7 +3323,7 @@ void P_MobjCheckWater(mobj_t *mobj)
|
||||||
{ // Water removes electric and non-water fire shields...
|
{ // Water removes electric and non-water fire shields...
|
||||||
if (electric)
|
if (electric)
|
||||||
P_FlashPal(p, PAL_WHITE, 1);
|
P_FlashPal(p, PAL_WHITE, 1);
|
||||||
|
|
||||||
p->powers[pw_shield] = p->powers[pw_shield] & SH_STACK;
|
p->powers[pw_shield] = p->powers[pw_shield] & SH_STACK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7059,6 +7059,8 @@ static void P_PyreFlyBurn(mobj_t *mobj, fixed_t hoffs, INT16 vrange, mobjtype_t
|
||||||
fixed_t zoffs = P_RandomRange(-vrange, vrange)*FRACUNIT;
|
fixed_t zoffs = P_RandomRange(-vrange, vrange)*FRACUNIT;
|
||||||
mobj_t *particle = P_SpawnMobjFromMobj(mobj, xoffs, yoffs, zoffs, mobjtype);
|
mobj_t *particle = P_SpawnMobjFromMobj(mobj, xoffs, yoffs, zoffs, mobjtype);
|
||||||
particle->momz = momz;
|
particle->momz = momz;
|
||||||
|
particle->flags2 |= MF2_LINKDRAW;
|
||||||
|
P_SetTarget(&particle->tracer, mobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void P_MobjScaleThink(mobj_t *mobj)
|
static void P_MobjScaleThink(mobj_t *mobj)
|
||||||
|
@ -10422,7 +10424,7 @@ static fixed_t P_DefaultMobjShadowScale (mobj_t *thing)
|
||||||
|
|
||||||
case MT_RING:
|
case MT_RING:
|
||||||
case MT_FLINGRING:
|
case MT_FLINGRING:
|
||||||
|
|
||||||
case MT_COIN:
|
case MT_COIN:
|
||||||
case MT_FLINGCOIN:
|
case MT_FLINGCOIN:
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue