//Mobility recoded
actor Dynamoman : VCBaseClass
{
	Player.ScoreIcon "DYNAMUGS"
	player.startitem "BaseFlagPack", 1
	player.soundclass "dynamomanc"
	Player.ViewHeight 48
	player.forwardmove 0.85,0.85
	player.sidemove 0.83,0.83
	player.displayname "Dynamoman"
	player.startitem "Base28Ammo",28
	player.startitem "LightningBoltBoss"
	player.startitem "UltimateAttackItem3"
	player.startitem "UltSoundWatcherSpawn3"
	player.startitem "IsFromMMB"
	player.startitem "NoHealthBar"
	States
	{
		Animation4:
		Spawn:
		DYNA A 0
		DYNA B 1 A_JumpIf(z-floorz>0, "Jumping")
		DYNA A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+2
		
		See:
		DYNA BBBBCCCCDDDDEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+1
		
		Animation5:
		Jumping:
		DYNA I 1 A_JumpIf(z-floorz<=0, "Spawn")
		wait
		
		Missile:
		DYNA FFFFGGGGG 1
		Goto Spawn+1
		
		Animation1:
		DYNA J 1 A_JumpIf(z-floorz>0, "JumpingA1")
		loop
		
		JumpingA1:
		DYNA J 1 A_JumpIf(z-floorz<=0, "Animation1")
		wait
		
		Animation2:
		DYNA K 17
		goto Spawn+1
		
		Animation3:
		DYNA LMNO 1
		loop
		
		ClassTimeStop:
		DYNA A 0 SetPlayerProperty(0,1,4)
		DYNA A 0 ACS_Execute(528,0)
		DYNA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		DYNA A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		DYNA H 0 A_JumpIfInventory("BaseCustomFlag2",1,"ClassPain.Recharger")
		DYNA HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassPain.Recharger:
		DYNA L 1 A_SpawnItem("PainFX",0,3)
		DYNA M 1
		DYNA N 1 A_SpawnItem("PainFX",0,3)
		DYNA O 1
		Goto Animation3
		ClassDeath:
		DYNA H 1 ACS_ExecuteAlways(999,0,0)
		DYNA Q 3
		DYNA R 7
		DYNA S 3
		DYNA T 4
		DYNA T 0 A_PlayerScream
		DYNA A 0 A_SpawnItemEx("FakeDeathFXMMB",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		DYNA A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("LightningBoltWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("LightningBoltWepM")
		goto ClassDeath
	}
}

actor LightningBoltBoss : VCBaseWeapon
{
	Weapon.AmmoUse 1
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Obituary "$OB_DYNAMOMAN1"
	States
	{
		Ready:
		TNT1 A 0
		DYNH A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready.CanTF")
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		DYNH A 0 A_GiveInventory("Base28Ammo",1)
		DYNH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Ready.CanTF:
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") DYNH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") DYNH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		DYNH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,1)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) DYNH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") DYNH A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		DYNH A 0 A_GiveInventory("Base28Ammo",1)
		DYNH A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		DYNH A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 ACS_ExecuteAlways(991,0,922)
		TNT1 A 0 A_GunFlash
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		DYNH A 1 A_Raise
		Loop
		
		
		User1:
		DYNH A 1 Offset(8,48) A_GiveInventory("DynamoTFHandler",1)
		DYNH A 0 A_GunFlash("Flash.Healing")
		
		U1.Loop:
		DYNH A 0 A_PlaySoundEx("weapon/dynamorecharger","Weapon")
		DYNH AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Offset(20,64) A_JumpIfInventory("DynamoTFStop",1,"U1.Stop")
		loop
		
		U1.Stop:
		DYNH A 1 Offset(8,48) A_GiveInventory("DynamoTFEndHandler",1)
		DYNH A 0 A_WeaponReady(WRF_NOFIRE)
		DYNH AAAAAA 1 A_GiveInventory("DynamoTFEndHandler",1) //Just in case
		goto Ready
		
		
		Fire:
		DYNH B 2
		DYNH B 0 A_GiveInventory("DynamoM1Handler",1)
		DYNH CCCCDE 2
		DYNH A 18
		goto Ready
		
		
		AltfireCharge:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		DYNH A 1 Offset(0,40) A_GiveInventory("DynamoManCharge",1)
		DYNH A 0 A_JumpIfInventory("DynamoManCharge",0,"Altfire.Charged")
		DYNH A 0 A_Refire("AltfireCharge")
		DYNH A 1 A_Jump(255,"Altfire1")
		wait
		
		Altfire.Charged:
		DYNH A 1 Offset(0,48)
		DYNH A 0 A_Refire("Altfire.Charged")
		TOAD A 0 A_GiveInventory("ToadChargeDamageTake")
		goto Altfire2
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
		TOAD A 0 A_GiveInventory("ToadChargeDamageGive")
		DYNH A 0 A_GiveInventory("DynamoManCharge",1)
		DYNH A 1 A_JumpIfInventory("BaseAltfireAmmo",56,"AltfireCharge")
		Altfire1:
		DYNH F 1 A_WeaponReady(WRF_NOFIRE)
		DYNH G 30 A_GiveInventory("DynamoM2Handler",1)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",2)
		DYNH FA 1
		goto Ready
		
		Altfire2:
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
		TNT1 A 0 A_PlaySoundEx("weapon/dynamohop","Body") //Unused, maybe not needed -Fr3ak
		TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",35),0,8,CVF_RELATIVE|CVF_REPLACE)
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
		HAZH D 0 A_TakeInventory("UnSolid",1)
		HAZH D 0 A_ChangeFlag("SOLID",0)
		DYNH A 0 Offset(0,54) A_GiveInventory("DynamoM2Handler",1)
		DYNH AAAAA 1 A_SpawnItemEx("DynamoLeapHitbox")
		DYNH A 0 Offset(0,54) A_GiveInventory("DynamoM2Handler",1)
		DYNH AAAAA 1 A_SpawnItemEx("DynamoLeapHitbox")
		DYNH A 0 Offset(0,54) A_GiveInventory("DynamoM2Handler",1)
		DYNH AAAAA 1 A_SpawnItemEx("DynamoLeapHitbox")
		DYNH A 0 Offset(0,54) A_GiveInventory("DynamoM2Handler",1)
		DYNH AAAAA 1 A_SpawnItemEx("DynamoLeapHitbox")
		DYNH A 0 Offset(0,54) A_GiveInventory("DynamoM2Handler",1)
		DYNH AAAAA 1 A_SpawnItemEx("DynamoLeapHitbox")
		DYNH A 10 A_SpawnItemEx("ReSolidifier")
		DYNH A 10 Offset(0,48)//Both of these were 2 before
		DYNH A 10 Offset(0,40) A_TakeInventory("DynamoManCharge",35)
		goto Ready
		
		
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,80)
		TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		TNT1 A 0 A_GiveInventory("DynamoUltCooldown",1) 
		TNT1 A 0 A_ChangeFlag("INVULNERABLE",1)
		TNT1 A 0 A_GiveInventory("InvProtection")
		DYNH F 1 ACS_NamedExecuteWithResult("VC_SetState",1)
		DYNH F 0 A_PlaySoundEx("weapon/dynamoult","Weapon")
		TNT1 A 0 A_SpawnItemEx("DynamoUltOrb1a",50,0,30,0,0,0,0*90)
		TNT1 A 0 A_SpawnItemEx("DynamoUltOrb1b",50,0,30,0,0,0,1*90)
		TNT1 A 0 A_SpawnItemEx("DynamoUltOrb1c",50,0,30,0,0,0,2*90)
		DYNH G 52 A_SpawnItemEx("DynamoUltOrb1d",50,0,30,0,0,0,3*90)
		DYNH GGGG 6 A_SpawnItemEx("DynamoUltOrb2",0,0,100,0,0,20)
		DYNH G 24
		DYNH G 0 A_SpawnItemEx("DynamoBolt1",0,0,100)
		DYNH G 0 A_PlaySoundEx("weapon/lightningbold","Weapon")
		DYNH H 2 ACS_ExecuteAlways(971,0,1922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH I 2 ACS_ExecuteAlways(971,0,2922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH H 2 ACS_ExecuteAlways(971,0,1922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH I 2 ACS_ExecuteAlways(971,0,2922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH H 2 ACS_ExecuteAlways(971,0,1922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH I 2 ACS_ExecuteAlways(971,0,2922)
		DYNH G 2 ACS_ExecuteAlways(971,0,922)
		DYNH FA 1 ACS_NamedExecuteWithResult("VC_SetState",2)
		DYNH A 1 Offset(-4,28)
		
		UltLoop:
		DYNH A 0 A_GiveInventory("DynamoUltHandler",1)
		DYNH A 2 Offset(-8,24) ACS_NamedExecuteWithResult("VC_SetState",2)
		DYNH A 2 Offset(-6,24)
		DYNH A 2 Offset(-8,24)
		DYNH A 2 Offset(-6,24)
		DYNH A 2 Offset(-8,24)
		DYNH A 2 Offset(-6,24) ACS_NamedExecuteWithResult("VC_SetState",2)
		DYNH A 2 Offset(-8,24)
		DYNH A 2 Offset(-6,24)
		DYNH A 2 Offset(-8,24)
		DYNH A 2 Offset(-6,24)
		DYNH A 0 A_JumpIfInventory("MediumUltimateAmmo",1,"UltLoop")
		
		UltFinish:
		DYNH A 2 Offset(-3,29) A_TakeInventory("InvProtection") TNT1 A 0 A_ChangeFlag("INVULNERABLE",0)
		DYNH A 2 Offset(-1,31)
		DYNH A 2 A_WeaponReady(WRF_NOFIRE)
		goto Ready
		
		
		Flash:
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 1 A_JumpIfHealthLower(50,"Flash2")
		loop
		
		Flash2:
		TNT1 A 0 ACS_NamedExecute("VC_ClientSound",0,1)
		TNT1 A 1 A_GiveInventory("BaseCustomFlag1",1)
		stop
		
		Flash.Healing:
		TNT1 A 0 HealThing(1,100) TNT1 A 0 A_Stop
		TNT1 A 0 ACS_ExecuteAlways(971,0,922) TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 0 HealThing(1,100) TNT1 A 0 A_Stop
		TNT1 A 0 ACS_ExecuteAlways(971,0,1922) TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 0 HealThing(1,100) TNT1 A 0 A_Stop
		TNT1 A 0 ACS_ExecuteAlways(971,0,922) TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 0 HealThing(1,100) TNT1 A 0 A_Stop
		TNT1 A 0 ACS_ExecuteAlways(971,0,2922) TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 1 A_JumpIfInventory("IsDead",1,"NoFlash") TNT1 A 0 A_JumpIf(health>=100,"NoFlash") TNT1 A 1 A_JumpIfInventory("BasicArmor",1,1)
		goto Flash.Stop
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		loop
		
		Flash.Stop:
		TNT1 A 0 A_PlaySoundEx("weapon/napalm","Auto")
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MMBVanishFX",random(24,40),0,random(0,80),0,0,0,random(0,359))
		
		NoFlash:
		TNT1 A 0 A_StopSound(CHAN_WEAPON)
		TNT1 A 0 A_GiveInventory("DynamoTFStop",1)
		stop
	}
}

actor DynamoTFStop : Powerup
{
Powerup.Duration 10
}

actor DynamoManCharge : Inventory
{
	inventory.amount 1
	inventory.maxamount 35
}

actor DynamoM1Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_FireCustomMissile("DynamoShocker",0,1,1,8)
TNT1 A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
TNT1 A 0 A_PlaySoundEx("weapon/dynamoshoot","Body")
stop
}
}

actor DynamoShocker
{
PROJECTILE
scale 2.5
damage (12)
speed 20
Obituary "$OB_DYNAMOMAN1"
damagetype "Dynamoman"
radius 16
height 16
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DYSO A 15
DYSO BC 1
DYSO B 0 A_PlaySoundEx("weapon/dynamoshocker","Weapon",1)
loopit:
DYSO D 0 A_SpawnItemEx("DynamoShockerHitbox",0,-40)
DYSO D 1 A_SpawnItemEx("DynamoShockerHitbox",0,40)
DYSO E 0 A_SpawnItemEx("DynamoShockerHitbox",0,-40)
DYSO E 1 A_SpawnItemEx("DynamoShockerHitbox",0,40)
DYSO F 0 A_SpawnItemEx("DynamoShockerHitbox",0,-40)
DYSO F 1 A_SpawnItemEx("DynamoShockerHitbox",0,40)
loop
Death:
MMFX B 0 A_StopSound
MMFX BCDE 2
stop
}
}

