actor Elecman : SemiWeakArmorClass
{
	Player.ScoreIcon "ELECMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "SemiWeakArmor"
	player.soundclass "elecmanc"
	Player.ViewHeight 45
	player.displayname "Elecman"
	player.forwardmove 0.9, 0.9
	player.sidemove 0.88, 0.88
	player.jumpz 12
	player.startitem "IsFromMM1"
	player.startitem "ThunderBeamBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "UltimateAttackItem2", 1
	player.startitem "UltSoundWatcherSpawn2"
	States
	{
		Spawn:
		ELEC A 0
		ELEC B 1 A_JumpIf(z-floorz>0, "Jumping")
		ELEC A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		ELEC BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn
		
		Jumping:
		ELEC I 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait
		
		Missile:
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC F 0 A_JumpIf(z-floorz>0, "JumpingMissile")
		ELEC F 0 A_JumpIfInventory("BaseCustomFlag2",1,"Missile2")
		ELEC F 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		
		Missile2:
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC G 0 A_JumpIf(z-floorz>0, "JumpingMissile2")
		ELEC G 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		Goto Spawn+1
		
		JumpingMissile:
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile")
		ELEC J 0 A_JumpIfInventory("BaseCustomFlag2",1,"JumpingMissile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		
		JumpingMissile2:
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC J 0 A_JumpIf(z-floorz<=0, "Missile2")
		ELEC J 1 A_JumpIfInventory("ElecA1",1,"Animation2")
		Goto Spawn+1
		
		Animation2:
		ELEC KLM 2
		ELEC K 0 A_JumpIfInventory("ElecA1",1,"Animation2")
		ELEC KLM 2
		ELEC K 0 A_JumpIfInventory("ElecA1",1,"Animation2")
		Goto Spawn+1
		
		Animation3:
		ELEC N 3
		ELEC O 50
		goto Spawn+1
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		ELEC AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		ELEC HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		ELEC ] 0 A_TakeInventory("BaseCustomFlag1",1)
		ELEC ] 8 ACS_ExecuteAlways(999,0,0)
		ELEC ] 12 A_SpawnItemEx("MM1Death")
		ELEC ] 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFXMM1",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		ELEC A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("ThunderBeamWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("ThunderBeamWepM")
		goto ClassDeath
	}
}

