
//states
freeslot("S_PLAY_COLOURPOWER", "S_CYANLASERSQUARE", "S_CYANLASERAIM", "S_NBOB", "S_PLAY_JIMORBT", 
	"S_PLAY_ELECTRO", "S_PLAY_CMANXTRAJ", "S_PLAY_PLANERIDE", 
	"S_JIMSUPERAURAS", "S_JIMSUPERAURA", "S_JIMJUMPDUSTE", "S_JIMJUMPDUSTD", 
	"S_JIMJUMPDUSTC", "S_JIMJUMPDUSTB", "S_JIMJUMPDUSTA", "S_JIMSPINBALLBLURD", 
	"S_JIMSPINBALLBLURC", "S_JIMSPINBALLBLURB", "S_JIMSPINBALLBLURA", 
	"S_FRANK_JIMDISTRACT", "S_PLAY_PJXTRAB", "S_PLAY_PJXTRA", "S_PLAY_RAFXTRA", 
	"S_PLAY_JIMOUCH", "S_PLAY_JIMBUMP", "S_RAFSKIAT3", "S_RAFSKIAT2", 
	"S_RAFSKIAT1", "S_PLAY_STARTC", "S_PLAY_STARTB", "S_PLAY_STARTA", 
	"S_PLAY_FACEPLANT", "S_PLAY_WAIT2", "S_PLAY_SNEAKERWORRY", "S_PLAY_SHOWOFF",
	"S_PLAY_RSTRSONT", "S_PLAY_WATEWORRY", "S_PLAY_RADSPIN", "S_PLAY_LAUNCHFIRE", 
	"S_PLAY_COUGH", "S_PLAY_PHONE", "S_PLAY_SLIDE", "S_PLAY_CROUCH", 
	"S_PLAY_FREEZING", "S_PLAY_PANTY", "S_PLAY_M64BURN", "S_PLAY_DETERMIN", 
	"S_PLAY_LOOKIN")


//sprite/ sprite2
freeslot("SPR2_COLR", "SPR2_ELEC", "SPR2_CMAN", "SPR2_PLRD", "SPR_JAUS", "SPR_JAUR", "SPR_JDUS", 
	"SPR_JTHK", "SPR2_JDIS", "SPR2_PAPF", "SPR2_PAPA", "SPR_RAFA", "SPR2_JRE2",  
	"SPR2_JRED", "SPR2_SNEK", "SPR2_PSON", "SPR2_WORR", "SPR2_RADS",  "SPR2_SPLC", 
	"SPR2_COFF", "SPR2_PHON", "SPR2_FAN_", "SPR2_CRSL", "SPR2_CRCH", 
	"SPR2_BURN", "SPR2_COLD", "SPR2_PANT", "SPR2_DETR", 
	"SPR2_LOOK", "SPR_PLAY", "SPR_CYLB", "SPR_CYLA", "SPR_NBOB")

//sounds
freeslot("sfx_GOFAST","sfx_POOPED","sfx_KRCBAC","sfx_JIMUWA", "sfx_JIMUW3", "sfx_JIMUW2", "SPR2_PAPF", "sfx_ROBOOF", "sfx_DANGIT", 
	"sfx_JHELLO", "sfx_JMWHOA", "sfx_JIMYEH", "sfx_THASME")


//ojrcts
freeslot("MT_JIMSAURA", "MT_CPCLJIMSQUARE", "MT_CPCLJIMAIN")

states[S_PLAY_COLOURPOWER] = {SPR_PLAY, SPR2_COLR, 1, nil, 0, 0, S_PLAY_COLOURPOWER}

states[S_CYANLASERSQUARE] = {SPR_CYLB, FF_ANIMATE, 10, nil, 4, 1, S_NULL}

states[S_CYANLASERAIM] = {SPR_CYLA, FF_ANIMATE, 105, nil, 6, 1, S_NULL}

states[S_NBOB] = {SPR_NBOB, A, 2, nil, 0, 0, S_NBOB}

states[S_PLAY_JIMORBT] = {SPR_PLAY, SPR2_ROLL, 1, A_OrbitNights, ANG2*16, 0, S_PLAY_ROLL}

