if not CFFC_Characters rawset(_G, "CFFC_Characters", {}) end CFFC_Characters["sonic"] = SKINCOLOR_RED CFFC_Characters["tails"] = SKINCOLOR_GARNET CFFC_Characters["knuckles"] = SKINCOLOR_FLAME CFFC_Characters["amy"] = SKINCOLOR_RUBY CFFC_Characters["fang"] = SKINCOLOR_RUBY CFFC_Characters["metalsonic"] = SKINCOLOR_CRIMSON local configplayer local function valid(mo) return mo and mo.valid end local FIREFLOWERFILE = "client/fireflowercolor.dat" local function save(path, toinsert) local file = io.openlocal(path, "w+") if type(toinsert) == "string" file:write(toinsert) else file:write(tostring(toinsert)) end file:close() end local function load(player, path, command, defaultvar) local file = io.openlocal(path) if file local str = file:read("*a") COM_BufInsertText(player, command+" "+str) file:close() else COM_BufInsertText(player, command+" "+defaultvar) end end COM_AddCommand("fireflowercolor", function(player, arg) if arg arg = arg:lower() if R_GetColorByName(arg) != SKINCOLOR_NONE player.fireflowercolor = R_GetColorByName(arg) CONS_Printf(player, "Fire form color is now "+R_GetNameByColor(player.fireflowercolor)) save(FIREFLOWERFILE, player.fireflowercolor) elseif arg == "skin" player.fireflowercolor = nil CONS_Printf(player, "Fire form color is now determined by the current skin's definition.") save(FIREFLOWERFILE, "skin") else CONS_Printf(player, "The specified skincolor is invalid.") end else CONS_Printf(player, "This command lets you change the color that you go when getting a Fire Flower.") if player.fireflowercolor == nil CONS_Printf(player, "The fire form color is currently determined by the skin's definition.") else CONS_Printf(player, "The current fire form color is "+R_GetNameByColor(player.fireflowercolor)) end end end) addHook("ThinkFrame", do if valid(consoleplayer) and not valid(configplayer) configplayer = consoleplayer load(consoleplayer, FIREFLOWERFILE, "fireflowercolor", "skin") end end) addHook("PlayerThink", function(player) if not (player.mo and player.mo.valid) then return end if player.powers[pw_shield] & SH_FIREFLOWER and player.mo.color != player.fireflowercolor and not player.fcapplied then if player.fireflowercolor == nil if not CFFC_Characters[player.mo.skin] player.mo.color = SKINCOLOR_WHITE else player.mo.color = CFFC_Characters[player.mo.skin] end else player.mo.color = player.fireflowercolor end player.fcapplied = true elseif not (player.powers[pw_shield] & SH_FIREFLOWER) and player.fcapplied then player.mo.color = player.skincolor player.fcapplied = false end if player.powers[pw_shield] & SH_FIREFLOWER and ((player.fireflowercolor != nil and player.mo.color != player.fireflowercolor) or (player.fireflowercolor == nil and CFFC_Characters[player.mo.skin] and player.mo.color != CFFC_Characters[player.mo.skin]) or (not CFFC_Characters[player.mo.skin] and player.mo.color != SKINCOLOR_WHITE)) and player.fcapplied then player.fcapplied = false end end)