// Sprites by Eriance
const int ray_scale_per_talent = 2;

Actor "BFG 9000" : BFG9000
{
	Inventory.PickupSound "weapons/pickup"
	Weapon.SlotNumber 7
	+INVENTORY.UNDROPPABLE
	inventory.pickupmessage "\ccWeapon pickup: \c[Y5]BFG 6000"
	Tag "BFG 6000"
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 2.1
	Weapon.BobRangeY 0.4
	Weapon.BobRangeX 0.7
	Weapon.AmmoGive 0
	States
	{
		Ready:
			PRDC A 1 A_WeaponReady
			Loop
		Deselect:
			TNT1 A 0 A_TakeInventory("P_GreenFire", 1)
			TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_TakeInventory("DnD_UsingEnergy", 1)
			PRDC A 1 A_Lower
			TNT1 A 0 A_Lower
			Loop
		Select:
			TNT1 A 0 A_GiveInventory("P_GreenFire", 1)
			TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_BFG6000)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 100, 1 | (8 << 16))
	    SelectLoop:
			PRDC A 1 A_Raise
			TNT1 A 0 A_Raise
			Loop
		Fire:
			PRDC B 10 A_BFGsound
			PRDC CDE 3 Bright Radius_Quake(2,2,0,1,0)
			TNT1 A 0 A_GunFlash
			PRDC FFFGG 1 Bright Radius_Quake(3,2,0,1,0)
			PRDC GHHHI 1 Bright Radius_Quake(4,2,0,1,0)
			PRDC II 1 Bright Radius_Quake(6,2,0,1,0)
			TNT1 A 0 Radius_Quake(12,4,0,1,0)
			TNT1 A 0 A_GiveInventory("BFGShooter", 1)
			PRDC J 3 Bright
			PRDC KLMN 3 Bright 
			PRDC A 5 A_ReFire
			Goto Ready	
		Flash:
			TNT1 A 5 Bright A_Light1
			TNT1 A 5 Bright A_Light2
			TNT1 A 2 Bright A_Light(3)
			TNT1 A 2 Bright A_Light2
			TNT1 A 2 Bright A_Light1
			Goto LightDone
		Spawn:
			PRDC X -1
			Stop	
	}
}

// Sprites by Eriance
Actor "Upgraded BFG 9000" : BFG9000
{
	Inventory.PickupSound "weapons/pickup"
	inventory.pickupmessage "\ccWeapon pickup: \c[Y5]BFG 32768"
	Weapon.SlotNumber 7
	+INVENTORY.UNDROPPABLE
	Tag "BFG 32768"
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 2.1
	Weapon.BobRangeY 0.4
	Weapon.BobRangeX 0.7
	Weapon.AmmoGive 0
	States
	{
		Ready:
			DBFG A 1 A_WeaponReady
			Loop
		Deselect:
			TNT1 A 0 A_TakeInventory("P_GreenFire", 1)
			TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_TakeInventory("DnD_UsingEnergy", 1)
			DBFG A 1 A_Lower
			TNT1 A 0 A_Lower
			Loop
		Select:
			TNT1 A 0 A_GiveInventory("P_GreenFire", 1)
			TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_BFG32768)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 400)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 384)
	    SelectLoop:
			DBFG A 1 A_Raise
			TNT1 A 0 A_Raise
			Loop
		Fire:
			DBFG B 10 A_PlayWeaponSound("weapons/newbfgfire")
			DBFC ABCDE 2 Bright Radius_Quake(2,2,0,1,0)
			TNT1 A 0 A_GunFlash
			DBFC FFG 1 Bright Radius_Quake(3,2,0,1,0)
			DBFC GHHII 1 Bright Radius_Quake(4,2,0,1,0)
			DBFC JJ 1 Bright Radius_Quake(6,2,0,1,0)
			TNT1 A 0 Radius_Quake(12,4,0,1,0)
			DBFF A 2 Bright A_GiveInventory("BFGShooter2", 1)
			DBFF B 2 Bright 
			DBFG CDA 2 Bright
			DBFG A 20 A_ReFire
			Goto Ready			
		Flash:
			TNT1 A 5 Bright A_Light1
			TNT1 A 5 Bright A_Light2
			TNT1 A 2 Bright A_Light(3)
			TNT1 A 2 Bright A_Light2
			TNT1 A 2 Bright A_Light1
			Goto LightDone
		Spawn:
			DEBF A -1
			Stop	
	}
}

Actor BFGShooter : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBFG
		Stop
		Full:
			TNT1 A 0 A_FireCustomMissile("BfgBall2_FullDMG")
		Stop
	}
}

Actor BFGExtra2 : BFGExtra replaces BFGExtra {
	DamageType "Energy"
	+FOILINVUL
	+MTHRUSPECIES
}

Actor BFGExtra2_FullDMG : BFGExtra2 {
	DamageType "EnergyFull"
	+FOILINVUL
	+MTHRUSPECIES
}

Actor BFGExtraUpgraded : BFGExtra2
{
	Scale 0.425
    States
    {
		Spawn:
			TNT1 A 0
			TNT1 AAAAA 0 A_SpawnDebris("BFGParticles")
			BFOG ABCDEFG 4 Bright
		Stop
    }
}

Actor BFGExtraUpgraded_FullDMG : BFGExtraUpgraded {
	DamageType "EnergyFull"
}

actor BFGParticles : ExplosiveSpark
{
    States
    {
      Spawn:
        BFFX A 1 BRIGHT A_FadeOut(0.01)
        loop
    }
}

Actor BFGShockWave 
{
   Speed 0
   Height 64 
   Radius 32
   Scale 2.25 
   RenderStyle add
   Alpha 0.9
   +DROPOFF 
   +NOBLOCKMAP 
   +NOGRAVITY 
   +CLIENTSIDEONLY
   States 
   { 
   Spawn: 
      R075 ABCDEFFGGHHIIIJJJKKKLLMMNNOP 1 BRIGHT A_FadeOut(0.03)
      Stop 
   } 
} 

Actor BFGBallTrail
{
	Renderstyle Add
	Alpha 0.75
	+NOINTERACTION
	+CLIENTSIDEONLY
	+NOTELEPORT
	
	States
	{
		Spawn:
			BFS1 AABB 2 Bright A_FadeOut(0.15)
		Loop
	}
}

