ACTOR "Shock Cannon" : Weapon 31011
{
    //$Category DN3D Weapons
	Weapon.SelectionOrder 32
    Weapon.BobStyle Normal
    Weapon.BobSpeed 1.4
    Weapon.BobRangeX 0.85
    Weapon.BobRangeY 0.6
	Weapon.AmmoUse 1
    Weapon.AmmoGive 10
    Weapon.AmmoType "Shock Ammo"
    Inventory.PickupMessage "\cnShock Cannon!"
    Inventory.PickupSound "DukeNukem/PickWeapon"
    Weapon.KickBack 0
    Scale 0.85
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOALERT
    States
    {
	Spawn:
		TNT1 A 0		
		TNT1 A 1 A_Jump(256,"Spawn1","Spawn2")
		Stop
	Spawn1:	
        SHRA A -1
        Stop
	Spawn2:	
        SHRA B -1
        Stop
    Ready:
	    SHRI A 1 A_WeaponReady
        SHRI A 0 A_JumpIfInventory("Waiting",15,"Knuckles")
		SHRI AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
		SHRI A 0 A_GiveInventory("Waiting",1)
        Loop
	Knuckles:
        SHRI AAAAA 1 A_Lower
        SHRI A 0 A_Lower
		KNUK A 0 A_PlaySound("DukeNukem/Waiting",8)
        KNUK A 0 A_TakeInventory("Waiting",15)
        KNUK A 1 Offset(0,120) 
		KNUK A 1 Offset(0,110)
		KNUK A 1 Offset(0,100)
		KNUK A 1 Offset(0,90)
		KNUK A 1 Offset(0,80)
		KNUK A 1 Offset(0,70)
		KNUK A 1 Offset(0,60)
		KNUK A 1 Offset(0,50)
		KNUK A 1 Offset(0,40)
		KNUK AAABBB 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        KNUK C 0 A_PlaySound("Duke/KNuckles",5)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		KNUK C 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        KNUK DDDCCCBBBAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)  
        KNUK A 1 Offset(0,40)
		KNUK A 1 Offset(0,50)
		KNUK A 1 Offset(0,60)
		KNUK A 1 Offset(0,70)
		KNUK A 1 Offset(0,80)
		KNUK A 1 Offset(0,90)
		KNUK A 1 Offset(0,100)
		KNUK A 1 Offset(0,110)
		KNUK A 1 Offset(0,120)
        Goto Select
    Deselect:
	    SHRI A 0 
	    SHRI A 0 A_StopSoundEx("SoundSlot5")
	    SHRI A 0 A_TakeInventory("ModeSuperShock",15)
		SHRI A 0 A_TakeInventory("Waiting",15)
        SHRI AAAAA 1 A_Lower
        SHRI A 0 A_Lower
        Goto Deselect+8
    Select:
        SHRI A 1 A_Raise
		TNT1 A 0 A_TakeInventory("CheckWeaponMightyFoot",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPistol",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDualPistol",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponBlackTail",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDualBlackTail",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDesertEagle",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponSuperShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponAssaultShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponExplosiveShotgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLMG2028",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponMinigun",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponExplosiveChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponRPG",1)
        TNT1 A 0 A_GiveInventory("CheckWeaponShockCannon",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPipeBomb",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLaserTripBomb",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponShrinker",1)
		TNT1 A 0 A_TakeInventory("CheckWeaponShrinker2",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponExpander",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponExecutor",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponDevastator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponLaserChaingun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponRailgun",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponFreezethrower",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponIncinerator",1)
        TNT1 A 0 A_TakeInventory("CheckWeaponPulsethrower",1)
		SHRI A 0 A_PlaySound("Shock/Up",6)
        SHRI A 0 A_Raise
        SHRI A 1 A_Raise
        SHRI A 0 A_Raise
        SHRI A 1 A_Raise
        SHRI A 0 A_Raise
        SHRI A 1 A_Raise
        SHRI A 0 A_Raise
        SHRI A 1 A_Raise
        SHRI A 0 A_Raise
        SHRI AAAAA 1 A_Raise
        SHRI AAAAAAAAAA 2 A_Raise
        Loop 
    Fire:
	    SHSI B 0 A_JumpIfNoAmmo("FireFail")
		SHSI B 0 A_PlaySound("Shock/Active1",CHAN_WEAPON)
		SHSI BCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSI E 0 A_GiveInventory("ModeSuperShock",1)
		SHRI E 0 A_ReFire
	NormalFire:
	    SHRI B 0 A_GunFlash
	    SHRI B 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHRI B 0 A_TakeInventory("ModeSuperShock",15)
		SHRI B 0 A_TakeInventory("ModeSuperShockFlash",1)
		SHRI B 0 A_PlaySound("Shock/Shoot",5)
		SHRI B 0 A_PlaySound("Shock/BigFail",CHAN_WEAPON)
		SHRI B 0 A_FireCustomMissile("ShockAttack",0,1,7,4)
		SHRI B 0 A_AlertMonsters
        SHRI CD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        SHRI D 0 A_TakeInventory("Waiting",15) 
        SHRI EFGHIJK 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
	    Goto Ready
	Hold:
		SHSI B 0 A_JumpIfInventory("Shock Ammo",50,42)
		SHSI B 0 A_JumpIfInventory("Shock Ammo",5,41)
		SHSI B 0 A_JumpIfInventory("Shock Ammo",4,4)
		SHSI B 0 A_JumpIfInventory("Shock Ammo",3,3)
		SHSI B 0 A_JumpIfInventory("Shock Ammo",2,2)
		SHSI B 0 A_JumpIfInventory("Shock Ammo",1,1)
		SHSI B 0 
		SHSI B 0 A_PlaySound("Shock/BigFail",CHAN_WEAPON)
		SHSI BCDEBCDEBCDEBCDEBCDEBCDEBCDEBCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHRI E 0 A_ReFire
		Goto Ready
		SHRI E 0 
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",15,37)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",14,14)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",13,13)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",12,12)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",11,11)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",10,10)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",9,9)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",8,8)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",7,7)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",6,6)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",5,5)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",4,4)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",3,3)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",2,2)
		SHSI B 0 A_JumpIfInventory("ModeSuperShock",1,1)
		SHSI B 0
		SHSI BCDE 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSI E 0 A_GiveInventory("ModeSuperShock",1)
		SHRI E 0 A_ReFire 
		SHRI E 0 
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",14,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",13,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",12,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",11,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",10,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",9,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",8,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",7,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",6,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",5,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",4,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",3,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",2,"NormalFire")
		SHSI E 0 A_JumpIfInventory("ModeSuperShock",1,"NormalFire")
		SHSI E 0 
		SHSI E 0 A_GiveInventory("ModeSuperShockFlash",1)
		SHSI F 0 A_PlaySoundEx("Shock/Active2","SoundSlot5",1)
		SHSI F 0 A_GunFlash
		SHSI FGHI 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSI I 0 A_ReFire
		SH2I BCD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SH2I D 0 A_TakeInventory("ModeSuperShock",15)
		SH2I D 0 A_TakeInventory("ModeSuperShockFlash",1)
		SH2I D 0 A_PlaySound("Shock/BigShoot",5)
		SH2I D 0 A_FireCustomMissile("BigShockAttack",0,1,7,4)
		SH2I D 0 A_TakeInventory("Shock Ammo",4)
		SH2I D 0 A_Recoil(20)
		SH2I D 0 A_AlertMonsters
        SH2I DEF 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
        SH2I F 0 A_TakeInventory("Waiting",15) 
        SH2I GGGHHHIIIJJJKKKLLLMMM 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHRI EEEFFFGGGHHHIIIJJJKKKKKKKKKKKKKKKKKKKK 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		Goto Ready
	Flash:	    
	    SHRF B 0 A_JumpIfInventory("ModeSuperShockFlash",1,22)
	    SHRF B 0 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		SHRF B 0 A_Light1
		SHRF B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SHRF B 0 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		SHRF B 0 A_Light2
		SHRF B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SHRF B 0 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		SHRF B 0 A_Light2
		SHRF C 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SHRF C 0 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		SHRF C 0 A_Light1
		SHRF DEFGHIJK 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		Goto LightDone
		SHSF F 0 
		SHSF F 0 A_FireCustomMissile("DukeFlashShock0",0,0,0)
		SHSF FF 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSF G 0 A_FireCustomMissile("DukeFlashShock0",0,0,0)
		SHSF G 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSF H 0 A_FireCustomMissile("DukeFlashShock0",0,0,0)
		SHSF H 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHSF I 0 A_FireCustomMissile("DukeFlashShock0",0,0,0)
		SHSF I 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 		
	    SH2F B 0 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		SH2F B 0 A_Light1
		SH2F B 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SH2F B 0 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		SH2F B 0 A_Light2
		SH2F C 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SH2F C 0 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		SH2F C 0 A_Light2
		SH2F DD 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SH2F D 0 A_FireCustomMissile("DukeFlashShock2",0,0,0)
		SH2F D 0 A_Light2
		SH2F E 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		SH2F E 0 A_FireCustomMissile("DukeFlashShock1",0,0,0)
		SH2F E 0 A_Light1
		SH2F F 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 		
		SH2F E 0 A_Light0
		SH2F GGGHHHIIIJJJKKKLLLMMM 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		SHRF EEEFFFGGGHHHIIIJJJKKKKKKKKKKKKKKKKKKKK 1 Bright A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
		Goto LightDone
    AltFire:
        BOOT C 0 A_JumpIfInventory("PowerStrength",1,22)
		BOOT C 0 A_GunFlash
		BOOT C 0 ACS_ExecuteAlways(500,0,FAS_ActorKick)
		BOOT CCCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		BOOT C 0 A_CustomPunch(Random(26,30),0,0,"MightyBootPuff")
		BOOT C 0 A_TakeInventory("Waiting",15)
        BOOT DDDDD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT CCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT C 0 A_Refire
        Goto Ready  
		BOOT C 0 ACS_ExecuteAlways(500,0,FAS_ActorKick)
		BOOT C 0 A_GunFlash
		BOOT CCCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
		BOOT C 0 A_CustomPunch(10*Random(26,30),0,0,"MightyBootPuff")
		BOOT C 0 A_TakeInventory("Waiting",15)
        BOOT DDDDD 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT CCCCC 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        BOOT C 0 A_Refire
        Goto Ready	
	AltFlash:  
        SHRI AAAAAAAAAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Stop
	FireFail:
	    SHRI A 0 A_PlaySound("RPG/Fail",6)
		SHRI A 0 A_TakeInventory("Waiting",15)
		SHRI AAAAAAAAAAAAAAA 1 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH) 
        Goto Ready	
    }
}

