/*
 * eriguns2: hellforge
 * (c) xaser 2017
 * sprites (c) Amuscaria
 */

Actor EriHellforge : HellWeapon Replaces RailGun 5012
{
	Scale 0.8
	Weapon.SelectionOrder 2500
	Weapon.AmmoUse 2
	Weapon.AmmoGive 8
	Weapon.AmmoType "BloodAmmo"
	Weapon.SisterWeapon "EriHellforgePowered"
	Inventory.PickupMessage "$GOTHELLFORGE"
	Tag "$TAG_HELLFORGE"
	+WEAPON.NOAUTOFIRE
	States
	{
	Ready:
		HELG BBBCCCAAA 1 A_WeaponReady
		Loop
	Deselect:
		HELG A 1 A_Lower
		Loop
	Select:
		HELG A 1 A_Raise
		Loop
	Fire:
		HELF A 3 Bright A_GunFlash
		TNT1 A 0 A_Recoil(5.0)
		TNT1 A 0 A_RailAttack(2, 0, 0, "ff ff a0", "ff ff a0", RGF_SILENT | RGF_NOPIERCING, 0, "NULL", 0, 0, 0, 0, 16, 1.0, "HellforgeTrail")
		TNT1 A 0 A_FireBullets(0, 0, 1, 0, "HellforgeBoom", 1, 0)
		HELF B 3 Bright 
	AfterFire:
		HELF CD 3 Bright
		HELF E 3
		HELG CABC 3
		HELG A 0 A_Refire
		Goto Ready
	Flash:
		TNT1 A 0 A_PlaySound("weapons/hellforgefly", CHAN_AUTO)
		TNT1 A 3 Bright A_Light(1)
		TNT1 A 3 Bright A_Light(2)
		TNT1 A 3 Bright A_Light(3)
		TNT1 A 3 Bright A_Light(1)
		Goto LightDone
	Spawn:
		HEEL A -1
		Stop
	}
}


Actor EriHellforgePowered : EriHellforge
{
	Weapon.SisterWeapon "EriHellforge"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HELF A 3 Bright A_GunFlash
		TNT1 A 0 A_Recoil(8.0)
		TNT1 A 0 A_RailAttack(2, 0, 0, "ff ff a0", "ff ff a0", RGF_SILENT | RGF_NOPIERCING, 0, "NULL", 0, 0, 0, 0, 16, 1.0, "HellforgeTrail")
		TNT1 A 0 A_FireBullets(0, 0, 1, 0, "HellforgeNuke", 1, 0)
		HELF B 3 Bright
		Goto AfterFire
	}
}

Actor EriHellforgeBolt : EriHellforge
{
	Weapon.AmmoUse 1
	Weapon.AmmoType "BoltAmmo"
	Weapon.SisterWeapon "EriHellforgeBoltPowered"
}

Actor EriHellforgeBoltPowered : EriHellforgePowered
{
	Weapon.AmmoUse 1
	Weapon.AmmoType "BoltAmmo"
	Weapon.SisterWeapon "EriHellforgeBolt"
	+WEAPON.POWERED_UP
}

Actor EriHellforgeMana : EriHellforge
{
	Weapon.AmmoGive 25
	Weapon.AmmoUse 5
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriHellforgeManaPowered"
}

Actor EriHellforgeManaPowered : EriHellforgePowered
{
	Weapon.AmmoUse 5
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriHellforgeMana"
	+WEAPON.POWERED_UP
}

Actor HellforgeBoom : EriPuff
{
	Decal "Scorch"
	RenderStyle "Add"
	Alpha 1.0
	Scale 0.5
	Obituary "$OB_MPHELLFORGE"
	DamageType "Explosive"
	+FORCERADIUSDMG
	States
	{
	Spawn:
		GEXP A 2 Bright
		TNT1 A 0 A_SetScale(1.0, 1.0)
		TNT1 A 0 A_PlaySound("weapons/hellforgeexplode", CHAN_AUTO)
		TNT1 A 0 A_PlaySound("weapons/hellforgehit"    , CHAN_AUTO)
		TNT1 A 0 A_Explode(150, 128, XF_HURTSOURCE)
		TNT1 A 0 A_Blast(BF_NOIMPACTDAMAGE, 255, 128, 20, "Nothing", "")
		GEXP A 3 Bright
		GEXP BCDEFGHIJ 3 Bright
		Stop
	}
}

Actor HellforgeTrail : EriTrail
{
	//const DISPERSION_SPEED = 0.25;
	RenderStyle "Translucent"
	Scale 0.33
	Alpha 0.33
	States
	{	
	Spawn:
		BSMK ABCDEFG 2
		Stop
	}
}

Actor HellforgeNuke : HellforgeBoom
{
	//const fragCount = 10;
	Obituary "$OB_MPHELLFORGEPOW"
	RenderStyle "Translucent"
	Alpha 0.8
	Scale 0.75
	States
	{
	Spawn:
		GEXP A 2 Bright
		TNT1 A 0 A_SetScale(1.0, 1.0)
		TNT1 A 0 A_PlaySound("weapons/hellforgeexplode", CHAN_AUTO)
		TNT1 A 0 A_PlaySound("weapons/hellforgehit"    , CHAN_AUTO)
		TNT1 A 0 A_Explode(160, 160, XF_HURTSOURCE)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		TNT1 A 0 A_SpawnItemEx("HellforgeFrag", 0, 0, frandom(14, 18), frandom(4, 6), 0, frandom(8, 12), frandom(0, 360), SXF_TRANSFERPOINTERS)
		GEXP A 3 Bright
		GEXP BCDE 3 Bright
		GEXP FGHIJ 3 Bright A_FadeOut(0.1)
		Stop
	}
}

Actor HellforgeFrag
{
	Radius 2
	Height 4
	Projectile
	Damage 20
	DeathSound "weapons/hellforgeball"
	RenderStyle "Translucent"
	DamageType "Explosive"
	Alpha 0.8
	Scale 0.33
	Gravity 0.85
	-NOGRAVITY
	+BOUNCEONCEILINGS
	+BOUNCEONWALLS
	+FORCERADIUSDMG
	States
	{
	Spawn:
		HBAL A 0 NoDelay A_PlaySound("weapons/hellforgeburn", CHAN_VOICE, 1.0, true)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
		TNT1 A 0 A_Jump(16, 16)
	Fly:
		HBAL AABBCCDDEEFFGGHH 1 Bright A_SpawnItemEx("HellforgeFragTrail", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
		Loop
	Death:
		HBXP A 1 Bright A_NoGravity
		HBXP A 1 Bright A_SetScale(1.0, 1.0)
		HBXP B 1 Bright A_Explode(64, 64, false, false, 48)
		HBXP B 1 Bright A_Blast(BF_NOIMPACTDAMAGE, 64, 64, 10, "Nothing", "")
		HBXP B 1 Bright
		HBXP CDEFGHIJ 2 Bright
		Stop
	}
}

Actor HellforgeFragTrail : EriTrail
{
	RenderStyle "Translucent"
	Scale 0.33
	Alpha 0.6
	States
	{	
	Spawn:
		HBAL A 1 Bright A_FadeOut(0.05)
		Loop
	}
}