Actor BFGBall2 : BFGBall replaces BFGBall
{
	+DONTREFLECT
	+FOILINVUL
	+MTHRUSPECIES
	+DONTBLAST
	Decal "BFGLightning"
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER))
	DamageType "Energy"
	States {
		Spawn:
			BFS1 AAAABBBB 1 Bright A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			BFE1 AB 8 Bright
			BFE1 C 8 Bright A_BFGSpray("BFGExtra2", 40 + 1 * ACS_NamedExecuteWithResult("DND Get Talent", TALENT_ENERGY) / ray_scale_per_talent)
			BFE1 DEF 8 Bright
		Stop
	}
}

Actor BFGBall2_FullDMG : BfgBall2 {
	DamageType "EnergyFull"
	States {
		Death:
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			BFE1 AB 8 Bright
			BFE1 C 8 Bright A_BFGSpray("BFGExtra2_FullDMG", 40 + 1 * ACS_NamedExecuteWithResult("DND Get Talent", TALENT_ENERGY) / ray_scale_per_talent)
			BFE1 DEF 8 Bright
		Stop
	}
}

Actor BFGBallX : BFGBall2
{
	Decal "BFGLightning"
}

Actor BFGBallUpgraded : BFGBallX
{
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER))
	DamageType "Energy"
	+FORCERADIUSDMG
	Decal "BFGLightning"
	States
	{
		Spawn:
			BFS1 A 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 A 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 A 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 A 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 B 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 B 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 B 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			BFS1 B 1 Bright A_SpawnItem("BFGBallTrail")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
		Loop
	    Death:
			BFE1 A 8 Bright
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 192, 0)
			TNT1 A 0 A_SpawnItem("BFGShockWave")
			BFE1 B 8 Bright
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnDebris("BFGParticles")
			BFE1 C 8 Bright A_BFGSpray("BFGExtraUpgraded", 64 + 1 * ACS_NamedExecuteWithResult("DND Get Talent", TALENT_ENERGY) / ray_scale_per_talent)
			BFE1 DEF 8 Bright
		Stop
	}
}

Actor BFGBallUpgraded_FullDMG : BFGBallUpgraded {
	DamageType "EnergyFull"
	States {
		Death:
			BFE1 A 8 Bright
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 192, 0)
			TNT1 A 0 A_SpawnItem("BFGShockWave")
			BFE1 B 8 Bright
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnDebris("BFGParticles")
			BFE1 C 8 Bright A_BFGSpray("BFGExtraUpgraded_FullDMG", 64 + 1 * ACS_NamedExecuteWithResult("DND Get Talent", TALENT_ENERGY) / ray_scale_per_talent)
			BFE1 DEF 8 Bright
		Stop
	}
}

Actor BFGShooter2 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireCustomMissile("BFGBallUpgraded")
		Stop
		Full:
			TNT1 A 0 A_FireCustomMissile("BFGBallUpgraded_FullDMG")
		Stop
	}
}

Actor Devastator : BFG9000 { // upgraded bfg 9000-2
	Inventory.PickupSound "weapons/pickup"
	inventory.pickupmessage "\ccWeapon pickup: \c[Y5]Devastator 5000"
	Weapon.SlotNumber 7
	Weapon.SelectionOrder 500
	+INVENTORY.UNDROPPABLE
	Tag "Devastator 5000"
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 1.8
	Weapon.BobRangeY 0.3
	Weapon.BobRangeX 0.6
	Weapon.AmmoGive 0
	Weapon.AmmoUse 2
	-NOAUTOFIRE
	States {
		Ready:
			DEVA A 1 A_WeaponReady
			Loop
		Deselect:
			TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
			DEVA A 1 A_Lower
			TNT1 A 0 A_Lower
			Loop
		Select:
			TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_DEVASTATOR)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 8, 4 | (10 << 16))
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 32)
		SelectLoop:
			DEVA A 1 A_Raise
			TNT1 A 0 A_Raise
			Loop
		Fire:
			TNT1 A 0 A_JumpIfInventory("DevastatorTurn", 1, "Fire2")
			DEVA B 2 Bright A_GunFlash
			TNT1 A 0 A_GiveInventory("DevastatorTurn", 1)
			TNT1 A 0 A_PlaySound("weapons/devastatorfire", 5)
			TNT1 A 0 Radius_Quake(4,2,0,1,0)
			TNT1 A 0 A_GiveInventory("DevastatorShooter1", 1)
			DEVA CD 1 Bright
			DEVA EF 2
			DEVA A 3 A_Refire
			Goto Ready	
		Fire2:
			DEVA G 2 Bright A_GunFlash
			TNT1 A 0 A_TakeInventory("DevastatorTurn", 1)
			TNT1 A 0 A_PlaySound("weapons/devastatorfire", 5)
			TNT1 A 0 Radius_Quake(4,2,0,1,0)
			TNT1 A 0 A_GiveInventory("DevastatorShooter2", 1)
			DEVA HI 1 Bright
			DEVA JK 2
			DEVA A 3 A_Refire
			Goto Ready
		Flash:
			TNT1 A 2 Bright A_Light1
			TNT1 A 2 Bright A_Light2
			TNT1 A 1 Bright A_Light(3)
			TNT1 A 2 Bright A_Light2
			TNT1 A 2 Bright A_Light1
			Goto LightDone
		Spawn:
			DEVA Z -1
			Stop	
	}
}

Actor DevastatorTurn : DnD_Boolean { }

Actor DevastatorRocket {
	PROJECTILE
	Speed 32
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER))
	DamageType "Explosives"
	DeathSound "Weapons/DevastatorExpl"
	Height 10
	Radius 5
	Scale 0.5
	+THRUGHOST
	+MTHRUSPECIES
	+FOILINVUL
	+FORCERADIUSDMG
	+NODAMAGETHRUST
	+SEEKERMISSILE
	States {
		Spawn:
			TNT1 A 0 A_SpawnItem("DevastatorSmoke")
			DEVM A 2 Bright A_SeekerMissile(2, 2)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAA 0 A_CustomMissile("DevastatorSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 A 0 A_JumpIFInTargetInventory("Ability_ExplosionMastery", 1, "LessDmg")
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER), 72)
			TNT1 A 1 A_SpawnItem("DevastatorExplosion")
		Stop
		LessDmg:
			TNT1 A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 2, 72)
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 2, 72, 0)
			TNT1 A 1 A_SpawnItem("DevastatorExplosion")
		Stop
	}
}

