Allow machine skins to damage objects in dashmode

This commit is contained in:
lachwright 2019-10-23 13:41:32 +08:00
parent c201879d69
commit 6d498fe357
3 changed files with 14 additions and 8 deletions

View file

@ -511,6 +511,10 @@ typedef struct player_s
#endif
} player_t;
// Values for dashmode
#define DASHMODE_THRESHOLD (3*TICRATE)
#define DASHMODE_MAX (DASHMODE_THRESHOLD + 3)
// Value for infinite lives
#define INFLIVES 0x7F

View file

@ -1096,6 +1096,9 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing)
// Spinning.
if (player->pflags & PF_SPINNING)
return true;
if (player->dashmode >= DASHMODE_THRESHOLD && player->charflags & (SF_DASHMODE|SF_MACHINE) == (SF_DASHMODE|SF_MACHINE))
return true;
// From the front.
if (((player->pflags & PF_GLIDING) || (player->charability2 == CA2_MELEE && player->panim == PA_ABILITY2))
@ -2204,9 +2207,6 @@ boolean P_InSpaceSector(mobj_t *mo) // Returns true if you are in space
return false; // No vacuum here, Captain!
}
#define DASHMODE_THRESHOLD (3*TICRATE)
#define DASHMODE_MAX (DASHMODE_THRESHOLD + 3)
//
// P_PlayerHitFloor
//
@ -2477,7 +2477,7 @@ static void P_CheckBustableBlocks(player_t *player)
&& !(player->powers[pw_super])
&& !(player->charability == CA_GLIDEANDCLIMB)
&& !(player->pflags & PF_BOUNCING)
&& !((player->charflags & SF_DASHMODE) && (player->dashmode >= DASHMODE_THRESHOLD))
&& !((player->charflags & (SF_DASHMODE|SF_MACHINE) == (SF_DASHMODE|SF_MACHINE)) && (player->dashmode >= DASHMODE_THRESHOLD))
&& !((player->charability == CA_TWINSPIN) && (player->panim == PA_ABILITY))
&& !(player->charability2 == CA2_MELEE && player->panim == PA_ABILITY2)
&& !(player->pflags & PF_DRILLING)

View file

@ -754,8 +754,9 @@ static void R_DrawVisSprite(vissprite_t *vis)
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else if (!(vis->cut & SC_PRECIP)
&& vis->mobj->player && vis->mobj->player->dashmode >= 108 && vis->mobj->player->charflags & SF_MACHINE
&&((leveltime/2) & 1))
&& vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD
&& vis->mobj->player->charflags & (SF_DASHMODE|SF_MACHINE) == (SF_DASHMODE|SF_MACHINE)
&& ((leveltime/2) & 1))
{
dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE);
}
@ -781,8 +782,9 @@ static void R_DrawVisSprite(vissprite_t *vis)
if (!(vis->cut & SC_PRECIP) && vis->mobj->colorized)
dc_translation = R_GetTranslationColormap(TC_RAINBOW, vis->mobj->color, GTC_CACHE);
else if (!(vis->cut & SC_PRECIP)
&& vis->mobj->player && vis->mobj->player->dashmode >= 108 && vis->mobj->player->charflags & SF_MACHINE
&&((leveltime/2) & 1))
&& vis->mobj->player && vis->mobj->player->dashmode >= DASHMODE_THRESHOLD
&& vis->mobj->player->charflags & (SF_DASHMODE|SF_MACHINE) == (SF_DASHMODE|SF_MACHINE)
&& ((leveltime/2) & 1))
{
dc_translation = R_GetTranslationColormap(TC_DASHMODE, 0, GTC_CACHE);
}