//------------------------------------------------------------
// Rail pistol ammo class
//------------------------------------------------------------
Actor HadronAmmo : Ammo
{
	+SERVERNETID
	Inventory.MaxAmount 30
}

//------------------------------------------------------------
// Rail pistol Alt-Fire cooldown class
//------------------------------------------------------------
/*Actor HadronAltCD : Ammo
{
	+SERVERNETID 
	Inventory.MaxAmount 210
}*/

//------------------------------------------------------------
// Hadron Pistol weapon class
//------------------------------------------------------------
ACTOR HadronPistol : LSWeaponBase
{
	// Properties
	Tag "Hadron Pistol"
	Weapon.AmmoType1 "HadronAmmo"
	Weapon.AmmoType2 "HadronAmmo"
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 3
	Weapon.SlotNumber 2
	Inventory.Icon "HPSPA0"
	Decal "RailgunMainDecal"

	// States
	States
	{
	Spawn:
		HPSP A 1 bright A_SetAngle(angle + 1.0)
		loop

	Ready:
		HPSR A 1 A_WeaponReady
		loop

	Select:
		TNT1 AA 0 A_Raise
		HPSR A 1 A_Raise
		loop

	Deselect:
		TNT1 A 0 A_ZoomFactor(1.0)
		TNT1 AA 0 A_Lower
		HPSR A 1 A_Lower
		loop
		
	Fire:
		TNT1 A 0 A_GiveInventory("SideAmmoRegenCD", 999)
		TNT1 A 0 A_SpawnItemEX("RedLightShoot")
		TNT1 A 0 A_PlaySound("HadronPistol/Fire", CHAN_WEAPON)
		TNT1 A 0 A_PlaySound("HadronPistol/FireFar", CHAN_7)
		TNT1 A 0 A_RailAttack(10, 5.0, true, "none", "none", RGF_SILENT, 0.0, "HadronHitPuff", 0, 0, 16384.0, 1, 8.0, 0, "HadronRailTrail", 5.0)
		HPSF FGH 1
		TNT1 A 0 A_PlaySound("HadronPistol/Fire", CHAN_WEAPON)
		TNT1 A 0 A_PlaySound("HadronPistol/FireFar", CHAN_7)
		TNT1 A 0 A_RailAttack(10, 5.0, true, "none", "none", RGF_SILENT, 0.0, "HadronHitPuff", 0, 0, 16384.0, 1, 8.0, 0, "HadronRailTrail", 5.0)
		HPSF FGH 1
		TNT1 A 0 A_PlaySound("HadronPistol/Fire", CHAN_WEAPON)
		TNT1 A 0 A_PlaySound("HadronPistol/FireFar", CHAN_7)
		TNT1 A 0 A_RailAttack(10, 5.0, true, "none", "none", RGF_SILENT, 0.0, "HadronHitPuff", 0, 0, 16384.0, 1, 8.0, 0, "HadronRailTrail", 5.0)
		HPSF FGH 1
		HPSR A 12
		goto Ready

	
	AltFire:
		TNT1 A 0 A_JumpIfInventory("SideAltCD", 1, "AltFireFail")
		Goto AltFireSuccess
	
	AltFireFail:
		TNT1 A 0 ACS_NamedExecuteAlways("AltFireFail")
		HPSR A 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSECONDARY)
		Goto Ready

	AltFireSuccess:
		TNT1 A 0 A_GiveInventory("SideAmmoRegenCD", 999)
		TNT1 A 0 A_GiveInventory("SideAltCD", 8)
		TNT1 A 0 A_PlaySound("Items/RailSphere/Charge", CHAN_WEAPON)
		TNT1 A 0 A_PlaySound("Items/RailSphere/ChargeFar", CHAN_7)
		HPSF ABCDABCDABCDEBCDEBCDEBCD 1
		TNT1 A 0 A_SpawnItemEX("RedLightShoot")
		TNT1 A 0 A_PlaySound("Items/RailSphere/Fire", CHAN_WEAPON)
		TNT1 A 0 A_PlaySound("Items/RailSphere/FireFar", CHAN_7)
		TNT1 A 0 A_RailAttack(80, 5.0, true, "none", "none", RGF_SILENT, 0.0, "HadronAltHitPuff", 0, 0, 16384.0, 1, 2.0, 0, "RailTrail", 5.0)
		HPSF E 2 A_RailAttack(0, 5.0, false, "none", "none", RGF_SILENT, 0.0, "None", 0, 0, 16384.0, 1, 256.0, 0, "RailTrail2", 5.0)
		TNT1 AAAA 0 A_SpawnItemEX("RailgunExhaustSpawner", 8.0, 0.0, 32.0, frandom(-1.0, 1.0), frandom(-1.0, 1.0), frandom(-1.0, 1.0))
		HPSF FGH 2
		HPSR A 1
		goto Ready
	}
}


//------------------------------------------------------------
// Hadron Rail trail effect
//------------------------------------------------------------
Actor HadronRailTrail : LSParticleBase
{
	// Properties
	Scale 0.2
	Alpha 0.8
	
	// States
	States
	{
	Spawn:
		RSPK A 3

	Spawn1:
		RSPK A 1 A_FadeOut(0.2)
		loop
	}
}
//------------------------------------------------------------
// Railgun hit puff
//------------------------------------------------------------
Actor HadronHitPuff : RailHitPuff
{
	Obituary "%k > \cgHadron Pistol\c- > %o"
	// States
	States
	{
	Spawn:
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 nodelay A_SpawnItemEx("RailHitFX", 0, 0, 0, frandom(-8.0, 8.0), frandom(-8.0, 8.0), frandom(-8.0, 8.0), 0)//, SXF_NOUNLAGGED|SXF_SKIPOWNER)
		stop

	Crash:
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RailHitFX", 0, 0, 0, frandom(-8.0, 8.0), frandom(-8.0, 8.0), frandom(-8.0, 8.0), 0)//, SXF_NOUNLAGGED|SXF_SKIPOWNER)
		stop

	XDeath:
		TNT1 A 0 A_GiveToTarget("HitSoundSmall", 1)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RailHitFX", 0, 0, 0, frandom(-8.0, 8.0), frandom(-8.0, 8.0), frandom(-8.0, 8.0), 0)//, SXF_NOUNLAGGED|SXF_SKIPOWNER)
		stop
	}
}

//------------------------------------------------------------
// Railgun hit puff
//------------------------------------------------------------
Actor HadronAltHitPuff : HadronHitPuff
{
	Obituary "%k > \cgHadron Pistol (Alt)\c- > %o"
	// States
	States
	{

	XDeath:
		TNT1 A 0 A_GiveToTarget("HitSoundLarge", 1)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RailHitFX", 0, 0, 0, frandom(-8.0, 8.0), frandom(-8.0, 8.0), frandom(-8.0, 8.0), 0)//, SXF_NOUNLAGGED|SXF_SKIPOWNER)
		stop
	}
}