Actor DevastatorRocket_FullDMG : DevastatorRocket {
	DamageType "ExplosivesFull"
	-THRUGHOST
}

Actor DevastatorShooter1 : DnD_Activator {
	States {
		Use:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 AAAA 0 A_FireCustomMissile("DevastatorRocket", frandom(-3.2, 0.0), 1, -12, 0, 0, frandom(-1.8, 1.8))
		Stop
		Full:
			TNT1 AAAA 0 A_FireCustomMissile("DevastatorRocket_FullDMG", frandom(-3.2, 0.0), 1, -12, 0, 0, frandom(-1.8, 1.8))
		Stop
	}
}

Actor DevastatorShooter2 : DnD_Activator {
	States {
		Use:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 AAAA 0 A_FireCustomMissile("DevastatorRocket", frandom(0.0, 3.2), 1, 12, 0, 0, frandom(-1.8, 1.8))
		Stop
		Full:
			TNT1 AAAA 0 A_FireCustomMissile("DevastatorRocket_FullDMG", frandom(0.0, 3.2), 1, 12, 0, 0, frandom(-1.8, 1.8))
		Stop
	}
}

Actor DevastatorExplosion {
	Renderstyle Add
	Alpha 0.85
	+NOGRAVITY
	+NOINTERACTION
	+CLIENTSIDEONLY
	
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_ChangeVelocity(0, 0, 0.1)
			TNT1 A 0 A_Jump(256, "Var1", "Var2", "Var3", "Var4", "Var5")
		Var1:
			EXP6 ABCDEFGH 1 Bright
		Stop
		Var2:
			EXP7 ABCDEFGH 1 Bright
		Stop
		Var3:
			EXP8 ABCDEFGH 1 Bright
		Stop
		Var4:
			EXP9 ABCDEFGH 1 Bright
		Stop
		Var5:
			EXP0 ABCDEFGH 1 Bright
		Stop
	}
}

ACTOR MFG : BFG9000 {
	Weapon.SlotNumber 7
	Weapon.SelectionOrder 6500
	Inventory.PickupMessage "You got the Destruction Generator!"
	Tag "Destruction Generator"
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 1.6
	Weapon.BobRangeY 0.35
	Weapon.BobRangeX 0.6
	Weapon.AmmoUse 60
	Weapon.AmmoGive 0
	States
	{
	Spawn:
		BFGP A -1
		Stop
	Deselect:
		TNT1 A 0 A_TakeInventory("P_GreenFire", 1)
		TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
		TNT1 A 0 A_TakeInventory("DnD_UsingEnergy", 1)
	DeselectLoop:
		NBFG A 1 A_Lower
		TNT1 A 0 A_Lower
		Loop
	Select:
		TNT1 A 0 A_GiveInventory("P_GreenFire", 1)
		TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
		TNT1 A 0 A_giveInventory("DnD_UsingEnergy", 1)
		TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
		TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_MFG)
		TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 600)
		TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 250)
		TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_2, 32)
		TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_3, 128)
	SelectLoop:
		NBFG A 1 A_Raise
		TNT1 A 0 A_Raise
		Loop
	Ready:
		NBFG A 1 A_WeaponReady
		Loop
	Fire:
		NBFG A 0 A_PlaySound("Weapons/MFGCharge", 5)
		NBFG A 1 BRIGHT Offset(1,34) A_Quake(4, 12, 0, 20, "")
		NBFG A 1 BRIGHT Offset(-1,32)
		NBFG A 1 BRIGHT Offset(-1,34)
		NBFG A 1 BRIGHT Offset(1,32)
		NBFG A 1 BRIGHT Offset(1,34)
		NBFG A 1 BRIGHT Offset(-1,32)
		NBFG A 1 BRIGHT Offset(-1,34)
		NBFG A 1 BRIGHT Offset(1,32)
		NBFG A 1 BRIGHT Offset(1,34)
		NBFG A 1 BRIGHT Offset(-1,32)
		NBFG A 1 BRIGHT Offset(-1,34)
		NBFG A 1 BRIGHT Offset(1,32)
		NBFG B 1 BRIGHT Offset(1,34)
		NBFG B 1 BRIGHT Offset(-1,32)
		NBFG C 1 BRIGHT Offset(-1,34)
		NBFG C 1 BRIGHT Offset(1,32) A_FireCustomMissile("DNBFGBall", 0, 1)
		NBFG D 1 BRIGHT Offset(1,34) A_PlaySound("Weapons/MFGFire",6)
		NBFG D 1 BRIGHT Offset(-1,32) A_Recoil(3.0)
		NBFG E 1 BRIGHT Offset(1,36)
		NBFG E 1 BRIGHT Offset(1,43)
		NBFG F 1 BRIGHT Offset(1,50)
		NBFG G 1 Offset(1,53)
		NBFG H 1 Offset(1,54)
		NBFG A 1 Offset(1,50)
		NBFG A 1 Offset(1,44)
		NBFG A 1 Offset(1,40)
		NBFG A 1 Offset(1,37)
		NBFG A 1 Offset(1,35)
		NBFG A 1 Offset(1,33)
		TNT1 A 0 A_CheckReload
		NBFG A 1 Offset(1, 32) A_Refire
		Goto Ready
	}
}

Actor DNBFGBallExp1 : BaseExplosionDamage {
	DamageType "EnergyFull"
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0
			NBFP A 0 A_Explode(3 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER), 768, 0, 0, 512)
			NBFP A 1 A_Explode(9 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER), 768, 0, 0, 512)
		Stop
	}
}

Actor DNBFGBallExp2 : BaseExplosionDamage {
	DamageType "EnergyFull"
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0
			NBFP A 0 A_Explode(3 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 2, 768, 1, 0, 512)
			NBFP A 1 A_Explode(21 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 2 , 768, 0, 0, 512)
		Stop
	}
}

