// Shock rifle
actor ShockRifle : AOWWeapon 21068 {
    Weapon.BobSpeed 1.75
    Weapon.BobRangeX 0.2
    Weapon.BobRangeY 0.4
    Weapon.BobStyle Alpha
	//$Category Weapons
	Tag "Shock Rifle"
	Obituary "$OB_SHOCKRIFLE"
	AttackSound "voltrifle/fire"
	Decal "voltageScorch"
	Inventory.PickupMessage "You got the shock rifle!"
	Weapon.SelectionOrder 4
	Weapon.KickBack 100
	Weapon.AmmoType "GeneporiumCharge"
	Weapon.AmmoUse 1
	Weapon.AmmoGive 40
	Weapon.PreferredSkin "MarineShockRifle"
	Weapon.UpSound "weapons/up/shockrifle"
	States {
    Select:
		TNT1 A 0 A_JumpIfInventory("IsRed",1,"Select.Red")
		VOLB A 1 offset (-90,100)
		VOLB A 1 offset (-80,89)
		VOLB A 1 offset (-70,79)
		VOLB A 1 offset (-60,70)
		VOLB A 1 offset (-50,62)
		VOLB A 1 offset (-40,55)
		VOLB A 1 offset (-30,49)
		VOLB A 1 offset (-20,44)
		VOLB A 1 offset (-15,40)
		VOLB A 1 offset (-10,37)
		VOLB A 1 offset (-5,34)
		VOLB A 1 offset (0,0)
		TNT1 A 0 A_TakeInventory("SelectAnimation",1)
		goto ready
	Select.Red:
	    VOLR A 1 offset (-90,100)
		VOLR A 1 offset (-80,89)
		VOLR A 1 offset (-70,79)
		VOLR A 1 offset (-60,70)
		VOLR A 1 offset (-50,62)
		VOLR A 1 offset (-40,55)
		VOLR A 1 offset (-30,49)
		VOLR A 1 offset (-20,44)
		VOLR A 1 offset (-15,40)
		VOLR A 1 offset (-10,37)
		VOLR A 1 offset (-5,34)
		VOLR A 1 offset (0,0)
		TNT1 A 0 A_TakeInventory("SelectAnimation",1)
		goto ready
	Deselect:
	    TNT1 A 0 A_TakeInventory("ActionFragGrenade",1)	
        TNT1 A 0 A_TakeInventory("ActionFlashbang",1)
        TNT1 A 0 A_TakeInventory("ActionRemoteC4",1)	
        TNT1 A 0 A_TakeInventory("ActionMeleeAttack",1)
		TNT1 A 0 A_TakeInventory("ActionReload",1)	
		TNT1 A 0 A_JumpIfInventory("IsRed",1,"DeselectRed")
		VOLB A 1 offset (-4,34)
		VOLB A 1 offset (-8,40)
		VOLB A 1 offset (-16,49)
		VOLB A 1 offset (-24,62)
		VOLB A 1 offset (-32,79)
		VOLB A 1 offset (-40,100)
		TNT1 A 0 offset (-1, 33)
		TNT1 A 0 A_Lower
		wait
	DeselectRed:
		VOLR A 1 offset (-4,34)
		VOLR A 1 offset (-8,40)
		VOLR A 1 offset (-16,49)
		VOLR A 1 offset (-24,62)
		VOLR A 1 offset (-32,79)
		VOLR A 1 offset (-40,100)
		TNT1 A 0 offset (-1, 33)
		TNT1 A 0 A_Lower
		wait
	Ready:
	    TNT1 A 0 A_JumpIfInventory("SelectAnimation",1,"Select")
		TNT1 A 0 A_JumpIfInventory("IsRed", 1, "Ready.Red")
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB A 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB B 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB C 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB D 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB C 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLB B 3 A_WeaponReady
		loop
	Ready.Red:
	    TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR A 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR B 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR C 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR D 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR C 3 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("ActionFragGrenade",1,"UseFragGrenade")
		TNT1 A 0 A_JumpIfInventory("ActionFlashbang",1,"UseFlashbang")
		TNT1 A 0 A_JumpIfInventory("ActionRemoteC4",1,"UseRemoteC4")
		TNT1 A 0 A_JumpIfInventory("ActionMeleeAttack",1,"UseMeleeAttack")
		TNT1 A 0 A_TakeInventory("ActionReload",1)
		VOLR B 3 A_WeaponReady
		loop
	Fire:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory("IsRed", 1, "FireRed")
		VOBF ABC 3 bright
		VOBF A 0 bright A_ReFire
		VOBF CBA 3 bright
		goto Ready
	FireRed:
		TNT1 A 0
		VORF ABC 3 bright
		VORF A 0 bright A_ReFire
		VORF CBA 3 bright
		goto Ready
	Hold:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "EndFire")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "EndFire")
		TNT1 A 0 A_JumpIfInventory ("IsRed", 1, "HoldRed")
		// VOBF E 0 bright A_FireBullets (0, 0, 1, 0, "VoltageTrailPuff", 0, 1024)
		VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, random (1, 2), "VoltagePuff", 0, 128)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(129,255))
		VOBF E 0 bright A_FireBullets (1, 1, -1, random (1, 2), "VoltagePuff", 0, 256)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(257,383))
		VOBF E 0 bright A_FireBullets (2, 2, -1, random (1, 2), "VoltagePuff", 0, 384)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(385,511))
		VOBF E 0 bright A_FireBullets (3, 3, -1, random (1, 2), "VoltagePuff", 0, 512)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(513,639))
		VOBF E 0 bright A_FireBullets (2, 2, -1, random (1, 2), "VoltagePuff", 0, 640)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(641,767))
		VOBF E 0 bright A_FireBullets (1.5, 1.5, -1, random (1, 2), "VoltagePuff", 0, 768)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(769,895))
		VOBF E 0 bright A_FireBullets (1, 1, -1, random (1, 2), "VoltagePuff", 0, 896)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(897,1023))
		VOBF E 1 bright A_FireBullets (0.5, 0.5, -1, random (1, 2), "VoltagePuff", 1, 1024)
		VOBF D 2 bright
		VOBF C 0 bright A_ReFire
		Goto EndFire
	HoldRed:
	// VOBF E 0 bright A_FireBullets (0, 0, 1, 0, "VoltageTrailPuff", 0, 1024)
		VORF E 0 bright A_FireBullets (0.5, 0.5, -1, random (1, 2), "VoltagePuffRed", 0, 128)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(129,255))
		VORF E 0 bright A_FireBullets (1, 1, -1, random (1, 2), "VoltagePuffRed", 0, 256)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(257,383))
		VORF E 0 bright A_FireBullets (2, 2, -1, random (1, 2), "VoltagePuffRed", 0, 384)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(385,511))
		VORF E 0 bright A_FireBullets (3, 3, -1, random (1, 2), "VoltagePuffRed", 0, 512)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(513,639))
		VORF E 0 bright A_FireBullets (2, 2, -1, random (1, 2), "VoltagePuffRed", 0, 640)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(641,767))
		VORF E 0 bright A_FireBullets (1.5, 1.5, -1, random (1, 2), "VoltagePuffRed", 0, 768)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(769,895))
		VORF E 0 bright A_FireBullets (1, 1, -1, random (1, 2), "VoltagePuffRed", 0, 896)
		//VOBF E 0 bright A_FireBullets (0.5, 0.5, -1, 0, "VoltagePuff", 0, random(897,1023))
		VORF E 1 bright A_FireBullets (0.5, 0.5, -1, random (1, 2), "VoltagePuffRed", 1, 1024)
		VORF D 2 bright
		VORF C 0 bright A_ReFire
		Goto EndFireRed
	EndFire:
		VOBF CBA 3 bright
		goto Ready
	EndFireRed:
		VORF CBA 3 bright
		goto Ready
    AltFire:
		TNT1 A 0 A_JumpIfInventory ("IsInSpawnRoom", 1, "Ready")
		TNT1 A 0 A_JumpIfInventory ("InMenu", 1, "Ready")
	    TNT1 A 0 A_JumpIfInventory ("IsShockTrooper", 1, "AltFireSkill")
		goto Ready
    AltfireSkill:
		TNT1 A 0 A_JumpIfInventory ("IsRed", 1, "AltFireSkill.Red")
	    TNT1 A 0 A_JumpIfInventory("GeneporiumCharge",50,1)
	    Goto Empty.Blue
        TNT1 A 0 A_PlayWeaponSound("TSLSTRT")
        VOLB EFGHI 2 bright
        VOLB JKJKJKJKJK 2 bright A_PlaySound("TSLAEND")
        VOLB JKJKJKJKJK 1 bright A_PlaySound("TSLAEND")
		VOLB JKJKJ 1 bright A_PlaySound("TSLAEND")
		TNT1 A 0 A_TakeInventory ("GeneporiumCharge", 50)
        TNT1 A 0 A_Playweaponsound("TSLPRJC1")
        TNT1 A 0 A_Recoil(8)
        TNT1 A 0 A_FireCustomMissile("TeslaShot2",0,1,5,3)
        VOLB LMN 2 bright 
        VOLB OPQRSTU 3
        goto ready
    AltFireSkill.Red:
	    TNT1 A 0 A_JumpIfInventory("GeneporiumCharge",50,1)
	    Goto Empty
        TNT1 A 0 A_PlayWeaponSound("TSLSTRT")
        VOLR EFGHI 2 bright
        VOLR JKJKJKJKJK 2 bright A_PlaySound("TSLAEND")
        VOLR JKJKJKJKJK 1 bright A_PlaySound("TSLAEND")
		VOLR JKJKJ 1 bright A_PlaySound("TSLAEND")
		TNT1 A 0 A_TakeInventory ("GeneporiumCharge", 50)
        TNT1 A 0 A_Playweaponsound("TSLPRJC1")
        TNT1 A 0 A_Recoil(8)
        TNT1 A 0 A_FireCustomMissile("TeslaShot2Red",0,1,5,3)
        VOLR LMN 2 bright 
        VOLR OPQRSTU 3
        goto ready
    Empty:
        VOLR D 10 A_PlaySound ("Plasma/FailFire", 6)
		Goto Ready
    Empty.Blue:
        VOLB D 10 A_PlaySound ("Plasma/FailFire", 6)
		Goto Ready
	Spawn:
		VOLF X -1
		stop
	}
}

