-- Persona Support --

if not srb2p return end

-- Stats
charStats["flchan"] = {
	name = "FL Chan",
	basehp = 50,
	basesp = 60,
	persona = "sirius",
	melee_natk = "flchan_atk1",
	melee_satk = "flchan_atk2",
	supercolor_start = SKINCOLOR_SUPERPERIDOT1,
	atk = 25,
	acc = 75,
	crit = 5,
	anim_stand = {SPR_PLAY, A, 8, "SPR2_STND"},
	anim_stand_hurt = {SPR_PLAY, A, 1, "SPR2_STND"},
	anim_stand_bored = {SPR_PLAY, A, B, A, B, A, B, A, B, 15, "SPR2_WAIT"},
	anim_guard = {SPR_PLAY, C, 2, "SPR2_RUN"},
	anim_move = {SPR_PLAY, A, B, C, D, E, F, G, H, 2, "SPR2_WALK"},
	anim_run = {SPR_PLAY, A, B, C, D, E, F, G, H, 2, "SPR2_RUN"},
	anim_atk = {SPR_PLAY, A, B, C, D, E, F, G, H, 1, "SPR2_ROLL"},
	anim_aoa_end = {SPR_PLAY, H, G, F, E, D, C, B, A, 1, "SPR2_ROLL"},
	anim_hurt = {SPR_PLAY, A, 35, "SPR2_PAIN"},
	anim_getdown = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_downloop = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_getup = {SPR_PLAY, A, 1, "SPR2_SPNG"},
	anim_death = {SPR_PLAY, A, 30, "SPR2_DEAD"},
	anim_revive = {SPR_PLAY, A, 1, "SPR2_SPNG"},
	anim_evoker = {SPR_PLAY, A, 8, "SPR2_BACT"},
	anim_evoker_shoot = {SPR_PLAY, B, 8, "SPR2_BACT"},
	anim_special1 = {SPR_PLAY, A, B, C, D, E, 2, "SPR2_MICG"},
	anim_special2 = {SPR_PLAY, A, 8, "SPR2_SONG"},
	anim_special3 = {SPR_PLAY, B, 8, "SPR2_SONG"},
	icon = "ICO_FLCH",
	hudbust = "H_FLCBAR",
	hudaoa = "H_FLCAOA",
	aoa_quote = "Let's make these guys \nchange their tune!",
	hudcutin = "FLCH_A",
	tip = "This cutie is mostly a support character \nwith Psy, Elec, and Strike skills for \nattacking. She may have some pathetic \nhealth, but her healing skills along with \nan extremly high SP count can aid in \nalleviating that problem."
}

-- Persona
personaList["sirius"] = {
	name = "Sirius",
	arcana = ARCANA_STAR,
	sprite = SPR_SIRI,
	startframe = 0,
	anim_idle = {SPR_SIRI, A, B, C, D, E, F, 10},
	anim_atk = {SPR_SIRI, A, G, H, I, J, K, H, 2},
	strength = 7,
	magic = 10,
	endurance = 5,
	luck = 9,
	agility = 8,
	weak = ATK_SLASH|ATK_FIRE|ATK_NUCLEAR,
	resist = ATK_ELEC,
	block = ATK_PSY,
	repel = ATK_BLESS,
	skills = {
		{"zio", 1}, {"mapsi", 1},
		{"marin karin", 1}, {"sukukaja", 12},
		{"tarunda", 15}, {"dia", 19},
		{"pulinpa", 23}, {"lunge", 27},
		
		{"zionga", 30, "zio"}, {"mapsio", 34, "mapsi"},
		{"sexy dance", 38, "marin karin"}, {"masukukaja", 41, "sukukaja"},
		{"matarunda", 43, "tarunda"}, {"diarama", 46, "dia"},
		{"tentarafoo", 49, "pulinpa"}, {"assault dive", 52, "lunge"},
		
		{"ziodyne", 57, "zionga"}, {"mapsiodyne", 60, "mapsio"},
		{"heat riser", 69, "masukukaja"}, {"debilitate", 70, "matarunda"},
		{"diarahan", 65, "diarama"}, {"gigantic fist", 75, "assault dive"},
	},
}

-- Bionis support
if bionis
	personaList["sirius"].drain = ATK_WATER
	personaList["sirius"].weak = $|ATK_GRAVITY