//Projectile recoded by Pillowblaster.

ACTOR DNBFGBall
{
	PROJECTILE
	Radius 8
	Height 16
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER))
	DamageType "EnergyFull"
	Speed 40
	Decal BFGLightning
	Species "Player"
	+THRUSPECIES
	+FORCERADIUSDMG
	+FOILINVUL
	+NODAMAGETHRUST
	+DONTREFLECT
	+DONTSPLASH
	States {
		Spawn:
			NBFP ABCD 1 BRIGHT A_SpawnItemEx("DNBFGTrailSpawner")
			Loop
		Death:
			NBFP A 0 A_PlaySound("Weapons/MFGExplode", CHAN_AUTO, 1.0)
			TNT1 A 0 A_JumpIFInTargetInventory("Ability_ExplosionMastery", 1, "LessDmg")
			TNT1 A 0 A_SpawnItem("DNBFGBallExp1")
		Continue:
			NBFP A 0 A_SpawnItemEx("DNBFGInitBlast")
			NBFP A 0 A_SpawnItemEx("DNBFGReverseBlast")
			NBFP A 0 A_SpawnItemEx("DNBFGMiniblastSpammer")
			NBFP A 0 A_SpawnItemEx("DNBFGGLDEFThingy")
			NBFP A 0 A_Quake(3,15,0,768,"")
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 60, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 120, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 240, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 A 0 A_CustomMissile("DNBFGBallSmall", 32, 0, 300, CMF_TRACKOWNER | CMF_AIMDIRECTION, 120)
			TNT1 AAAAAA 1 A_SpawnItemEx("DNBFGParticleBlast")
			TNT1 A 9
		Stop
		LessDmg:
			TNT1 A 0 A_SpawnItem("DNBFGBallExp2")
		Goto Continue
	}
}

Actor DNBFGBallSmallExp1 : BaseExplosionDamage {
	DamageType "EnergyFull"
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0
			NBFP A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_3, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 2, 256, 0, 1, 192)
			NBFP A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_3, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER), 256, 1, 1, 192)
		Stop
	}
}

Actor DNBFGBallSMallExp2 : BaseExplosionDamage {
	DamageType "EnergyFull"
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0
			NBFP A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_3, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 4, 256, 1, 1, 192)
			NBFP A 1 A_Explode(5 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER) / 4, 256, 0, 1, 192)
		Stop
	}
}

Actor DNBFGBallSmall : DNBFGBall {
	Damage (ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_EXPLOSIVE, DND_USETARGET | DND_ISSUPER))
	Speed 24
	Scale 0.6
	Gravity 2.0
	-NOGRAVITY
	States {
		Death:
			NBFP A 0 A_PlaySound("Weapons/MFGExplode", CHAN_AUTO, 1.0)
			TNT1 A 0 A_JumpIFInTargetInventory("Ability_ExplosionMastery", 1, "LessDmg")
			TNT1 A 0 A_SpawnItem("DNBFGBallSmallExp1")
		Continue:
			NBFP A 0 A_SpawnItemEx("DNBFGInitBlast")
			NBFP A 0 A_SpawnItemEx("DNBFGReverseBlast2")
			// NBFP A 0 A_SpawnItemEx("DNBFGGLDEFThingy")
			NBFP A 0 A_Quake(2,11,0,192,"")
			TNT1 AAAAAA 1
			TNT1 A 9
		Stop
		LessDmg:
			TNT1 A 0 A_SpawnItem("DNBFGBallSmallExp2")
		Goto Continue
	}
}

//Thingamajib used for GLDEF

ACTOR DNBFGGLDEFThingy
{
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 35
		Stop
	}
}
//Basis for all effects

ACTOR DNBFGBase
{
	+NOINTERACTION
	+CLIENTSIDEONLY
	+DONTSPLASH
	Alpha 0.99
	Renderstyle Add
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"SpriteA","SpriteB","SpriteC","SpriteD")
	SpriteA:
		NBFP A 0 A_Jump(256,"Main")
	SpriteB:
		NBFP B 0 A_Jump(256,"Main")
	SpriteC:
		NBFP C 0 A_Jump(256,"Main")
	SpriteD:
		NBFP D 0 A_Jump(256,"Main")
		Goto Main
	Main:
		TNT1 A 1 // Let's see if this stops the warnings
		Stop
	}
}

//Trail

ACTOR DNBFGTrailSpawner
{
	+NOINTERACTION
	+NOGRAVITY
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		TNT1 A 0
		"####" "#" 0 A_SpawnItemEx("DNBFGTrail")
		"####" "###" 0 A_SpawnItemEx("DNBFGTrailParticle",random(20,-20),random(20,-20),random(10,-20),frandom(5.0,0.5),0,frandom(3.0,0.5),random(225,135), SXF_NOCHECKPOSITION | SXF_CLIENTSIDE,60)
		Stop
	}
}

ACTOR DNBFGTrail : DNBFGBase
{
	States
	{
	Main:
		"####" "#" 0 A_JumpIf(ScaleX<=0,"NULL")
		"####" "#" 0 A_SetScale(ScaleX - FRandom(0.05,0.02))
		"####" "#" 1 A_FadeOut(0.1)
		Loop
	}
}

ACTOR DNBFGTrailParticle : DNBFGBase
{
	Scale 0
	Alpha 0
	States
	{
	Main:
		"####" "#" 0 A_SetScale(ScaleX+frandom(0.1,0.05))
		"####" "#" 0 A_FadeIn(FRandom(0.7,0.5))
	Looplet:
		"####" "#" 0 A_JumpIf(ScaleX<=0,"NULL")
		"####" "#" 0 A_Jump(192,2)
		"####" "#" 0 A_FadeOut(frandom(0.01,0.005))
		"####" "#" 0 A_ChangeVelocity(frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),0)
		"####" "#" 1 A_SetScale(ScaleX - FRandom(0.002,0.001))
		Loop
	}
}

//Impact

ACTOR DNBFGInitBlast : DNBFGBase
{
	States
	{
	Main:
		"####" "#" 0 A_SetScale(ScaleX + FRandom(0.3,0.2))
		"####" "#" 1 A_FadeOut(0.025)
		Loop
	}
}