states[S_PLAY_ELECTRO] = {SPR_PLAY, SPR2_ELEC, 2, nil, 0, 0, S_PLAY_ELECTRO}

states[S_PLAY_PLANERIDE] = {SPR_PLAY, SPR2_PLRD, 5, nil, 0, 0, S_PLAY_PLANERIDE}

states[S_JIMSUPERAURAS] = {
        sprite = SPR_JAUS,
        frame = FF_ANIMATE|FF_TRANS90|FF_FULLBRIGHT,
        tics = 35,
		var1 = 6,
		var2 = 2,
        nextstate = S_JIMSUPERAURA,
}

states[S_JIMSUPERAURA] = {
        sprite = SPR_JAUR,
        frame = FF_ANIMATE|FF_TRANS60|FF_FULLBRIGHT,
        tics = 12,
		var1 = 6,
		var2 = 2,
        nextstate = S_JIMSUPERAURA,
}

	
states[S_JIMJUMPDUSTA] = {
        sprite = SPR_JDUS,
        frame = A|FF_TRANS30,
        tics = 2,
        nextstate = S_JIMJUMPDUSTB,
}

states[S_JIMJUMPDUSTB] = {
        sprite = SPR_JDUS,
        frame = B|FF_TRANS40,
        tics = 2,
        nextstate = S_JIMJUMPDUSTC,
}

states[S_JIMJUMPDUSTC] = {
        sprite = SPR_JDUS,
        frame = C|FF_TRANS50,
        tics = 2,
        nextstate = S_JIMJUMPDUSTD,
}

states[S_JIMJUMPDUSTD] = {
        sprite = SPR_JDUS,
        frame = D|FF_TRANS60,
        tics = 2,
        nextstate = S_JIMJUMPDUSTE,
}

states[S_JIMJUMPDUSTE] = {
        sprite = SPR_JDUS,
        frame = E|FF_TRANS70,
        tics = 2,
        nextstate = S_NULL,
}

states[S_JIMSPINBALLBLURA] = {
        sprite = SPR_JTHK,
        frame = A|FF_TRANS30,
        tics = 2,
        nextstate = S_JIMSPINBALLBLURB,
}

states[S_JIMSPINBALLBLURB] = {
        sprite = SPR_JTHK,
        frame = B|FF_TRANS40,
        tics = 1,
        nextstate = S_JIMSPINBALLBLURC,
}

states[S_JIMSPINBALLBLURC] = {
        sprite = SPR_JTHK,
        frame = C|FF_TRANS60,
        tics = 1,
        nextstate = S_JIMSPINBALLBLURD,
}

states[S_JIMSPINBALLBLURD] = {
        sprite = SPR_JTHK,
        frame = D|FF_TRANS80,
        tics = 1,
        nextstate = S_NULL,
}

states[S_PLAY_PJXTRA] = {
        sprite = SPR_PLAY,
        frame = SPR2_CLNG|FF_ANIMATE,
        tics = 192,
		var1 = 64,
		var2 = 3,
        nextstate = S_PLAY_PJXTRAB,
}

states[S_PLAY_PJXTRAB] = {
        sprite = SPR_PLAY,
        frame = SPR2_TIRE|FF_ANIMATE,
        tics = 30,
		var1 = 10,
		var2 = 3,
        nextstate = S_PLAY_PJXTRA,
}

states[S_FRANK_JIMDISTRACT] = {SPR_PLAY, SPR2_JDIS, 3, nil, 0, 0, S_FRANK_JIMDISTRACT}

states[S_PLAY_RAFXTRA] = {SPR_PLAY, SPR2_CLMB, 5, nil, 0, 0, S_PLAY_RAFXTRA}

states[S_PLAY_JIMOUCH] = {
        sprite = SPR_PLAY,
        frame = SPR2_PAPF,
		tics = 35,
        nextstate = S_PLAY_JIMOUCH,
}

states[S_PLAY_JIMBUMP] = {
        sprite = SPR_PLAY,
        frame = SPR2_PAPA,
		tics = 5,
        nextstate = S_PLAY_STND,
}

