//--------------------------------------------------------------------------
//
// UAC-Mining Chainsaw
//
//--------------------------------------------------------------------------

ACTOR D64Chainsaw: D64Weapon replaces Chainsaw
{
	Inventory.PickUpMessage "You got the UAC-Heavy Duty Chainsaw!"
	Inventory.PickUpSound "Weapons/PickUp"
	Obituary "%o got ripped in half %k's UAC-Heavy Duty Chainsaw's."
	Tag "UAC-Heavy Duty Chainsaw"
	Inventory.Icon "SAWPA0"
	+WEAPON.MELEEWEAPON		
	States
	{
	Select:
		TNT1 A 0 A_PlaySound("Weapons/Chainsaw/Up",5)
		SAWG A 1 Offset(67, 100)
		SAWG A 1 Offset(54, 81)
		SAWG A 1 Offset(32, 69)
		SAWG A 1 Offset(22, 58)
		SAWG A 1 Offset(10, 47)
		SAWG A 1 Offset(7, 39)
		SAWG A 1 Offset(2, 34)
		SAWG A 1 A_Raise
		Wait
	Ready:
		TNT1 A 0 A_JumpIfInventory("IsKicking", 1, "DoKick")
		SAWG ABCD 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("IsKicking", 1, "DoKick")
		TNT1 A 0 A_JumpIfInventory("IsGrenading",1,"ThrowGrenade")
		TNT1 A 0 A_PlaySound("Weapons/Chainsaw/Idle",1,1,1)
		Loop
	Deselect:
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_PlaySound("Weapons/Chainsaw/Stop",7)
		SAWG A 1 Offset(2, 34)
		SAWG A 1 Offset(7, 39)
		SAWG A 1 Offset(10, 47)
		SAWG A 1 Offset(22, 58)
		SAWG A 1 Offset(32, 69)
		SAWG A 1 Offset(54, 81)
		SAWG A 1 Offset(67, 100)
		SAWG A 1 A_Lower
		Wait
		
	Fire:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 
		TNT1 A 0 A_PlaySound("Weapons/Chainsaw/Start",1,1,6)
		SAWF ABCD 1 A_CustomPunch(1,0,0,"SawPuff")
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 Radius_Quake(1,5,0,1,0)
		TNT1 A 0 A_ReFire
		TNT1 A 0 A_StopSound(6)
		Goto Ready
	AltFire:
		SAWG A 1 offset(-20,32)
		SAWG B 1 offset(-40,32)
		SAWG C 1 offset(-60,32)
		SAWG D 1 offset(-80,32)
		SAWF E 1
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_PlaySound("Weapons/Chainsaw/Up")
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_Recoil(-6)
		SAWF F 1
		TNT1 A 0 A_Saw("","",20,"SawPuff",6)
		TNT1 A 0 A_FireCustomMissile("ChainsawMissile",0,0,0,0)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		SAWF GH 1
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 10
		TNT1 A 1 Offset(105, 160)
		SAWG A 1 Offset(105, 160)
		SAWG B 1 Offset(97, 140)
		SAWG C 1 Offset(82, 120)
		SAWG A 1 Offset(67, 100)
		SAWG B 1 Offset(54, 81)
		SAWG C 1 Offset(32, 69)
		SAWG B 1 Offset(22, 58)
		SAWG A 1 Offset(10, 47)
		SAWG B 1 Offset(7, 39)
		SAWG C 1 Offset(2, 34)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		Goto Ready
		
		DryFire:
		TNT1 A 0 A_Print("No ammunition. Go find more.",1)
		Goto Ready
//Kick
	DoKick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirBorne")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirBorne")
		TNT1 A 0 A_JumpIfInventory("BerserkStrength",1,"BerserkKick")
		KICK A 1 Offset(0,32)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK B 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK C 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK D 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK E 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK F 1 A_ZoomFactor(0.95)
		TNT1 A 0 A_CustomPunch(2 * random(1, 10),0,0,"KickPuff") 
		Goto FireEnd
		BerserkKick:
		KICK A 1 Offset(0,32)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK B 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK C 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK D 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK E 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch-1)
		KICK F 1 A_ZoomFactor(0.95)
		TNT1 A 0 A_CustomPunch(20 * random(5, 10),0,0,"KickPuff")
		Goto FireEnd
		FireEnd:
		KICK GHIH 1
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK G 1 A_ZoomFactor(0.96)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK F 1 A_ZoomFactor(0.97)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK E 1 A_ZoomFactor(0.98)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK D 1 A_ZoomFactor(0.99)
		TNT1 A 0 A_SetPitch(Pitch+1)
		KICK C 1 A_ZoomFactor(1.00)
		TNT1 A 3
		KICK BA 1
		Goto Ready
		AirBorne:
		TNT1 A 0 A_JumpIfInventory("BerserkStrength",1,"AirBerserk")
		TNT1 A 0 Offset(-1,32)
		KIKK ABCDE 1 A_Recoil(-2)
		KIKK F 3 A_CustomPunch (15,0,0,"KickPuff") 
		Goto EndFire
		AirBerserk:
		TNT1 A 0 Offset(-1,32)
		KIKK ABCDE 1 A_Recoil(-2)
		KIKK F 3 A_CustomPunch (25 * random(5, 10),0,0,"KickPuff")
		Goto EndFire
		EndFire:
		KIKK GHIJK 2 
		Goto Ready
		
