//The Ashura transformation

freeslot("SKINCOLOR_THEGREENASHURA", "SKINCOLOR_THEMETALASHURA")

skincolors[SKINCOLOR_THEGREENASHURA] = {
    name = "Shadowy Green",
    ramp = {26,27,28,29,30,31,112,113,114,115,116,117,118,119,110,111},
    invcolor = SKINCOLOR_SAPPHIRE,
    invshade = 9,
    chatcolor = V_GREENMAP,
    accessible = false
}

skincolors[SKINCOLOR_THEMETALASHURA] = {
    name = "Shadowy Green (Metal)",
    ramp = {29,29,30,30,31,31,114,115,115,116,117,117,118,119,119,119},
    invcolor = SKINCOLOR_COBALT,
    invshade = 9,
    chatcolor = V_GREENMAP,
    accessible = false
}

local function GLITCHFORMS_IsSonic(player_t)
	if not (player_t.mo and player_t.mo.valid) then return false end
	
	local glitchforms_sonics = {"sonic", "werehog", "sunky", "bandages", "soap"}
	local glitchforms_charname = string.lower(skins[player_t.mo.skin].realname)

	for i = 1, #glitchforms_charname
		if string.find(glitchforms_charname, glitchforms_sonics[i])
			return true
		else
			return false
		end
	end
end

addHook("PlayerThink", function(player)
	if player.mo and player.mo.valid
		if player.transformbutton == nil
			player.transformbutton = BT_TOSSFLAG
		end
		if player.ashuradelay == nil
			player.ashuradelay = 45
		end
		if GLITCHFORMS_IsSonic(player) == true
			player.soniccanashura = true
		else
			player.soniccanashura = false
		end
		if player.ashuradelay > 0
			player.ashuradelay = $-1
		end
		if player.ashuradelay > 60
			player.mo.colorized = true
		elseif player.ashuradelay == 59
			player.mo.colorized = false
		end
		if not player.powers[pw_super]
		and player.soniccanashura == true
			if player.isashura != true
				player.mo.color = player.skincolor
			elseif player.isashura == true
				if skins[player.mo.skin].hudname == "METAL"
				or skins[player.mo.skin].hudname == "Metal"
				or skins[player.mo.skin].hudname == "metal"
					player.mo.color = SKINCOLOR_THEMETALASHURA
				else
					player.mo.color = SKINCOLOR_THEGREENASHURA
				end
			end
		end
		if player.cmd.buttons & player.transformbutton
		and player.soniccanashura == true
		and player.isashura != true
		and player.ashuradelay == 0
			P_FlashPal(player, PAL_WHITE, 10)
			S_StartSound(player.mo, 463, player)
			player.isashura = true
			player.ashuradelay = 70
		elseif player.cmd.buttons & player.transformbutton
		and player.soniccanashura == true
		and player.isashura == true
		and player.ashuradelay == 0
			player.ashuraabildelay = 0
			player.ashuracanteleport = false
			player.ashurabouncing = false
			player.mo.spritexscale = FRACUNIT
			player.mo.spriteyscale = FRACUNIT
			player.charability = skins[player.mo.skin].ability
			P_FlashPal(player, PAL_NUKE, 10)
			S_StartSound(player.mo, 463, player)
			player.isashura = false
			player.ashuradelay = 70
		end
	end
end)