ACTOR ShockAttack : FastProjectile
{
    Damage (50)
    DeathSound "Shock/Death"
    RenderStyle Add
    Height 6
    Radius 6
    Speed 40
	Scale 0.85
    Decal "ShockDecal"
    Damagetype "Damage_Shock"
	Obituary "%o was struck by a electric storm of %k's."
	+THRUGHOST
	+FORCERADIUSDMG
    States
    {
    Spawn: 
	    TNT1 A 0 A_PlaySound("NormalShock/Active",CHAN_BODY,1.0,True) 
        TNT1 A 1 A_SpawnItemEx("ShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("ShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAA 0 A_SpawnItemEx("ShockExtra1",0,0,0,Random(-4,4),Random(-4,4),Random(-4,4),Random(1,360))
		TNT1 AAAA 0 A_SpawnItemEx("ShockExtra2",0,0,0,Random(-4,4),Random(-4,4),Random(-4,4),Random(1,360))
		Loop
	Death:        
		TNT1 A 0 A_StopSound(CHAN_BODY) 
		TNT1 A 0 A_SpawnItemEx("ShockWave",0,0)
		TNT1 A 0 Radius_Quake(1,30,0,5,0)	
		TNT1 AAAAAAAA 0 A_SpawnItemEx("ShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
	    TNT1 AAAAAAAA 0 A_SpawnItemEx("ShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
	    TNT1 AAAAAAAAAAAAAAAA 0 A_CustomMissile("LaserProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		TNT1 A 0 A_Explode(82,128,0)
		TNT1 A 0 A_Explode(82,128)
		EMPW CDEFG 2 Bright
	    Stop
    }
}

ACTOR ShockAttackFire
{
     Speed 10
     Radius 3
     Height 3
     Obituary "%o was struck by a electric storm of %k's."
     DamageType "Damage_ShockFire"
     Damage 0
     +RIPPER
     +NOGRAVITY
     +THRUGHOST
     +FORCERADIUSDMG
	 +BLOODLESSIMPACT
     States
     {
     Spawn:
	      TNT1 A 1
     Death:
          TNT1 A 1 A_Explode(16,82,0)
          Stop
          }
}

ACTOR ShockWave
{
    Radius 1
	Height 1
	RenderStyle Add
	Scale 0.6
    Speed 0
    +NOINTERACTION
    +NOBLOCKMAP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	    EMPX ABCDEF 1 Bright
		EMPX GHIJKLMNOP 1 Bright A_FadeOut
		Stop
	}
}

ACTOR ShockExtra1
{
	Projectile
	Damage 0
	Speed 0
	Scale 0.65
	Radius 1
	Height 1
	RenderStyle Add
	+BLOODLESSIMPACT
	States
	{
	Spawn:
	    TNT1 A 2
	Spawn2:
		EMPV ABC 1 Bright
		NULL A 0 A_Jump(160,1)
		Loop
		EMPV ABC 1 Bright
	    EMPV DEFDEFDEFDEFDEFDEF 1 Bright A_FadeOut
	    Stop
    Death:
		NULL A 1
		Stop
	}
}

ACTOR ShockExtra2
{
    Projectile
	Damage 0
	Speed 0
	Radius 1
	Height 1
	Scale 0.4
	RenderStyle Add
	+BLOODLESSIMPACT
	+NOGRAVITY	
	States
	{
    Spawn:
	    TNT1 A 2
        EMPW ABABABABABABABABAB 1 Bright A_FadeOut
		Stop
	}
}

ACTOR ShockTrail
{
    Projectile
	Damage 0
	Speed 0
	Radius 1
	Height 1
	Scale 0.56
	RenderStyle Add
	+BLOODLESSIMPACT
	+NOGRAVITY	
	States
	{
    Spawn:
        EMPW ABABABABABABAB 1 Bright A_FadeOut
		Stop
	}
}

ACTOR BigShockAttack : FastProjectile replaces BFGBall
{
    Damage (320)
    DeathSound "Shock/BigDeath"
    RenderStyle Add
    Height 6
    Radius 6
    Speed 50
    Decal "BigShockDecal"
    Damagetype "Damage_BigShock"
	Obituary "%o was struck by a super electric storm of %k's."
	+THRUGHOST
	+FORCERADIUSDMG
    States
    {
    Spawn: 
        TNT1 A 0 A_PlaySound("BigShock/Active",CHAN_BODY,1.0,True) 
		EMPY A 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY B 1 A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY C 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY D 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY E 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY F 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY G 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY H 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY I 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		EMPY J 1 Bright A_SpawnItemEx("BigShockTrail",-(MomX/1.2),-(MomY/1.2),(MomZ/1.2*-1),(MomX/1.2),(MomY/1.2),(MomZ/1.2),0,138)
	    TNT1 A 0 A_SpawnItemEx("BigShockAttackFire",0,0,0,0,0,0,0,SXF_ABSOLUTEVELOCITY,0) 
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		TNT1 AAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-6,6),Random(-6,6),Random(-6,6),Random(1,360))
		Loop
	Death:        
		TNT1 A 0 A_StopSound(CHAN_BODY) 
		TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360))
	    TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BigShockExtra2",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360))
	    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("LaserProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		TNT1 A 0 A_Explode(192,196,0)
		TNT1 A 0 A_Explode(192,196)
		TNT1 A 0 Radius_Quake(4,128,0,16,0)		
		EMPZ ABCDEFGH 2 Bright A_CustomMissile("LaserProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		EMPZ H 0 A_SpawnItemEx("BigShockWave",0,0,-4)
		EMPZ IJKLMN 1 Bright A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360)) 
	    TNT1 A 0 A_Explode(256,256,0)
		TNT1 A 0 A_Explode(256,256)
		TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("BigShockExtra1",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360))
	    TNT1 AAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShockExtra2",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360))
	    TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("LaserProjectileParticle",0,0,Random(0,360),2,Random(0,360))
		EMPZ OPQRST 1 Bright A_SpawnItemEx("ShockExtra2",0,0,0,Random(-8,8),Random(-8,8),Random(-8,8),Random(1,360))
	    Stop
    }
}

