// --------------------------------------------------------------------------
//
// Nailgun
//
// --------------------------------------------------------------------------

ACTOR EriNailgun : HellPlayerWeapon 5011
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 700
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 2
	Weapon.AmmoGive 20
	Weapon.AmmoType1 "NailAmmo"
	Weapon.AmmoType2 "NailAmmo"
	Weapon.SisterWeapon "EriNailgunPowered"
	Inventory.PickupMessage "$GOTNAILGUN"
	Tag "$TAG_NAILGUN"
	States
	{
	Ready:
		HNAG A 1 A_WeaponReady
		Loop
	Deselect:
		HNAG A 1 A_Lower
		Loop
	Select:
		HNAG A 1 A_Raise
		Loop
	Fire:
		HNAF A 0 Bright A_GunFlash
		HNAF A 0 Bright A_CheckForReload(2, "Fire2")
		HNAF A 0 Bright A_ResetReloadCounter
		HNAF A 0 Bright A_PlaySound("weapons/nailbone1", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailgunextra", CHAN_VOICE, 0.5)
		HNAF A 2 Bright A_FireCustomMissile("Nail", 0, 1, -4)
		HNAF B 2 Bright
		HNAG A 2
		Goto Ready
	Fire2:
		HNAF A 0 Bright A_PlaySound("weapons/nailbone2", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailgunextra", CHAN_VOICE, 0.5)
		HNAF C 2 Bright A_FireCustomMissile("Nail", 0, 1, 4)
		HNAF D 2 Bright
		HNAG A 2
		Goto Ready
	AltFire:
      HNAF F 0 Bright A_GunFlash
	  HNAF E 2 Bright
	  HNAF F 0 Bright A_PlayWeaponSound("weapons/nailgn")
		HNAF A 0 Bright A_PlaySound("weapons/nailbone3", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailgunextra", CHAN_VOICE, 1.0)
	  HNAF F 0 Bright A_FireCustomMissile("NailShot3",0,0,9,0)
      HNAF F 2 Bright A_FireCustomMissile("NailShot3",0,1,-9,0)
      HNAG B 1 Bright 
	  HNAG E 1
	  HNAG A 1
	  Goto Ready  
	Flash:
		TNT1 A 2 Bright A_Light2
		TNT1 A 2 Bright A_Light1
		Goto LightDone
	Spawn:
		HENG A -1
		Stop
	}
}
ACTOR EriNailgunPowered : EriNailgun
{
	Weapon.AmmoUse 4
	Weapon.AmmoGive 0
	Weapon.SisterWeapon "EriNailgun"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HNAF A 0 Bright A_PlaySound("weapons/nailbone3", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailgunextra", CHAN_VOICE, 1.0)
		HNAF E 0 Bright A_FireCustomMissile("SuperNail", 0, 0, -3)
		HNAF E 2 Bright A_FireCustomMissile("SuperNail", 0, 1,  3)
		HNAF F 2 Bright 
		HNAG EAA 2
		Goto Ready
	AltFire:
	  HNAF F 0 Bright A_GunFlash
	  HNAF E 2 Bright
		HNAF A 0 Bright A_PlaySound("weapons/nailbone2", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailbone3", CHAN_WEAPON)
		HNAF A 0 Bright A_PlaySound("weapons/nailgunextra", CHAN_VOICE, 1.0)
	  HNAF F 0 Bright A_PlayWeaponSound("weapons/nailgn")
	  HNAF F 0 Bright A_FireCustomMissile("NailShot4",0,0,9,0)
	  HNAF F 2 Bright A_FireCustomMissile("NailShot4",0,1,-9,0)
	  HNAG B 1 Bright 
	  HNAG E 1
	  HNAF A 1
	  Goto Ready   
	}
}

ACTOR Nail : FastProjectile
{
	Radius 4
	Height 8
	Speed 40
	Damage 4
	Projectile
	+THRUACTORS
	+NODAMAGETHRUST
	+BLOODSPLATTER
	Scale 0.75
	MissileType "NailTrail"
	MissileHeight 8
	SeeSound "weapons/nailgunfire"
	Obituary "$OB_MPNAILGUN"
	Decal "BulletChip"
	var int user_xvel;
	var int user_yvel;
	var int user_zvel;
	States
	{
	Spawn:
		NAIL A 0
		NAIL A 0 A_SetUserVar("user_xvel", velx)
		NAIL A 0 A_SetUserVar("user_yvel", vely)
		NAIL A 0 A_SetUserVar("user_zvel", velz)
		NAIL A 0 A_Jump(256, "Fly")
	Fly:
		NAIL A -1 A_ChangeFlag("THRUACTORS",0)
		Stop
	Death:
	Crash:
		PUFF A 3 A_PlaySound("weapons/nailgunhit")
		PUFF BCD 3
		Stop
	XDeath:
		TNT1 A 0 A_PlaySound("weapons/nailgunblood")
	SpawnSubNail:
		TNT1 A 1 A_SpawnItemEx("SubNail",0,0,0,user_xvel,user_yvel,user_zvel,angle,SXF_ABSOLUTEANGLE | SXF_ABSOLUTEMOMENTUM | SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
		Stop
	}
}
ACTOR QNail : Nail
{
	SeeSound ""
}
ACTOR SubNail : Nail
{
	SeeSound ""
	States
	{
	Fly:
		NAIL A 1 
		NAIL A 0 A_ChangeFlag("THRUACTORS",0)
		NAIL AAAAAA 1 A_SpawnItemEx("MiniBlood", frandom(-0.1,0.1), 0, frandom(-0.1,0.1))
		NAIL A -1
		Stop
	XDeath:
		TNT1 A 0 A_PlaySound("weapons/nailgunblood")
		Stop
	}
}
ACTOR MiniBlood : Blood
{
	Scale 0.5
	Gravity 0.5
}

ACTOR SuperNail : Nail
{
	+RIPPER
	-THRUACTORS
	Damage (2)
	Obituary "$OB_MPNAILGUNPOW"
	MissileType "NailTrailHot"
	DamageType "Ripper"
	SeeSound ""
	States
	{
	Spawn:
	Fly:
		NAIL B -1 BRIGHT
		Stop
	Death:
	Crash:
	XDeath:
		PUFF A 3 A_PlaySound("weapons/nailgunhit")
		PUFF BCD 3
		Stop
	}
}

ACTOR NailTrail : EriTrail
{ 
	Alpha 0.25
	Scale 0.5
	RenderStyle Add
	States
	{
	Spawn:
		NTRL IACEG 1 BRIGHT
		Stop
	}
}
ACTOR NailTrailHot : NailTrail
{
	Alpha 0.5
	Scale 0.075
	VSpeed 0.5
	States
	{
	Spawn:
		HFLM ZABCIJKLM 1 BRIGHT
		Stop
	}
}


ACTOR NailShot1
{
   Radius 3
   Height 6
   Speed 70
   Damage 4
   PROJECTILE
   Damagetype ripper
   +RIPPER
   +NOBOSSRIP
   +THRUGHOST
   +FORCEXYBILLBOARD
   DeathSound "weapons/nailhi"
   States
   {
   Spawn:
      NAIL A 1
      loop
   Death:
      NAIL D 0 A_SetTranslucent(1.0,1)
	  NAIL DEFGHI 2 Bright A_Fadeout(0.1)
	  stop
   }
}

ACTOR NailShot2 : NailShot1
{ 
   Damage 6   
   States
   {
   Spawn:
      NAIL C 1 Bright
      loop
   Death:
      WSMK A 2 Bright A_SetTranslucent(1.0,0)
	  WSMK A 0 Bright A_SpawnItemEX("NailFrag",0,0,0,40,0,Frandom(-30,30),Frandom(0,359),0,0)
	  WSMK A 0 Bright A_SpawnItemEX("NailFrag",0,0,0,40,0,Frandom(-30,30),Frandom(0,359),0,0) 
	  WSMK A 0 Bright A_SpawnItemEX("NailFrag",0,0,0,40,0,Frandom(-30,30),Frandom(0,359),0,0)
	  WSMK BCDEFG 2 Bright A_Fadeout(0.125)
      stop
   }
}

ACTOR NailShot3 : NailShot1
{
   Damage 4
   Damagetype normal
   DeathSound "weapons/fireex5"
   -RIPPER
   -NOBOSSRIP
   States
   {
   Spawn:
      NAIL B 1 Bright
      loop
   Death:
      HIB2 E 0 A_SetTranslucent(1.0,1)
	  HIB2 E 2 A_Explode(12,32,0)
	  HIB2 FGHIJ 2 Bright
	  stop
   }
}

ACTOR NailShot4 : NailShot3
{
   Damage 6
   States
   {
   Death:
      HIB2 E 0 A_SetTranslucent(1.0,1)
	  HIB2 E 2 A_Explode(24,48,0)
	  HIB2 FGHIJ 2 Bright
	  stop
   }
}

ACTOR NailFrag : NailShot1
{
   Radius 2
   Height 4 
   Damage 1
   BounceType "Hexen"
   BounceFactor 1.0
   WallBounceFactor 1.0
   BounceCount 2
   DeathSound "none"
   BounceSound "weapons/rico"
   States
   {
   Spawn:
      NFRG ABCDE 6 bright
      stop
   Death:
      NFRG FGH 2 bright
      stop
   Xdeath:
      stop
   }
}