// The Neoworm + Xaser Super-Crossbow!
// (a.k.a "Arbalest of the Ancients")
ACTOR ArbalestAltfireEnabled : Inventory
{
	Inventory.MaxAmount 1
}

ACTOR GodsArbalest : HereticWeapon
{
	Weapon.SelectionOrder 30
	Weapon.AmmoType1 "Shell"
	Weapon.AmmoType2 "RocketAmmo"
	Weapon.AmmoGive1 12
	Weapon.AmmoGive2 3
	Weapon.AmmoUse1 2
	Weapon.AmmoUse2 1
	Inventory.PickupMessage "You got the Arbalest of the Gods!"
	Weapon.SlotNumber 3
	Tag "Arbalest of the Gods"
	+WEAPON.NOAUTOFIRE
	States
	{
	Spawn:
		WSBO A -1
		Stop
	Ready:
		SBOW AAAAAABBBBBBCCCCCC 1 A_WeaponReady
		Loop
	Deselect:
		SBOW A 1 A_Lower
		Loop
	Select:
		SBOW A 1 A_Raise
		Loop
	Fire:
		SBOW D 0 A_PlayWeaponSound("weapons/superbowfire")
		SBOW D 0 A_PlaySound("weapons/cryobowfire")
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 0, 1, 0,-6)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 0, 0, 0, 6)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 4, 0, 0,-2)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 4, 0, 0, 2)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet",-4, 0, 0,-2)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet",-4, 0, 0, 2)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet", 2, 0, 0, 4)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet", 2, 0, 0,-4)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet",-2, 0, 0, 4)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet",-2, 0, 0,-4)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet", 6, 0, 4, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet", 6, 0,-4, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet",-6, 0, 4, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestSnakeBullet",-6, 0,-4, 0)
		SBOW DE 3 Bright
		SBOW EFGHI 3
		SBOW AB 6
		SBOW CCCCCC 1 A_ReFire("Fire")
		Goto Ready
	AltFire:

		SBOW A 1 A_JumpIfInventory("ArbalestAltfireEnabled",1,"AltFireReal")
		Goto Ready
	AltFireReal:

		SBOW D 0 A_PlayWeaponSound("weapons/superbowfire")
		SBOW D 0 A_PlaySound("weapons/cryobowfire")
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 0, 1, 0,-8)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 0, 0, 0, 8)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 6, 0, 0,-4)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet", 6, 0, 0, 4)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet",-6, 0, 0,-4)
		SBOW D 0 A_FireCustomMissile("ArbalestAmulet",-6, 0, 0, 4)
		SBOW D 0 A_FireCustomMissile("ArbalestCobaltSpreadBullet", 0, 0, 9, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestCobaltSpreadBullet", 0, 0, -9, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestCobaltSpreadBullet",-3, 0, 9, 0)
		SBOW D 0 A_FireCustomMissile("ArbalestCobaltSpreadBullet", 3, 0, -9, 0)
		SBOW DE 3 Bright
		SBOW EFGHI 3
		SBOW AB 6
		SBOW CCCCCC 1 A_ReFire("Fire")
		Goto Ready
	}
}

ACTOR ArbalestAltfireEnabled : Inventory
{
	Inventory.MaxAmount 1
}
Actor ArbalestAmulet
{
  Projectile
  Radius 4
  Height 8
  Speed 32
  Damage (12)
  +THRUSPECIES
  +FORCEXYBILLBOARD
  +PAINLESS
  Species "Player"
  Renderstyle Translucent
  Scale 0.8
  Alpha 0.6
  SeeSound ""
  DeathSound ""
  Decal BulletChip
  States
  {
  Spawn:
	TNT1 A 0
    AMUG A 1 BRIGHT A_SpawnItemEx("ArbalestAmuletTrail",0,0,0,0,0,0,0,0,0)
    Loop
  Crash:
  Death:
  XDeath:
    AMUG AAAAAA 1 BRIGHT A_FadeOut(0.1)
    Stop
  }
}
ACTOR ArbalestAmuletTrail
{
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  RenderStyle Translucent
  Scale 0.8
  Alpha 0.6
  States
  {
  Spawn:
    AMUG AAAAAA 1 Bright A_FadeOut(0.1)
    Stop
  }
}
ACTOR ArbalestCobaltSpreadBullet
{
  Radius 4
  Height 8
  Speed 30
  damage (0)
  Scale 0.7
  Alpha 0.4
  Projectile
  +FORCEXYBILLBOARD
  +FORCERADIUSDMG
  +THRUSPECIES
  Species "Player"
  RenderStyle Add
  SeeSound "touhou/fire"
  DeathSound "touhou/hit"
  States
  {
  Spawn:
    CBL4 A 2 Bright
	CBL4 A 0 Bright A_SpawnItemEx("ArbalestCobaltSpreadBulletTrail",0,0,0,0,2,0,0,0,0)
	CBL4 A 0 Bright A_SpawnItemEx("ArbalestCobaltSpreadBulletTrail",0,0,0,0,-2,0,0,0,0)
    Loop
  Death:
	CBL4 A 0 A_Explode(48, 144, 0)
	CBL4 AAAAAAAAAAAA 0 Bright A_SpawnItemEx("ArbalestCobaltSpreadBulletTrail",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),0,0,0)
    CBL4 AAAAAAAAAA 2 Bright A_FadeOut(0.04)
    Stop
  }
}
ACTOR ArbalestCobaltSpreadBulletTrail
{
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  RenderStyle Add
  Scale 0.6
  Alpha 0.4
  States
  {
  Spawn:
    CBL4 AAAAAAAAAAAA 1 Bright A_FadeOut(0.04)
    Stop
  }
}
ACTOR ArbalestSnakeBullet
{
  Radius 2
  Speed 25
  Height 4
  damage (16)
  Projectile
  +FORCEXYBILLBOARD
  +SEEKERMISSILE
  +THRUSPECIES
  Species "Player"
  RenderStyle Add
  SeeSound "touhou/fire"
  DeathSound "touhou/hit"
  RenderStyle Add
  Scale 0.6
  Alpha 0.4
  States
  {
  Spawn:
    GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 1 Bright A_Weave(2, 0, 1.0, 0.0)
	GBL1 A 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,0,0,0,0,0,0)
	GBL1 A 0 Bright A_SeekerMissile(90, 90, SMF_LOOK|SMF_PRECISE, 255, 32)
	Loop
  Death:
	GBL1 AAAAAA 0 Bright A_SpawnItemEx("ArbalestSnakeBulletTrail",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),0,0,0)
    GBL1 AAAAAAAAAA 1 Bright A_FadeOut
    Stop
  }
}
ACTOR ArbalestSnakeBulletTrail
{
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  RenderStyle Add
  Scale 0.6
  Alpha 0.4
  States
  {
  Spawn:
    GBL1 AAAAAAAAAAAA 1 Bright A_FadeOut(0.04)
    Stop
  }
}