diff --git a/src/d_player.h b/src/d_player.h index 5f5bf53d63f04f356aee6850752ac51126e38d3e..2df3ed4bf7024f918b40e6caa60d6311bbe1aff3 100644 --- a/src/d_player.h +++ b/src/d_player.h @@ -53,6 +53,7 @@ typedef enum SF_NOSUPERJUMPBOOST = 1<<17, // Disable the jump boost given while super (i.e. Knuckles) SF_CANBUSTWALLS = 1<<18, // Can naturally bust walls on contact? (i.e. Knuckles) SF_NOSHIELDABILITY = 1<<19, // Disable shield abilities + SF_FASTWAIT = 1<<20, // Faster idle animation? // free up to and including 1<<31 } skinflags_t; @@ -158,7 +159,7 @@ typedef enum PF_FORCESTRAFE = 1<<28, // Turning inputs are translated into strafing inputs PF_CANCARRY = 1<<29, // Can carry another player? PF_FINISHED = 1<<30, // The player finished the level. NOT the same as exiting - + // True if shield button down last tic // This may be the final flag, but 2.3 could free up the others PF_SHIELDDOWN = 1<<31, diff --git a/src/deh_tables.c b/src/deh_tables.c index 8fa32558baf8338d68a485ea6ef0b64edfb78db4..4a700ce9042f739cdfb1b55e814864fac425d11b 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -3371,7 +3371,7 @@ const char *const STATE_LIST[] = { // array length left dynamic for sanity testi "S_SPEEDWINGS", "S_SPEEDWINGSD", - + "S_PARTICLEPICKUP1", "S_PARTICLEPICKUP2", "S_1000SCOREAWARD", @@ -5434,6 +5434,7 @@ struct int_const_s const INT_CONST[] = { {"SF_NOSUPERJUMPBOOST",SF_NOSUPERJUMPBOOST}, {"SF_CANBUSTWALLS",SF_CANBUSTWALLS}, {"SF_NOSHIELDABILITY",SF_NOSHIELDABILITY}, + {"SF_FASTWAIT",SF_FASTWAIT}, // Dashmode constants {"DASHMODE_THRESHOLD",DASHMODE_THRESHOLD}, diff --git a/src/p_user.c b/src/p_user.c index bb5d8f44fb9d4b5ecb51ab84edc6691e9eedbafe..98fa7cfafda9a7dc1861aa1efeeae457d09486e6 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -978,7 +978,7 @@ boolean P_PlayerInPain(player_t *player) { if (P_MobjWasRemoved(player->mo)) return false; - + // no silly, sliding isn't pain if (!(player->pflags & PF_SLIDING) && player->mo->state == &states[player->mo->info->painstate] && player->powers[pw_flashing]) return true; @@ -12218,12 +12218,16 @@ void P_PlayerThink(player_t *player) // reset from waiting to standing when turning on the spot if (player->panim == PA_IDLE) { + statenum_t stat = player->mo->state-states; diff = player->drawangle - oldang; + + if (stat == S_PLAY_WAIT && (player->charflags & SF_FASTWAIT) && player->mo->anim_duration > 6) + player->mo->anim_duration = 6; + if (diff > ANGLE_180) diff = InvAngle(diff); if (diff > ANG10/2) { - statenum_t stat = player->mo->state-states; if (stat == S_PLAY_WAIT) P_SetMobjState(player->mo, S_PLAY_STND); else if (stat == S_PLAY_STND && player->mo->tics != -1) diff --git a/src/r_skins.c b/src/r_skins.c index f364273e8405189845a385fd918b0a95e79b6220..091a20567173f175beabf9443383cf4e91040709 100644 --- a/src/r_skins.c +++ b/src/r_skins.c @@ -737,6 +737,7 @@ static boolean R_ProcessPatchableFields(skin_t *skin, char *stoken, char *value) GETFLAG(NOSUPERJUMPBOOST) GETFLAG(CANBUSTWALLS) GETFLAG(NOSHIELDABILITY) + GETFLAG(FASTWAIT) #undef GETFLAG else if (!stricmp(stoken, "natkcolor"))