actor VoltagePuff {
	renderstyle Add
	alpha 0.5
	+PUFFONACTORS
	+ALWAYSPUFF
	+CLIENTSIDEONLY
	+NOINTERACTION
	+FORCEXYBILLBOARD
	DamageType "Energy"
	decal "VoltageScorch"
	Scale 0.3
	states {
	Spawn:
		VOLX A 2 bright
		VOLX A 0 A_SpawnItemEx("VoltageDecay",0,0,0,0,0,0,0,128,192)
		//VOLX A 0 A_SpawnItemEx("VoltagePlasmah",0,0,0,0,random(-4,4)/2.8,random(-4,4)/2.8,random(-4,4)/9.33,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,140)
		VOLX BCDEFEDCB 2 bright
		VOLX A 1 A_FadeOut
		wait
	}
}

actor VoltagePuff2 : VoltagePuff {
	states {
	Spawn:
		VOLX A 2 bright
		goto Super::Spawn+2
	}
}

actor VoltageDecay { //Now with extra hi-res funk!
	+CLIENTSIDEONLY
	+NOINTERACTION
	+FORCEXYBILLBOARD
	renderstyle Add
	alpha 1
	Scale 0.375
	states {
	Spawn:
		TNT1 AA 0 A_PlaySound("voltrifle/decay")
		TNT1 A 0 A_Jump(128,"AltSpawn")
		VOLX AABBCCDDEEFFEECCB 2 bright A_SpawnItemEx("VoltageSpark",0,0,0,random(-3,3)/2,random(-3,3)/2,random(-3,3)/1.25,random(-180,180),128,64)
		VOLX A 1 A_FadeOut
		wait
	AltSpawn:
		VOLX AACCBBDDFFEECCB 2 bright A_SpawnItemEx("VoltageSpark",0,0,0,random(-3,3)/1.85,random(-3,3)/1.85,random(-3,3),random(-180,180),128,64)
		VOLX A 1 A_FadeOut
		wait
	}
}