actor DynamoShockerHitbox : DynamoShocker
{
damage(6)
damagetype "DynamoShocker"
radius 12
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death:
TNT1 A 0
stop
}
}

actor DynamoM2Handler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("DynamoManCharge",0,"Pickup2")
TNT1 A 0 A_SpawnItemEx("DynamoM2Orb1a",50,0,30,0,0,0,0*120)
TNT1 A 0 A_SpawnItemEx("DynamoM2Orb1b",50,0,30,0,0,0,1*120)
TNT1 A 0 A_SpawnItemEx("DynamoM2Orb1c",50,0,30,0,0,0,2*120)
TNT1 A 0 A_PlaySoundEx("weapon/dynamoalt","Weapon")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("DynamoManCharge",35)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
stop

Pickup2:
TNT1 A 0 A_PlaySoundEx("weapon/dynamoorb","Weapon")
TNT1 A 0 A_SpawnItemEx("DynamoM2Orb2",0,0,32)
stop
}
}

actor DynamoM2Orb1a
{
PROJECTILE
Obituary "$OB_DYNAMOMAN2"
Speed 0
Height 16
Radius 16
scale 2.5
+NOCLIP
+DONTREFLECT
damage (8)
damagetype "Dynamoman"
var int user_warpAngle;
var int user_orbSpeed;
reactiontime 30
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",0)
goto loopit
loopit:
TNT1 A 0 A_SetUserVar("user_orbSpeed",14.7)
DYNL D 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL D 0 A_Countdown
DYNL D 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL D 0 A_Explode(2,16,0,0,16)
DYNL D 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL E 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL E 0 A_Countdown
DYNL E 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL E 0 A_Explode(2,16,0,0,16)
DYNL E 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL F 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL F 0 A_Countdown
DYNL F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL F 0 A_Explode(2,16,0,0,16)
DYNL F 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL G 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL G 0 A_Countdown
DYNL G 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL G 0 A_Explode(2,16,0,0,16)
DYNL G 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL H 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL H 0 A_Countdown
DYNL H 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL H 0 A_Explode(2,16,0,0,16)
DYNL H 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL I 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL I 0 A_Countdown
DYNL I 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death2")
DYNL I 0 A_Explode(2,16,0,0,16)
DYNL I 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
loop
Death:
TNT1 A 0 A_SpawnItemEx("SparkSeeker")
Death2:
TNT1 A 0
stop
}
}

