#include "PlayerInfo.txt"
#include DarkMace
#include Fist
#include Shredder
#include Shotgun
#include SuperShotgun
#include Pulverizer
#include Accelerator
#include RocketLauncher
#include BFC

ACTOR Shieldsaw : Weapon replaces Chainsaw
{
	Weapon.Kickback 0
	Weapon.SelectionOrder 2200
	Weapon.UpSound "weapons/sawup"
	Weapon.ReadySound "weapons/sawidle"
	Weapon.SlotNumber 1
	Inventory.PickupMessage "A shieldsaw!  A good defense AND offense!"
	Obituary "%o was cut in half by %k's shieldsaw."
	Tag "Shieldsaw"
	+WEAPON.MELEEWEAPON		
	+WEAPON.NOALERT
	+WEAPON.ALLOW_WITH_RESPAWN_INVUL
	States
	{
	Ready:
		SHIE CD 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Loop
	Deselect:
	    TNT1 A 0 A_UnSetReflective
		SHIE C 1 A_Lower
		Loop
	Select:
		SHIE C 1 A_Raise
		Loop
	Fire:
		SHIE A 0 A_AlertMonsters
		SHIE AB 2 A_Saw
		SHIE B 0 A_ReFire
		Goto Ready
	AltFire:
		SHIE EFG 1
		TNT1 A 0 A_ReFire
		SHIE G 0 A_AlertMonsters
		SHIE GI 1
		TNT1 A 0   A_firecustommissile("ThrownShieldsaw")
	   SHEILD_THROWN:
	    TNT1 A 0 A_JUMPIFINVENTORY("SHEILD_TOKEN",1,"READY_1")
		SHIE J 1
		LOOP
		READY_1:
		SHID A 3 A_TAKEINVENTORY("SHEILD_TOKEN",1)
		Goto Ready
	AltHold:
	    TNT1 A 0 A_SetReflective
		SHIE H 4 A_GiveInventory("PowerShieldsawBlock")
		TNT1 A 0 A_ReFire
		SHIE GFE 1 A_UnSetReflective
		Goto Ready
	Spawn:
		SSAW A -1
		Stop

		Reload:
		FIST B 2
		FIST C 2 
		FIST D 4 A_CUSTOMPUNCH(100,1,0,"Blood_punch")
		FIST C 2
		FIST B 2 A_Refire
		Goto Ready
	}
}

ACTOR ThrownShieldsaw
{
	Radius 11
	Height 8
	Speed 45
	-NOGRAVITY
	MASS 10
	GRAVITY 1
	Damage 15
	DamageType Saw
	BounceCount 3
	BounceFactor 1.0
	Projectile
	+RIPPER
    +SKYEXPLODE	
	+EXTREMEDEATH
	+BOUNCEONWALLS
	+BOUNCEONFLOORS
	+BOUNCEONCEILINGS
	-SOLID
	BounceSound "shieldsaw/bounce"
	AttackSound "shieldsaw/ripper"
	States
	{
	Spawn:
		SHLD ABABABAB 2
	Death:
	    TNT1 A 0 A_GIVEINVENTORY("SHEILD_TOKEN",1,AAPTR_TARGET)
		SHLD A 2
        TNT1 A 1 A_CUSTOMMISSILE("Sheild_BounceBack")
		Stop
	}
}

ACTOR Sheild_BounceBack
{
	Radius 11
	Height 8
	Speed 100
	Projectile
    +noclip
	-SOLID
	+SEEKERMISSILE
	States
	{
	Spawn:
		SHLD ABABABABABAB 2 A_SEEKERMISSILE(10,10,SMF_PRECISE,255,1000)
	DEATH:
		SHLD A 2
		Stop
	}
}

ACTOR SHEILD_TOKEN : INVENTORY
{
	INVENTORY.MAXAMOUNT 1
}

ACTOR PowerShieldsawBlock : PowerProtection
{
Powerup.Duration 5
}

ACTOR Blood_punch
{
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +RANDOMIZE
  RenderStyle Translucent
  Alpha 0.5
  VSpeed 1
  Mass 5
  States
  {
  Spawn:
    PUFF A 4 Bright
    PUFF B 4
    // Intentional fall-through
  Melee:
    PUFF CD 4
    Stop
 Xdeath:
    PUFF D 0 A_EXPLODE(20,150,0)
	TNT1 A 0 A_PLAYSOUND("weapon/rocketexplosion")
	STOP
  }
}