actor VoltageSpark {
	PROJECTILE
	+CLIENTSIDEONLY
	+NOINTERACTION
	+FORCEXYBILLBOARD
	+NOCLIP +NONETID
	renderstyle Add
	alpha 0.8
	Scale 0.6
	Speed 10
	states {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf (ACS_ExecuteWithResult (909) < 0, "LowFX")
		TNT1 A 0 A_Jump(96,"Die")
		TNT1 A 0 A_Jump(128,"AltSpawn")
		VOLX ABCDEFCB 2 bright
		VOLX A 1 A_FadeOut
		wait
	AltSpawn:
		VOLX ACBDFECB 2 bright
		VOLX A 1 A_FadeOut
		wait
	LowFx:
		TNT1 A 0 A_Jump(128,1)
		goto Spawn+2
	Die:
		VOLX A 0
		stop
	}
}

actor VoltageTrailFX : VoltageSpark {scale 0.25}
//Actor VoltageTrailFXRed : VoltageTrailFX {Translation "192:207=224:247"}

//==============================================================================
actor VoltagePuffRed : VoltagePuff {
	Translation "192:207=224:247"
	
	states {
	Spawn:
		VOLX A 2 bright
		VOLX A 0 A_SpawnItemEx("VoltageDecayRed",0,0,0,0,0,0,0,128,192)
		//VOLX A 0 A_SpawnItemEx("VoltagePlasmah",0,0,0,0,random(-4,4)/2.8,random(-4,4)/2.8,random(-4,4)/9.33,SXF_CLIENTSIDE|SXF_ABSOLUTEMOMENTUM,140)
		VOLX BCDEFEDCB 2 bright
		VOLX A 1 A_FadeOut
		wait
	}
}