states[S_RAFSKIAT1] = {
        sprite = SPR_RAFA,
        frame = A,
        tics = 1*TICRATE/6,
        nextstate = S_RAFSKIAT2,
}

states[S_RAFSKIAT2] = {
        sprite = SPR_RAFA,
        frame = B,
        tics = 1*TICRATE/6,
        nextstate = S_RAFSKIAT3,
}

states[S_RAFSKIAT3] = {
        sprite = SPR_RAFA,
        frame = C,
        tics = 1*TICRATE/6,
        nextstate = S_NULL,
}

states[S_PLAY_STARTC] = {
        sprite = SPR_PLAY,
        frame = SPR2_JRE2,
        tics = 35,
        nextstate = S_PLAY_STND,
}

states[S_PLAY_STARTB] = {
        sprite = SPR_PLAY,
        frame = SPR2_LAND,
        tics = 35,
        nextstate = S_PLAY_STARTC,
}

states[S_PLAY_STARTA] = {
        sprite = SPR_PLAY,
        frame = SPR2_JRED|FF_ANIMATE,
        tics = 70,
		var1 = 13,
		var2 = 6,
        nextstate = S_PLAY_STARTB,
}

states[S_PLAY_SHOWOFF] = {
        sprite = SPR_PLAY,
        frame = SPR2_RUN|FF_ANIMATE,
        tics = 8,
		var1 = 4,
		var2 = 2,
        nextstate = S_PLAY_SHOWOFF,
}

states[S_PLAY_WAIT2] = {
        sprite = SPR_PLAY,
        frame = SPR2_WAIT|FF_ANIMATE,
        tics = 20,
		var1 = 2,
		var2 = 10,
        nextstate = S_PLAY_WAIT2,
}

states[S_PLAY_SNEAKERWORRY] = {
        sprite = SPR_PLAY,
        frame = SPR2_RUN_|FF_ANIMATE,
        tics = 8,
		var1 = 4,
		var2 = 2,
        nextstate = S_PLAY_RUN,
}

states[S_PLAY_RSTRSONT] = {
        sprite = SPR_PLAY,
		default = SPR2_EDGE,
        frame = SPR2_PSON|FF_ANIMATE,
        tics = 20,
		var1 = 4,
		var2 = 5,
        nextstate = S_PLAY_RSTRSONT,
}

states[S_PLAY_WATEWORRY] = {
        sprite = SPR_PLAY,
        frame = SPR2_WORR|FF_ANIMATE,
        tics = 4,
		var1 = 2,
		var2 = 2,
        nextstate = S_PLAY_PAIN,
}

states[S_PLAY_RADSPIN] = {
        sprite = SPR_PLAY,
        frame = SPR2_RADS|FF_ANIMATE,
        tics = 10,
		var1 = 5,
		var2 = 2,
		nextstate = S_PLAY_RADSPIN,
}

states[S_PLAY_LAUNCHFIRE] = {
        sprite = SPR_PLAY,
        frame = SPR2_SPLC|FF_ANIMATE,
        tics = 6,
		var1 = 3,
		var2 = 2,
		nextstate = S_PLAY_RADSPIN,
}

states[S_PLAY_SLIDE] = {
        sprite = SPR_PLAY,
        frame = SPR2_CRSL,
		nextstate = S_PLAY_FALL,
}

states[S_PLAY_CROUCH] = {
        sprite = SPR_PLAY,
        frame = SPR2_CRCH,
}

states[S_PLAY_PHONE] = {
        sprite = SPR_PLAY,
        frame = SPR2_PHON,
		nextstate = S_NULL,
}

states[S_PLAY_COUGH] = {
        sprite = SPR_PLAY,
        frame = SPR2_COFF|FF_ANIMATE,
        tics = 32,
		var1 = 2,
		var2 = 8,
		nextstate = S_PLAY_COUGH,
}

states[S_PLAY_DETERMIN] = {
        sprite = SPR_PLAY,
        frame = SPR2_DETR|FF_ANIMATE,
        tics = 20,
		var1 = 4,
		var2 = 5,
		nextstate = S_PLAY_DETERMIN,
}

