ACTOR SophiaBlaster : Weapon
{
	Weapon.SelectionOrder 500
	Weapon.AmmoType "RocketAmmo"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 4
	Weapon.SlotNumber 5
	weapon.bobstyle smooth
	weapon.bobrangex 0.1
	weapon.bobrangey 0.6
	weapon.bobspeed 2
	Inventory.PickupMessage "You got the Sophia Blaster!"
	Obituary "%k was blasted by %o."
	Inventory.RestrictedTo "Artificer"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+undroppable
	+cheatnotweapon
	+noautofire	
	Tag "Sophia Blaster"
	states
	{
	Select:
		TNT1 A 0
		TNT1 A 0
	Riseup:
		D3UP AA 0 a_raise
		D3UP AAAAA 0 a_raise
		BTR1 A 1
		loop
	Deselect:
		TNT1 A 0
		TNT1 A 0 a_stopsound (6)
		TNT1 A 0 a_jumpifhealthlower (1, "deadlower")
		BTR1 A 1
	holster:
		TNT1 A 0
		TNT1 A 0 a_stopsound (6)
		BTR1 A 1 a_lower
		TNT1 AAA 0 a_lower
		BTR1 A 1 a_lower
		loop
	deadlower:
		TNT1 A 0
		TNT1 A 0
		TNT1 A 0 a_stopsound (6)
		TNT1 AAAAAAAAAAAAA 0 a_lower
		TNT1 A 1 a_lower
		wait


	Ready:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"RevUp")
		BTR1 A 1 a_weaponready
		goto NoAmmo
	RevUp:
		TNT1 A 0
		TNT1 A 0 a_playsound ("SophiaBlaster/Idle",6,1,1)
		BTR1 A 1 a_weaponready
		GoTo SophiaIdle
	SophiaIdle:
		BTR1 A 2 offset (0,33) a_weaponready (WRF_NOBOB)
		BTR1 A 2 offset (0,32) a_weaponready (WRF_NOBOB)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"SophiaIdle")
		TNT1 A 0 a_stopsound (6)
		Goto NoAmmo
	NoAmmo:
		BTR1 A 1 a_weaponready
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"Ready")
		loop
	Fire:
		TNT1 A 0
		TNT1 A 0 a_stopsound (6)
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"HyperShot")
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		TNT1 A 0 a_playsound ("SophiaBlaster/WeakShot",CHAN_WEAPON)
		BTR1 B 2 bright a_firecustommissile ("WeakSophiaShot",0,0)
		TNT1 A 0 A_Quake(2, 4, 0, 32,"ArtiSilence")
		BTR1 D 1 bright offset (0,36)
		BTR1 E 1 offset (0,37)
		BTR1 F 3 offset (0,36) 
		BTR1 F 1 offset (0,34) 
		BTR1 F 1 offset (0,32) a_weaponready (WRF_NOBOB) 
		goto NoAmmo
	HyperShot:
		TNT1 A 0 a_weaponready (WRF_NOFIRE)
		TNT1 A 0 a_weaponready (WRF_NOFIRE)
		TNT1 A 0 a_playsound ("SophiaBlaster/Shot",CHAN_WEAPON)
		TNT1 A 0 a_firebullets (0,0,1,0,"flickpuff",FBF_NOFLASH)
		BTR1 B 2 bright a_firecustommissile ("SophiaShot",0,1)
		TNT1 A 0 A_Quake(2, 4, 0, 32,"ArtiSilence")
		BTR1 C 1 bright 
		BTR1 D 1 bright offset (0,40)
		BTR1 E 1 offset (0,41)
		BTR1 F 3 offset (0,39) a_weaponready (WRF_NOBOB)
		BTR1 F 1 offset (0,36) a_weaponready (WRF_NOBOB)
		BTR1 F 1 offset (0,32) a_weaponready (WRF_NOBOB) 
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"Ready")
		goto NoAmmo
	Altfire:
		TNT1 A 0
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",3,"RocketVolley")
		TNT1 A 0 a_playsound ("SophiaBlaster/NoAmmo",0)
		TNT1 A 0 a_stopsound (6)
		BTR1 A 30 a_weaponready (WRF_NOSECONDARY)
		Goto NoAmmo
	RocketVolley:
		BTR2 ABCD 2
		TNT1 A 0 a_playsound ("SophiaBlaster/Grab",0)
		BTR2 EF 2
		BTR2 GHH 2
		TNT1 A 0 a_playsound ("SophiaBlaster/HandleDown",0)
		TNT1 A 0 a_playsound ("SophiaBlaster/RevUp",6,1,0)
		TNT1 A 0 A_Quake(3, 16, 0, 32,"ArtiSilence")
		BTR2 IJKL 2
		BTR2 MNOPQR 2
		
	VolleyLoop:
		BTR2 R 1
		TNT1 A 0 A_Quake(2, 44, 0, 32,"ArtiSilence")
		TNT1 A 0 A_PlaySound("SophiaBlaster/Hvolleyshot", 1)
		TNT1 A 0 A_Quake(1, 4, 0, 32,"ArtiSilence")
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		BTR2 S 1 bright offset (0,36) a_firecustommissile ("HVolleyShot")
		BTR2 S 1 bright offset (0,35)
		TNT1 A 0 A_PlaySound("SophiaBlaster/Hvolleyshot", 1)
		TNT1 A 0 A_Quake(1, 4, 0, 32,"ArtiSilence")
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		BTR2 T 1 bright offset (0,37) a_firecustommissile ("HVolleyShot",-3,0,8)
		BTR2 T 1 bright offset (0,36)
		TNT1 A 0 A_PlaySound("SophiaBlaster/Hvolleyshot", 1)
		TNT1 A 0 A_Quake(1, 8, 0, 32,"ArtiSilence")
		TNT1 A 0 a_takeinventory ("RocketAmmo",1)
		BTR2 U 1 bright offset (0,38) a_firecustommissile ("HVolleyShot",3,0,-8)
		BTR2 U 1 bright offset (0,37)
		BTR2 V 2 bright offset (0,40)
		BTR2 R 2 offset (0,41)
		BTR2 R 2 offset (0,36)
		BTR2 R 2 offset (0,32)
		TNT1 A 0 a_refire ("RocketCheck")
		goto VolleyFinish
	RocketCheck:
		BTR2 R 8
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",3,"VolleyLoop")
		TNT1 A 0 a_playsound ("SophiaBlaster/NoAmmo",0)
		TNT1 A 0 a_stopsound (6)
		BTR1 A 30 a_weaponready (WRF_NOSECONDARY)
		Goto Ready
	VolleyFinish:
		BTR2 WXY 2
		BTR2 X 1
		BTR2 Y 2
		BTR2 N 2
		BTR2 M 2
		BTR2 K 2
		TNT1 A 0 a_stopsound (6)
		TNT1 A 0 a_playsound ("SophiaBlaster/RevDown",6)
		TNT1 A 0 a_playsound ("SophiaBlaster/HandleUp",0)
		BTR2 IGFD 2
		BTR3 ABC 2
		TNT1 A 0 a_jumpifinventory ("RocketAmmo",1,"Ready")
		goto NoAmmo
	}
}