actor VoltagePuff2Red : VoltagePuffRed {
Translation "192:207=224:247"
	states {
	Spawn:
		VOLX A 2 bright
		goto Super::Spawn+2
	}
}

actor VoltageDecayRed : VoltageDecay { //Now with extra hi-res funk!
Translation "192:207=224:247"

states {
	Spawn:
		TNT1 AA 0 A_PlaySound("voltrifle/decay")
		TNT1 A 0 A_Jump(128,"AltSpawn")
		VOLX AABBCCDDEEFFEECCB 2 bright A_SpawnItemEx("VoltageSparkRed",0,0,0,random(-3,3)/2,random(-3,3)/2,random(-3,3)/1.25,random(-180,180),128,64)
		VOLX A 1 A_FadeOut
		wait
	AltSpawn:
		VOLX AACCBBDDFFEECCB 2 bright A_SpawnItemEx("VoltageSparkRed",0,0,0,random(-3,3)/1.85,random(-3,3)/1.85,random(-3,3),random(-180,180),128,64)
		VOLX A 1 A_FadeOut
		wait
		}
}


actor VoltageSparkRed : VoltageSpark {
Translation "192:207=224:247"
}

actor VoltageTrailFXRed : VoltageSpark {
scale 0.25
Translation "192:207=224:247"
}
//==============================================================================

/*actor VoltagePlasmah {
	+CLIENTSIDEONLY -ACTIVATEIMPACT
	-ACTIVATEPCROSS +NOBLOCKMAP
	+FORCEXYBILLBOARD +NOGRAVITY
	+NOCLIP +NONETID +DOOMBOUNCE
	renderstyle Add
	alpha 0.73
	Radius 8
	Height 8
	Scale 0.69
	VSpeed 0.33
	states {
	Spawn:
		TNT1 A 0
		E_P2 A 0 A_JumpIf (ACS_ExecuteWithResult(910, 0) == 0,"Software") //If software, go to special reduction state.
		E_P2 ABCDEFGHIJJKKKLLLMMM 2 A_FadeOut(0.04)
		stop
	Death:
		TNT1 A 0
		stop
	Software:
		E_P2 A 0 A_Jump(152,1) //This would be where we'd have a "effect reduction" CVAR. The more, the less the chance of it appearing! :D
		stop
		E_P2 A 0
		Goto Spawn+2
	}
}*/

