  _____      _             _       _
 |_   _|   _| |_ ___  _ __(_) __ _| |				O	O
   | || | | | __/ _ \| '__| |/ _` | |
   | || |_| | || (_) | |  | | (_| | |			\___________/
   |_| \__,_|\__\___/|_|  |_|\__,_|_|
--------------------------------------------------------------------------------
If you're reading this, then you're probably wondering how to make custom 
dynaskins... it's really simple (not really... if it was, you wouldn't be 
reading this)

Anyways, let's get started...

to make a dynaskin, you're gonna need a few things:
	- name → Literally the name of it (keep it one word)
	- desc → A description that will pop up next to the name
	- skin_init → A function that determines what happens when you start using 
				  the skin
	- skin_think → A function that determines what happens every tic after you 
				   start using the skin
	- color → A table with every color in the dynaskin
	- [OPTIONAL] cycle_speed → How many tics the current color will stay before 
							   cycling to the next 
							   (NOTE: IF NOT PROVIDED, DEFAULTS TO 10 TICS)
	- [OPTIONAL] category → will help separate dynaskins by theme

--------------------------------------------------------------------------------
I know, it's a bit much, but now I'll walk you through it... so, let's say you 
wanna make a really simple one that flashes between black and white every 5 
frames... (man, talk about seizure inducing)

so let's come up with a name... let's call it kodachrome, and it's description 
will be "Flashing Black and White"

so, to get started, we set up a table

{name = "kodachrome", desc = "Flashing Black and White", 
skin_init = ?, skin_think = ?,
color = ?, cycle_speed = ?}

--------------------------------------------------------------------------------
Because we want it to cycle on a specific rhythm, we should use the 
CycleInit and CycleThink functions for this skin's init and think functions

{name = "kodachrome", desc = "Flashing Black and White", 
skin_init = CycleInit, skin_think = CycleThink,
color = ?, cycle_speed = ?}

--------------------------------------------------------------------------------
The color value in the dynaskin is a table itself, holding all the colors in the
order they appear.
Because this example only wants black and white, this will be easy

We also know that we want each color to last 5 tics, so we set cycle_speed to 5

{name = "kodachrome", desc = "Flashing Black and White", 
skin_init = CycleInit, skin_think = CycleThink,
color = {SKINCOLOR_WHITE, SKINCOLOR_BLACK} , cycle_speed = 5}

--------------------------------------------------------------------------------

Now that we have it set up, we can use Add_DynaSkin to throw it in

local kodachrome = {name = "kodachrome", desc = "Flashing Black and White", 
				skin_init = CycleInit, skin_think = CycleThink,
				color = {SKINCOLOR_WHITE, SKINCOLOR_BLACK} , cycle_speed = 5}
				
Add_DynaSkin(kodachrome)

--------------------------------------------------------------------------------
If you wanted to add it to a custom category (let's call it Monochrome), you 
would add the Monochrome category beforehand by using Add_DynaCatgory and make 
sure the Dynaskin has a field called category with the same name as the category
itself

Add_DynaCategory("Monochrome")

local kodachrome = {name = "kodachrome", desc = "Flashing Black and White", 
				skin_init = CycleInit, skin_think = CycleThink,
				color = {SKINCOLOR_WHITE, SKINCOLOR_BLACK} , cycle_speed = 5, 
				category = "Monochrome"}
				
Add_DynaSkin(kodachrome)

--------------------------------------------------------------------------------
Congrats, you just made a simple dynaskin...
however it is possible to go further

Cycle Colors are not the only types of Dynaskins
There are also:
	Item Colors: which requires the colors table to have 1 color for each item 
				 (the order of the items in the table is the same as the 
				 one for kartdebugitem)
				 
	Position Colors: which requires the colors table to have 1 color for each 
					 position (in other words, 16 colors)
					 
	Speed Colors: requires the colors table to have 6 colors, with the 1st color 
				  being the slowest speed and the 6th color being the 
				  fastest speed (roughly boost speed on normal speed)
		  
To change their types, you use: 
		ItemInit & ItemThink
		PositionInit & PositionThink
		SpeedInit & SpeedThink
		
		or alternatively, you can make your own Init and Think Functions and 
		pass them into the dynaskin

--------------------------------------------------------------------------------	
Also, if you end up using anything that isn't Cycle, you have something 
special you can do... you can have color cycles inside of your thinker

To see an example of this, check out the dashmode dynaskin in the main pack

To set this up, you can do something like:

	color = {SKINCOLOR_BLUEBERRY,
			 SKINCOLOR_BLUEBERRY,
			 SKINCOLOR_BLUEBERRY,
			 SKINCOLOR_BLUEBERRY,
			 {SKINCOLOR_BLUBERRY, SKINCOLOR_PUMPKIN},
			 }

let's say that this is a speed dynaskin... whenever the player hits that 
max speed range, they would flicker between Blueberry and Pumpkin, at 
whatever that dynaskin's cycle_speed is

Note: this color table is identical to dashmode's

--------------------------------------------------------------------------------
Anyways, that's all my wisdom for now... i kinda wrote this all in one sitting,
and I've got no one to proofread this, so L + ratio I guess. Feel free to dm me 
on discord and I'll try to help as much as I can
