Remove PF_SPINNING upon use of any jump ability, so that directionchar works properly

This commit is contained in:
lachablock 2021-03-18 14:48:15 +11:00
parent 91c9d667e1
commit 4f18f6d3cf

View file

@ -5012,7 +5012,7 @@ void P_Telekinesis(player_t *player, fixed_t thrust, fixed_t range)
static void P_DoTwinSpin(player_t *player) static void P_DoTwinSpin(player_t *player)
{ {
player->pflags &= ~PF_NOJUMPDAMAGE; player->pflags &= ~(PF_NOJUMPDAMAGE|PF_SPINNING);
player->pflags |= P_GetJumpFlags(player) | PF_THOKKED; player->pflags |= P_GetJumpFlags(player) | PF_THOKKED;
S_StartSound(player->mo, sfx_s3k42); S_StartSound(player->mo, sfx_s3k42);
player->mo->frame = 0; player->mo->frame = 0;
@ -5286,6 +5286,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
else if (player->pflags & PF_JUMPED) else if (player->pflags & PF_JUMPED)
{ {
if (!LUAh_AbilitySpecial(player)) if (!LUAh_AbilitySpecial(player))
{
switch (player->charability) switch (player->charability)
{ {
case CA_THOK: case CA_THOK:
@ -5348,7 +5349,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
P_SpawnThokMobj(player); P_SpawnThokMobj(player);
player->pflags &= ~(PF_SPINNING|PF_STARTDASH); player->pflags &= ~(PF_STARTDASH);
player->pflags |= PF_THOKKED; player->pflags |= PF_THOKKED;
// Change localangle to match for simple controls? (P.S. chalupa) // Change localangle to match for simple controls? (P.S. chalupa)
@ -5375,7 +5376,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
player->powers[pw_tailsfly] = tailsflytics + 1; // Set the fly timer player->powers[pw_tailsfly] = tailsflytics + 1; // Set the fly timer
player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE|PF_SPINNING|PF_STARTDASH); player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE|PF_STARTDASH);
if (player->bot == 1) if (player->bot == 1)
player->pflags |= PF_THOKKED; player->pflags |= PF_THOKKED;
else else
@ -5406,7 +5407,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
P_SetPlayerMobjState(player->mo, S_PLAY_GLIDE); P_SetPlayerMobjState(player->mo, S_PLAY_GLIDE);
if (playerspeed < glidespeed) if (playerspeed < glidespeed)
P_Thrust(player->mo, player->mo->angle, glidespeed - playerspeed); P_Thrust(player->mo, player->mo->angle, glidespeed - playerspeed);
player->pflags &= ~(PF_SPINNING|PF_STARTDASH); player->pflags &= ~(PF_STARTDASH);
} }
break; break;
case CA_DOUBLEJUMP: // Double-Jump case CA_DOUBLEJUMP: // Double-Jump
@ -5429,7 +5430,7 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
else else
P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT); P_SetPlayerMobjState(player->mo, S_PLAY_FLOAT);
player->pflags |= PF_THOKKED; player->pflags |= PF_THOKKED;
player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE|PF_SPINNING); player->pflags &= ~(PF_JUMPED|PF_NOJUMPDAMAGE);
player->secondjump = 1; player->secondjump = 1;
} }
break; break;
@ -5475,6 +5476,8 @@ static void P_DoJumpStuff(player_t *player, ticcmd_t *cmd)
default: default:
break; break;
} }
player->pflags &= ~PF_SPINNING;
}
} }
else if (player->pflags & PF_THOKKED) else if (player->pflags & PF_THOKKED)
{ {