actor SophiaShot
{
	+notimefreeze
	projectile
	+bloodlessimpact
	+thruspecies
	+dontblast
	+bright
	species "player"
	damage 25
	Radius 8
	height 8
	scale 1
	speed 70
	Decal DoomImpScorch
	states
	{
	spawn:
		STBE A 1 
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_stop
		STBE B 2
		TNT1 A 0 a_playsound ("SophiaBlaster/Hit",0)
		TNT1 A 0 a_settranslucent (0.90,1)
		TNT1 A 0 a_explode (90,120,0,1,20)
		TNT1 A 0 Radius_Quake (1,6,0,20,0)
		STBE CDE 1
		TNT1 A 0 a_setscale (1.5,1.5)
		STBE E 1
		stop
	}
}

actor WeakSophiaShot
{
	+notimefreeze
	projectile
	+bloodlessimpact
	+thruspecies
	+dontblast
	+bright
	species "player"
	damage 10
	Radius 8
	height 8
	scale 0.50
	speed 50
	Decal DoomImpScorch
	states
	{
	spawn:
		STBE A 1 
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_stop
		STBE B 2
		TNT1 A 0 a_playsound ("SophiaBlaster/WeakHit",0)
		TNT1 A 0 a_settranslucent (0.90,1)
		TNT1 A 0 a_explode (20,60,0,1,20)
		TNT1 A 0 Radius_Quake (1,6,0,20,0)
		STBE CDE 1
		TNT1 A 0 a_setscale (0.75,0.75)
		STBE E 1
		stop
	}
}


actor HVolleyShot
{
	+notimefreeze
	projectile
	+THRUSPECIES
	species "Player"
	+dontblast
	+FORCEXYBILLBOARD	
	+LOOKALLAROUND
	+SEEKERMISSILE
	+Screenseeker
	height 12
	radius 5
	speed 45
	damage 15
	Projectile
	scale 2
	+SKYEXPLODE
	+bright
	deathsound "SophiaBlaster/HVolleyHit"
	states
	{
	spawn:
		HVMI A 3 a_spawnitemex ("HomingVolleyTrail")
		HVMI A 1 a_spawnitemex ("HomingVolleyTrail")
		HVMI A 1 a_spawnitemex ("HomingVolleyTrail")
	SeekingLoop:
		HVMI A 3 a_spawnitemex ("HomingVolleyTrail")
		HVMI A 1 a_spawnitemex ("HomingVolleyTrail")
		TNT1 A 0 A_SeekerMissile(70,90,SMF_LOOK|SMF_PRECISE|SMF_CURSPEED,190)
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 a_fadeout (0.10)
		TNT1 A 0 a_explode (90,180,0)
		HVMI B 2
		TNT1 A 1
		HVMI C 2
		TNT1 A 1
		HVMI D 2
		stop		
	}
}


actor HomingVolleyTrail
{
	+dontblast
	+notimefreeze
	+nointeraction
	+clientsideonly
	projectile
    +FORCEXYBILLBOARD	
	+LOOKALLAROUND
	radius 2
	speed 3
    Scale 1.50
	renderstyle add
	states
	{
	spawn:
		TNT1 A 2
		HVTR A 4 bright
		HVTR B 3 bright
		HVTR C 2 bright
		HVTR D 2 bright
		stop
	death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


