From fb40a2836597f3aa751f0ac68aab2a87b93ecf02 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Tue, 17 Nov 2020 11:47:33 -0600 Subject: [PATCH 01/11] Do deh thing --- src/p_user.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/p_user.c b/src/p_user.c index 10b7e970e..a9194fbb2 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4524,6 +4524,7 @@ void P_DoJump(player_t *player, boolean soundandstate) player->mo->eflags &= ~MFE_APPLYPMOMZ; player->pflags |= P_GetJumpFlags(player);; + player->pflags &= ~PF_SPINNING; if (soundandstate) { From ad9bf6085f0845c9fde5348c7299136735a83d84 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 11:28:31 -0600 Subject: [PATCH 02/11] Fix no spin characters being able to damage enemies with their jump out of a spin without removing PF_SPINNING --- src/p_user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index a9194fbb2..c1b11965b 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1135,7 +1135,8 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing) return true; // Spinning. - if (player->pflags & PF_SPINNING) + if ((player->pflags & PF_SPINNING) + && !((player->pflags & PF_JUMPED) && (player->pflags & PF_NOJUMPDAMAGE))) return true; if (player->dashmode >= DASHMODE_THRESHOLD && (player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE)) @@ -4524,7 +4525,6 @@ void P_DoJump(player_t *player, boolean soundandstate) player->mo->eflags &= ~MFE_APPLYPMOMZ; player->pflags |= P_GetJumpFlags(player);; - player->pflags &= ~PF_SPINNING; if (soundandstate) { From 16fd754a398901eb403faff323adbe646451fa36 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 11:49:17 -0600 Subject: [PATCH 03/11] Allow forcespin sectors to work on no spin characters --- src/p_spec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_spec.c b/src/p_spec.c index a1afdd00d..99a0a0994 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -4503,7 +4503,7 @@ DoneSection2: P_InstaThrust(player->mo, player->mo->angle, linespeed); - if ((lines[i].flags & ML_EFFECT5) && (player->charability2 == CA2_SPINDASH)) // Roll! + if (lines[i].flags & ML_EFFECT5) // Roll! { if (!(player->pflags & PF_SPINNING)) player->pflags |= PF_SPINNING; @@ -4669,7 +4669,7 @@ DoneSection2: break; case 7: // Make player spin - if (!(player->pflags & PF_SPINNING) && P_IsObjectOnGround(player->mo) && (player->charability2 == CA2_SPINDASH)) + if (!(player->pflags & PF_SPINNING) && P_IsObjectOnGround(player->mo)) { player->pflags |= PF_SPINNING; P_SetPlayerMobjState(player->mo, S_PLAY_ROLL); From 09644d69c084484762995f27ef3598ef383aa297 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 12:01:06 -0600 Subject: [PATCH 04/11] Don't force S_PLAY_SPIN when landing with PF_SPINNING if you have certain PA flags --- src/p_user.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index c1b11965b..9f5484105 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2330,7 +2330,8 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) P_MobjCheckWater(player->mo); if (player->pflags & PF_SPINNING) { - if (player->mo->state-states != S_PLAY_ROLL && !(player->pflags & PF_STARTDASH)) + if (player->mo->state-states != S_PLAY_ROLL && !(player->pflags & PF_STARTDASH) && player->panim != PA_ROLL + && player->panim != PA_ETC && player->panim != PA_ABILITY && player->panim != PA_ABILITY2) { P_SetPlayerMobjState(player->mo, S_PLAY_ROLL); S_StartSound(player->mo, sfx_spin); From 01a03a4daa330958ef4633691e4d150379e0d803 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 12:03:48 -0600 Subject: [PATCH 05/11] lmao formatting --- src/p_user.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 9f5484105..004ff71d1 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2330,8 +2330,9 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) P_MobjCheckWater(player->mo); if (player->pflags & PF_SPINNING) { - if (player->mo->state-states != S_PLAY_ROLL && !(player->pflags & PF_STARTDASH) && player->panim != PA_ROLL - && player->panim != PA_ETC && player->panim != PA_ABILITY && player->panim != PA_ABILITY2) + if (player->mo->state-states != S_PLAY_ROLL && !(player->pflags & PF_STARTDASH) + && player->panim != PA_ROLL && player->panim != PA_ETC + && player->panim != PA_ABILITY && player->panim != PA_ABILITY2) { P_SetPlayerMobjState(player->mo, S_PLAY_ROLL); S_StartSound(player->mo, sfx_spin); From 7ad8aa14770d923ac3501e44af4eff4ea7cd802e Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 12:27:09 -0600 Subject: [PATCH 06/11] Allow the Forcespin sector type to be used with intangible fofs Didn't think simply removing the P_IsObjectOnGround was gonna work, but apparently it does. --- src/p_spec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_spec.c b/src/p_spec.c index 99a0a0994..9e0203619 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -4669,7 +4669,7 @@ DoneSection2: break; case 7: // Make player spin - if (!(player->pflags & PF_SPINNING) && P_IsObjectOnGround(player->mo)) + if (!(player->pflags & PF_SPINNING)) { player->pflags |= PF_SPINNING; P_SetPlayerMobjState(player->mo, S_PLAY_ROLL); From 9163e7309227965894719d1bd08d1f68a1c9c08c Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Wed, 18 Nov 2020 12:35:40 -0600 Subject: [PATCH 07/11] Allow no spin characters to water skip while spinning --- src/p_mobj.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 4fc561b20..004207a07 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -3393,7 +3393,7 @@ void P_MobjCheckWater(mobj_t *mobj) } // skipping stone! - if (p && (p->charability2 == CA2_SPINDASH) && p->speed/2 > abs(mobj->momz) + if (p && p->speed/2 > abs(mobj->momz) && ((p->pflags & (PF_SPINNING|PF_JUMPED)) == PF_SPINNING) && ((!(mobj->eflags & MFE_VERTICALFLIP) && thingtop - mobj->momz > mobj->watertop) || ((mobj->eflags & MFE_VERTICALFLIP) && mobj->z - mobj->momz < mobj->waterbottom))) From 7bbd563b73dc44ba1373bb3d038f5230a2d6329a Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Sun, 22 Nov 2020 23:23:35 -0600 Subject: [PATCH 08/11] Remove unneeded S_PLAY_ROLL check --- src/p_user.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 004ff71d1..0ffa5e1af 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -2330,8 +2330,7 @@ boolean P_PlayerHitFloor(player_t *player, boolean dorollstuff) P_MobjCheckWater(player->mo); if (player->pflags & PF_SPINNING) { - if (player->mo->state-states != S_PLAY_ROLL && !(player->pflags & PF_STARTDASH) - && player->panim != PA_ROLL && player->panim != PA_ETC + if (!(player->pflags & PF_STARTDASH) && player->panim != PA_ROLL && player->panim != PA_ETC && player->panim != PA_ABILITY && player->panim != PA_ABILITY2) { P_SetPlayerMobjState(player->mo, S_PLAY_ROLL); From 7b05ffd92d101d58aaaf8f5234413ff4ab8a0dd1 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Mon, 23 Nov 2020 09:18:05 -0600 Subject: [PATCH 09/11] Revert "Fix no spin characters being able to damage enemies with their jump out of a spin without removing PF_SPINNING" This reverts commit ad9bf6085f0845c9fde5348c7299136735a83d84. --- src/p_user.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/p_user.c b/src/p_user.c index 0ffa5e1af..2ec8f5995 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1135,8 +1135,7 @@ boolean P_PlayerCanDamage(player_t *player, mobj_t *thing) return true; // Spinning. - if ((player->pflags & PF_SPINNING) - && !((player->pflags & PF_JUMPED) && (player->pflags & PF_NOJUMPDAMAGE))) + if (player->pflags & PF_SPINNING) return true; if (player->dashmode >= DASHMODE_THRESHOLD && (player->charflags & (SF_DASHMODE|SF_MACHINE)) == (SF_DASHMODE|SF_MACHINE)) @@ -4526,6 +4525,7 @@ void P_DoJump(player_t *player, boolean soundandstate) player->mo->eflags &= ~MFE_APPLYPMOMZ; player->pflags |= P_GetJumpFlags(player);; + player->pflags &= ~PF_SPINNING; if (soundandstate) { From ea7e06a61635860ff266da3864ec0b4ecd8dd295 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Mon, 23 Nov 2020 09:21:00 -0600 Subject: [PATCH 10/11] Remove PF_SPINNING when jumping if you have SF_NOJUMPDAMAGE --- src/p_user.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index 2ec8f5995..da7ad4cb9 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4525,7 +4525,9 @@ void P_DoJump(player_t *player, boolean soundandstate) player->mo->eflags &= ~MFE_APPLYPMOMZ; player->pflags |= P_GetJumpFlags(player);; - player->pflags &= ~PF_SPINNING; + + if (!(player->charflags & SF_NOJUMPDAMAGE)) + player->pflags &= ~PF_SPINNING; if (soundandstate) { From fe066b3ef28a6b5f3bb91ca10a5ed319469e41d8 Mon Sep 17 00:00:00 2001 From: SMS Alfredo <65426124+SMS-Alfredo@users.noreply.github.com> Date: Mon, 23 Nov 2020 09:23:02 -0600 Subject: [PATCH 11/11] ...snickerdoodles --- src/p_user.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/p_user.c b/src/p_user.c index da7ad4cb9..6c3c6f136 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -4526,7 +4526,7 @@ void P_DoJump(player_t *player, boolean soundandstate) player->pflags |= P_GetJumpFlags(player);; - if (!(player->charflags & SF_NOJUMPDAMAGE)) + if (player->charflags & SF_NOJUMPDAMAGE) player->pflags &= ~PF_SPINNING; if (soundandstate)