//Funny battle ability
//Even though it's.. Balanced around, Chaos, not Battle
//shut up

//Anyways time to steal from myself

local RocketCall = false


addHook("ThinkFrame", function()
	if not(RocketCall) and CBW_Battle then
	
	local B = CBW_Battle
	local cooldown = TICRATE

		B.Action.RocketBattle=function(mo,doaction)
			local player = mo.player
			player.actionrings = player.ringpay //idk
			
			if not(CBW_Battle.CanDoAction(player))
			and player.powers[pw_flashing] > 2
				player.actionstate = 0
				player.selectedaction = 0
				return
			end
			
			//Locational Data displays X,Y and Z position at all time
			
			player.action2text = ("Locational Data: "..mo.x/FRACUNIT..", "..mo.y/FRACUNIT..", "..mo.z/FRACUNIT..".")
			
			if not P_IsObjectOnGround(mo)
				if player.powers[pw_super]
					mo.player.ringpay = 0
				else
					mo.player.ringpay = 25
				end
				mo.player.actiontext = "Orbital Fire" 
			else
				if player.powers[pw_super]
					mo.player.ringpay = 0
				else
					mo.player.ringpay = 20
				end
				mo.player.actiontext = "Orbital Support"
			end
			
			if(player.actionstate)
				player.canguard = false
			end
			
			if not(player.actionstate)
				if(doaction == 1)
					CBW_Battle.PayRings(player,player.ringpay)
					if P_IsObjectOnGround(mo)
						player.selectedaction = 1
					else
						player.selectedaction = 2
					end
					player.actionstate = 1
					player.drawangle = mo.angle	
				end
			end
			
			if(player.actionstate)
				player.actionstate = $1 + 1
				// So lets check our action..
				if player.selectedaction == 1 //Orbital Drop - Supportive ring rain for allies
					if player.actionstate == 2
						S_StartSound(nil,sfx_s3k89)
						S_StartSound(mo,sfx_s3kad)
						S_StartSound(mo,sfx_3db06)
						for i = 1,10
							local h = mo.height/4 * P_MobjFlip(mo)
							local t = P_SpawnMobj(mo.x,mo.y,mo.z + h, MT_THOK)
							t.scale = 1
							t.tics = 2
							t.fuse = 2
							t.state = S_FACESTABBERSPEAR
							local drawura = P_SpawnGhostMobj(t)
							drawura.frame = A|FF_FULLBRIGHT|FF_TRANS90
							drawura.scale = 1
							drawura.destscale = FRACUNIT*5
							drawura.scalespeed = (FRACUNIT*5)/P_RandomRange(27,35)
							drawura.tics = 30
							drawura.fuse = 30
							drawura.colorized = true
							drawura.color = player.skincolor
						end
						for i = 1,20
							local rx = mo.x + P_RandomRange(-1028,1028)*FRACUNIT
							local ry = mo.y + P_RandomRange(-1028,1028)*FRACUNIT
							local rz = P_RandomRange(-20,-3)*FRACUNIT
							local ring = P_SpawnMobj(rx,ry,mo.ceilingz - FRACUNIT*72,MT_FLINGRING)
							ring.fuse = 15*TICRATE
							ring.colorized = true
							ring.color = player.skincolor
							ring.flags = $ & !MF_NOGRAVITY
							ring.momz = rz
						end
						CBW_Battle.ApplyCooldown(player, TICRATE*15)
						player.actionstate = 0
						player.selectedaction = 0
					end
				elseif player.selectedaction == 2 //Orbital Fire
					if player.actionstate == 2
						S_StartSound(nil,sfx_s3k89)
						S_StartSound(mo,sfx_s3kad)
						S_StartSound(mo,sfx_s3k74)
						for i = 1,10
							local h = mo.height/4 * P_MobjFlip(mo)
							local t = P_SpawnMobj(mo.x,mo.y,mo.z + h, MT_THOK)
							t.scale = 1
							t.tics = 2
							t.fuse = 2
							t.state = S_FACESTABBERSPEAR
							local drawura = P_SpawnGhostMobj(t)
							drawura.frame = A|FF_FULLBRIGHT|FF_TRANS90
							drawura.scale = 1
							drawura.destscale = FRACUNIT*5
							drawura.scalespeed = (FRACUNIT*5)/P_RandomRange(27,35)
							drawura.tics = 30
							drawura.fuse = 30
							drawura.colorized = true
							drawura.color = player.skincolor
						end
					end
					if player.actionstate < 35
						//for i = 1,3
							local h = mo.height/4 * P_MobjFlip(mo)
							local t = P_SpawnMobj(mo.x,mo.y,mo.z + h, MT_THOK)
							local b = (FRACUNIT*5) + (P_RandomRange(-30,20)*FRACUNIT)/10
							t.scale = 1
							t.tics = 2
							t.fuse = 2
							t.state = S_FACESTABBERSPEAR
							local drawura = P_SpawnGhostMobj(t)
							drawura.frame = A|FF_FULLBRIGHT|FF_TRANS90
							drawura.scale = 1
							drawura.destscale = b
							drawura.scalespeed = (b)/P_RandomRange(15,25)
							drawura.tics = 20
							drawura.fuse = 20
							drawura.colorized = true
							drawura.color = player.skincolor
						//end
						for i = 1,5
							local rx = mo.x + P_RandomRange(-512,512)*FRACUNIT
							local ry = mo.y + P_RandomRange(-512,512)*FRACUNIT
							local rz = P_RandomRange(-70,-30)*FRACUNIT
							local orbit = P_SpawnMobj(rx,ry,mo.ceilingz - 10*FRACUNIT,MT_JETTBULLET)
							if orbit and orbit.valid
								orbit.target = mo //me
								orbit.colorized = true
								orbit.color = player.skincolor
								orbit.momz = rz
								orbit.fuse = TICRATE*30//maxtime
							end
						end
						mo.state = S_PLAY_SPRING
						player.powers[pw_flashing] = 2
					end
					mo.momx = 0
					mo.momy = 0
					mo.momz = 0
					if player.actionstate == 35
						CBW_Battle.ApplyCooldown(player, TICRATE*30)
						player.actionstate = 0
						player.selectedaction = 0
					end
				end
			end
		end
	
		
		
		RocketCall = true
		CBW_Battle.SkinVars["rocketmetal"] = {
			flags = SKINVARS_GUARD|SKINVARS_NOSPINSHIELD,
			weight = 200,//no idea what weight does
			shields = 1,
			special = CBW_Battle.Action.RocketBattle,
			guard_frame = 1,
		}
	end
end)