ACTOR DNBFGReverseBlast : DNBFGBase
{
	Scale 5
	States
	{
	Main:
		"####" "#" 0 A_JumpIf(ScaleX<=0,"NULL")
		"####" "#" 0 A_SetScale(ScaleX - FRandom(0.3,0.2))
		"####" "#" 1 A_FadeOut(0.05)
		Loop
	}
}

ACTOR DNBFGReverseBlast2 : DNBFGReverseBlast
{
	Scale 2.5
}

ACTOR DNBFGParticleBlast : DNBFGBase
{
	Renderstyle Normal
	Var Int User_Count;
	States
	{
	Spawn:
		TNT1 AA 0 A_SetUserVar("User_Count", 12)
	Looplet:
		TNT1 A 0 A_SetUserVar("User_Count", User_Count - 1)
		TNT1 A random(1,2) A_SpawnItemEx("DNBFGParticle",random(35,-35),random(35,-35),random(35,-35),frandom(8.0,-8.0),frandom(8.0,-8.0),frandom(8.0,-8.0),random(0.0,360.0),0,40)
		TNT1 A 0 A_JumpIf(User_Count <= 0,"OvertureEnds")
		Loop
	OvertureEnds:
		TNT1 A 0
		Stop
	}
}

ACTOR DNBFGParticle : DNBFGBase
{
	Scale 0
	Alpha 0
	States
	{
	Main:
		"####" "#" 0 A_SetScale(ScaleX+frandom(0.15,0.05))
		"####" "#" 0 A_FadeIn(FRandom(0.7,0.5))
	Looplet:
		"####" "#" 0 A_JumpIf(ScaleX<=0,"NULL")
		"####" "#" 0 A_Jump(192,2)
		"####" "#" 0 A_FadeOut(frandom(0.005,0.002))
		"####" "#" 0 A_ChangeVelocity(frandom(2.0,-2.0),frandom(2.0,-2.0),frandom(2.0,-2.0),0)
		"####" "#" 1 A_SetScale(ScaleX - FRandom(0.002,0.001))
		Loop
	}
}

ACTOR DNBFGMiniblastSpammer : DNBFGBase
{
	Renderstyle Normal
	Var Int User_Count;
	States
	{
	Spawn:
		TNT1 AA 0 A_SetUserVar("User_Count", 12)
	Looplet:
		TNT1 A 0 A_SetUserVar("User_Count", User_Count - 1)
		TNT1 A 1 A_SpawnItemEx("DNBFGMiniblast",random(35,-35),random(35,-35),random(35,-35))
		TNT1 A 0 A_JumpIf(User_Count <= 0,"OvertureEnds")
		Loop
	OvertureEnds:
		TNT1 A 0
		Stop
	}
}

ACTOR DNBFGMiniblast : DNBFGBase
{
	States
	{
	Main:
		"####" "#" 0 A_SetScale(ScaleX + FRandom(0.25,0.3))
		"####" "#" 1 A_FadeOut(0.1)
		Loop
	}
}

// Drop only, Sprites by Eriance
ACTOR "Rail Gun" : Weapon
{	
   Inventory.PickupSound "weapons/pickup"
   Inventory.PickupMessage "You got the railgun!"
   Obituary "%o was railed by %k."
   Weapon.AmmoType "Cell"
   Weapon.AmmoGive 40
   Weapon.AmmoUse 4
   Weapon.SlotNumber 7
   +INVENTORY.UNDROPPABLE
   +NOAUTOAIM
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 2.1
	Weapon.BobRangeY 0.4
	Weapon.BobRangeX 0.7
   States
   {
   Spawn:
      WRAL A -1
      Loop
   Ready: 
      TNT1 A 0 A_GiveInventory("P_RedFire", 1)
      RAIG A 2 A_WeaponReady
      Loop
   Deselect:
	  TNT1 A 0 A_TakeInventory("P_RedFire", 1)
	  TNT1 A 0 A_TakeInventory("P_PlasmaFire", 1)
	  TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
	  TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
      RAIG A 1 A_Lower
	  TNT1 A 0 A_Lower
      Loop
   Select:
      TNT1 A 0 A_GiveInventory("P_RedFire", 1)
      TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
	  TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
	  TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
	  TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_RAILGUN)
	  TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 92)
	  TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 184)
	  TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_2, 276)
	SelectLoop:
      RAIG A 1 A_Raise
	  TNT1 A 0 A_Raise
      Loop
   Fire:
      RAIG A 0 A_JumpIfInventory("Railgun_Charge",2,"Level3")
      RAIG A 0 A_JumpIfInventory("Railgun_Charge",1,"Level2")
      RAIG T 2 A_PlayWeaponSound("weapons/plasmacharge")
      RAIG BUCVD 2
      RAIG E 1 Bright
	  TNT1 A 0 A_FireCustomMissile("RedRay", 0, 1, 0, 0, 0)
	  RAIG L 1 Bright A_GunFlash
      RAIG M 1 Bright A_PlayWeaponSound("weapons/newrailfire")
	  RAIG N 1 Bright
      RAIG FFO 1 Bright
	  RAIG Z 2
      RLOA ABCDEFEDCBA 1
	  RAIG A 3
      Goto Ready
   Level2:
      TNT1 A 0 A_TakeInventory("P_RedFire", 1)
	  TNT1 A 0 A_TakeInventory("P_PlasmaFire", 1)
      RAI2 E 1 Bright
	  TNT1 A 0 A_FireCustomMissile("YellowRay", 0, 1, 0, 0, 0)
	  TNT1 A 0 A_TakeInventory("Railgun_Charge", 2)
	  RAI2 L 1 Bright A_GunFlash
	  TNT1 A 0 Radius_Quake(6,2,0,1,0)
	  TNT1 A 0 A_SetPitch(pitch - 5.0)
	  TNT1 A 0 A_Recoil(2.5)
	  TNT1 A 0 A_PlayWeaponSound("weapons/newrailfire")
      RAI2 M 1 Bright A_SetPitch(pitch + 0.5)
	  RAI2 N 1 Bright A_SetPitch(pitch + 0.5)
      RAI2 FFO 1 Bright A_SetPitch(pitch + 0.5)
	  RAIG ZZ 1  A_SetPitch(pitch + 0.5)
      RLOA ABC 1 A_SetPitch(pitch + 0.5)
	  RLOA CDEFEDCBA 1
	  RAIG A 3
      Goto Ready
   Level3:
      TNT1 A 0 A_TakeInventory("P_RedFire", 1)
	  TNT1 A 0 A_GiveInventory("P_PlasmaFire", 1)
      RAI3 E 1 Bright
	  TNT1 A 0 A_FireCustomMissile("BlueRay", 0, 1, 0, 0, 0)
	  TNT1 A 0 A_TakeInventory("Railgun_Charge", 2)
	  RAI3 L 1 Bright A_GunFlash
	  TNT1 A 0 Radius_Quake(12,4,0,1,0)
	  TNT1 A 0 A_SetPitch(pitch - 10.0)
	  TNT1 A 0 A_Recoil(5.0)
	  TNT1 A 0 A_PlayWeaponSound("weapons/newrailfire")
      RAI3 M 1 Bright A_SetPitch(pitch + 0.5)
	  RAI3 N 1 Bright A_SetPitch(pitch + 0.5)
      RAI3 FFO 1 Bright A_SetPitch(pitch + 0.5)
	  RAIG ZZ 1 A_SetPitch(pitch + 0.5)
      RLOA ABCDEFEDCBA 1 A_SetPitch(pitch + 0.5)
	  RAIG AA 1 A_SetPitch(pitch + 0.5)
	  RAIG A 1
      Goto Ready
   AltFire:
      TNT1 A 0 A_JumpIfInventory("Railgun_Charge", 2, "NoMore")
	  TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "ContinueCharge")
	  TNT1 A 0 A_JumpIfInventory("Cell", 3, "ContinueCharge")
	  RAIG A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	  Goto Ready
   ContinueCharge:
      TNT1 A 0 A_PlayWeaponSound("weapons/plasmacharge")
      RAIG T 2  A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	  TNT1 A 0 A_JumpIfInventory("ArtemisCheck", 1, "NoTake")
	  TNT1 A 0 A_TakeInventory("Cell", 3)
   NoTake:
	  TNT1 A 0 A_GiveInventory("Railgun_Charge", 1)
	  RAIG BUCVD 2 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	  RAIG A 4 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
      Goto Ready
   NoMore:
	  RAIG A 1 A_WeaponReady(WRF_NOFIRE | WRF_NOSWITCH)
	  Goto Ready
   Flash:
      TNT1 A 4 A_Light1
      TNT1 A 4 A_Light2
      TNT1 A 1 A_Light1
      TNT1 A 0 A_Light0
      stop
   }
}