actor ThunderBeamBoss : VCBaseWeapon
{
	Weapon.AmmoUse 2
	Weapon.AmmoGive 28
	Obituary "$OB_ELECMAN1"
	States
	{
		Ready:
		TNT1 A 0
		ELEA A 1 A_WeaponReady ELEA A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		ELEA A 1 A_WeaponReady ELEA A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		ELEA A 0 A_GiveInventory("Base28Ammo",1)
		Goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		ELEA A 1 A_Lower
		Loop
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,725)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		ELEA A 1 A_Raise
		Loop
		
		Fire:
		ELEA A 0 A_JumpIfNoAmmo("NoAmmo")
		ELEA BCDDDDDD 1
		ELEA D 1 A_JumpIfInventory("Base28Ammo",14,"Hold")
		goto Fire1
		Hold:
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		TNT1 A 0 A_JumpIfInventory("ElecCharge",60,"Hold2")
		ELEA E 1 A_GiveInventory("ElecCharge",2)
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("ElecCharge",999)
		goto Fire1
		Hold2:
		ELEA F 1
		TNT1 A 0 A_Refire
		TNT1 A 0 A_TakeInventory("ElecCharge",999)
		goto Fire2
		Fire1.Again:
		ELEA A 0 A_JumpIfNoAmmo("NoAmmo")
		ELEA BCDDDDDD 1
		Fire1:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		ELEA C 0 A_GiveInventory("BaseCustomFlag2")
		ELEA C 0 A_PlaySoundEx("weapon/thunderbeam","Weapon")
		ELEA C 0 A_FireCustomMissile("NewThunderBeam",0,1,0,0)
		ELEA C 0 A_FireCustomMissile("NewThunderBeam",-90,0,0,0)
		ELEA C 0 A_FireCustomMissile("NewThunderBeam",90,0,0,0)
		ELEA G 1
		ELEA H 9
		ELEA A 8
		ELEA A 0 A_TakeInventory("BaseCustomFlag2")
		ELEA A 0 A_Refire("Fire1.Again") //22
		ELEA A 0 A_ClearRefire
		Goto Ready
		Fire2:
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		ELEA C 0 A_GiveInventory("ElecA1",1)//ACS_ExecuteAlways(2107,0,2)
		ELEA GHHHHH 1
		TNT1 A 0 A_TakeInventory("Base28Ammo",14)
		ELEA A 0 A_Stop
		ELEA A 0 SetPlayerProperty(0,1,0)
		Fire2Loop:
		ELEA H 0 A_FireCustomMissile("ElecShockHitbox",0,0,0,0)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,0)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,45)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,90)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,135)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,180)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,225)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,270)
		ELEA H 0 A_SpawnItemEx("ElecFloorShock",0,0,8,40,0,0,315)
		ELEA H 0 A_JumpIfInventory("CutterFlag",12,"Fire2End")
		ELEA H 0 A_PlaySoundEx("weapon/Plugball","Weapon")
		ELEA H 0 A_SpawnItemEx("ElecShockHitbox")
		ELEA HHHHHH 0 A_SpawnItemEx("ElecShockFX",0,0,0,40,0,0,random(0,359))
		ELEA HHHH 0 A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(10,50),random(-10,10),random(-10,10),random(-10,10))
		ELEA H 1 Offset(0,35) A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(10,50),random(-10,10),random(-10,10),random(-10,10))
		ELEA H 1 Offset(0,32) A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(10,50),random(-10,10),random(-10,10),random(-10,10))
		ELEA H 0 A_GiveInventory("CutterFlag",1)
		ELEA H 0 A_JumpIfInventory("CutterFlag",12,"Fire2Loop")
		goto Fire2Loop+10
		Fire2End:
		ELEA C 0 A_WeaponReady(WRF_NOFIRE)
		ELEA AAAAA 1 A_ClearRefire
		ELEA A 0 SetPlayerProperty(0,0,0)
		ELEA A 14 A_TakeInventory("CutterFlag",999)
		goto Ready
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		ELEA A 0 A_JumpIfInventory("BaseCustomFlag1",1,"ShieldThrow")
		ELEA A 0 A_JumpIfInventory("Base28Ammo",14,"AltStart")
		goto NoAmmo
		AltStart:
		ELEA ABC 1
		ELEA A 0 A_GiveInventory("BaseCustomFlag1",1)
		ELEA F 0 A_PlaySoundEx("misc/wilystart","Weapon")
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		ELEA F 1 Offset(0,34)
		ELEA F 1 Offset(0,32)
		TNT1 A 0 A_TakeInventory("Base28Ammo",14)
		ELEA F 0 A_SpawnItem("ElecShieldWatcher",1)
		ELEA F 0 A_PlaySoundEx("misc/wilybeam","Weapon")
		ELEA F 0 A_GunFlash
		ELEA DB 2 A_WeaponReady(WRF_NOFIRE)
		ELEA A 18
		goto Ready
		ShieldThrow:
		ELEA BCDDDDDE 1
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
		ELEA A 0 A_GiveInventory("BaseCustomFlag2")
		ELEA C 0 A_PlaySoundEx("weapon/thunderbeam","Weapon")
		ELEA C 0 A_FireCustomMissile("ElecShieldShot",0,1,0,0)
		AltHold:
		ELEA H 1 A_RailWait
		ELEA E 0 A_Refire
		ELEA A 0 A_TakeInventory("BaseCustomFlag2")
		ELEA B 2 A_GiveInventory("DrillFlag",2)
		ELEA E 0 A_TakeInventory("DrillFlag",999)
		ELEA A 2 A_ClearRefire
		ELEA A 10
		Goto Ready
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,10)
		TNT1 A 0 A_GiveInventory("UltBuildCooldownGiver",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		JEWE M 0 A_ChangeFlag(REFLECTIVE, true)
		JEWE M 0 A_ChangeFlag(DEFLECT, true)
		ELEA BCC 1 A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(10,50))
		CUTA A 0 A_TakeInventory("UltAttackFlag",1)
		ELEA C 0 A_PlaySoundEx("misc/electrap","Weapon")
		ELEA C 0 A_FireCustomMissile("ElecPinpointMark")
		ELEA C 0 A_TakeInventory("MediumShortUltimateAmmo",200)
		ELEA ICICICICICIC 1 A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(10,50))
		JEWE M 0 A_ChangeFlag(REFLECTIVE, false)
		JEWE M 0 A_ChangeFlag(DEFLECT, false)
		ELEA A 0 SetPlayerProperty(0,0,0)
		ELEA DBA 3
		Goto Ready
		Flash:
		TNT1 A 0
		TNT1 A 1 A_SpawnItemEx("ElecShieldHitbox")
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flash")
		goto NoFlash
		NoFlash:
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1",1)
		stop
		NoAmmo:
		ELEA A 0 A_ClearRefire
		ELEA A 2 A_GiveInventory("Base28Ammo",1)
		Goto Ready
	}
}