states[S_PLAY_LOOKIN] = {
        sprite = SPR_PLAY,
        frame = SPR2_LOOK|FF_ANIMATE,
        tics = 32,
		var1 = 2,
		var2 = 8,
		nextstate = S_PLAY_LOOKIN,
}

states[S_PLAY_PANTY] = {
        sprite = SPR_PLAY,
        frame = SPR2_PANT|FF_ANIMATE,
        tics = 16,
		var1 = 2,
		var2 = 8,
		nextstate = S_PLAY_PANTY,
}

states[S_PLAY_FREEZING] = {
        sprite = SPR_PLAY,
        frame = SPR2_COLD|FF_ANIMATE,
        tics = 4,
		var1 = 2,
		var2 = 2,
		nextstate = S_PLAY_FREEZING,
}

states[S_PLAY_M64BURN] = {
        sprite = SPR_PLAY,
        frame = SPR2_BURN|FF_ANIMATE,
        tics = 4,
		var1 = 2,
		var2 = 2,
        nextstate = S_PLAY_M64BURN,
}

sfxinfo[sfx_jimuwa] = { caption = "underwater ambience" }
sfxinfo[sfx_gofast] = { caption = "goin' fast" }
sfxinfo[sfx_jimuw2] = { caption = "ding" }
sfxinfo[sfx_jimuw3] = { caption = "GET BUBBLE" }
sfxinfo[sfx_roboof] = { caption = "0 bobux" }

if not(kirbyabilitytable)
	rawset(_G, "kirbyabilitytable", {})
end

kirbyabilitytable["m.jimmyharold"] = 7		// Tornado

rawset(_G, "healthdata", setmetatable({
	["m.jimmyharold"] = {22, 16, 12, 1, 150},
}, {__index = function() return {BASEHP, EMERALDBONUS, BOSSBONUS, POINTBONUS, POINTSTOGETBONUS} end}))

rawset(_G, "ringdata", setmetatable({
	["m.jimmyharold"] = {0, 1, 0, 999999999}, //good luck getting here
}, {__index = function() return {BASERP, EMERALDRPBONUS, BOSSRPBONUS, POINTSTOGETEXTRARP} end}))

rawset(_G, "khStartingStr", setmetatable({
	["m.jimmyharold"] = 1,
}, {__index = function() return 4 end}))

rawset(_G, "khStrIncreases", setmetatable({
	["m.jimmyharold"] = {[2] = 2, [5] = 2, [10] = 3, [20] = 3, [25] = 8, [30] = 9, [40] = 10, [45] = 11, [50] = 12, [60] = 13, [65] = 14, [70] = 15, [80] = 16, [85] = 17, [90] = 18, [99] = 19},
}, {__index = function() return {[10] = 1, [20] = 2, [30] = 1, [40] = 2, [50] = 1, [60] = 2, [70] = 1, [80] = 2, [90] = 1, [99] = 2} end}))

rawset(_G, "khStartingMag", setmetatable({
	["m.jimmyharold"] = 0,
}, {__index = function() return 4 end}))

rawset(_G, "khMagIncreases", setmetatable({
	["m.jimmyharold"] = {[2] = 1, [10] = 0, [15] = 0, [20] = 0, [30] = 1, [35] = 0, [40] = 0, [50] = 0, [55] = 1, [60] = 0, [70] = 0, [75] = 0, [80] = 1, [90] = 0, [95] = 0, [99] = 1}, //haha not very much majic
}, {__index = function() return {[10] = 1, [20] = 2, [30] = 1, [40] = 2, [50] = 1, [60] = 2, [70] = 1, [80] = 2, [90] = 1, [99] = 2} end}))

rawset(_G, "khheadpatch", setmetatable({
	//Each character will have (up to) five HUD sprites, in this order:
	//Normal, Low Health, KOed, Super and Special
	["m.jimmyharold"] = {"KH_JIM", "KL_JIM", "KO_JIM", "KS_JIM", "KS_JIM"},
}, {__index = function() return {"KH_BASE"} end}))


