ACTOR SawbladeLauncher : Weapon
{
	Weapon.AmmoType "Clip"
	Weapon.AmmoGive 30
	Weapon.AmmoUse 10
	Weapon.SelectionOrder 21000
	Weapon.SlotNumber 5
	Obituary "%o got cut down by %k."
	Inventory.PickupMessage "You got the Sawblade Launcher!"
	Tag "Sawblade Launcher"
	States
	{
	Spawn:
		SAWL F -1
		Stop
	Ready:
		SAWL A 1 A_WeaponReady
		Loop
	Select:
		SAWL A 1 A_Raise
		Loop
	Deselect:
		SAWL A 1 A_Lower
		Loop
	Fire:
		TNT1 A 0 A_StartSound("sawlauncher/fire",CHAN_WEAPON)
		TNT1 A 0 A_FireProjectile("LaunchedSawblade")
		SAWL B 2 A_SetPitch(pitch - 0.4)
		SAWL ECDA 2 A_SetPitch(pitch + 0.1)
		SAWL A 4 A_Refire
		Goto Ready
	}
}

ACTOR LaunchedSawblade
{
	Projectile
	Damage 3
	Speed 35
	Radius 12
	Height 6
	BounceCount 10
	BounceFactor 1
	WallBounceFactor 1
	BounceSound "sawlauncher/bounce"
	+RIPPER
	+BOUNCEONFLOORS
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+THRUGHOST
	States
	{
	Spawn:
		SAWL G 1 A_SpawnItemEx("SawbladeTrail")
		Loop
	Death:
		TNT1 A 0 A_StartSound("sawlauncher/break")
		TNT1 A 1 A_SpawnItemEx("SawbladeSparkSpawner")
		Stop
	}
}

ACTOR SawbladeTrail
{
	-SOLID
	+NOGRAVITY
	Alpha 0.4
	Scale 0.6
	States
	{
	Spawn:
		SAWL I 2 A_FadeOut(0.1)
		Loop
	}
}

ACTOR SawbladeSparkSpawner
{
	+NOGRAVITY
	-SOLID
	States
	{
	Spawn:
		TNT1 A 0 A_SpawnItemEx("SawbladeSpark")
		TNT1 A 0 A_SpawnItemEx("SawbladeSpark")
		TNT1 A 0 A_Jump(200, "Spawn2")
		Stop
	Spawn2:
		TNT1 A 0 A_SpawnItemEx("SawbladeSpark")
		TNT1 A 0 A_Jump(128, "Spawn3")
		Stop
	Spawn3:
		TNT1 A 0 A_SpawnItemEx("SawbladeSpark")
		TNT1 A 0 A_Jump(64, "Spawn4")
		Stop
	Spawn4:
		TNT1 A 0 A_SpawnItemEx("SawbladeSpark")
		Stop
	}
}

ACTOR SawbladeSpark
{
	Scale 0.5
	-SOLID
	Projectile
	-NOGRAVITY
	RenderStyle Add
	Alpha 0.8
	Radius 1
	Height 2
	Speed 8
	Gravity 0.6
	States
	{
	Spawn:
		TNT1 A 0 A_SetAngle(random(0, 360))
		TNT1 A 0 A_ChangeVelocity(0,0,random(4,8))
	Spawn2:
		SAWL H 1 Bright
		Loop
	Death:
		TNT1 A 0
		Stop
	}
}