//Throw Grenade
	ThrowGrenade:
		TNT1 A 0 A_JumpIf(waterlevel>2,"DryFire")
		TNT1 A 0 A_JumpIfInventory("GrenadeAmmo",1,1)
		Goto Dryfire
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND B 1 Offset(0,24)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND C 1 Offset(0,23)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,26) A_PlaySound("weapons/SHG/throw")
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND D 1 Offset(0,28)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_SpawnItemEx("RealGrenade",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_TakeInventory("GrenadeAmmo",1)
		MAND E 1 Offset(-3,30)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND E 1 Offset(-6,31)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(-9,32)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		MAND F 1 Offset(-12,33)
		TNT1 A 0 A_WeaponReady(WRF_NoFire|WRF_NoSecondary|WRF_NoSwitch)
		TNT1 A 0 A_TakeInventory("GetOnWithIt", 100)
		TNT1 A 0 A_JumpIfNoAmmo("DryFire")
		TNT1 A 7 Offset (75, 152)
		TNT1 A 1 Offset (6, 42)
		Goto Ready

	Spawn:
		SAWP A -1
		Stop
	}
}

ACTOR Sawpuff : BulletPuff
{	
	+NOBLOCKMAP
	+NOGRAVITY
	+NOEXTREMEDEATH
	+FORCEXYBILLBOARD
	DamageType Saw
	Renderstyle Add
	Scale 0.12
	Alpha 1.75
	States
	{
	Spawn:
	Death:
	XDeath:
	Crash:
		TNT1 A 0 A_Jump (64, 4) 
		TNT1 A 0 A_Jump (64, 4) 
		TNT1 A 0 A_Jump (64, 4) 
		TNT1 A 0 A_Jump (64, 4)
		BPUF A 1 BRIGHT
		TNT1 A 0 A_SpawnDebris("BulletSparks")
		TNT1 A 0 A_PlaySound("Weapons/Sawpuff")
		BPUF B 1 BRIGHT
		TNT1 A 0 A_SpawnDebris("BulletSparks")
		TNT1 A 0 A_PlaySound("Weapons/Sawpuff")
		BPUF C 1 BRIGHT
		TNT1 A 0 A_SpawnDebris("BulletSparks")
		TNT1 A 0 A_PlaySound("Weapons/Sawpuff")
		BPUF D 1 BRIGHT
		TNT1 A 0 A_SpawnDebris("BulletSparks")
		TNT1 A 0 A_PlaySound("Weapons/Sawpuff")
		Stop
	}
}

ACTOR ChainsawMissile : FastProjectile
{
	Radius 10
	Height 6
	DamageType Saw
	Projectile 
	Damage 10
	Speed 40
	SeeSound ""
	DeathSound ""
	Decal ""
	+NOEXTREMEDEATH
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 1
		Stop
	XDeath:
		TNT1 A 1
		Stop
	Death:
		TNT1 A 1
		Stop
	Crash:
		TNT1 A 1
		Stop
	}
}