actor DynamoM2Orb1b : DynamoM2Orb1a
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",120)
goto loopit
}
}

actor DynamoM2Orb1c : DynamoM2Orb1a
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",240)
goto loopit
}
}

actor SparkSeeker
{
PROJECTILE
Obituary "$OB_DYNAMOMAN2"
damagetype "Dynamoman"
speed 35
damage (10)
scale 2.5
radius 16
height 16
mass 20
+SEEKERMISSILE
+LOOKALLAROUND
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DYNL J 0 A_PlaySoundEx("weapon/dynamoseeker","Body")
DYNL J 0 A_Recoil(-mass)
DYNL JJJJ 0 A_SeekerMissile(90,90,SMF_LOOK|SMF_PRECISE,256)
loopit:
DYNL JKLMNOPQ 1
loop
}
}

actor SparkSeeker2 : SparkSeeker
{
speed 20
damage(10)
mass 15
}

actor DynamoM2Orb2 : DynamoM2Orb1a
{
-NOCLIP
damage(10)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DYNL DEFGHIDEFGHIDEFGHIJKLMNOPQ 1
DYNL Q 0 A_SpawnItemEx("SparkSeeker2")
stop
Death:
TNT1 A 0
stop
}
}

actor DynamoBoltFX : BasicClientSide
{
Translation "229:229=240:240", "210:210=204:204", "208:208=4:4"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
LBFX KLM 2
stop
}
}