ACTOR BigShockAttackFire
{
     Speed 10
     Radius 3
     Height 3
     Damagetype "Damage_BigShockFire"
	 Obituary "%o was struck by a super electric storm of %k's."
     Damage 0
     +RIPPER
     +NOGRAVITY
     +THRUGHOST
     +FORCERADIUSDMG
	 +BLOODLESSIMPACT
     States
     {
     Spawn:
	      TNT1 A 1
     Death:
          TNT1 A 1 A_Explode(32,96,0)
          Stop
          }
}

ACTOR BigShockTrail
{   
	Radius 1
	Height 1
	Damage 0
	Projectile
	RenderStyle Add
	Alpha 0.5
	+NOGRAVITY
    +DONTSPLASH
    +CLIENTSIDEONLY
    States
    {
    Spawn:
        EMPY KLMNOPQRSTU 3 Bright A_FadeOut
        Goto Death
	Death:
	    TNT1 A 1
		Stop
        }
}

ACTOR BigShockWave
{
    Radius 1
	Height 1
	RenderStyle Add
	XScale 2.8
	YScale 1.8
    Speed 0
    +NOINTERACTION
    +NOBLOCKMAP
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	    EMPX ABCDEF 1 Bright
		EMPX G 1 Bright 
		EMPX HIJKLMNOP 1 Bright A_FadeOut
		Stop
	}
}

