From 3f8a2122f932e476fb9df83661425c459e9167b5 Mon Sep 17 00:00:00 2001 From: pastel <hazepastel@proton.me> Date: Sat, 18 Jan 2025 21:24:24 -0600 Subject: [PATCH 1/4] Add SF_FASTWAIT for Amy --- src/d_player.h | 3 ++- src/deh_tables.c | 3 ++- src/p_user.c | 6 ++++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/d_player.h b/src/d_player.h index 5f5bf53d63..2df3ed4bf7 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 8fa32558ba..caaf7a47db 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_FASTEDGE",SF_FASTEDGE}, // Dashmode constants {"DASHMODE_THRESHOLD",DASHMODE_THRESHOLD}, diff --git a/src/p_user.c b/src/p_user.c index bb5d8f44fb..0e8916749b 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,14 @@ 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) && (leveltime%3 == 0)) + P_SetMobjState(player->mo, stat); 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) -- GitLab From e22d23882a4d3c663b52ebcaa8c659c0e71229a2 Mon Sep 17 00:00:00 2001 From: pastel <hazepastel@proton.me> Date: Sat, 18 Jan 2025 21:38:03 -0600 Subject: [PATCH 2/4] oops --- src/deh_tables.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deh_tables.c b/src/deh_tables.c index caaf7a47db..4a700ce904 100644 --- a/src/deh_tables.c +++ b/src/deh_tables.c @@ -5434,7 +5434,7 @@ struct int_const_s const INT_CONST[] = { {"SF_NOSUPERJUMPBOOST",SF_NOSUPERJUMPBOOST}, {"SF_CANBUSTWALLS",SF_CANBUSTWALLS}, {"SF_NOSHIELDABILITY",SF_NOSHIELDABILITY}, - {"SF_FASTEDGE",SF_FASTEDGE}, + {"SF_FASTWAIT",SF_FASTWAIT}, // Dashmode constants {"DASHMODE_THRESHOLD",DASHMODE_THRESHOLD}, -- GitLab From 904a7eb73690d4a157998aba86cc8ee3df82c5a0 Mon Sep 17 00:00:00 2001 From: pastel <hazepastel@proton.me> Date: Sun, 19 Jan 2025 00:21:15 -0600 Subject: [PATCH 3/4] Use anim duration timer --- src/p_user.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 0e8916749b..98fa7cfafd 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -12220,8 +12220,10 @@ void P_PlayerThink(player_t *player) { statenum_t stat = player->mo->state-states; diff = player->drawangle - oldang; - if (stat == S_PLAY_WAIT && (player->charflags & SF_FASTWAIT) && (leveltime%3 == 0)) - P_SetMobjState(player->mo, stat); + + 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) -- GitLab From 60e267b8a1b2d5d0a6034dee2269ad212ccf6974 Mon Sep 17 00:00:00 2001 From: pastel <hazepastel@proton.me> Date: Sun, 19 Jan 2025 00:29:32 -0600 Subject: [PATCH 4/4] GETFLAG --- src/r_skins.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/r_skins.c b/src/r_skins.c index f364273e84..091a205671 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")) -- GitLab