end

-- Dungeon ability (It's an edited version of Sonic's)
DNG_Abilities["flchan"] = {

	jfunc = 	function(p)
					local mo = p.mo

					P_SetObjectMomZ(mo, FRACUNIT*10)
					mo.state = S_MICDROP_MIDAIR
					local pmic = P_SpawnMobjFromMobj(mo, 0, 0, 0, MT_DROPPEDMIC)
					pmic.momz = -30*FRACUNIT
					S_StartSound(pmic, sfx_brakrl)
				end,

	func =		function(p)
					local mo = p.mo

					if mo.p_abl
						if ((mo.eflags & MFE_VERTICALFLIP) and mo.momz < 0)
						or (not (mo.eflags & MFE_VERTICALFLIP) and mo.momz > 0)
						else
							mo.state = S_PLAY_FALL
							p.pflags = $ & ~PF_JUMPED
							mo.p_abl = false
						end
					end
				end,
}

-- Melee attack (It's an edited version of Heat Wave)
attackDefs["flchan_atk1"] = {
	name = "Mic Drop",
	type = ATK_STRIKE,
	power = 45,
	accuracy = 80,
	statuschance = 5,
	status = COND_SHOCK,
	costtype = CST_HP,
	cost = 0,
	desc = "A hard-hitting beat in \nthe truest sense.\nMay inflict shock.",
	target = TGT_ALLENEMIES,
	physical = true,
	anim_norepel = true,
	anim = function(mo, targets, hittargets, timer)
		if timer == TICRATE/3
			ANIM_set(mo, mo.anim_special1, false)
		end
		if timer == TICRATE/2
		or timer == TICRATE/2 + 8
			if timer == TICRATE/2
				localquake(mo.battlen, 30*FRACUNIT, 5)
				playSound(mo.battlen, sfx_pstop)
			end
			local ang = 0
			for i = 1, 24 do
				local m = P_SpawnMobj(mo.x, mo.y, mo.z, MT_DUMMY)
				m.state = S_MUSICNOTE2
				m.scale = FRACUNIT/2
				m.fuse = TICRATE
				m.destscale = FRACUNIT*4
				m.friction = FRACUNIT
				m.angle = ang
				P_InstaThrust(m, m.angle, 50*FRACUNIT)
				m = P_SpawnMobj(mo.x, mo.y, mo.z, MT_DUMMY)
				m.state = S_QUICKBOOM1
				m.scale = FRACUNIT
				m.fuse = TICRATE
				m.friction = FRACUNIT
				m.destscale = FRACUNIT*4
				m.angle = ang
				m.color = SKINCOLOR_LAVENDER
				P_InstaThrust(m, m.angle, 60*FRACUNIT)
				for i = 1, 8
					m = P_SpawnMobj(mo.x, mo.y, mo.z + (mo.height*2), MT_DUMMY)
					m.state = S_MUSICNOTE1
					m.fuse = TICRATE
					m.friction = FRACUNIT
					m.scale = FRACUNIT
					m.destscale = FRACUNIT*4
					m.angle = ang + P_RandomRange(-15, 15)*ANG1
					P_InstaThrust(m, m.angle, 50*FRACUNIT + P_RandomRange(-16, 16)*FRACUNIT)
				end
				ang = $ + (360/24)*ANG1
			end
		end
		if timer == TICRATE/2 + 10
			for k,v in ipairs(hittargets)
				damageObject(v)
			end
		end
		if timer == TICRATE*2
			return true
		end
	end,
}

-- Super melee attack (It's an edited version of Howling.)
attackDefs["flchan_atk2"] = {
	name = "Siren Song",
	type = ATK_ALMIGHTY,
	power = 650,
	accuracy = 999,
	costtype = CST_HP,
	statuschance = 100,
	status = COND_SILENCE,
	cost = 0,
	physical = true,
	critical = 50,
	desc = "Severe Almighty damage to\nall enemies. Always \ninflict Silence.",
	target = TGT_ALLENEMIES,
	anim = function(mo, targets, hittargets, timer)
		local avgx, avgy = 0, 0
		for i = 1, #targets
			avgx = $ + targets[i].x/FRACUNIT
			avgy = $ + targets[i].y/FRACUNIT
		end
		avgx = ($/#targets)	*FRACUNIT
		avgy = ($/#targets)	*FRACUNIT
		local cam = server.P_BattleStatus[mo.battlen].cam
		if timer == 1
			mo.oldangle = mo.angle
			mo.angle = R_PointToAngle2(mo.x, mo.y, avgx, avgy)
			local tgtx = mo.x + 256*cos(mo.angle)
			local tgty = mo.y + 256*sin(mo.angle)
			P_TeleportMove(cam, tgtx, tgty, mo.z + FRACUNIT*16)
			cam.angle = R_PointToAngle2(cam.x, cam.y, mo.x, mo.y)
			CAM_stop(cam)
			ANIM_set(mo, mo.anim_special2)
		elseif timer == TICRATE
			ANIM_set(mo, mo.anim_special3)
			local thean = mo.angle
			local tgtx = avgx + 512*cos(thean)
			local tgty = avgy + 512*sin(thean)
			playSound(mo.battlen, sfx_csimia)
			localquake(mo.battlen, FRACUNIT*64, 10)
			CAM_goto(cam, tgtx, tgty, mo.z + FRACUNIT*128, FRACUNIT*20)
		elseif timer >= TICRATE
		and timer <= TICRATE*3
			if leveltime%5 == 0
				local d = P_SpawnMobj(mo.x, mo.y, mo.z + FRACUNIT*64, MT_THOK)
				d.state = S_HOWL1
				d.color = SKINCOLOR_AETHER
				d.angle = mo.angle + ANG1*90
				d.scale = mo.scale*2
				d.destscale = mo.scale*7
				d.scalespeed = FRACUNIT/4
				P_InstaThrust(d, mo.angle, FRACUNIT*32)
			end
		elseif timer == TICRATE*3 + 1
			for i = 1, #hittargets
				damageObject(hittargets[i])
			end
		elseif timer == TICRATE*4
			return true
		end
	end,
}

-- Challenge Battle stuff
enemyList["metalsonic_boss"] = {
	name = "Metal Sonic",
	skillchance = 95,
	level = 80,
	hp = 2720,
	sp = 2185,
	strength = 60,
	magic = 38,
	endurance = 60,
	agility = 40,
	luck = 38,
	melee_natk = "metal_atk1",
	thinker = generalEnemyThinker,
	boss = true,
	skin = "metalsonic",
	color = SKINCOLOR_COBALT,
	hudcutin = "MSON_A",
	weak = ATK_ELEC|ATK_BLESS,
	resist = ATK_STRIKE|ATK_PIERCE|ATK_SLASH|ATK_NUCLEAR,
	persona = "palladion",
	anim_stand = {SPR_PLAY, A, 8, "SPR2_STND"},
	anim_stand_hurt = {SPR_PLAY, A, 1, "SPR2_STND"},
	anim_stand_bored = {SPR_PLAY, A, B, A, B, A, B, A, B, 10, "SPR2_WAIT"},
	anim_guard = {SPR_PLAY, A, 1, "SPR2_WALK"},
	anim_move = {SPR_PLAY, A, 2, "SPR2_WALK"},
	anim_run = {SPR_PLAY, A, 2, "SPR2_RUN"},
	anim_atk = {SPR_PLAY, A, B, C, D, E, 1, "SPR2_ROLL"},
	anim_aoa_end = {SPR_PLAY, E, D, C, B, A, 1, "SPR2_ROLL"},
	anim_hurt = {SPR_PLAY, A, 35, "SPR2_PAIN"},
	anim_getdown = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_downloop = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_getup = {SPR_PLAY, A, B, C, D, E, F, 1, "SPR2_ROLL"},
	anim_death = {SPR_PLAY, A, 30, "SPR2_DEAD"},
	anim_revive = {SPR_PLAY, A, B, C, D, E, F, 1, "SPR2_ROLL"},
	anim_evoker = {SPR_PLAY, A, 8, "SPR2_SPNG"},
	anim_special1 = {SPR_PLAY, A, 2, "SPR2_SPNG"},
	anim_sepcial2 = {SPR_PLAY, A, 2, "SPR2_DASH"},
	vfx_summon = {"sfx_mssum1", "sfx_mssum2"},
    vfx_skill = {"sfx_msskl1", "sfx_msskl2"},
    vfx_item = {"sfx_mssum1", "sfx_mssum2"},
    vfx_hurt = {"sfx_mshrt1", "sfx_mshrt2"},
    vfx_hurtx = {"sfx_msskl2"},
    vfx_die = {"sfx_msmis1"},
    vfx_heal = {"sfx_mssum1", "sfx_mssum2"},
    vfx_healself = {"sfx_mssum1", "sfx_mssum2"},
    vfx_kill = {"sfx_mssum1", "sfx_mssum2"},
    vfx_1more = {"sfx_msdge1"},
    vfx_crit = {"sfx_msskl2"},
    vfx_aoaask = {"sfx_msaoi1"},
    vfx_aoado = {"sfx_msskl2"},
    vfx_aoarelent = {"sfx_msmis1"},
    vfx_miss = {"sfx_msmis1"},
    vfx_dodge = {"sfx_msdge1"},
    vfx_win = {"sfx_mswin1"},
    vfx_levelup = {"sfx_mswin1"},
	skills = {"dekunda", "masukukaja", "marakukaja", "matarukaja", "power charge", "freidyne", "god hand", "akasha arts", "regenerate 2"},
}

enemyList["flchan_boss"] = {
	name = "FL Studio Chan",
	skillchance = 95,
	level = 80,
	hp = 2450,
	sp = 2540,
	strength = 38,
	magic = 60,
	endurance = 38,
	agility = 40,
	luck = 60,
	melee_natk = "flchan_atk1",
	thinker = generalEnemyThinker,
	boss = true,
	skin = "flchan",
	color = SKINCOLOR_GREEN,
	hudcutin = "FLCH_A",
	weak = ATK_SLASH|ATK_NUCLEAR|ATK_FIRE,
	resist = ATK_ELEC,
	block = ATK_PSY,
	repel = ATK_BLESS,
	persona = "sirius",
	anim_stand = {SPR_PLAY, A, 8, "SPR2_STND"},
	anim_stand_hurt = {SPR_PLAY, A, 1, "SPR2_STND"},
	anim_stand_bored = {SPR_PLAY, A, B, A, B, A, B, A, B, 15, "SPR2_WAIT"},
	anim_guard = {SPR_PLAY, C, 2, "SPR2_RUN"},
	anim_move = {SPR_PLAY, A, B, C, D, E, F, G, H, 2, "SPR2_WALK"},
	anim_run = {SPR_PLAY, A, B, C, D, E, F, G, H, 2, "SPR2_RUN"},
	anim_atk = {SPR_PLAY, A, B, C, D, E, F, G, H, 1, "SPR2_ROLL"},
	anim_aoa_end = {SPR_PLAY, H, G, F, E, D, C, B, A, 1, "SPR2_ROLL"},
	anim_hurt = {SPR_PLAY, A, 35, "SPR2_PAIN"},
	anim_getdown = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_downloop = {SPR_PLAY, A, 1, "SPR2_PAIN"},
	anim_getup = {SPR_PLAY, A, 1, "SPR2_SPNG"},
	anim_death = {SPR_PLAY, A, 30, "SPR2_DEAD"},
	anim_revive = {SPR_PLAY, A, 1, "SPR2_SPNG"},
	anim_evoker = {SPR_PLAY, A, 8, "SPR2_BACT"},
	anim_evoker_shoot = {SPR_PLAY, B, 8, "SPR2_BACT"},
	anim_special1 = {SPR_PLAY, A, B, C, D, E, 2, "SPR2_MICG"},
	anim_special2 = {SPR_PLAY, A, 8, "SPR2_SONG"},
	anim_special3 = {SPR_PLAY, B, 8, "SPR2_SONG"},
	skills = {"ziodyne", "mapsiodyne", "sexy dance", "heat riser", "debilitate", "diarahan", "tentarafoo", "gigantic fist"},
}

BTL_challengebtllist[#BTL_challengebtllist+1] = {
	name = "Programmed Pals",
	description = {"Metal Sonic and FL Chan form a", "powerful alliance together. Take them on", "in this little demonstratory battle."},
	level = 80,
	music = "PVP",
	time = TICRATE*900,
	items = {{"hyperring", 5}, {"soul food", 5}, {"super1up", 5}, {"me patra gem", 5}, {"dekunda gem", 5}},
	subpersonas = {},
	waves = {
		{"metalsonic_boss", "flchan_boss"}
	},
}