actor ElecA1 : VCOnceP {powerup.duration 30}

actor ElecPinpointMark : FastProjectile
{
	PROJECTILE
	+SPECTRAL
	Radius 1
	Height 1
	scale 2.5
	-DONTBLAST
	+SKYEXPLODE
	+THRUACTORS
	+DONTREFLECT
	speed 300
	damage (0)
	States
	{
		Spawn:
		TNT1 AA 1
		Death:
		TNT1 A 0 A_SpawnItemEx("PinpointThunder",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("PinpointThunderBlaster",0,0,0,0)
		TNT1 A 2 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		stop
	}
}

actor PinpointThunder
{
	PROJECTILE
	scale 2.5
	+DONTBLAST
	+THRUACTORS
	+FLOORHUGGER
	+NOEXPLODEFLOOR
	+DONTREFLECT
	damagetype "ElecmanLightning"
	Obituary "$OB_ELECMAN2"
	Speed 0
	Radius 1
	Height 2//100
	Damage (0)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode")
		ELEB A 0 A_SpawnItemEx("PinpointThunderFXSpawner",0,0,8)
		ELEB A 0 A_SpawnItemEx("PinpointThunderExtend", 0, 0, 64)
		TNT1 A 0 A_GiveToTarget("PharaohUltCooldown")
		ELEB ABCDEFGABCDEF 2 A_Explode(8,96,0,0,72)
		ELEB A 0 A_SpawnItemEx("PinpointThunderFXSpawner",0,0,8)
		ELEB A 0 A_SpawnItemEx("PinpointThunderExtend", 0, 0, 64)
		TNT1 A 0 A_GiveToTarget("PharaohUltCooldown")
		ELEB GABCDEFGABCDE 2 A_Explode(8,96,0,0,72)
		stop
	}
}

actor PinpointThunderBlaster
{
PROJECTILE
+FLOORHUGGER
+THRUACTORS
+DONTREFLECT
reactiontime 52
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_GiveInventory("Repulsion")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

Actor PinpointThunderExtend : PinpointThunder
{
	-FLOORHUGGER
	+CLIENTSIDEONLY
	+NOINTERACTION
	States
	{
		Spawn:
		LIBO L 0
		TNT1 A 0 A_GiveInventory("ProjectileCode",1)
		LIBO L 0 A_JumpIf(ceilingz-z <= 32, "Death")
		LIBO L 0 A_SpawnItemEx("PinpointThunderExtend", 0, 0, 64)
		ELEB ABCDEFGABCDEF 2//ABBCDDEFFGAABCCDEEFGG 1
		stop
		Death:
		TNT1 A 0 
		stop
	}
}

actor PinpointThunderFXSpawner : PinpointThunderExtend
{
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 AAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("PinpointThunderFX",0,0,0,random(-10,10),random(-10,10),random(5,15),random(0,360))
		stop
	}
}

actor NewThunderBeam
{
	Obituary "$OB_ELECMAN1"
	PROJECTILE
	damagetype "ElecmanBeam"
	scale 2.5
	+RIPPER
	Speed 34
	Radius 18
	Height 16
	Damage (21)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		loopit:
		THUN ABCDEFG 3
		loop
	}
}

actor ElecBeamProtect : PowerProtection
{
	powerup.duration 14
	DamageFactor "ElecmanBeam", 0.0
}

actor PinpointThunderFX : BaseDecorativeActor
{
	-NOGRAVITY
	translation "228:228=4:4", "61:61=215:215"
	States
	{
		Spawn:
		TNT1 A 0
		CLOT S 2
		TNT1 A 2
		CLOT T 2
		TNT1 A 2
		CLOT U 2
		stop
	}
}

actor ElecShockHitbox
{
	Obituary "$OB_ELECMAN3"
	translation "32:40=215:215"
	PROJECTILE
	speed 30
	height 50
	radius 50
	damage (3)
	scale 10
	renderstyle translucent
	alpha 0.8
	damagetype "ElecmanShock"
	States
	{
	Spawn:
	TNT1 A 1
	stop
	}
}