ACTOR BigShockExtra1
{
	Projectile
	Damage 0
	Speed 0
	Radius 1
	Height 1
	RenderStyle Add
	+BLOODLESSIMPACT
	States
	{
	Spawn:
	    TNT1 A 2
	Spawn2:
		EMPV ABC 1 Bright
		NULL A 0 A_Jump(160,1)
		Loop
		EMPV ABC 1 Bright
	    EMPV DEFDEFDEFDEFDEFDEF 1 Bright A_FadeOut
	    Stop
    Death:
		NULL A 1
		Stop
	}
}

ACTOR BigShockExtra2
{
    Projectile
	Damage 0
	Speed 0
	Radius 1
	Height 1
	RenderStyle Add
	+BLOODLESSIMPACT
	+NOGRAVITY	
	States
	{
    Spawn:
	    TNT1 A 2
        EMPW ABABABABABABABABAB 1 Bright A_FadeOut
		Stop
	}
}

ACTOR ModeSuperShock : Inventory
{
    Inventory.Amount 0
    Inventory.MaxAmount 15
}

ACTOR ModeSuperShockFlash : Inventory
{
    Inventory.Amount 0
    Inventory.MaxAmount 1
}

ACTOR DukeFlashShock0
{
    Speed 1
    Radius 1
    Height 1
    Damage 0
    Projectile
    +NOCLIP
	+NOTIMEFREEZE
    States
    {
    Spawn:
        TNT1 A 0 
		TNT1 A 1
        Stop
    }
}

ACTOR DukeFlashShock1
{
    Speed 1
    Radius 1
    Height 1
    Damage 0
    Projectile
    +NOCLIP
	+NOTIMEFREEZE
    States
    {
    Spawn:
        TNT1 A 0 
		TNT1 A 1
        Stop
    }
}

ACTOR DukeFlashShock2
{
    Speed 1
    Radius 1
    Height 1
    Damage 0
    Projectile
    +NOCLIP
	+NOTIMEFREEZE
    States
    {
    Spawn:
        TNT1 A 0 
		TNT1 A 1
        Stop
    }
}