ACTOR CrossbowLoaded : Ammo
{
 Inventory.MaxAmount 1
 +IGNORESKILL
}
ACTOR doubleloaded : Ammo
{
 Inventory.MaxAmount 2
 +IGNORESKILL
}
ACTOR ExplosiveLoaded : Ammo
{
 Inventory.MaxAmount 1
 +IGNORESKILL
}
ACTOR ExplosiveDoubleLoaded : Ammo
{
 Inventory.MaxAmount 2
 +IGNORESKILL
}
Actor ExplosiveToggled: Inventory
{
Inventory.MaxAmount 1
+IGNORESKILL
}
ACTOR CrossbowSpawn : CustomInventory replaces Plasmarifle
{
	Inventory.Amount 0
	scale 0.7
	Inventory.Icon "XBWPA0"
	Inventory.PickupMessage "$GOT_XBOW"
	Inventory.PickupSound "items/gunspickup"
	States
	{
	Spawn:
		XBWP A 10
		XBWP A 1 bright
		loop
	Pickup:
	    TNT1 A 0 A_JumpIfInventory("Xbow4", 1, 5) //Skips giving you the normal crossbow if you have the upgrade
	    TNT1 A 0 A_JumpIfInventory("Xbow3", 1, 4) //Skips giving you the normal crossbow if you have the upgrade
		TNT1 A 0 A_JumpIfInventory("Xbow2", 1, 3) //Skips giving you the normal crossbow if you have the upgrade
		TNT1 A 0 A_GiveInventory("Xbow")
		TNT1 A 0 A_Jump(256, 2)
		TNT1 A 0 A_GiveInventory("XbowAmmo", 3)
		TNT1 A 0
		Stop
	}
}
ACTOR CrossbowBuild2 : CustomInventory
{
	Inventory.Amount 0
	scale 0.7
	Inventory.Icon "XBWPA0"
	+DROPPED
	States
	{
	Spawn:
		XBWP A 10
		loop
	Pickup:
		TNT1 A 0 A_GiveInventory("Xbow3")
		TNT1 A 2
		TNT1 A 0 A_selectweapon("Xbow3")
		TNT1 A 0 A_PlaySound("special/workbench",CHAN_ITEM)
		TNT1 A 0
		Stop
	}
}
ACTOR CrossbowBuild3 : CustomInventory
{
	Inventory.Amount 0
	scale 0.7
	Inventory.Icon "XBWPA0"
	+DROPPED
	States
	{
	Spawn:
		XBWP A 10
		loop
	Pickup:
		TNT1 A 0 A_GiveInventory("Xbow3")
		TNT1 A 2
		TNT1 A 0 A_selectweapon("Xbow3")
		TNT1 A 0 A_PlaySound("special/workbench",CHAN_ITEM)
		TNT1 A 0
		Stop
	}
}
ACTOR Xbow : Weapon
{
  Radius 20
  Height 16
  Weapon.BobStyle Alpha
	Weapon.BobSpeed 1.5
	Weapon.BobRangeX .2
	Weapon.BobRangeY .5
  Weapon.Selectionorder 2200
  +WEAPON.NOAUTOAIM //Projectile weapons with autoaim enabled are literal garbage 
  +AMMO_CHECKBOTH
  +NOALERT
  +NOAUTOFIRE
 +AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
  Weapon.AmmoUse1 0
  Weapon.AmmoUse2 0
 Weapon.AmmoGive2 0
 Weapon.AmmoType1 "CrossbowLoaded"
 Weapon.AmmoType2 "XbowAmmo"
 weapon.upsound "weapons/heavyup"
  Weapon.Kickback 100
  Weapon.SlotNumber 7 
  scale 0.8
  Inventory.PickupMessage "$GOT_XBOW"
  Tag "$WEAPON_XBOW"
  Inventory.PickupSound "items/gunspickup"
  Inventory.Icon "XBWIA0"
  States
  {
  Spawn:
    XBWP A 10
	XBWP A 1 bright
    loop
  Ready:
    XBOW I 0 a_JumpIfInventory("CrossbowLoaded",1,"LoadedReady")
    XBOW I 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedReady:
    XBOW A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
   Deselect:
    XBOW I 0 a_JumpIfInventory("CrossbowLoaded",1,"LoadedDeselect")
    XBOW I 0 A_lower
    XBOW I 1 A_Lower
    Loop
 LoadedDeselect:
    XBOW A 0 A_lower
    XBOW A 1 A_Lower
    Loop
  Select:
  TNT1 A 0 A_takeinventory("lightlit",1)
  TNT1 A 0 A_TakeInventory("XBOW2",1)
  TNT1 A 0 a_JumpIfInventory("ExplosiveToggled",1,"fakereload")
  XBOW E 0 a_JumpIfInventory("CrossbowLoaded",1,"Loadedselect")
  XBOW E 1 A_Raise
  XBOW E 0 A_Raise
  Loop
 LoadedSelect:
  XBOW A 1 A_Raise
  XBOW A 0 A_Raise
  Loop
  Fire:
    "----" #  0 a_JumpIfInventory("CrossbowLoaded",1,1)
    Goto Reload
  FireReal:
    TNT1 A 0 A_TakeInventory("CrossbowLoaded",1,TIF_NOTAKEINFINITE)
	XBOW E 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XBOW F 2 A_FireProjectile("XbowBoltFX",0,1,8,5)
    XBOW G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XBOW H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XBOW I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   Reload:
		"----" #  1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" #  0 A_JumpIfInventory("CrossbowLoaded",1,"Ready")
        "----" #  0 A_JumpIfInventory("XbowAmmo",1,"Work1")
        Goto Ready
	Work1:
		XBOR ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		TNT1 A 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XBOR GGHIJKLMNOPQR 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		TNT1 A 0 A_jumpifinventory("crossbowloaded",1,"reloaddone")
		TNT1 A 0 A_Giveinventory("CrossbowLoaded",1)
		TNT1 A 0 A_TakeInventory("XbowAmmo",1,TIF_NOTAKEINFINITE)
 ReloadDone:
  TNT1 A 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
  XBOR STUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  TNT1 A 10
  XBOR XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  goto ready
   FakeReload:
        TNT1 A 0 a_JumpIfInventory("explosiveLoaded",1,"FakeReloadLoaded")
		TNT1 A 0 A_TakeInventory("ExplosiveToggled",1)
		Goto work1
	FakeReloadLoaded:
		TNT1 A 0 A_TakeInventory("ExplosiveToggled",1)
		XBOS ABCD 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	    TNT1 A 0 a_JumpIfInventory("crossbowLoaded",1,"reloaddone")
		TNT1 A 0 a_giveinventory("crossbowloaded",1)
		TNT1 A 0 a_takeinventory("xbowammo",1)
		Goto reloaddone
	 User1:
        XBOR ZYX 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN ABC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  	    TNT1 A 0 A_CustomPunch(random(3, 5) * 6, TRUE, 0, "FistPuff", 80)
	    WPUN D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN FGH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		XBOR XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto ready
	 Altfire:
        TNT1 A 0 A_JumpIfInventory("CrossbowLoaded",1,"AltfireLoaded")
		XBOW E 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory("Explosiveloaded",1,2)
        TNT1 A 0 A_JumpIfInventory("EXbowAmmo",1,1)
		goto ready
		TNT1 A 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		TNT1 A 0 A_Giveinventory("XBOW2")
		TNT1 A 0 A_Giveinventory("ExplosiveToggled")
        XBOW E 1 A_selectWeapon("XBOW2")
        goto ready
  AltfireLoaded:
        XBOW A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory("Explosiveloaded",1,2)
        TNT1 A 0 A_JumpIfInventory("EXbowAmmo",1,1)
		goto ready
		TNT1 A 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		TNT1 A 0 A_Giveinventory("XBOW2")
		TNT1 A 0 A_Giveinventory("ExplosiveToggled")
        XBOW A 1 A_selectWeapon("XBOW2")
        goto ready
  }
}
ACTOR Xbow2 : Xbow
{
  Radius 20
  Height 16
  Weapon.BobStyle Alpha
	Weapon.BobSpeed 1.5
	Weapon.BobRangeX .2
	Weapon.BobRangeY .5
  Weapon.Selectionorder 2100
  +WEAPON.NOAUTOAIM //Projectile weapons with autoaim enabled are literal garbage 
  +AMMO_CHECKBOTH
  +NOALERT
  +NOAUTOFIRE
 +AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
   +CHEATNOTWEAPON
  Weapon.AmmoUse1 0
  Weapon.AmmoUse2 0
 Weapon.AmmoGive2 0
 Weapon.AmmoType1 "ExplosiveLoaded"
 Weapon.AmmoType2 "EXbowAmmo"
 weapon.upsound "weapons/heavyup"
  Weapon.Kickback 100
  Weapon.SlotNumber 7 
  scale 0.8
   Inventory.PickupMessage "$GOT_XBOW"
  Tag "$WEAPON_XBOW"
  Inventory.PickupSound "items/gunspickup"
  Inventory.Icon "XBWIA0"
  States
  {
  Spawn:
    XBWP A 10
	XBWP A 1 bright
    loop
  Ready:
    XBOW I 0 a_JumpIfInventory("ExplosiveLoaded",1,"LoadedReady")
    XBOW I 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedReady:
    XBOE A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  Deselect:
    XBOW I 0 a_JumpIfInventory("ExplosiveLoaded",1,"LoadedDeselect")
    XBOW I 0 A_lower
    XBOW I 1 A_Lower
    Loop
 LoadedDeselect:
    XBOE A 0 A_lower
    XBOE A 1 A_Lower
    Loop
  Select:
  TNT1 A 0 A_takeinventory("lightlit",1)
  TNT1 A 0 A_TakeInventory("XBOW",1)
  TNT1 A 0 a_JumpIfInventory("ExplosiveToggled",1,"fakereload")
  XBOW E 0 a_JumpIfInventory("ExplosiveLoaded",1,"Loadedselect")
  XBOW E 1 A_Raise
  XBOW E 0 A_Raise
  Loop
 LoadedSelect:
  XBOE A 1 A_Raise
  XBOE A 0 A_Raise
  Loop
  Fire:
    "----" #  0 a_JumpIfInventory("ExplosiveLoaded",1,1)
    Goto Reload
  FireReal:
    "----" #  0 A_TakeInventory("ExplosiveLoaded",1,TIF_NOTAKEINFINITE)
	XBOW E 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XBOW F 2 A_FireProjectile("PlayerOverseerBolt",0,1,8,5)
    XBOW G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XBOW H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XBOW I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XBOW J 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   Reload:
		"----" #  1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" #  0 A_JumpIfInventory("ExplosiveLoaded",1,"Ready")
        "----" #  0 A_JumpIfInventory("EXbowAmmo",1,"Work1")
        Goto Ready
	Work1:
		XBOR ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		TNT1 A 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XBOR GGHIJKLMNOPQ 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		TNT1 A 0 A_jumpifinventory("explosiveloaded",1,"reloaddone")
		TNT1 A 0 A_Giveinventory("ExplosiveLoaded",1)
		TNT1 A 0 A_TakeInventory("EXbowAmmo",1,TIF_NOTAKEINFINITE)
 ReloadDone:
  TNT1 A 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
  XBOE RSTUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  TNT1 A 10
  XBOE XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  goto ready
   FakeReload:
        TNT1 A 0 a_JumpIfInventory("crossbowLoaded",1,"FakeReloadLoaded")
		TNT1 A 0 A_TakeInventory("ExplosiveToggled",1)
		Goto work1
	FakeReloadLoaded:
		TNT1 A 0 A_TakeInventory("ExplosiveToggled",1)
		XBOS ABCD 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	    TNT1 A 0 a_JumpIfInventory("explosiveLoaded",1,"reloaddone")
		TNT1 A 0 a_giveinventory("explosiveloaded",1)
		TNT1 A 0 a_takeinventory("exbowammo",1)
		Goto reloaddone
	 User1:
        XBOE ZYX 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN ABC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  	    TNT1 A 0 A_CustomPunch(random(3, 5) * 6, TRUE, 0, "FistPuff", 80)
	    WPUN D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN FGH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		XBOE XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto ready
	 Altfire:
        TNT1 A 0 A_JumpIfInventory("ExplosiveLoaded",1,"AltfireLoaded")
		XBOW E 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory("crossbowloaded",1,2)
        TNT1 A 0 A_JumpIfInventory("XbowAmmo",1,1)
		goto ready
		TNT1 A 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		TNT1 A 0 A_Giveinventory("XBOW")
		TNT1 A 0 A_Giveinventory("ExplosiveToggled")
        XBOW E 1 A_selectWeapon("XBOW")
        goto ready
  AltfireLoaded:
        XBOE A 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 0 A_JumpIfInventory("crossbowloaded",1,2)
        TNT1 A 0 A_JumpIfInventory("XbowAmmo",1,1)
		goto ready
		TNT1 A 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		TNT1 A 0 A_Giveinventory("XBOW")
		TNT1 A 0 A_Giveinventory("ExplosiveToggled")
        XBOE A 1 A_selectWeapon("XBOW")
        goto ready
  }
}
ACTOR Xbow3 : Weapon
{
  Radius 20
  Height 16
  Weapon.BobStyle Alpha
	Weapon.BobSpeed 1.5
	Weapon.BobRangeX .2
	Weapon.BobRangeY .5
  Weapon.Selectionorder 2200
  +WEAPON.NOAUTOAIM //Projectile weapons with autoaim enabled are literal garbage 
  +AMMO_CHECKBOTH
  +NOALERT
  +NOAUTOFIRE
 +AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
   +CHEATNOTWEAPON
  Weapon.AmmoUse1 1
  Weapon.AmmoUse2 1
 Weapon.AmmoGive2 0
 Weapon.AmmoType1 "doubleloaded"
 Weapon.AmmoType2 "XbowAmmo"
 weapon.upsound "weapons/heavyup"
  Weapon.Kickback 100
  Weapon.SlotNumber 7 
  scale 0.8
   Inventory.PickupMessage "$GOT_XBOW2"
  Tag "$WEAPON_XBOW2"
  Inventory.PickupSound "items/gunspickup"
  Inventory.Icon "XBWIB0"
  States
  {
  Spawn:
    XBWP B 10
	XBWP B 1 bright
    loop
  Ready:
    XB2W E 0 a_JumpIfInventory("doubleloaded",2,"LoadedDoubleReady")
    XB2W E 0 a_JumpIfInventory("doubleloaded",1,"LoadedReady")
    XB2W E 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedReady:
    XB2W B 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedDoubleReady:
    XB2W A 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
   Deselect:
    XB2W E 0 a_JumpIfInventory("doubleloaded",2,"LoadedDoubleDeselect")
    XB2W E 0 a_JumpIfInventory("doubleloaded",1,"LoadedDeselect")
    XB2W E 0 A_lower
    XB2W E 1 A_Lower
    Loop
 LoadedDeselect:
    XB2W B 0 A_lower
    XB2W B 1 A_Lower
    Loop
 LoadedDoubleDeselect:
    XB2W A 0 A_lower
    XB2W A 1 A_Lower
    Loop
  Select:
   TNT1 A 0 A_takeinventory("lightlit",1)
   TNT1 A 0 A_TakeInventory("XBOW4",1)
  TNT1 A 0 A_TakeInventory("XBOW2",1)
   TNT1 A 0 A_TakeInventory("XBOW",1)
  TNT1 A 0 a_JumpIfInventory("ExplosiveToggled",1,"fakereload")
  XB2W E 0 a_JumpIfInventory("doubleloaded",2,"LoadedDoubleselect")
  XB2W E 0 a_JumpIfInventory("doubleloaded",1,"Loadedselect")
  XB2W E 1 A_Raise
  XB2W E 0 A_Raise
  Loop
 LoadedSelect:
  XB2W B 1 A_Raise
  XB2W B 0 A_Raise
  Loop
 LoadedDoubleSelect:
  XB2W A 1 A_Raise
  XB2W A 0 A_Raise
  Loop
  Fire:
    "----" # 0 a_JumpIfInventory("doubleloaded",2,"firedouble")
    "----" # 0 a_JumpIfInventory("doubleloaded",1,"firesingle")
    Goto Reload
  FireDouble:
	XB2W B 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XB2D F 2 A_FireProjectile("XbowBoltFX",0,1,8,5)
    XB2D G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XB2D H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2D I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2D J 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   FireSingle:
	XB2W E 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XB2W F 2 A_FireProjectile("XbowBoltFX",0,1,8,5)
    XB2W G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XB2W H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2W I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2W J 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   Reload:
        "----" # 0 A_JumpIfInventory("doubleloaded",1,"HalfReload")
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        "----" # 0 A_JumpIfInventory("XbowAmmo",1,"Work1")
        Goto Ready
   HalfReload:
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("doubleloaded",2,"Ready")
        "----" # 0 A_JumpIfInventory("XbowAmmo",1,"Work2")
        Goto Ready
	Work1:
		XB2R ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		"----" # 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XB2R GGHIJKLMNOPQR 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
	ReloadAmmo:
		"----" # 0 A_Giveinventory("doubleloaded",1)
		"----" # 0 A_TakeInventory("XbowAmmo",1,TIF_NOTAKEINFINITE)
		"----" # 0 A_JumpIfInventory("XbowAmmo",1,"reloaddone1")
    ReloadDone:
        "----" # 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
        XB2R STUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        TNT1 A 10
        XB2R XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        goto ready
	 ReloadDone1:
	    "----" # 0 A_Giveinventory("doubleloaded",1)
		"----" # 0 A_TakeInventory("XbowAmmo",1,TIF_NOTAKEINFINITE)
        "----" # 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
        XB2R STUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        TNT1 A 10
        XB2O XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        goto ready
	Work2:
		XB2O ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		"----" # 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XB2O GGHIJKLMNOPQR 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
	ReloadAmmo2:
		"----" # 0 A_Giveinventory("doubleloaded",1)
		"----" # 0 A_TakeInventory("XbowAmmo",1,TIF_NOTAKEINFINITE)
    ReloadDone2:
       TNT1 A 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
       XB2O STUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
       TNT1 A 10
       XB2O XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
       goto ready
   FakeReload:
        "----" # 0 a_JumpIfInventory("explosivedoubleloaded",2,"FakeReloadLoaded")
        "----" # 0 a_JumpIfInventory("explosivedoubleloaded",1,"FakeReloadLoaded2")
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		Goto work1
	FakeReloadLoaded:
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		XB2S ABCD 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		Goto reloaddone
	FakeReloadLoaded2:
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		Goto work2
	 User1:
        XB2R ZYX 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN ABC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  	    TNT1 A 0 A_CustomPunch(random(3, 5) * 6, TRUE, 0, "FistPuff", 80)
	    WPUN D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN FGH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		XB2R XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto ready
	 Altfire:
        "----" # 0 A_JumpIfInventory("doubleloaded",1,"AltfireLoaded")
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",1,2)
        "----" # 0 A_JumpIfInventory("EXbowAmmo",1,1)
		goto ready
		"----" # 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		"----" # 0 A_Giveinventory("XBOW4")
		"----" # 0 A_Giveinventory("ExplosiveToggled")
        "----" # 1 A_selectWeapon("XBOW4")
        goto ready
  AltfireLoaded:
        "----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",1,2)
        "----" # 0 A_JumpIfInventory("EXbowAmmo",1,1)
		goto ready
		"----" # 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		"----" # 0 A_Giveinventory("XBOW4")
		"----" # 0 A_Giveinventory("ExplosiveToggled")
        "----" # 1 A_selectWeapon("XBOW4")
        goto ready
  }
}
ACTOR Xbow4 : Weapon
{
  Radius 20
  Height 16
  Weapon.BobStyle Alpha
	Weapon.BobSpeed 1.5
	Weapon.BobRangeX .2
	Weapon.BobRangeY .5
  Weapon.Selectionorder 2200
  +WEAPON.NOAUTOAIM //Projectile weapons with autoaim enabled are literal garbage 
  +NOALERT
  +NOAUTOFIRE
  +AMMO_CHECKBOTH
 +AMMO_OPTIONAL
  +WEAPON.ALT_AMMO_OPTIONAL
   +CHEATNOTWEAPON
  Weapon.AmmoUse1 1
  Weapon.AmmoUse2 1
 Weapon.AmmoGive2 0
 Weapon.AmmoType1 "ExplosiveDoubleLoaded"
 Weapon.AmmoType2 "EXbowAmmo"
 weapon.upsound "weapons/heavyup"
  Weapon.Kickback 100
  Weapon.SlotNumber 7 
  scale 0.8
   Inventory.PickupMessage "$GOT_XBOW2"
  Tag "$WEAPON_XBOW2"
  Inventory.PickupSound "items/gunspickup"
  Inventory.Icon "XBWIB0"
  States
  {
  Spawn:
    XBWP B 10
	XBWP B 1 bright
    loop
  Ready:
    XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",2,"LoadedDoubleReady")
    XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",1,"LoadedReady")
    XB2W E 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedReady:
    XB2W D 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
  LoadedDoubleReady:
    XB2W C 1 A_WeaponReady(WRF_ALLOWRELOAD|WRF_ALLOWUSER1)
    Loop
   Deselect:
    XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",2,"LoadedDoubleDeselect")
    XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",1,"LoadedDeselect")
    XB2W E 0 A_lower
    XB2W E 1 A_Lower
    Loop
 LoadedDeselect:
    XB2W D 0 A_lower
    XB2W D 1 A_Lower
    Loop
 LoadedDoubleDeselect:
    XB2W C 0 A_lower
    XB2W C 1 A_Lower
    Loop
  Select:
   TNT1 A 0 A_takeinventory("lightlit",1)
   TNT1 A 0 A_TakeInventory("XBOW3",1)
  TNT1 A 0 A_TakeInventory("XBOW2",1)
   TNT1 A 0 A_TakeInventory("XBOW",1)
  TNT1 A 0 a_JumpIfInventory("ExplosiveToggled",1,"fakereload")
  XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",2,"LoadedDoubleselect")
  XB2W E 0 a_JumpIfInventory("ExplosiveDoubleLoaded",1,"Loadedselect")
  XB2W E 1 A_Raise
  XB2W E 0 A_Raise
  Loop
 LoadedSelect:
  XB2W D 1 A_Raise
  XB2W D 0 A_Raise
  Loop
 LoadedDoubleSelect:
  XB2W C 1 A_Raise
  XB2W C 0 A_Raise
  Loop
  Fire:
    "----" # 0 a_JumpIfInventory("ExplosiveDoubleLoaded",2,"firedouble")
    "----" # 0 a_JumpIfInventory("ExplosiveDoubleLoaded",1,"firesingle")
    Goto Reload
  FireDouble:
	XB2W D 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XB2E F 2 A_FireProjectile("PlayerOverseerBolt",0,1,8,5)
    XB2E G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XB2E H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2E I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2E J 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   FireSingle:
	XB2W E 1 A_PlaySound("weapons/XBOWFIRE1", CHAN_WEAPON, 1.0)
	XB2W F 2 A_FireProjectile("PlayerOverseerBolt",0,1,8,5)
    XB2W G 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
	XB2W H 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2W I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	XB2W J 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	goto ready
   Reload:
        "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",1,"HalfReload")
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        "----" # 0 A_JumpIfInventory("EXbowAmmo",1,"Work1")
        Goto Ready
   HalfReload:
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	    "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",2,"Ready")
        "----" # 0 A_JumpIfInventory("EXbowAmmo",1,"Work2")
        Goto Ready
	Work1:
		XB2R ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		"----" # 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XB2R GGHIJKLMNOPQ 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
	ReloadAmmo:
	    "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",2,"reloaddone")
		"----" # 0 A_Giveinventory("ExplosiveDoubleLoaded",1)
		"----" # 0 A_TakeInventory("EXbowAmmo",1,TIF_NOTAKEINFINITE)
		"----" # 0 A_JumpIfInventory("EXbowAmmo",1,"reloaddone1")
    ReloadDone:
        TNT1 A 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
        XB2E RSTUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        TNT1 A 10
        XB2E XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        goto ready
	 ReloadDone1:
	    "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",2,"reloaddone")
	    "----" # 0 A_Giveinventory("ExplosiveDoubleLoaded",1)
		"----" # 0 A_TakeInventory("EXbowAmmo",1,TIF_NOTAKEINFINITE)
        "----" # 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
        XB2E RSTUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        TNT1 A 10
        XB2X XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        goto ready
	Work2:
		XB2X ABCDEF 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
		"----" # 0 A_PlaySound("weapons/XBOWload1", CHAN_ITEM, 1.5)
		XB2X GGHIJKLMNOPQR 2 A_WeaponReady(WRF_NOFIRE|WRF_ALLOWUSER1)
	ReloadAmmo2:
	   "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",2,"reloaddone2")
		"----" # 0 A_Giveinventory("ExplosiveDoubleLoaded",1)
		"----" # 0 A_TakeInventory("EXbowAmmo",1,TIF_NOTAKEINFINITE)
    ReloadDone2:
       "----" # 0 A_PlaySound("weapons/XBOWload2", CHAN_ITEM, 1.5)
       XB2X STUVW 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
       TNT1 A 10
       XB2X XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
       goto ready
   FakeReload:
        "----" # 0 a_JumpIfInventory("ExplosiveDoubleLoaded",2,"FakeReloadDouble")
        "----" # 0 a_JumpIfInventory("ExplosiveDoubleLoaded",1,"FakeReloadLoaded")
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		Goto work1
	FakeReloadLoaded:
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		XB2X ABCD 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		Goto reloaddone
	FakeReloadDouble:
		"----" # 0 A_TakeInventory("ExplosiveToggled",1)
		goto work2
	 User1:
        XB2R ZYX 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN ABC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
  	    TNT1 A 0 A_CustomPunch(random(3, 5) * 6, TRUE, 0, "FistPuff", 80)
	    WPUN D 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		WPUN FGH 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		TNT1 A 5 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		XB2R XYZ 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		goto ready
	 Altfire:
        "----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",2,"AltfireDouble")
		"----" # 0 A_JumpIfInventory("ExplosiveDoubleLoaded",1,"AltfireLoaded")
		"----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("DoubleLoaded",1,2)
        "----" # 0 A_JumpIfInventory("XbowAmmo",1,1)
		goto ready
		"----" # 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		"----" # 0 A_Giveinventory("XBOW3")
		"----" # 0 A_takeinventory("ExplosiveToggled")
        "----" # 1 A_selectWeapon("XBOW3")
        goto ready
  AltfireDouble:
        "----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("DoubleLoaded",1,2)
        "----" # 0 A_JumpIfInventory("XbowAmmo",1,1)
		goto ready
		"----" # 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		"----" # 0 A_Giveinventory("XBOW3")
		"----" # 0 A_takeinventory("ExplosiveToggled")
        "----" # 1 A_selectWeapon("XBOW3")
        goto ready
  AltfireLoaded:
        "----" # 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		"----" # 0 A_JumpIfInventory("DoubleLoaded",1,2)
        "----" # 0 A_JumpIfInventory("XbowAmmo",1,1)
		goto ready
		"----" # 0 A_PlaySound("weapons/weapons/heavyup", CHAN_WEAPON)
		"----" # 0 A_Giveinventory("XBOW3")
		"----" # 0 A_takeinventory("ExplosiveToggled")
        "----" # 1 A_selectWeapon("XBOW3")
        goto ready
  }
}