Actor Railgun_Charge : Inventory {
	inventory.maxamount 2
}

Actor RailDamager_Red
{
	Speed 0
	Height 4
	Radius 4
	Damage (0)
	DamageType "P_Rail"
	Species "ThruDecor"
	+NOBLOCKMAP
	+NOGRAVITY
	-TELESTOMP
	+FORCERADIUSDMG
	+NODAMAGETHRUST
	+THRUSPECIES
	+FOILINVUL
	+DONTREFLECT
	+DONTBLAST
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 36, 0)
		Stop
	}
}

Actor RailDamager_Red_FullDMG : RailDamager_Red {
	DamageType "P_RailFull"
}

Actor RailDamager_Yellow : RailDamager_Red
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 36, 0)
		Stop
	}
}

Actor RailDamager_Yellow_FullDMG : RailDamager_Yellow {
	DamageType "P_RailFull"
}

Actor RailDamager_Blue : RailDamager_Red
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_2, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 36, 0)
		Stop
	}
}

Actor RailDamager_Blue_FullDMG : RailDamager_Blue {
	DamageType "P_RailFull"
}

ACTOR RedRayTrail
{
    +NOBLOCKMAP
    +NOGRAVITY
    +NOTELEPORT
    +CANNOTPUSH
    +NODAMAGETHRUST
	+DONTBLAST
	+DONTREFLECT
    Height 1
	Radius 1
	Alpha 0.85
	Scale 1.75
	Renderstyle Add
	States
	{
		Spawn:
			TNT1 A 0
			NFX3 ABCD 2 Bright
		Stop
	}
}

Actor RedRay : FastProjectile
{
	Speed 1024
	Radius 4
	Height 8
	Damage (0)
	PROJECTILE
	Species "ThruDecor"
//	MissileType "RedRayTrail"
	+FOILINVUL
	+DONTREFLECT
	+MTHRUSPECIES
	+THRUSPECIES
	+NODAMAGETHRUST
	+BLOODLESSIMPACT
	+THRUACTORS
	+SKYEXPLODE
	States
	{
		Spawn:
			TNT1 A 1 // A_SpawnItem("RedRayTrail")
		Loop
		Death:
			TNT1 A 1 
			TNT1 A 0 ACS_ExecuteAlways(984, 0, 0, 40)
			TNT1 A 2
		Stop
	}
}

ACTOR BlueRayTrail : RedRayTrail
{
	States
	{
		Spawn:
			NFX3 EFGH 2 Bright
		Stop
	}
}

Actor BlueRay : RedRay
{
	States
	{
		Spawn:
			TNT1 A 1 // A_SpawnItem("RedRayTrail")
		Loop
		Death:
			TNT1 A 1 
			TNT1 A 0 ACS_ExecuteAlways(984, 0, 2, 40)
			TNT1 A 2
		Stop
	}
}

ACTOR YellowRayTrail : RedRayTrail
{
	States
	{
		Spawn:
			NFX3 IJKL 2 Bright
		Stop
	}
}

Actor YellowRay : RedRay
{
	States
	{
		Spawn:
			TNT1 A 1 // A_SpawnItem("RedRayTrail")
		Loop
		Death:
			TNT1 A 1 
			TNT1 A 0 ACS_ExecuteAlways(984, 0, 1, 40)
			TNT1 A 2
		Stop
	}
}