actor ElecShockFX
{
	-SOLID
	+NOGRAVITY
	+FLOORHUGGER
	+CLIENTSIDEONLY
	renderstyle translucent
	alpha 0.5
	Scale 2.5
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		SPAS FGFG 2
		stop
	}
}

actor ElecFloorShock
{
	Obituary "$OB_ELECMAN4"
	PROJECTILE
	damagetype "ElecmanFloor"
	scale 2.5
	Speed 70
	Radius 24
	+FLOORHUGGER
	+DOOMBOUNCE
	Height 16
	Damage (7)
	bouncefactor 0.99999
	bouncecount 4
	reactiontime 105
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		loopit:
		THUN TTUU 1 A_Countdown
		loop
	}
}

actor ElecShieldWatcher
{
	Height 0
	Radius 0
	+NOINTERACTION
	-SOLID
	+NOGRAVITY
	+MISSILE
	-DONTBLAST
	States
	{
		Spawn:
		TNT1 A 1 A_GiveToTarget("ElecShieldGiveFX1",1)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"OK2")
		goto Death
		OK2:
		TNT1 A 1 A_GiveToTarget("ElecShieldGiveFX2",1)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"OK3")
		goto Death
		OK3:
		TNT1 A 1 A_GiveToTarget("ElecShieldGiveFX3",1)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"OK4")
		goto Death
		OK4:
		TNT1 A 1 A_GiveToTarget("ElecShieldGiveFX4",1)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"Death")
		TNT1 A 0 A_JumpIfInTargetInventory("BaseCustomFlag1",1,"Spawn")
		goto Death
		Death:
		TNT1 A 1
		TNT1 A 1 A_TakeFromTarget("BaseCustomFlag1",1)
		stop
	}
}

