diff --git a/src/d_player.h b/src/d_player.h index fba2a6837..362d98639 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -49,6 +49,7 @@ typedef enum SF_MULTIABILITY = 1<<13, // Revenge of Final Demo. SF_NONIGHTSROTATION = 1<<14, // Disable sprite rotation for NiGHTS SF_NONIGHTSSUPER = 1<<15, // Disable super colors for NiGHTS (if you have SF_SUPER) + SF_NOSUPERSPRITES = 1<<16, // Don't use super sprites while super // free up to and including 1<<31 } skinflags_t; diff --git a/src/dehacked.c b/src/dehacked.c index dba759894..af3f7528c 100644 --- a/src/dehacked.c +++ b/src/dehacked.c @@ -9619,6 +9619,7 @@ struct { {"SF_MULTIABILITY",SF_MULTIABILITY}, {"SF_NONIGHTSROTATION",SF_NONIGHTSROTATION}, {"SF_NONIGHTSSUPER",SF_NONIGHTSSUPER}, + {"SF_NOSUPERSPRITES",SF_NOSUPERSPRITES}, // Dashmode constants {"DASHMODE_THRESHOLD",DASHMODE_THRESHOLD}, diff --git a/src/p_mobj.c b/src/p_mobj.c index f690ad894..288405d9b 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -394,7 +394,7 @@ boolean P_SetPlayerMobjState(mobj_t *mobj, statenum_t state) if (skin) { - spr2 = P_GetSkinSprite2(skin, (((player->powers[pw_super]) ? FF_SPR2SUPER : 0)|st->frame) & FF_FRAMEMASK, mobj->player); + spr2 = P_GetSkinSprite2(skin, (((player->powers[pw_super] && !(player->charflags & SF_NOSUPERSPRITES)) ? FF_SPR2SUPER : 0)|st->frame) & FF_FRAMEMASK, mobj->player); numframes = skin->sprites[spr2].numframes; } else diff --git a/src/st_stuff.c b/src/st_stuff.c index 086e80291..ce0480da3 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -821,7 +821,7 @@ static void ST_drawLivesArea(void) // skincolor face/super UINT8 *colormap = R_GetTranslationColormap(stplyr->skin, stplyr->mo->color, GTC_CACHE); patch_t *face = faceprefix[stplyr->skin]; - if (stplyr->powers[pw_super]) + if (stplyr->powers[pw_super] && !(stplyr->charflags & SF_NOSUPERSPRITES)) face = superprefix[stplyr->skin]; V_DrawSmallMappedPatch(hudinfo[HUD_LIVES].x, hudinfo[HUD_LIVES].y, hudinfo[HUD_LIVES].f|V_PERPLAYER|V_HUDTRANS, face, colormap);