Actor "Gauss Rifle" : Weapon {
    Inventory.PickupSound "weapons/pickup"
    Inventory.PickupMessage "You got the gauss rifle!"
    Obituary "%o was shot by the super-charged metal of %k."
    Weapon.AmmoType "GaussRound"
    Weapon.AmmoGive 5
    Weapon.AmmoUse 1
    Weapon.SlotNumber 7
    +INVENTORY.UNDROPPABLE
    +NOAUTOAIM
	+NOALERT
	+NOAUTOFIRE
	Weapon.BobStyle InverseSmooth
	Weapon.BobSpeed 1.8
	Weapon.BobRangeY 0.4
	Weapon.BobRangeX 0.7
	
	States {
	   Ready:
	        TNT1 A 0 A_JumpIfInventory("GaussZoom", 3, "Zoom3")
		    TNT1 A 0 A_JumpIfInventory("GaussZoom", 2, "Zoom2")
		    TNT1 A 0 A_JumpIfInventory("GaussZoom", 1, "Zoom1")
		    GAUS A 2 A_WeaponReady
		    Loop
	   Zoom3:
		    GAUS W 2 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   Zoom2:
		    GAUS X 2 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   Zoom1:
		    GAUS Y 2 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   Deselect:
		    TNT1 A 0 A_TakeInventory("P_PlasmaFire", 1)
			TNT1 A 0 A_TakeInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_TakeInventory("DnD_UsingEnergy", 1)
			TNT1 A 0 A_ZoomFactor(1.0)
			TNT1 A 0 A_TakeInventory("GaussZoom", 3)
			TNT1 A 0 A_SetCrossHair(0)
			GAUS A 1 A_Lower
			TNT1 A 0 A_Lower
			Loop
	   Select:
		    TNT1 A 0 A_GiveInventory("P_PlasmaFire", 1)
			TNT1 A 0 A_GiveInventory("H_WeaponSlot7", 1)
			TNT1 A 0 A_GiveInventory("DnD_UsingEnergy", 1)
			TNT1 A 0 A_TakeInventory("DnD_WeaponID", 0x7FFFFFFF)
			TNT1 A 0 A_GiveInventory("DnD_WeaponID", DND_WEAPON_GAUSSRIFLE)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_0, 150)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Weapon Damage Cache", 0, DND_DMGID_1, 96)
	    SelectLoop:
			GAUS A 1 A_Raise
			TNT1 A 0 A_Raise
			Loop
	   Fire:
		    TNT1 A 0 A_PlaySound("Weapons/GaussBegin", 6)
			TNT1 A 0 A_JumpIfInventory("GaussZoom", 3, "FireZoom3")
			TNT1 A 0 A_JumpIfInventory("GaussZoom", 2, "FireZoom2")
			TNT1 A 0 A_JumpIfInventory("GaussZoom", 1, "FireZoom1")
			GAUS BCD 1 Bright
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_GiveInventory("GaussShooter1", 1)
			TNT1 A 0 A_Recoil(1.25)
			TNT1 A 0 A_PlaySound("Weapons/GaussFire")
			GAUS A 1 offset(1, 32)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS A 1 offset(10, 40)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS A 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS A 1 offset(22, 52)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS A 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS A 1 Offset(16, 47)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS A 1 Offset(13, 45)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS A 1 Offset(10, 43)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS A 1 Offset(7, 41)
			GAUS A 1 Offset(4, 37)
			GAUS A 1 Offset(1, 34)
			GAUS A 1 Offset(0, 32)
			GAUS A 5
		  Goto Ready
	   FireZoom1:
			GAUS YYY 1
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_GiveInventory("GaussShooter2", 1)
			TNT1 A 0 A_Recoil(2.5)
			TNT1 A 0 A_PlaySound("Weapons/GaussFire")
			GAUS Y 1 offset(1, 32)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS Y 1 offset(10, 40)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS Y 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS Y 1 offset(22, 52)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS Y 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS Y 1 Offset(16, 47)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS Y 1 Offset(13, 45)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS Y 1 Offset(10, 43)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS Y 1 Offset(7, 41)
			GAUS Y 1 Offset(4, 37)
			GAUS Y 1 Offset(1, 34)
			GAUS Y 1 Offset(0, 32)
			GAUS Y 5 Offset(0, 32)
		  Goto Ready
	   FireZoom2:
			GAUS XXX 1
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_GiveInventory("GaussShooter3", 1)
			TNT1 A 0 A_Recoil(3.75)
			TNT1 A 0 A_PlaySound("Weapons/GaussFire")
			GAUS X 1 offset(1, 32)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS X 1 offset(10, 40)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS X 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS X 1 offset(22, 52)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS X 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS X 1 Offset(16, 47)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS X 1 Offset(13, 45)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS X 1 Offset(10, 43)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS X 1 Offset(7, 41)
			GAUS X 1 Offset(4, 37)
			GAUS X 1 Offset(1, 34)
			GAUS X 1 Offset(0, 32)
			GAUS X 5 Offset(0, 32)
		  Goto Ready
	   FireZoom3:
			GAUS WWW 1
			TNT1 A 0 A_GunFlash
			TNT1 A 0 A_AlertMonsters
			TNT1 A 0 A_GiveInventory("GaussShooter4", 1)
			TNT1 A 0 A_Recoil(5.0)
			TNT1 A 0 A_PlaySound("Weapons/GaussFire")
			GAUS W 1 offset(1, 32)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS W 1 offset(10, 40)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS W 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS W 1 offset(22, 52)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS W 1 offset(19, 49)
			TNT1 A 0 A_SetPitch(pitch - 0.5)
			GAUS W 1 Offset(16, 47)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS W 1 Offset(13, 45)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS W 1 Offset(10, 43)
			TNT1 A 0 A_SetPitch(pitch + 0.5)
			GAUS W 1 Offset(7, 41)
			GAUS W 1 Offset(4, 37)
			GAUS W 1 Offset(1, 34)
			GAUS W 1 Offset(0, 32)
			GAUS W 5 Offset(0, 32)
		  Goto Ready
	   AltFire:
		    TNT1 A 0 A_JumpIfInventory("GaussZoom", 3, "EndZoom")
		    TNT1 A 0 A_JumpIfInventory("GaussZoom", 2, "LastZoom")
			TNT1 A 0 A_JumpIfInventory("GaussZoom", 1, "SecondZoom")
			TNT1 A 0 A_PlayWeaponSound("Weapons/GaussZoom")
			TNT1 A 0 A_SetCrossHair(8)
		    TNT1 A 0 A_GiveInventory("GaussZoom", 1)
			TNT1 A 0 A_ZoomFactor(2.0, ZOOM_NOSCALETURNING)
		    GAUS Y 1 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   SecondZoom:
		    TNT1 A 0 A_PlayWeaponSound("Weapons/GaussZoom")
		    TNT1 A 0 A_GiveInventory("GaussZoom", 1)
			TNT1 A 0 A_ZoomFactor(3.0, ZOOM_NOSCALETURNING)
		    GAUS X 1 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   LastZoom:
			TNT1 A 0 A_PlayWeaponSound("Weapons/GaussZoom")
		    TNT1 A 0 A_GiveInventory("GaussZoom", 1)
			TNT1 A 0 A_ZoomFactor(4.0, ZOOM_NOSCALETURNING)
		    GAUS W 1 A_WeaponReady(WRF_NOBOB)
		    Goto Ready
	   EndZoom:
		    TNT1 A 0 A_PlayWeaponSound("Weapons/GaussZoom")
		    TNT1 A 0 A_TakeInventory("GaussZoom", 3)
			TNT1 A 0 A_ZoomFactor(1.0)
			TNT1 A 0 A_SetCrossHair(0)
		    GAUS A 1
		    Goto Ready
	   Flash:
		    TNT1 A 4 A_Light1
		    TNT1 A 4 A_Light2
		    TNT1 A 1 A_Light1
		    TNT1 A 0 A_Light0
	   stop
	   Spawn:
			GAUS Z -1
	   Stop
	}
}

