From 4a53d96099e34c9960b796fd91464a1ae95090fa Mon Sep 17 00:00:00 2001
From: toasterbabe <rollerorbital@gmail.com>
Date: Mon, 26 Dec 2016 18:36:57 +0000
Subject: [PATCH] * Fixed changing skins during differing-length sprite
 animations resulting in sprite errors. * Added PF_BOUNCING to a place where
 it would likely be wanted.

---
 src/b_bot.c    | 2 +-
 src/r_things.c | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/b_bot.c b/src/b_bot.c
index 0f2c80d55b..9565b0e092 100644
--- a/src/b_bot.c
+++ b/src/b_bot.c
@@ -212,7 +212,7 @@ boolean B_CheckRespawn(player_t *player)
 
 	// Check if Sonic is busy first.
 	// If he's doing any of these things, he probably doesn't want to see us.
-	if (sonic->player->pflags & (PF_GLIDING|PF_SLIDING|PF_NIGHTSMODE)
+	if (sonic->player->pflags & (PF_GLIDING|PF_SLIDING|PF_BOUNCING|PF_NIGHTSMODE)
 	|| (sonic->player->panim != PA_IDLE && sonic->player->panim != PA_WALK)
 	|| (sonic->player->powers[pw_carry]))
 		return false;
diff --git a/src/r_things.c b/src/r_things.c
index fcc4d31037..d5e3689594 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2627,16 +2627,16 @@ void SetPlayerSkinByNum(INT32 playernum, INT32 skinnum)
 				player->mo->color = newcolor;
 			P_SetScale(player->mo, player->mo->scale);
 			player->mo->radius = FixedMul(skin->radius, player->mo->scale);
+
+			P_SetPlayerMobjState(player->mo, player->mo->state-states); // Prevent visual errors when switching between skins with differing number of frames
 		}
 		return;
 	}
-	else if (skinnum >= 0 && skinnum < numskins)
-		skinnum = 255; // Cheeky emulation.
 
 	if (P_IsLocalPlayer(player))
-		CONS_Alert(CONS_WARNING, M_GetText("Skin %d not found\n"), skinnum);
+		CONS_Alert(CONS_WARNING, M_GetText("Requested skin not found\n"));
 	else if(server || adminplayer == consoleplayer)
-		CONS_Alert(CONS_WARNING, "Player %d (%s) skin %d not found\n", playernum, player_names[playernum], skinnum);
+		CONS_Alert(CONS_WARNING, "Player %d (%s) skin not found\n", playernum, player_names[playernum]);
 	SetPlayerSkinByNum(playernum, 0); // not found put the sonic skin
 }
 
-- 
GitLab