// Gauss Rifle
actor GaussRifle : AOWWeapon 21049 {
	Inventory.PickupMessage "You got the gauss rifle!"
	Obituary "$OB_GAUSS"
//	AttackSound "gauss/fire"
	Weapon.Selectionorder 2
	Weapon.Kickback 50
	Weapon.AmmoType "GaussRifleAmmo"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 4
	Weapon.AmmoType2 "GaussRifleAmmo"
	Weapon.AmmoUse2 2
	Weapon.PreferredSkin "MarineRailgun"
	Decal "GaussScorch"
	Tag "Gauss Rifle"
	States {
	Spawn:
		GAUS X -1
		stop
	Ready:
		GAUS A 0 A_JumpIfInventory ("IsBlue", 1, "Ready.Blue")
		GAUS A 28 A_WeaponReady
		GAUS ABCDEFGH 1 bright A_WeaponReady
		goto Ready+1
	Ready.Blue:
		GAUB A 28 A_WeaponReady
		GAUB ABCDEFGH 1 bright A_WeaponReady
		loop
	Deselect:
		GAUS A 0 A_JumpIfInventory ("IsBlue", 1, "Deselect.Blue")
		GAUS A 1 A_Lower
		wait
	Deselect.Blue:
		GAUB A 1 A_Lower
		wait
	Select:
		GAUS A 0 A_JumpIfInventory ("IsBlue", 1, "Select.Blue")
		GAUS A 1 A_Raise
		wait
	Select.Blue:
		GAUB A 1 A_Raise
		wait
	Fire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		GAUS I 0 A_JumpIfInventory ("IsBlue", 1, "FireBlue")
		GAUS I 0 A_PlaySound("Gauss/Select",CHAN_AUTO)
		GAUS I 1
		GAUS IJKL 1 bright
		GAUS MN 1 bright A_Light1
		GAUS L 0 bright A_PlaySound("Gauss/Background",CHAN_AUTO,0.45)
		GAUS L 0 bright A_PlaySound("Gauss/Fire",CHAN_WEAPON,0.8)
		GAUS L 0 bright A_FireBullets (0, 0, 1, 0, "GaussPuff", 0)
		GAUS L 0 bright A_RailAttack (50, 3, 1, "FF 00 00", "99 00 00", 1, 0, "GaussPuff")
		GAUS L 0 Radius_Quake(2,random(9,13),0,1,0)
		GAUS N 1 bright offset(0, 33) A_Light1
		GAUS O 0 bright offset(1, 34) A_Light2
		GAUS O 1 bright A_ZoomFactor(0.989)
		GAUS O 0 bright offset(2, 36) A_Light2
		GAUS O 1 bright A_ZoomFactor(0.979)
		GAUS O 1 bright offset(4, 40) A_Light2
		GAUS A 0 A_Light0
		GAUS A 0 A_CheckReload
		GAUS A 1 offset(5, 41) A_ZoomFactor(0.972)
		GAUS A 1 offset(4, 40) A_ZoomFactor(0.978)
		GAUS A 1 offset(3, 38) A_ZoomFactor(0.98)
		GAUS A 1 offset(2, 36) A_ZoomFactor(0.985)
		GAUS A 1 offset(1, 34) A_ZoomFactor(0.991)
		GAUS A 1 offset(0, 33) A_ZoomFactor(1)
		GAUS AAAAAA 1
		GAUS BBCCDDEEFGGH 1 bright A_FireCustomMissile ("OverheatSmokeSpawner", 0, false, 8)
		GAUS A 3
		goto Ready
	FireBlue:
		GAUB I 0 A_PlaySound("Gauss/Select",CHAN_AUTO)
		GAUB I 1
		GAUB IJKL 1 bright
		GAUB MN 1 bright A_Light1
		GAUB L 0 bright A_PlaySound("Gauss/Background",CHAN_AUTO,0.45)
		GAUB L 0 bright A_PlaySound("Gauss/Fire",CHAN_WEAPON,0.8)
		GAUB L 0 bright A_FireBullets (0, 0, 1, 0, "GaussPuffBlue",0)
		GAUB L 0 bright A_RailAttack (50, 3, 1, "22 22 FF"," 00 30 99", 1, 0, "GaussPuffBlue")
		GAUB L 0 Radius_Quake(2,random(9,13),0,1,0)
		GAUB N 1 bright offset(0, 33) A_Light1
		GAUB O 0 bright offset(1, 34) A_Light2
		GAUB O 1 bright A_ZoomFactor(0.989)
		GAUB O 0 bright offset(2, 36) A_Light2
		GAUB O 1 bright A_ZoomFactor(0.979)
		GAUB O 1 bright offset(4, 40) A_Light2
		GAUB A 0 A_Light0
		GAUB A 0 A_CheckReload
		GAUB A 1 offset(5, 41) A_ZoomFactor(0.972)
		GAUB A 1 offset(4, 40) A_ZoomFactor(0.978)
		GAUB A 1 offset(3, 38) A_ZoomFactor(0.98)
		GAUB A 1 offset(2, 36) A_ZoomFactor(0.985)
		GAUB A 1 offset(1, 34) A_ZoomFactor(0.991)
		GAUB A 1 offset(0, 33) A_ZoomFactor(1)
		GAUB AAAAAA 1
		GAUB BBCCDDEEFGGH 1 bright A_FireCustomMissile ("OverheatSmokeSpawner", 0, false, 8)
		GAUB A 3
		goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		GAUS I 0 A_PlayWeaponSound ("Gauss/Select")
		GAUS I 0 A_JumpIfInventory ("IsBlue", 1, "AltFire.Blue")
		GAUS I 0 bright A_PlaySound("Gauss/Select",CHAN_AUTO)
		GAUS IIJKKLMN 1 bright
		GAUS N 1 bright A_Light1
		GAUS L 0 bright A_PlaySound("Gauss/Background",CHAN_AUTO,0.8)
		GAUS L 0 bright A_PlaySound("Gauss/Fire",CHAN_WEAPON,0.75)
		GAUS M 0 bright A_FireBullets (0, 0, 1, 0, "AntiArmorPuff", 0)
		GAUS M 0 bright A_RailAttack (100, 3, 1, "AA 00 00", "FF FF FF", 1, 0, "AntiArmorPuff")
		GAUS M 0 bright Radius_Quake(3,random(9,13),0,1,0)
		GAUS O 1 bright offset(1, 34) A_Light1
		GAUS O 0 bright offset(2, 36) A_Light2
		GAUS O 1 bright A_ZoomFactor(0.98)
		GAUS O 0 bright offset(4, 40) A_Light2
		GAUS O 1 bright A_ZoomFactor(0.975)
		GAUS O 0 bright offset(8, 48) A_Light2
		GAUS O 1 bright A_ZoomFactor(0.972)
		GAUS A 0 A_Light0
		GAUS A 0 A_CheckReload
		GAUS A 1 offset(10, 52) A_ZoomFactor(0.97)
		GAUS A 1 offset(8, 48) A_ZoomFactor(0.976)
		GAUS A 1 offset(6, 44) A_ZoomFactor(0.984)
		GAUS A 1 offset(4, 40) A_ZoomFactor(0.99)
		GAUS A 1 offset(2, 36) A_ZoomFactor(0.995)
		GAUS A 1 offset(0, 33) A_ZoomFactor(1)
		GAUS A 8
		GAUS BCDEFGH 2 bright A_FireCustomMissile ("OverheatSmokeSpawner", 0, false, 8)
		GAUS AAA 2
		goto Ready
	AltFire.Blue:
		GAUB I 0 bright A_PlaySound("Gauss/Select",CHAN_AUTO)
		GAUB IIJKKLMN 1 bright
		GAUB N 1 bright A_Light1
		GAUB L 0 bright A_PlaySound("Gauss/Background",CHAN_AUTO,0.8)
		GAUB L 0 bright A_PlaySound("Gauss/Fire",CHAN_WEAPON,0.75)
		GAUB M 0 bright A_FireBullets (0, 0, 1, 0, "AntiArmorPuff", 0)
		GAUB M 0 bright A_RailAttack (100, 3, 1, "11 11 88", white, 1, 0, "AntiArmorPuff")
		GAUB M 0 bright Radius_Quake(3,random(9,13),0,1,0)
		GAUB O 1 bright offset(1, 34) A_Light1
		GAUB O 0 bright offset(2, 36) A_Light2
		GAUB O 1 bright A_ZoomFactor(0.98)
		GAUB O 0 bright offset(4, 40) A_Light2
		GAUB O 1 bright A_ZoomFactor(0.975)
		GAUB O 0 bright offset(8, 48) A_Light2
		GAUB O 1 bright A_ZoomFactor(0.972)
		GAUB A 0 A_Light0
		GAUB A 0 A_CheckReload
		GAUB A 1 offset(10, 52) A_ZoomFactor(0.97)
		GAUB A 1 offset(8, 48) A_ZoomFactor(0.976)
		GAUB A 1 offset(6, 44) A_ZoomFactor(0.984)
		GAUB A 1 offset(4, 40) A_ZoomFactor(0.99)
		GAUB A 1 offset(2, 36) A_ZoomFactor(0.995)
		GAUB A 1 offset(0, 33) A_ZoomFactor(1)
		GAUB A 8
		GAUB BCDEFGH 2 bright A_FireCustomMissile ("OverheatSmokeSpawner", 0, false, 8)
		GAUB AAA 2
		goto Ready
	}
}

actor GaussPuff : HHBulletPuff {
	-ALLOWPARTICLES
	+PUFFONACTORS
	DamageType "Energy"
	translation "168:191=192:213", "112:127=192:213"
	renderstyle Add
	alpha 0.75
	vspeed 0
	states {
	Spawn:
	Melee:
	Crash:
		VOLX ABCDEFEDCBA 3 BRIGHT
		stop
	}  
}

actor GaussPuffBlue : GaussPuff {
	translation ""
}

actor AntiArmorPuff : ExplosionPuff {damagetype "AntiArmor"}