actor DynamoTFHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","Body")
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_Stop
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",3)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("DynamoBoltFX",random(32,40),0,random(0,80),random(3,7),0,random(-4,4),random(0,359))
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 A_GiveInventory("BaseCustomFlag2")
TNT1 A 0 A_GiveInventory("NoPushFlag")
TNT1 A 0 A_GiveInventory("DynamoArmor")
stop
}
}

actor DynamoArmor : BasicArmorPickup
{
  armor.saveamount 46
  armor.savepercent 50
}

actor DynamoTFEndHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 ACS_ExecuteAlways(971,0,922)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",4)
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
TNT1 A 0 A_TakeInventory("NoPushFlag")
TNT1 A 0 A_TakeInventory("BasicArmor",999)
stop
}
}

actor MMBVanishFX : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
B3XP ABCDEF 2
stop
}
}

actor DynamoUltOrb1a : DynamoM2Orb1a
{
Obituary "$OB_DYNAMOMAN3"
damagetype "DynamoUltStun"
reactiontime 52
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",0)
goto loopit
loopit:
TNT1 A 0 A_SetUserVar("user_orbSpeed",14.7)
DYNL A 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL A 0 A_Countdown
DYNL A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
DYNL A 0 A_Explode(2,16,0,0,16)
DYNL A 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL B 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL B 0 A_Countdown
DYNL B 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
DYNL B 0 A_Explode(2,16,0,0,16)
DYNL B 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
DYNL C 0 A_SetUserVar("user_warpAngle",user_warpAngle+user_orbSpeed)
DYNL C 0 A_Countdown
DYNL C 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
DYNL C 0 A_Explode(2,16,0,0,16)
DYNL C 1 A_Warp(AAPTR_TARGET,50,0,30,user_warpAngle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
loop
Death:
TNT1 A 0
stop
}
}

