Actor HakureiAmuletRifle : Weapon
{
//$Category "Touhou Weapon Pack"
  Weapon.AmmoType1 "Clip"
  Weapon.AmmoUse1 1
  Weapon.AmmoType2 "RocketAmmo"
  Weapon.AmmoUse2 1
  Weapon.AmmoGive1 40
  Weapon.AmmoGive2 4
  Weapon.KickBack 25
  Weapon.SlotNumber 4
  Weapon.SlotPriority 1
  Inventory.PickupSound "Misc/W_PkUp"
  Inventory.PickupMessage "You got the Hakurei Amulet Rifle!"
  Tag "Hakurei Amulet Rifle"
  +WEAPON.NOAUTOFIRE
  States
  {
  Spawn:
    HAKR C -1
    Loop
  Select:
    HAKR A 1 A_Raise
    Loop
  Deselect:
    HAKR A 1 A_Lower
    Loop
  Ready:
    HAKR A 1 A_WeaponReady
    Loop
  Fire:
    HAKR B 0 A_PlaySound("jpcpplasmarifle/hit",CHAN_WEAPON,1.0,0,ATTN_IDLE)
    HAKR B 0 A_FireCustomMissile("HGHomingAmulet", -5, 0, 9, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHomingAmulet", 5, 0, -9, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHomingAmulet", -10, 0, 15, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHomingAmulet", 10, 0, -15, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 1, -3, 0, 0, 0)
    HAKR B 2 Bright A_Light2
    HAKR A 2 A_Light0
	HAKR A 0 A_ReFire
    Goto Ready
  AltFire:
   HAKR A 1 A_JumpIfInventory("ExplosiveAmuletEnsbled", 1, "RealAltfire")
   Goto Ready
  RealAltfire:
    HAKR B 0 A_PlaySound("jpcpplasmarifle/fire",CHAN_AUTO,1.0,0,ATTN_IDLE)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", -60, 1, 15, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", 60, 0, -15, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", -40, 0, 9, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", 40, 0, -9, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", -20, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGHakureiAmulet", 20, 0, -3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, -3, 0, 0, 0)
    HAKR B 2 Bright A_Light2
    HAKR A 2 A_Light0
    HAKR B 0 A_PlaySound("jpcpplasmarifle/hit",CHAN_WEAPON,1.0,0,ATTN_IDLE)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, -3, 0, 0, 0)
    HAKR B 2 Bright A_Light2
    HAKR A 2 A_Light0
    HAKR B 0 A_PlaySound("jpcpplasmarifle/hit",CHAN_WEAPON,1.0,0,ATTN_IDLE)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, -3, 0, 0, 0)
    HAKR B 2 Bright A_Light2
    HAKR A 2 A_Light0
    HAKR B 0 A_PlaySound("jpcpplasmarifle/hit",CHAN_WEAPON,1.0,0,ATTN_IDLE)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, 3, 0, 0, 0)
    HAKR B 0 A_FireCustomMissile("HGAmulet", 0, 0, -3, 0, 0, 0)
    HAKR B 2 Bright A_Light2
    HAKR A 2 A_Light0
	HAKR A 0 A_ReFire
    Goto Ready
	}
}
ACTOR ExplosiveAmuletEnsbled : Inventory
{
	Inventory.MaxAmount 1
}
Actor HGAmulet
{
  Projectile
  Radius 4
  Height 8
  Speed 50
  Damage (3)
  +PAINLESS
  +THRUSPECIES
  +FORCEXYBILLBOARD
  Species "Player"
  Renderstyle Translucent
  Scale 0.6
  Alpha 0.3
  SeeSound ""
  DeathSound ""
  Decal BulletChip
  DamageType "TouhouHakureiAmulet"
  States
  {
  Spawn:
	TNT1 A 0
	AMUR A 1 BRIGHT A_Jump(128,"Painful")
	Goto LoopState
  Painful:
	AMUR A 1 BRIGHT A_ChangeFlag("PAINLESS",0)
  LoopState:
	AMUR A 1 BRIGHT
    Loop
  Crash:
  Death:
    AMUR AAAAAAAAAA 1 BRIGHT A_FadeOut(0.05)
    Stop
  XDeath:
    AMUR AAAAAAAAAA 1 BRIGHT A_FadeOut(0.05)
    Stop
  }
}
Actor HGHomingAmulet : HGAmulet
{
  Damage (5)
  +PAINLESS
  +SEEKERMISSILE
  DamageType "TouhouHakureiHomingAmulet"
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SeekerMissile(0,0,SMF_LOOK,255,32)
	TNT1 A 0 A_ChangeFlag("SCREENSEEKER",1)
  LoopState:
    AMUB A 1 BRIGHT A_SeekerMissile(2,10)
    Loop
  Crash:
  Death:
    AMUB AAAAAAAAAA 1 BRIGHT A_FadeOut(0.05)
    Stop
  XDeath:
    AMUB AAAAAAAAAA 1 BRIGHT A_FadeOut(0.05)
    Stop
  }
}
Actor HGHakureiAmulet
{
  Projectile
  Radius 6
  Height 12
  Speed 50
  Damage (16)
  +BRIGHT
  +PAINLESS
  +SEEKERMISSILE
  +THRUSPECIES
  +FORCEXYBILLBOARD
  Species "Player"
  Renderstyle Translucent
  Alpha 0.4
  Scale 0.3
  SeeSound ""
  DeathSound ""
  Decal BulletChip
  DamageType "TouhouHakureiHomingAmulet"
  States
  {
  Spawn:
	AMUH A 0
	AMUH AC 1 A_SeekerMissile(0,0,SMF_LOOK,255,32)
	AMUH EG 1 A_ChangeFlag("SCREENSEEKER",1)
  LoopState:
    AMUH I 1 A_SeekerMissile(6,30)
	AMUH J 0 A_SpawnItemEx("HGHakureiAmuletTrailI",0,0,0,0,0,0,0,0,0)
    AMUH K 1 A_SeekerMissile(6,30)
	AMUH L 0 A_SpawnItemEx("HGHakureiAmuletTrailJ",0,0,0,0,0,0,0,0,0)
    AMUH M 1 A_SeekerMissile(6,30)
	AMUH N 0 A_SpawnItemEx("HGHakureiAmuletTrailM",0,0,0,0,0,0,0,0,0)
    AMUH O 1 A_SeekerMissile(6,30)
	AMUH P 0 A_SpawnItemEx("HGHHakureiAmuletTrailO",0,0,0,0,0,0,0,0,0)
    AMUH A 1 A_SeekerMissile(6,30)
	AMUH B 0 A_SpawnItemEx("HGHakureiAmuletTrailA",0,0,0,0,0,0,0,0,0)
    AMUH C 1 A_SeekerMissile(6,30)
	AMUH D 0 A_SpawnItemEx("HGHakureiAmuletTrailC",0,0,0,0,0,0,0,0,0)
	AMUH E 1 A_SeekerMissile(6,30)
	AMUH F 0 A_SpawnItemEx("HGHakureiAmuletTrailE",0,0,0,0,0,0,0,0,0)
    AMUH G 1 A_SeekerMissile(6,30)
	AMUH H 0 A_SpawnItemEx("HGHakureiAmuletTrailG",0,0,0,0,0,0,0,0,0)
    Loop
  Crash:
  Death:
  XDeath:
	AMUH A 0 A_Explode(20,160,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailA",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailB",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailC",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailD",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailE",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailF",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailG",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailH",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailI",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailJ",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailK",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailL",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailM",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailN",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailO",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH A 0 A_SpawnItemEx("HGHakureiAmuletTrailP",frandom(-1,1),frandom(-1,1),frandom(-1,1),frandom(-4,8),frandom(-4,8),frandom(-4,8),0,0,0)
	AMUH AAAAAAAAAA 1 A_FadeOut(0.05)
    Stop
  }
}

ACTOR HGHakureiAmuletTrailA
{
  Radius 8
  Speed 10
  Height 12
  Scale 0.3
  Renderstyle Translucent
  Alpha 0.2
  +NOGRAVITY
  +NOINTERACTION
  +FORCEXYBILLBOARD
  States
  {
  Spawn:
    AMUH A 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailB : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH B 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailC : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH C 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailD : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH D 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailE : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH E 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailF : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH F 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailG : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH G 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailH : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH H 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailI : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH I 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailJ : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH J 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailK : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH K 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailL : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH L 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailM : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH M 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailN : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH N 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailO : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH O 1 Bright A_FadeOut(0.01)
    Loop
  }
}

ACTOR HGHakureiAmuletTrailP : HGHakureiAmuletTrailA
{
  States
  {
  Spawn:
    AMUH P 1 Bright A_FadeOut(0.01)
    Loop
  }
}