//------------------------------------------------------------------------
//
// Crossbow
//
//------------------------------------------------------------------------
ACTOR CountArrow : Inventory { Inventory.MaxAmount 6 }
ACTOR CountAltfire : Inventory { Inventory.MaxAmount 2 }
ACTOR Arbalest : LowWeapon replaces RocketLauncher
{
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.NOALERT
	+WEAPON.AMMO_CHECKBOTH
	+WEAPON.NOAUTOFIRE
	+WEAPON.NOAUTOAIM
	Weapon.SlotNumber 5
	Weapon.AmmoType1 "BowReload"
	Weapon.AmmoUse1 1
	Weapon.AmmoType2 "Bolts"
	Weapon.AmmoGive2 6
	Weapon.UpSound "weapons/upwp3"
	Inventory.PickupMessage "Crossbow."
	Tag "Crossbow"
	States
	{
	Ready:
		TNT1 A 0 A_JumpIfNoAmmo("ReadyNoAmmo")
		BOWG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Goto TrueReady
	TrueReady:
		BOWG A 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	ReadyNoAmmo:
		BOWF C 1 A_WeaponReady(WRF_ALLOWRELOAD)
		TNT1 A 0 A_JumpifInventory("IsKicking",1,"Kick")
		TNT1 A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		Loop
	Deselect:
		TNT1 A 0 A_PlaySound("weapons/swap",6)
		BOWG A 1 Offset (8, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (16, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (24, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (32, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (40, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (48, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (56, 0) A_Lower
		TNT1 A 0 A_Lower
		BOWG A 1 Offset (64, 0) A_Lower
		TNT1 A 1 A_Lower
		Wait
	Select:
		BOWG A 1 Offset (64, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (56, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (48, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (40, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (32, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (24, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (16, 0) A_Raise
		TNT1 A 0 A_Raise
		BOWG A 1 Offset (8, 0) A_Raise
		TNT1 A 0 A_Raise
		Wait
	Fire:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("ExpBolt")==1,"ExpFire")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("SawBolt")==1,"SawFire")
		TNT1 A 0 A_JumpIfInventory("CountArrow", 5, "FireLA")
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr",7)
		BOWF A 2 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1) 
		BOWF C 1 Offset(0,32)
		BOWF B 2 A_GiveInventory("CountArrow", 1)
		BOWG B 3 A_PlaySound("weapons/bowrd1")
		BOWG C 3
		Goto Ready
	AltFire:
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("ExpBolt")==1,"ExpAltFire")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("SawBolt")==1,"SawAltFire")
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		BOWF A 0 A_JumpIfInventory("CountAltfire", 1, "FireTrio")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 2 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		TNT1 A 0 A_GiveInventory("CountAltfire", 1)
		BOWF C 3 A_WeaponReady
		BOWG BC 3
		Goto Ready
	FireTrio:
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 1 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
	FireLA:
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr")
		BOWF A 2 A_SpawnItemEx("Bolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1)
		BOWF C 1 Offset(0,32)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
	Dryfire:
		BOWF C 3 A_PlaySound("weapons/XBDryfire")
		BOWF C 10 A_WeaponReady(WRF_ALLOWRELOAD)
	Reload: 
		TNT1 A 0 A_JumpIfInventory("BowReload", 6, 2)
		TNT1 A 0 A_JumpIfInventory("Bolts", 1, "ReloadWork")
		BOWF C 1 A_WeaponReady
		Goto Ready
	ReloadWork:
		BOWF C 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	ReloadLoop:
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		BOWR AB 2
		BOWR C 3 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		BOWF C 7 A_PlaySound("weapons/bowrd2", CHAN_WEAPON)
		NULL A 0 A_JumpifInventory("IsKicking",1,"Kick")
		NULL A 0 A_JumpifInventory("ThrowTNT",1,"TNT")
		TNT1 A 0 A_TakeInventory("CountArrow", 5)
		TNT1 A 0 A_TakeInventory("CountAltfire", 2)
		TNT1 A 0 A_TakeInventory("Bolts", 1)
		TNT1 A 0 A_GiveInventory("Bowreload", 1)
		TNT1 A 0 A_JumpIfInventory("Bowreload", 6, "ReloadFinish")
		TNT1 A 0 A_JumpIfInventory("Bolts", 1, "ReloadLoop")
		Goto ReloadFinish
	ReloadFinish:
		BOWG B 2
		BOWG C 3 A_PlaySound("weapons/bowrd3", CHAN_WEAPON)
		Goto Ready
	Spawn:
		BOWP A -1
		Stop
		
// Chainsaw Launchers
	SawFire:
		TNT1 A 0 A_JumpIfInventory("CountArrow", 5, "SawFireLA")
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr",7)
		BOWF A 2 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1) 
		BOWF C 1 Offset(0,32)
		BOWF B 2 A_GiveInventory("CountArrow", 1)
		BOWG B 3 A_PlaySound("weapons/bowrd1")
		BOWG C 3
		Goto Ready
	SawAltfire:
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		BOWF A 0 A_JumpIfInventory("CountAltfire", 1, "SawFireTrio")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 2 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		TNT1 A 0 A_GiveInventory("CountAltfire", 1)
		BOWF C 3 A_WeaponReady
		BOWG BC 3
		Goto Ready
	SawFireTrio:
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 1 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
	SawFireLA:
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr")
		BOWF A 2 A_SpawnItemEx("SawBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1)
		BOWF C 1 Offset(0,32)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
		
// Explosive Launchers
	ExpFire:
		TNT1 A 0 A_JumpIfInventory("CountArrow", 5, "ExpFireLA")
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr",7)
		BOWF A 2 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1) 
		BOWF C 1 Offset(0,32)
		BOWF B 2 A_GiveInventory("CountArrow", 1)
		BOWG B 3 A_PlaySound("weapons/bowrd1")
		BOWG C 3
		Goto Ready
	ExpAltfire:
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		BOWF A 0 A_JumpIfInventory("CountAltfire", 1, "ExpFireTrio")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 2 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		TNT1 A 0 A_GiveInventory("CountAltfire", 1)
		BOWF C 3 A_WeaponReady
		BOWG BC 3
		Goto Ready
	ExpFireTrio:
		BOWF A 0 A_JumpIfInventory("CountArrow", 6, "Dryfire")
		TNT1 A 0 A_JumpIfInventory("BowReload",3,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr2",6)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,-3,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 2 A_TakeInventory("Bowreload", 3)
		BOWF A 1 Offset(0,35)
		BOWF B 1 Offset(0,32) A_CheckReload
		BOWF B 2 A_GiveInventory("CountArrow", 3)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
	ExpFireLA:
		TNT1 A 0 A_JumpIfInventory("BowReload",1,1)
		Goto Dryfire
		TNT1 A 0 A_PlaySound("weapons/dsbowfr")
		BOWF A 2 A_SpawnItemEx("ExBolt",0,1,24,cos(pitch)*40,0,sin(-pitch)*40,0,SXF_TRANSFERPITCH|SXF_NOCHECKPOSITION)
		BOWF B 1 Offset(0,35) A_TakeInventory("BowReload", 1)
		BOWF C 1 Offset(0,32)
		BOWF C 2 A_WeaponReady(WRF_ALLOWRELOAD)
		Wait
		
//  Kick Actions
	Kick:
		TNT1 A 0 A_JumpIf (momZ > 0, "AirKick")
		TNT1 A 0 A_JumpIf (momZ < 0, "AirKick")
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"BerserkKick")
		KKIR A 1 Offset(0,32)
		KKIR BCDE 1
		KKIR FG 1 A_Recoil(-1)
		KKIR H 2 A_CustomPunch (5,0,0,"FightPuff3") 
		KKIR IHGFEDC 1 
		KKIR BA 1 A_Recoil(+1)
		Goto Ready
	AirKick:
		TNT1 A 0 A_JumpIfInventory("SuperBlow",1,"AirBerserkKick")
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1
		KI3K F 3 A_CustomPunch (9,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
	BerserkKick:
		KKIR A 1 Offset(0,32)
		KKIR BCDE 1
		KKIR FG 1 A_Recoil(-1)
		KKIR H 2 A_CustomPunch (9,0,0,"FightPuff3") 
		KKIR IHGFEDC 1 
		KKIR BA 1 A_Recoil(+1)
		Goto Ready
	AirBerserkKick:
		FISG B 1
		FISG B 1 Offset(0,36)
		TNT1 A 0 Offset(-1,32)
		KI3K ABCDE 1 A_Recoil(-2)
		KI3K F 3 A_CustomPunch (12,0,0,"FightPuff3") 
		KI3K GHIJK 2 
		Goto Ready
// TNT Actions
	TNT:
		TNT1 A 0 A_TakeInventory("TommyZoomed",1)
		TNT1 A 0 A_ZoomFactor(1)
		TNT1 A 0 A_JumpIfInventory("TNTammo",1,1)
		Goto NoTNT
		TNT1 A 0 A_JumpIf(waterlevel>2,"YouCannot")
		TNT1 A 0 A_StopSound(1)
		TNT1 A 0 Offset(-20,32)
		TAND ABC 2
		TAND D 2 A_PlaySound ("weapons/tnttr")
		TNT1 A 0 A_FireCustomMissile("STNT",0,0,0,0)
		TNT1 A 0 A_TakeInventory("TNTammo",1)
		TAND EDCBA 2
		TNT1 A 0 A_JumpIfInventory("TNTammo",0,"NoTNT")
		BOWG A 1 Offset(67, 100)
		BOWG A 1 Offset(54, 81)
		BOWG A 1 Offset(32, 69)
		BOWG A 1 Offset(22, 58)
		BOWG A 1 Offset(10, 47)
		BOWG A 1 Offset(7, 39)
		BOWG A 1 Offset(2, 34)
		Goto Ready
	YouCannot:
		TNT1 A 0 A_Print("You Are Underwater!",8)
		Goto Ready
	NoTNT:
		TNT1 A 0 A_Print("No dynamites left.")
		Goto Ready
	}
}

ACTOR BowReload : Ammo
{
Inventory.MaxAmount 6
 +IGNORESKILL
}

ACTOR Bolt
{
	Radius 5
	Height 1
	Speed 5
	Gravity 0.2
	Damage (Random(25,38))
	PROJECTILE
	+NOEXTREMEDEATH
	+RIPPER
	-NOGRAVITY
	SeeSound ""
	DeathSound "weapons/bowht"
	Obituary "Big Joe."
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(pitch > 360, "Pitch0")
		TNT1 A 0 A_JumpIf(pitch > 353, "PitchUp15")
		TNT1 A 0 A_JumpIf(pitch > 338, "PitchUp30")
		TNT1 A 0 A_JumpIf(pitch > 323, "PitchUp45")
		TNT1 A 0 A_JumpIf(pitch > 308, "PitchUp60")
		TNT1 A 0 A_JumpIf(pitch > 293, "PitchUp75")
		TNT1 A 0 A_JumpIf(pitch > 278, "PitchUp90")
		TNT1 A 0 A_JumpIf(pitch > 82, "PitchDn90")
		TNT1 A 0 A_JumpIf(pitch > 67, "PitchDn75")
		TNT1 A 0 A_JumpIf(pitch > 52, "PitchDn60")
		TNT1 A 0 A_JumpIf(pitch > 37, "PitchDn45")
		TNT1 A 0 A_JumpIf(pitch > 22, "PitchDn30")
		TNT1 A 0 A_JumpIf(pitch > 7, "PitchDn15")
		TNT1 A 0 A_Jump(256, "Pitch0")
	PitchUp90:
		AVXP M 1 A_JumpIf(pitch > 293, "PitchUp75")
		AVXP M 1 A_SetPitch(pitch+2)
		loop
	PitchUp75:
		AVXP L 1 A_JumpIf(pitch > 308, "PitchUp60")
		AVXP L 1 A_SetPitch(pitch+2)
		loop
	PitchUp60:
		AVXP K 1 A_JumpIf(pitch > 323, "PitchUp45")
		AVXP K 1 A_SetPitch(pitch+2)
		loop
	PitchUp45:
		AVXP J 1 A_JumpIf(pitch > 338, "PitchUp30")
		AVXP J 1 A_SetPitch(pitch+2)
		loop
	PitchUp30:
		AVXP I 1 A_JumpIf(pitch > 353, "PitchUp15")
		AVXP I 1 A_SetPitch(pitch+2)
		loop
	PitchUp15:
		AVXP H 1 A_JumpIf(pitch > 360, "Pitch0")
		AVXP H 1 A_JumpIf(pitch < 7, "Pitch0")
		AVXP H 1 A_SetPitch(pitch+2)
		loop
	Pitch0:
		AVXP G 1 A_JumpIf(pitch > 7, "PitchDn15")
		AVXP G 1 A_SetPitch(pitch+2)
		loop
	PitchDn15:
		AVXP F 1 A_JumpIf(pitch > 22, "PitchDn30")
		AVXP F 1 A_SetPitch(pitch+2)
		loop
	PitchDn30:
		AVXP E 1 A_JumpIf(pitch > 37, "PitchDn45")
		AVXP E 1 A_SetPitch(pitch+2)
		loop
	PitchDn45:
		AVXP D 1 A_JumpIf(pitch > 52, "PitchDn60")
		AVXP D 1 A_SetPitch(pitch+2)
		loop
	PitchDn60:
		AVXP C 1 A_JumpIf(pitch > 67, "PitchDn75")
		AVXP C 1 A_SetPitch(pitch+2)
		loop
	PitchDn75:
		AVXP B 1 A_JumpIf(pitch > 82, "PitchDn90")
		AVXP B 1 A_SetPitch(pitch+2)
		loop
	PitchDn90:
		AVXP A 1
		loop
	Death:
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_JumpIf(pitch > 360, "DeathPitch0")
		TNT1 A 0 A_JumpIf(pitch > 353, "DeathPitchUp15")
		TNT1 A 0 A_JumpIf(pitch > 338, "DeathPitchUp30")
		TNT1 A 0 A_JumpIf(pitch > 323, "DeathPitchUp45")
		TNT1 A 0 A_JumpIf(pitch > 308, "DeathPitchUp60")
		TNT1 A 0 A_JumpIf(pitch > 293, "DeathPitchUp75")
		TNT1 A 0 A_JumpIf(pitch > 278, "DeathPitchUp90")
		TNT1 A 0 A_JumpIf(pitch > 82, "DeathPitchDn90")
		TNT1 A 0 A_JumpIf(pitch > 67, "DeathPitchDn75")
		TNT1 A 0 A_JumpIf(pitch > 52, "DeathPitchDn60")
		TNT1 A 0 A_JumpIf(pitch > 37, "DeathPitchDn45")
		TNT1 A 0 A_JumpIf(pitch > 22, "DeathPitchDn30")
		TNT1 A 0 A_JumpIf(pitch > 7, "DeathPitchDn15")
		TNT1 A 0 A_Jump(256, "DeathPitch0")
	DeathPitch0:
		AVX2 G 1050
		AVX2 G 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 G 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn90:
		AVX2 A 1050
		AVX2 A 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 A 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn75:
		AVX2 B 1050
		AVX2 B 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 B 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn60:
		AVX2 C 1050
		AVX2 C 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 C 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn45:
		AVX2 D 1050
		AVX2 D 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 D 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn30:
		AVX2 E 1050
		AVX2 E 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 E 5 A_Fadeout(0.1)
		Stop
	DeathPitchDn15:
		AVX2 F 1050
		AVX2 F 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 F 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp15:
		AVX2 H 1050
		AVX2 H 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 H 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp30:
		AVX2 I 1050
		AVX2 I 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 I 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp45:
		AVX2 J 1050
		AVX2 J 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 J 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp60:
		AVX2 K 1050
		AVX2 K 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 K 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp75:
		AVX2 L 1050
		AVX2 L 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 L 5 A_Fadeout(0.1)
		Stop
	DeathPitchUp90:
		AVX2 M 1050
		AVX2 M 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		AVX2 M 5 A_Fadeout(0.1)
		Stop
	}
}

//======================================//
//										//
// Chainsaw Bolt by Gamer with Dignity	//
//										//
//======================================//

ACTOR SawBolt
{
	Radius 5
	Height 2
	Speed 50
	Damage (Random(25,38))
	PROJECTILE
	+NOEXTREMEDEATH
	+RIPPER
	SeeSound "weapons/Sawzip"
	DeathSound "weapons/bowht"
	Obituary "Groovy."
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("weapons/Sawoff",6)
		SAWP A -1 
		loop
	Death:
		TNT1 A 0 A_AlertMonsters
		SAWP A 35
		SAWP A 5 A_SetTranslucent(0.9)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.8)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.7)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.6)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.5)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.4)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.3)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.2)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_SetTranslucent(0.1)
		TNT1 A 0 A_SpawnItem("GunSmokeSpawner")
		SAWP A 5 A_Fadeout(0.1)
		Stop
	}
}

