freeslot("SKINCOLOR_CYBERNETIC")
skincolors[SKINCOLOR_CYBERNETIC] = {
    name = "Cybernetic",
    ramp = {129,130,130,130,130,131,131,132,132,132,141,141,141,141,141,141},
    invcolor = SKINCOLOR_JET,
    invshade = 2,
    chatcolor = V_INVERTMAP,
    accessible = true
}

freeslot("MT_CYBERPARTICLE1", "SPR_CYBR", "MT_CYBERPARTICLE2", "SPR_CYBE", "S_CYBERPARTICLE1", "S_CYBERPARTICLE2")

mobjinfo[MT_CYBERPARTICLE1] = {
        doomednum = -1,
        spawnstate = S_CYBERPARTICLE1,
        spawnhealth = 1,
        seestate = S_CYBERPARTICLE1,
        seesound = sfx_None,
        attacksound = sfx_None,
        painstate = S_CYBERPARTICLE1,
        painsound = sfx_None,
        meleestate = S_CYBERPARTICLE1,
        missilestate = S_CYBERPARTICLE1,
        deathstate = S_CYBERPARTICLE1,
        xdeathstate = S_CYBERPARTICLE1,
        deathsound = sfx_None,
		radius = mobjinfo[MT_PLAYER].radius,
		height = mobjinfo[MT_PLAYER].height,
        activesound = sfx_None,
        flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY,
        raisestate = S_NULL
}

states[S_CYBERPARTICLE1] = {
        sprite = SPR_CYBR,
        frame = A,
        tics = 10,
        var1 = 4,
        var2 = 2,
        nextstate = S_NULL
}

mobjinfo[MT_CYBERPARTICLE2] = {
        doomednum = -1,
        spawnstate = S_CYBERPARTICLE2,
        spawnhealth = 1,
        seestate = S_CYBERPARTICLE2,
        seesound = sfx_None,
        attacksound = sfx_None,
        painstate = S_CYBERPARTICLE2,
        painsound = sfx_None,
        meleestate = S_CYBERPARTICLE2,
        missilestate = S_CYBERPARTICLE2,
        deathstate = S_CYBERPARTICLE2,
        xdeathstate = S_CYBERPARTICLE2,
        deathsound = sfx_None,
		radius = mobjinfo[MT_PLAYER].radius,
		height = mobjinfo[MT_PLAYER].height,
        activesound = sfx_None,
        flags = MF_NOBLOCKMAP|MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT|MF_SCENERY,
        raisestate = S_NULL
}

states[S_CYBERPARTICLE2] = {
        sprite = SPR_CYBE,
        frame = A,
        tics = 10,
        var1 = 4,
        var2 = 2,
        nextstate = S_NULL
}

addHook("PlayerThink", function(player)
	if player.skincolor == SKINCOLOR_CYBERNETIC
		player.mo.frame = $ | TR_TRANS50|FF_FULLBRIGHT
		player.mo.colorized = true
		player.mo.color = SKINCOLOR_CYBERNETIC
		local cyberparticle1 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(0, 32) * FRACUNIT, MT_CYBERPARTICLE1)
		cyberparticle1.color = SKINCOLOR_MAGENTA
		cyberparticle1.colorized = true
		cyberparticle1.blendmode = AST_ADD
		local cyberparticle2 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(0, 32) * FRACUNIT, MT_CYBERPARTICLE2)
		cyberparticle2.color = SKINCOLOR_SKY
		cyberparticle2.colorized = true
		cyberparticle2.blendmode = AST_ADD
		local cyberparticle1 = P_SpawnMobjFromMobj(player.realmo, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(-18, 18) * FRACUNIT, P_RandomRange(0, 32) * FRACUNIT, MT_CYBERPARTICLE2)
		cyberparticle1.color = SKINCOLOR_RED
		cyberparticle1.colorized = true
		cyberparticle1.blendmode = AST_ADD
	end
end)

addHook("PlayerThink", function(player)
	if not player.skincolor == SKINCOLOR_CYBERNETIC
		player.mo.colorized = false
		player.mo.color = player.skincolor
	end
end)