// Change the leader ala Donkey Kong Country

addHook("PlayerThink", function(player)
	if player.mo and player.mo.valid
	and player.bot
	and not multiplayer
		if player.botleader
		and player.botleader.mo and player.botleader.mo.valid
			if not (player.botleader.cmd.buttons & BT_CUSTOM3)
				player.botleader.holdingleadersbutton = false
			end
			if (player.botleader.mo.skin == "dark" or player.botleader.mo.skin == "xkz")
			or (player.mo.skin == "dark" or player.mo.skin == "xkz")
				if player.botleader.cmd.buttons & BT_CUSTOM3
				and not (player.botleader.holdingleadersbutton)
				and player.mo.health
					// Real Player Stadistics
					local nobotx = player.botleader.mo.x
					local noboty = player.botleader.mo.y
					local nobotz = player.botleader.mo.z
					local nobotmomx = player.botleader.mo.momx
					local nobotmomy = player.botleader.mo.momy
					local nobotmomz = player.botleader.mo.momz
					local nobotang = player.botleader.drawangle
					local nobotskin = player.botleader.mo.skin
					local nobotstate = player.botleader.mo.state
					local nobotframe = player.botleader.mo.frame
					local nobottics = player.botleader.mo.tics
					local nobotflags = player.botleader.mo.flags
					local nobotflags2 = player.botleader.mo.flags2
					local noboteflags = player.botleader.mo.eflags
					local nobotpflags = player.botleader.pflags
					local nobotcharflags = player.botleader.charflags|SF_NOSHIELDABILITY
					local noboto2water = player.botleader.powers[pw_underwater]
					local noboto2space = player.botleader.powers[pw_spacetime]

					// Bot Stadistics
					local botx = player.mo.x
					local boty = player.mo.y
					local botz = player.mo.z
					local botmomx = player.mo.momx
					local botmomy = player.mo.momy
					local botmomz = player.mo.momz
					local botang = player.drawangle
					local botskin = player.mo.skin
					local botstate = player.mo.state
					local botframe = player.mo.frame
					local bottics = player.mo.tics
					local botflags = player.mo.flags
					local botflags2 = player.mo.flags2
					local boteflags = player.mo.eflags
					local botpflags = player.pflags
					local botcharflags = player.charflags & ~SF_NOSHIELDABILITY
					if skins[player.botleader.mo.skin].flags & SF_NOSHIELDABILITY
						botcharflags = player.charflags
					end
					local boto2water = player.powers[pw_underwater]
					local boto2space = player.powers[pw_spacetime]

					//* Revert the stadistics
					// Real Player
					S_StartSound(nil, sfx_kc5e, player.botleader)
					P_TeleportMove(player.botleader.mo, botx, boty, botz)
					player.botleader.mo.momx = botmomx
					player.botleader.mo.momy = botmomy
					player.botleader.mo.momz = botmomz
					player.botleader.drawangle = botang
					player.botleader.mo.state = botstate
					player.botleader.mo.frame = botframe
					player.botleader.mo.tics = bottics
					player.botleader.mo.flags = botflags & ~MF_NOGRAVITY
					player.botleader.mo.flags2 = botflags2
					player.botleader.mo.eflags = boteflags
					player.botleader.pflags = botpflags
					player.botleader.charflags = botcharflags
					player.botleader.powers[pw_underwater] = boto2water
					player.botleader.powers[pw_spacetime] = boto2space
					player.botleader.mo.rollangle = 0
					player.botleader.dark94thokked = false
					player.botleader.dark94thokcharge = 0
					player.botleader.dark94tricktime = 0
					player.botleader.dark94trickstate = 0
					player.botleader.dark94trickrollangle = false
					player.botleader.dark94trickangle = false
					player.botleader.xkzwasflying = false
					player.botleader.xkzspinhold = 0
					player.botleader.xkzgottadropdash = false
					player.botleader.xkzfireshootit = false
					player.botleader.holdingleadersbutton = true

					// Bot
					R_SetPlayerSkin(player.botleader, botskin)
					P_TeleportMove(player.mo, nobotx, noboty, nobotz)
					player.mo.momx = nobotmomx
					player.mo.momy = nobotmomy
					player.mo.momz = nobotmomz
					player.drawangle = nobotang
					player.mo.angle = nobotang
					player.mo.state = nobotstate
					player.mo.tics = nobottics
					player.mo.flags = nobotflags & ~MF_NOGRAVITY
					player.mo.flags2 = nobotflags2
					player.mo.eflags = noboteflags
					player.pflags = nobotpflags
					player.charflags = nobotcharflags
					player.powers[pw_underwater] = noboto2water
					player.powers[pw_spacetime] = noboto2space
					player.mo.rollangle = 0
					player.dark94thokked = false
					player.dark94thokcharge = 0
					player.dark94tricktime = 0
					player.dark94trickstate = 0
					player.dark94trickrollangle = false
					player.dark94trickangle = false
					player.xkzwasflying = false
					player.xkzspinhold = 0
					player.xkzgottadropdash = false
					player.xkzfireshootit = false
					R_SetPlayerSkin(player, nobotskin)
				end
			end
		end
	end
end)