actor ElecShieldGiveFX1 : CustomInventory
{
	inventory.amount 1
	inventory.maxamount 1
	+AUTOACTIVATE
	States
	{
		Spawn:
		TNT1 A 1
		loop
		Use:
		TNT1 A 1 A_SpawnItemEx("ElecShieldFX1",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		stop
	}
}

actor ElecShieldGiveFX2 : CustomInventory
{
	inventory.amount 1
	inventory.maxamount 1
	+AUTOACTIVATE
	States
	{
		Spawn:
		TNT1 A 1
		loop
		Use:
		TNT1 A 1 A_SpawnItemEx("ElecShieldFX2",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		stop
	}
}

actor ElecShieldGiveFX3 : CustomInventory
{
	inventory.amount 1
	inventory.maxamount 1
	+AUTOACTIVATE
	States
	{
		Spawn:
		TNT1 A 1
		loop
		Use:
		TNT1 A 1 A_SpawnItemEx("ElecShieldFX3",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		stop
	}
}

actor ElecShieldGiveFX4 : CustomInventory
{
	inventory.amount 1
	inventory.maxamount 1
	+AUTOACTIVATE
	States
	{
		Spawn:
		TNT1 A 1
		loop
		Use:
		TNT1 A 1 A_SpawnItemEx("ElecShieldFX4",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		stop
	}
}

actor ElecShieldFX1
{
	scale 2.5
	- SOLID
	+NOGRAVITY
	+CLIENTSIDEONLY
	+NONETID
	+NOTIMEFREEZE
	States
	{
		Spawn:
		THUN P 2 A_GiveInventory("ProjectileFXCode",1)
		stop
	}
}

actor ElecShieldFX2 : ElecShieldFX1
{
	States
	{
		Spawn:
		THUN Q 2 A_GiveInventory("ProjectileFXCode",1)
		stop
	}
}

actor ElecShieldFX3 : ElecShieldFX1
{
	States
	{
		Spawn:
		THUN R 2 A_GiveInventory("ProjectileFXCode",1)
		stop
	}
}

actor ElecShieldFX4 : ElecShieldFX1
{
	States
	{
		Spawn:
		THUN S 2 A_GiveInventory("ProjectileFXCode",1)
		stop
	}
}

actor ElecShieldHitbox
{
	Obituary "$OB_ELECMAN5"
	PROJECTILE
	+NOGRAVITY
	height 60
	radius 60
	damage (25)
	damagetype "ElecmanShield"
	States
	{
		Spawn:
		TNT1 A 1
		stop
		Death:
		TNT1 A 0
		stop
		XDeath:
		TNT1 A 0 A_TakeFromTarget("BaseCustomFlag1",1)
		stop
	}
}

actor ElecShieldShot
{
	PROJECTILE
	+NOTARGETSWITCH
	+FORCEXYBILLBOARD
	+RIPPER
	Obituary "$OB_ELECMAN5"
	Radius 8
	Height 8
	scale 2.5
	damage (0)
	damagetype "ElecmanShieldBolt"
	speed 20
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		THUN P 0 
		THUN P 0 A_PlaySoundEx("classes/thundercarnival","Weapon",1)
		THUN P 1 A_JumpIfInTargetInventory("DrillFlag",2,"Switch")
		THUN P 0 A_Explode(6,64,0,0,64)
		THUN P 0 ACS_ExecuteAlways(259, 0, 1)
		THUN P 0 A_ChangeVelocity(cos(-pitch)*20, 0, sin(-pitch)*20, CVF_RELATIVE|CVF_REPLACE)
		THUN Q 1 A_JumpIfInTargetInventory("DrillFlag",2,"Switch")
		THUN P 0 A_PlaySoundEx("classes/thundercarnival","Weapon",1)
		THUN B 0 ACS_ExecuteAlways(259, 0, 1)
		THUN B 0 A_ChangeVelocity(cos(-pitch)*20, 0, sin(-pitch)*20, CVF_RELATIVE|CVF_REPLACE)
		THUN R 1 A_JumpIfInTargetInventory("DrillFlag",2,"Switch")
		THUN R 0 A_Explode(6,64,0,0,64)
		THUN B 0 A_ChangeVelocity(cos(-pitch)*20, 0, sin(-pitch)*20, CVF_RELATIVE|CVF_REPLACE)
		THUN S 1 A_JumpIfInTargetInventory("DrillFlag",2,"Switch")
		THUN B 0 A_ChangeVelocity(cos(-pitch)*20, 0, sin(-pitch)*20, CVF_RELATIVE|CVF_REPLACE)
		Goto Spawn+2
		Death:
		Switch:
		THUN B 0 A_StopSound
		THUN B 0 A_PlaySoundEx("weapon/thunderbolt","Weapon")
		THUN BBBBBBBB 0 A_SpawnItemEx("PinpointThunderFX",random(-20,20),random(-20,20),random(10,50),random(-20,20),random(-20,20),random(-20,20))
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,0)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,45)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,90)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,135)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,180)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,225)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,270)
		THUN B 0 A_SpawnItemEx("ElecBarrierProj",0,0,20,20,0,0,315)
		TNT1 A 1
		stop
	}
}

actor ElecBarrierProj
{
	Obituary "$OB_ELECMAN5"
	PROJECTILE
	+RIPPER
	damagetype "ElecmanShieldBolt2"
	scale 2.5
	Speed 50
	Radius 24
	Height 16
	Damage (2)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
		ELEB HH 1 A_SpawnItemEx("ElecBarrierProjTrail1",0,0,0,0,0,0,0,1)
		ELEB II 1 A_SpawnItemEx("ElecBarrierProjTrail2",0,0,0,0,0,0,0,1)
		ELEB KK 1 A_SpawnItemEx("ElecBarrierProjTrail3",0,0,0,0,0,0,0,1)
		Goto Spawn+2
	}
}

actor ElecShieldBoltProtect : PowerProtection
{
	powerup.duration 2
	DamageFactor "ElecmanShieldBolt", 0.0
}

actor ElecShieldBoltProtect2 : PowerProtection
{
	powerup.duration 3
	DamageFactor "ElecmanShieldBolt2", 0.0
}


actor ElecBarrierProjTrail1 : ElecBarrierProj
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 3
ELEB KLM 2
stop
}
}

actor ElecBarrierProjTrail2 : ElecBarrierProjTrail1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 3
ELEB MKL 2
stop
}
}

actor ElecBarrierProjTrail3 : ElecBarrierProjTrail1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 3
ELEB LMK 2
stop
}
}

actor ElecShieldProtect : PowerProtection
{
	powerup.duration 70
	DamageFactor "ElecmanShield", 0.0
	DamageFactor "ElecmanShock", 0.5
}

actor ElecFloorProtect : PowerProtection
{
	powerup.duration 2
	DamageFactor "ElecmanFloor", 0.0
}

actor ElecCharge : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 60
}