Actor HakkeroReactor : Weapon //replaces BFG9000
{
	Inventory.PickupMessage "You got the Hakkero Reactor! Time to make a show."
	Weapon.AmmoType "Cell"
	Weapon.AmmoType2 "Cell"
	Weapon.AmmoGive 60
	Weapon.AmmoUse 1
	Weapon.AmmoUse2 1
	+WEAPON.BFG
	Tag "Hakkero Reactor"
	Inventory.RestrictedTo "ReimuClass", "MarisaClass", "SanaeClass"
	States
	{
		Spawn:
			WBF2 A -1
			Loop
		Ready:
			BF27 A 2 A_WeaponReady
			Loop
		Deselect:
			BF27 A 1 A_Lower
			TNT1 AAA 0 A_Lower
			Loop
		Select:
			BF27 A 1 A_Raise
			TNT1 AAA 0 A_Raise
			Loop
		AltFire:
			BF27 A 15 A_PlayWeaponSound("touhou/masterspark")
			BF27 B 15
			Goto Hold
		AltHold:
			TNT1 A 0 A_PlayWeaponSound("touhou/masterspark")
			TNT1 A 0 A_PlaySound("misc/p_pkup", CHAN_AUTO, 0.3)
			TNT1 A 0 A_SpawnItemEx("ReactorShield2", 90, -54, 28-sin(pitch)*50, 0, 0, 0, 0, SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION|SXF_SETMASTER)
			TNT1 A 0 A_SpawnItemEx("ReactorShield", 90, 0, 28-sin(pitch)*50, 0, 0, 0, 0, SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION|SXF_SETMASTER)
			TNT1 A 0 A_SpawnItemEx("ReactorShield2", 90, 54, 28-sin(pitch)*50, 0, 0, 0, 0, SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION|SXF_SETMASTER)
			TNT1 A 0 A_JumpIfNoAmmo("Deselect")
			TNT1 A 0 A_TakeInventory("Cell", 5, TIF_NOTAKEINFINITE)
			BF27 C 4 Bright A_GunFlash
			BF27 D 5 Bright
			BF27 E 4 Bright A_Refire("AltHold")
			BF27 F 4 Bright
			BF27 A 9
			Goto Ready
		Fire:
			BF27 A 15 A_PlayWeaponSound("touhou/masterspark")
			BF27 B 15 A_PlayWeaponSound("touhou/masterspark")
			BF27 C 4 Bright A_GunFlash
	    Hold:
			BF27 B 0 A_PlayWeaponSound("touhou/masterspark")
			BF27 B 3 BRIGHT A_RailAttack(30, 0, 1, none, none, RGF_SILENT, 1024, "HakkeroLaserPuff", 0, 0, 0, 0, 8.0, 0, "HakkeroBigLaserTrail", 1)
			BF27 B 3 BRIGHT A_RailAttack(30, 0, 1, none, none, RGF_SILENT, 8192, "HakkeroLaserPuff", 0, 0, 0, 0, 16.0, 0, "HakkeroBigLaserTrail2", 1)
			BF27 B 3 BRIGHT A_RailAttack(30, 0, 1, none, none, RGF_SILENT, 8192, "HakkeroLaserPuff", 1, 1, 0, 0, 16.0, 0, "HakkeroBigLaserTrail3", 1)
			BF27 B 3 BRIGHT A_RailAttack(30, 0, 1, none, none, RGF_SILENT, 8192, "HakkeroLaserPuff", 1, 1, 0, 0, 16.0, 0, "HakkeroBigLaserTrail4", 1)
			BF27 D 0 Bright A_CheckReload
			BF27 D 2 A_ReFire
			BF27 EE 1 Bright A_CheckReload
			BF27 F 10
			Goto Ready
		Flash:
			TNT1 A 5 A_Light1
			TNT1 A 7 A_Light2
			TNT1 A 7 A_Light1
			TNT1 A 1 A_Light0
			stop
	}
}

Actor HakkeroBigLaserTrail : HakkeroLaserTrail
{
	Scale 1.0
}
Actor HakkeroBigLaserTrail2 : HakkeroLaserTrail2
{
	Scale 0.8
}
Actor HakkeroBigLaserTrail3 : HakkeroLaserTrail3
{
	Scale 0.8
}
Actor HakkeroBigLaserTrail4 : HakkeroLaserTrail4
{
	Scale 0.8
}

Actor ReactorShield: Actor
{
	Health 20000
	Radius 34
	Height 48
	PainChance 255
	YScale 1.2
	XScale 1.8
	RenderStyle "add"
	Alpha 0.55
	Species "Player"
	FloatSpeed 0
	Translation "112:127=192:207"
	
	+SHOOTABLE
	+NOGRAVITY
	+NOBLOOD
	+NOTARGET
	+SOLID
	+FLOAT
	+THRUSPECIES
	+DONTHURTSPECIES
	+LOOKALLAROUND
	+QUICKTORETALIATE
	+FRIENDLY
	
	States
	{
		Spawn:
			TNT1 A 0 A_SetGravity(0)
			TNT1 A 0 A_ClearTarget
			BFS1 AB 4
			Stop
		Pain:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("sounds/thund", CHAN_WEAPON, 0.6)
			TNT1 A 0 A_SetScale(1.25, 1.0)
			BFS1 A 0 A_CustomMissile("HakkeroMagicMissile", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 1 A_CustomMissile("HakkeroMagicMissile2", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 0 A_CustomMissile("HakkeroMagicMissile3", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 1 A_CustomMissile("HakkeroMagicMissile4", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 0 A_CustomMissile("HakkeroMagicMissile", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 1 A_CustomMissile("HakkeroMagicMissile2", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 0 A_CustomMissile("HakkeroMagicMissile3", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 1 A_CustomMissile("HakkeroMagicMissile4", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 0 A_CustomMissile("HakkeroMagicMissile", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 1 A_CustomMissile("HakkeroMagicMissile2", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 0 A_CustomMissile("HakkeroMagicMissile3", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 1 A_CustomMissile("HakkeroMagicMissile4", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			Goto Death
		Death:
			TNT1 A 0 A_SetGravity(0)
			DBAL CDEFGH 3
			Stop
	}
}

Actor ReactorShield2: ReactorShield
{
	Radius 22
	Height 45
	Alpha 0.3
	YScale 0.9
	XScale 1.4
	Translation "112:127=112:127"

	States
	{
		Spawn:
			TNT1 A 0 A_SetGravity(0)
			TNT1 A 0 A_ClearTarget
			BFS1 AB 4
			Stop
		Pain:
			TNT1 A 0 A_SetScale(1.0, 0.75)
			BFS1 A 1 A_CustomMissile("HakkeroMagicMissile", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 A 1 A_CustomMissile("HakkeroMagicMissile2", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 1 A_CustomMissile("HakkeroMagicMissile3", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			BFS1 B 1 A_CustomMissile("HakkeroMagicMissile4", Random(24, 40), Random(-24, 24), 0, CMF_TRACKOWNER)
			Goto Death
		Death:
			TNT1 A 0 A_SetGravity(0)
			DBAL CDEFGH 3
			Stop
	}
}