actor DynamoUltOrb1b : DynamoUltOrb1a
{
reactiontime 58
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",90)
goto loopit
}
}

actor DynamoUltOrb1c : DynamoUltOrb1a
{
reactiontime 64
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",180)
goto loopit
}
}

actor DynamoUltOrb1d : DynamoUltOrb1a
{
reactiontime 70
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_SetUserVar("user_warpAngle",270)
goto loopit
}
}

actor DynamoUltOrb2 : DynamoUltOrb1a
{
-NOCLIP
+RIPPER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DYNL ABCABCABCABCABCABCABCABC 1
stop
}
}

actor DynamoUltCooldown : UltBuildCooldownGiver
{
Powerup.Duration 140
}

actor DynamoUltHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_PlaySoundEx("weapon/lightningbold","Weapon")
TNT1 A 0 A_GiveInventory("DynamoUltCooldown",1)
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_TakeInventory("MediumUltimateAmmo",75)
TNT1 A 0 A_FireCustomMissile("DynamoBoltStart",0,0,0,8)
stop
}
}

actor DynamoBoltStart : FastProjectile
{
PROJECTILE
radius 8
height 8
+THRUACTORS
+SKYEXPLODE
+DONTBLAST
+DONTREFLECT
speed 1000
States
{
Spawn:
TNT1 A 1
loop
Death:
TNT1 A 0 A_SpawnItemEx("DynamoBolt2")
TNT1 AAAAAAA 0 A_SpawnItemEx("DynamoBolt2",random(-300,300),random(-300,300),0)
TNT1 A 2 A_PlaySoundEx("weapon/lightningbolt","Body")
stop
}
}