ACTOR ExBolt
{
	Radius 5
	Height 2
	Speed 50
	PROJECTILE
	+NOEXTREMEDEATH
	SeeSound ""
	DeathSound "world/barrelx"
	RenderStyle Add
	Alpha 1.75
	Obituary "%k's Explosive-Tipped arrows blown up %o in a rather R-Rated way."
	States
	{
	Spawn:
		XPBT A 1
		loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_Explode(64,64)
		TNT1 A 0 A_SpawnItemEx("Scorchmaker",0,0,0,5,0,0,0,0)
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 Radius_Quake (2, 24, 0, 15, 0)
		TNT1 AAAAAA 0 A_SpawnDebris("BulletSparks")
		TNT1 AAAAAAAA 0 A_SpawnItem("GunSmokeSpawner") 
		TNT1 A 0 A_AlertMonsters
		BLAM ABCDEFGHIJKLMNOP 2 BRIGHT
		Stop
	}
}

ACTOR Scorchmaker : DoomImpBall
{
	Radius 1
	Height 1
	Radius 6
	FastSpeed 10
	Damage 0
	SeeSound ""
	DeathSound ""
	Decal "Scorch"
	+RIPPER
	-BLOODSPLATTER
	+NOBLOODDECALS
	+BLOODLESSIMPACT
	States
	{
	Spawn:
		TNT1 A 3 BRIGHT
		Stop
	Death:
		TNT1 A 1 BRIGHT
		Stop
	}
}