Actor FantasyWand : Weapon
{
  Inventory.PickupSound "Misc/W_PkUp"
  Inventory.PickupMessage "The Fantasy Wand is now yours to wield!"
  Obituary "%o was sealed by %k."
  Tag "Fantasy Wand"
  Inventory.RestrictedTo "ReimuClass", "MarisaClass", "SanaeClass"
  Weapon.AmmoType1 "Cell"
  Weapon.AmmoType2 "Cell"
  Weapon.AmmoGive 60
  Weapon.AmmoUse1 5
  Weapon.AmmoUse2 20
  Weapon.SlotNumber 7
  States
  {
  Spawn:
    LTBR A -1
    Loop
  Select:
    LTBR M 1 A_Raise
    Loop
  Deselect:
    LTBR O 0 A_StopSoundEx("SoundSlot7")
    LTBR O 0 A_JumpIfInventory("Cell", 1, 1)
    Goto Deselect2
    LTBR ON 4 Bright
    LTBR M 4
    LTBR M 1 A_Lower
    Goto Deselect+5
  Ready:
    LTBR M 4 A_JumpIfInventory("Cell", 1, 1)
    Goto Ready2
    LTBR N 0 A_PlaySoundEx("Weapons/Lightbringer/Recharge", "SoundSlot6", 0)
    LTBR NO 4 Bright
    LTBR B 0 Bright A_JumpIfInventory("Cell", 1, 1)
    Goto Ready2
    LTBR B 0 Bright A_StopSoundEx("SoundSlot7")
    LTBR BBBBCCCCDDDDEEEE 1 Bright A_WeaponReady
    Goto Ready+4
  Fire:
    LTBR F 0 A_PlayWeaponSound("Weapons/Lightbringer/Fire")
    LTBR F 2 Bright A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
    LTBR G 2 Bright Offset(0,34) A_FireCustomMissile("PlayerFantasySealOrb", 0, 1, 0, 0)
    LTBR H 2 Bright Offset(0,36)
    LTBR I 1 Bright Offset(0,32)
    LTBR BCD 1 Bright
    LTBR A 0 A_Refire
    LTBR I 0 A_JumpIfInventory("Cell", 1, 1)
    Goto NoAmmo
    LTBR I 0
    Goto Ready+4
  AltFire:
    LTBR F 0 A_PlayWeaponSound("Weapons/Lightbringer/Fire")
    LTBR F 5 Bright A_PlaySoundEx("Weapons/SunStaffhit", "SoundSlot7", 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", 0, 1, 0, 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", 60, 0, 0, 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", -60, 0, 0, 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", 120, 0, 0, 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", -120, 0, 0, 0)
    LTBR G 0 Bright A_FireCustomMissile("PlayerFantasySealOrb", 180, 0, 0, 0)
    LTBR G 5 Bright Offset(0,34)
    LTBR H 5 Bright Offset(0,36)
    LTBR I 5 Bright Offset(0,32)
    LTBR BCD 5 Bright
    LTBR A 0 A_Refire
    LTBR I 0 A_JumpIfInventory("Cell", 1, 1)
    Goto NoAmmo
    LTBR I 0
    Goto Ready+4
  NoAmmo:
    LTBR ON 4 Bright
    Goto Ready2
  Deselect2:
    LTBR M 1 A_Lower
    Loop
  Ready2:
    LTBR M 0 A_StopSoundEx("SoundSlot7")
    LTBR M 0 A_JumpIfInventory("Cell", 1, "Ready")
    LTBR M 1 A_WeaponReady
    Loop
  }
}
ACTOR PlayerFantasySealOrb
{
  Radius 8
  Height 16
  Speed 50
  damage (0)
  Projectile
  +FORCEXYBILLBOARD
  +SEEKERMISSILE
  +SCREENSEEKER
  +FORCERADIUSDMG
  +THRUSPECIES
  Species "Player"
  RenderStyle Add
  Scale 0.75
  Alpha 0.75
  SeeSound "touhou/reimu/seal"
  DeathSound "touhou/reimu/seal"
  States
  {
  Spawn:
	FTS1 A 0
	FTS1 A 0 A_Jump(255,"Red","Green","Blue")
  Red:
	FTS1 A 0 Bright A_GiveInventory("Clip",400)
  RedLoop:
	FTS1 A 1 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailRed",0,0,0,0,0,0,0,0,0)
	FTS1 A 1 Bright A_SeekerMissile(3,15,SMF_LOOK|SMF_PRECISE,255,16)
	Loop
  Green:
	FTS2 A 0 Bright A_GiveInventory("Shell",100)
  GreenLoop:
	FTS2 A 1 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailGreen",0,0,0,0,0,0,0,0,0)
	FTS2 A 1 Bright A_SeekerMissile(3,15,SMF_LOOK|SMF_PRECISE,255,16)
	Loop
  Blue:
	FTS3 A 0 Bright A_GiveInventory("RocketAmmo",100)
  BlueLoop:
	FTS3 A 1 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailBlue",0,0,0,0,0,0,0,0,0)
	FTS3 A 1 Bright A_SeekerMissile(3,15,SMF_LOOK|SMF_PRECISE,255,16)
	Loop
  Death:
	FTS1 A 0 Bright A_Explode(80,160,1)
	FTS1 A 0 Bright A_Explode(80,160,0)
    FTS1 A 0 Bright A_JumpIfInventory("Clip",1,"RedDeath")
    FTS1 A 0 Bright A_JumpIfInventory("Shell",1,"GreenDeath")
    FTS1 A 0 Bright A_JumpIfInventory("RocketAmmo",1,"BlueDeath")
    Stop
  RedDeath:
	FTS1 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailRed",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),random(0,360),0,0)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS1 B 1 Bright A_FadeOut(0.05)
	FTS1 B 1 Bright A_SetScale(ScaleX+0.05)
	Stop
  GreenDeath:
	FTS2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailGreen",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-2,10),frandom(-2,10),frandom(-2,10),random(0,360),0,0)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS2 B 1 Bright A_FadeOut(0.05)
	FTS2 B 1 Bright A_SetScale(ScaleX+0.05)
	Stop
  BlueDeath:
	FTS3 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 Bright A_SpawnItemEx("PlayerFantasySealOrbTrailBlue",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-2,12),frandom(-2,10),frandom(-2,10),random(0,360),0,0)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	FTS3 B 1 Bright A_FadeOut(0.05)
	FTS3 B 1 Bright A_SetScale(ScaleX+0.05)
	Stop
  }
}
ACTOR PlayerFantasySealOrbTrailRed
{
  Radius 2
  Height 4
  Renderstyle Add
  Alpha 0.5
  Scale 0.75
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    FTS1 A 1 Bright A_FadeOut(0.05)
	FTS1 A 1 Bright A_SetScale(ScaleX-0.05)
    Loop
  }
}
ACTOR PlayerFantasySealOrbTrailGreen
{
  Radius 2
  Height 4
  Renderstyle Add
  Alpha 0.5
  Scale 0.75
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    FTS2 A 1 Bright A_FadeOut(0.05)
	FTS2 A 1 Bright A_SetScale(ScaleX-0.05)
    Loop
  }
}
ACTOR PlayerFantasySealOrbTrailBlue
{
  Radius 2
  Height 4
  Renderstyle Add
  Alpha 0.5
  Scale 0.75
  +NOGRAVITY
  +NOINTERACTION
  +CLIENTSIDEONLY
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    FTS3 A 1 Bright A_FadeOut(0.05)
	FTS3 A 1 Bright A_SetScale(ScaleX-0.05)
    Loop
  }
}