actor DynamoBolt1
{
translation "229:229=240:240", "210:210=204:204", "208:208=4:4"
PROJECTILE
scale 2.5
+DONTBLAST
+PIERCEARMOR
+THRUACTORS
+NOEXPLODEFLOOR
+DONTREFLECT
Speed 0
Radius 1
Height 1//00
Damage (0)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DYNL RSTURSTU 1 A_SpawnItemEx("DynamoBoltDamager")
stop
}
}

actor DynamoBolt2 : DynamoBolt1
{
+FLOORHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 A 0 A_PlaySoundEx("weapon/lightningbold2","Auto")
DYNL A 0 A_SpawnItemEx("DynamoBoltDamager")
DYNL R 1 A_SpawnItemEx("DynamoBoltExtend", 0, 0, 387, 0, 0, 0, 0, 1)
DYNL STURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTU 1 A_SpawnItemEx("DynamoBoltDamager")
TNT1 AAAAAAAA 0 A_SpawnItemEx("DynamoBoltFX",random(-6,6),random(-6,6),random(0,387),random(-5,5),random(-5,5),random(-5,5),0,1)
stop
}
}

actor DynamoBoltDamager
{
Obituary "$OB_DYNAMOMAN3"
PROJECTILE
damagetype "DynamoShockerUlt"
+DONTBLAST
+PIERCEARMOR
+NOEXPLODEFLOOR
+DONTREFLECT
Radius 20
height 155
Damage (10)
States
{
Spawn:
TNT1 A 1
stop
}
}

Actor DynamoBoltExtend : DynamoBolt2
{
-FLOORHUGGER
+CLIENTSIDEONLY
+NOINTERACTION
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
TNT1 A 0 A_JumpIf(ceilingz-z <= 32, "Death")
TNT1 A 0 A_SpawnItemEx("DynamoBoltExtend", 0, 0, 387, 0, 0, 0, 0, 1)
DYNL RSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTURSTU 1
TNT1 AAAAAAAA 0 A_SpawnItemEx("DynamoBoltFX",random(-6,6),random(-6,6),random(0,387),random(-5,5),random(-5,5),random(-5,5),0,1)
stop
Death:
TNT1 A 0 
stop
}
}

actor ShockFXDynamo : ShockFX
{
+NOINTERACTION
-SOLID
+NOGRAVITY
+CLIENTSIDEONLY
reactiontime 53
Scale 2.5
States
{
Spawn:
TNT1 A 0
SPAS F 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
SPAG F 0 A_Countdown
SPAS FFGG 1 A_Warp(AAPTR_TARGET, 0.0,0.0,32.0,0.0,WARPF_NOCHECKPOSITION)
loop
Death:
TNT1 A 0
stop
}
}

actor DynamoLeapHitbox : BasicExplosion
{
damagetype "DynamoM2Stun"
Obituary "$OB_DYNAMOMAN2"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(4,40,0,0,40)
stop
}
}

actor DynamoM2StunProtect : PowerProtection
{
Powerup.Duration 30
DamageFactor "DynamoM2Stun", 0.0
}