Actor GaussShooter1 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet1", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
		Full:
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet1_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff_FullDMG", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
	}
}

Actor GaussShooter2 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet2", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(2 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
		Full:
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet2_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(2 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff_FullDMG", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
	}
}

Actor GaussShooter3 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet3", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(3 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
		Full:
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet3_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(3 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff_FullDMG", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
	}
}

Actor GaussShooter4 : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("NetherCheck", 1, "Full")
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet4", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(4 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
		Full:
			TNT1 A 0 A_FireBullets(0.0, 0.0, 1, 0, "GaussBullet4_FullDMG", FBF_NORANDOM)
			TNT1 A 0 A_RailAttack(4 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_ISSUPER), 0, 1, "", "", RGF_SILENT | RGF_FULLBRIGHT | RGF_NOPIERCING, 0, "GaussPuff_FullDMG", 0, 0, 0, 27, 10.0, 1.0, "GaussFX1", 4)
		Stop
	}
}

Actor GaussPuff {
	Renderstyle None
	DamageType "Energy"
	Species "Player"
	+THRUGHOST
	+THRUSPECIES
	+MTHRUSPECIES
}

Actor GaussPuff_FullDMG : GaussPuff {
	-THRUGHOST
	DamageType "EnergyFull"
}

Actor GaussZoom : Inventory {
	inventory.maxamount 3
}

Actor GaussBullet1 : BulletPuff {
	+PUFFONACTORS
	+ALWAYSPUFF
	+NODAMAGETHRUST
	+FORCERADIUSDMG
	+PUFFGETSOWNER
	+MTHRUSPECIES
	DamageType "Energy"
	Vspeed 0
	Alpha 0.6
	RenderStyle Add
	Scale 0.1
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("PlasmaFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_Explode(ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_1, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 128, 1, 1, 64)		
			WMI4 ABCDEFGHIJKLMNOPQ 1 Bright
		Stop
	}
}

Actor GaussBullet1_FullDMG : GaussBullet1 {
	DamageType "EnergyFull"
}

Actor GaussBullet2 : GaussBullet1 {
	Alpha 0.65
	RenderStyle Add
	Scale 0.175
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GaussFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_Explode(2 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 128, 1, 1, 64)		
			WMI4 ABCDEFGHIJKLMNOPQ 1 Bright
		Stop
	}
}

Actor GaussBullet2_FullDMG : GaussBullet2 {
	DamageType "EnergyFull"
}

Actor GaussBullet3 : GaussBullet1 {
	Alpha 0.7
	RenderStyle Add
	Scale 0.25
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GaussFlare2", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAAAAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_Explode(3 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 128, 1, 1, 64)		
			WMI4 ABCDEFGHIJKLMNOPQ 1 Bright
		Stop
	}
}

Actor GaussBullet3_FullDMG : GaussBullet3 {
	DamageType "EnergyFull"
}

Actor GaussBullet4 : GaussBullet1 {
	Alpha 0.75
	RenderStyle Add
	Scale 0.325
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("GaussFlare3", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_Explode(4 * ACS_NamedExecuteWithResult("DND Weapon Damage Retrieve", DND_DMGID_0, TALENT_ENERGY, DND_USETARGET | DND_ISSUPER), 128, 1, 1, 64)		
			WMI4 ABCDEFGHIJKLMNOPQ 1 Bright
		Stop
	}
}

Actor GaussBullet4_FullDMG : GaussBullet4 {
	DamageType "EnergyFull"
}

Actor GaussFX1 {
    +NOBLOCKMAP
    +NOGRAVITY
    +NOTELEPORT
    +CANNOTPUSH
    +NODAMAGETHRUST
	+NOINTERACTION
    +CLIENTSIDEONLY	
	Renderstyle Add
	Alpha 0.625
	Scale 0.4
	PROJECTILE
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Recoil(-12.5)
			TNT1 A 1
			TNT1 A 0 A_Stop
			TNT1 A 0 A_CustomMissile ("GaussParticle", 0, 0, random (0, 360), 2, random (0, 360))
			SP60 ABCDEFGHIJKLMNOP 2 Bright A_FadeOut(0.025)
		stop
	}
}

Actor GaussFX2 : GaussFX1 {
	Alpha 0.75
	Scale 0.5
}

Actor GaussFX3 : GaussFX1 {
	Alpha 0.875
	Scale 0.6
}

Actor GaussFX4 : GaussFX1 {
	Alpha 1.0
	Scale 0.7
}