actor VoltageTrailPuff : BulletPuff {
	+PUFFGETSOWNER
	+ALWAYSPUFF
	+PUFFONACTORS
	-ALLOWPARTICLES
	states {
	Spawn:
		TNT1 A 1
		// TNT1 A 1 ACS_ExecuteAlways (915, 0, 0)
		stop
	}
}

// DECAY CLUSTERS (power generator)

actor VoltageDecayClusterDamage {
	+NOBLOCKMAP
	+NOGRAVITY
	+NOINTERACTION
	damagetype "Energy"
	states {
	Spawn:
		TNT1 AAAAAAAAAAAAAAAAAAA 5 A_Explode (5, 96)
		stop
	}
}

actor VoltageDecayClusterFX {
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	+NOGRAVITY
	+NOINTERACTION
	damagetype "Energy"
	states {
	Spawn:
		TNT1 AAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx ("VoltageDecay", random (-48, 48), random (-48, 48), random (0, 96))
		stop
	}
}

//********************************
actor TeslaShot2 : plasmaball {
	Damage (50)
    SeeSound ""
    DeathSound "TSLPRJC2"
    RenderStyle Add
    alpha 0.5
    height 10
    radius 10
    Decal "GaussScorch"
    +EXTREMEDEATH
	damageType "Energy"
	obituary "$OB_SHOCKRIFLE"
    States {
    Spawn: 
        MRS2 A 1 bright A_SpawnItem("TeslaTail")
	    NULL AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    MRS2 B 1 bright A_SpawnItem("TeslaExtra")
	    NULL AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTail",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
		TNT1 A 0 BRIGHT A_Explode (10, 128, 0)
        Loop
	death:
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtra",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    MRS2 CDEFG 2 bright A_Explode (15, 256, 0)
	    Stop
    }
}

Actor TeslaExtra
{
	Projectile
	Damage 0
	+RIPPER
	+BLOODLESSIMPACT
	+CLIENTSIDEONLY
	Speed 0
	Radius 1
	Height 1
	Scale 0.6
	RenderStyle Add
	States
	{
	Spawn:
		ZAPR ABC 1 Bright
		NULL A 0 A_Jump(160,1)
		Loop
		ZAPR ABC 1 Bright
		ZAPR DE 1 Bright A_FadeOut
		Wait
	Death:
		NULL A 1
		Stop
	}
}

Actor Teslatail
{
	Projectile
	Damage 0
	+RIPPER
	+BLOODLESSIMPACT
	+NOGRAVITY
	+CLIENTSIDEONLY
	Speed 0
	Radius 1
	Height 1
	Scale 0.3
	RenderStyle Add
	States
	{
	Spawn:
		MRS2 AB 1 bright A_FadeOut
		wait
	}
}

Actor TeslaExtraSmall : TeslaExtra { Scale 0.2 }
Actor TeslatailSmall : Teslatail { Scale 0.05 }

actor TeslaShot2Red : TeslaShot2 {
    States {
    Spawn: 
        MRS2 A 1 bright A_SpawnItem("TeslaTailRed")
	    NULL AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtraRed",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    MRS2 B 1 bright A_SpawnItem("TeslaExtraRed")
	    NULL AAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaTailRed",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
		TNT1 A 0 BRIGHT A_Explode (10, 128, 0)
        Loop
	death:
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtraRed",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailRedSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtraRed",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailRedSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslaExtraRed",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TeslatailRedSmall",0,0,0,random(-4,4),random(-4,4),random(-4,4),random(1,360))
	    MRS2 CDEFG 2 bright A_Explode (15, 256, 0)
	    Stop
    }
}

Actor TeslaExtraRed : TeslaExtra { Translation "192:207=224:247" }
Actor TeslatailRed : Teslatail { Translation "192:207=224:247" }
Actor TeslatailRedSmall : TeslatailRed { Scale 0.05 }
//******************************** Translation "192:207=224:247"