-- 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 = 45,
	acc = 80,
	crit = 5,
	wep = "mic_01",
	weptype = WPT_HAMMER,
	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"},
	icon = "ICO_FLCH",
	hudbust = "H_FLCBAR",
	hudaoa = "H_FLCAOA",
	aoa_quote = "Let's make these guys \nchange their tune!",
	hudcutin = "FLCH_A",
	tip = "A 'jack of all trades' kind of support with Electric, Psychic, and Strike skills for attacking. Her agility buffs and debuffs can help her team get up to speed. She may be weak to Slash skills, but she can eventually avoid them."
}

-- 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 = 6,
	luck = 9,
	agility = 8,
	weak = ATK_SLASH,
	resist = ATK_ELEC|ATK_PSY,
	skills = {
		{"zio", 1}, {"mapsi", 3},
		{"media", 5}, {"lunge", 12},
		{"sukukaja", 15}, {"sukunda", 19},
		{"marin karin", 23}, {"dodge slash", 27},
		
		{"zionga", 30, "zio"}, {"mapsio", 34, "mapsi"},
		{"mediarama", 38, "media"}, {"assault dive", 41, "lunge"},
		{"masukukaja", 43, "sukukaja"}, {"masukunda", 46, "sukunda"},
		{"sexy dance", 49, "marin karin"}, {"evade slash", 52, "dodge slash"},
		
		{"ziodyne", 57, "zionga"}, {"mapsiodyne", 60, "mapsio"},
		{"mediarahan", 65, "mediarama"}, {"gigantic fist", 67, "assault dive"},
		{"heat riser", 69, "masukukaja"}, {"debilitate", 71, "masukunda"},
		{"brain jack", 75, "sexy dance"}, {"swift dance", 85, "evade slash"},
	},
}

-- Dungeon Ability
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,
}

-- Normal Melee Attack
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 violent, musical shockwave",
	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,
}

-- Third Tier Evasion Skill
attackDefs["swift dance"] = {
	name = "Swift Dance",
	type = ATK_PASSIVE|ATK_SLASH|ATK_STRIKE|ATK_PIERCE,
	desc = "Boost Evasion rate\nagainst all physical attacks\nby 45%",
	power = 45,
	passive = PSV_DODGE,
}

-- Super Melee Attack
attackDefs["flchan_atk2"] = {
	name = "Super Mic Drop",
	type = ATK_ALMIGHTY,
	power = 45,
	accuracy = 90,
	statuschance = 100,
	status = COND_SHOCK,
	costtype = CST_HP,
	cost = 0,
	desc = "An extremely violent, musical shockwave",
	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,
}

-- Weapons
weaponsList["mic_01"] = {
	name = "Seis Mic",
	type = WPT_HAMMER,
	rarity = 1,
	element = ATK_STRIKE,
	atk = 300,
	desc = "A microphone that makes \na violent, musical shockwave \nwhen it's dropped hard enough.",
	slot = "iron fist",
}

weaponsList["dyna mic"] = {
	name = "Dyna Mic",
	type = WPT_HAMMER,
	rarity = 3,
	element = ATK_ELEC,
	atk = 900,
	desc = "A microphone that produces \nso much static, that lightning \ncan come out at times.",
	ma = 1,
	lu = 1,
	slot = "elec amp",
}

weaponsList["rhyth mic"] = {
	name = "Rhyth Mic",
	type = WPT_HAMMER,
	rarity = 5,
	element = ATK_PSY,
	atk = 1500,
	desc = "A microphone that automatically \namplifies the bass on one's \nvoice.",
	ma = 3,
	lu = 3,
	slot = "psy amp",
}

-- Velvet Shop
table.insert(shopList["velvet_shop_mp1"].weapons, {makeWeapon("mic_01", 10), 800, nil, 4})
table.insert(shopList["velvet_shop_mp1"].weapons, {makeWeapon("dyna mic"), 4000, 3})
table.insert(shopList["velvet_shop_mp1"].weapons, {makeWeapon("rhyth mic"), 12500, 6})

-- Void Shop
table.insert(shopList["void_shop"].weapons, {makeWeapon("mic_01", 10), 700, nil, 6})
table.insert(shopList["void_shop"].weapons, {makeWeapon("dyna mic"), 1500, 6, 12})
table.insert(shopList["void_shop"].weapons, {makeWeapon("rhyth mic"), 2000, 12})

-- Vision Quest Stuff
enemyList["metalsonic_boss"] = {
	name = "Metal Sonic",
	skillchance = 95,
	level = 99,
	hp = 7560,
	sp = 3240,
	strength = 78,
	magic = 56,
	endurance = 99,
	agility = 56,
	luck = 26,
	melee_natk = "metal_atk1",
	thinker = generalEnemyThinker,
	boss = true,
	skin = "metalsonic",
	color = SKINCOLOR_COBALT,
	hudcutin = "MSON_A",
	weak = ATK_ELEC,
	resist = ATK_STRIKE|ATK_NUCLEAR,
	persona = "palladion",
	noroguerandom = true,
	noroguebuff = true,
	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", "swordbreaker", "matarukaja", "power charge", "freidyne", "mafreidyne", "pralaya", "akasha arts"},
}

enemyList["flchan_boss"] = {
	name = "FL Studio Chan",
	skillchance = 95,
	level = 99,
	hp = 5400,
	sp = 6480,
	strength = 56,
	magic = 79,
	endurance = 46,
	agility = 67,
	luck = 78,
	melee_natk = "flchan_atk1",
	thinker = generalEnemyThinker,
	boss = true,
	skin = "flchan",
	color = SKINCOLOR_GREEN,
	hudcutin = "FLCH_A",
	weak = ATK_SLASH,
	resist = ATK_ELEC|ATK_PSY,
	persona = "sirius",
	noroguerandom = true,
	noroguebuff = true,
	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"},
	skills = {"ziodyne", "mapsiodyne", "mediarama", "gigantic fist", "heat riser", "debilitate", "brain jack", "swift dance"},
}

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 = 99,
	music = "PVP",
	time = TICRATE*1800,
	items = {{"hyperring", 5}, {"soul food", 5}, {"super1up", 5}, {"patra gem", 5}, {"dekaja gem", 5}},
	subpersonas = {},
	waves = {
		{"metalsonic_boss", "flchan_boss"}
	},
}