actor LightningBoltBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_BA"
dropitem "DynamoTendrilWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 240
Weapon.AmmoGive2 0
Inventory.Pickupmessage "You get an incurable electricity leak :/"
Obituary "$OB_DYNAMODISH"//$OB_LIGHTNINGBOLT
weapon.ammotype "TeslaCoilAmmo"
weapon.ammotype2 "DynamoHealAmmo"
+WEAPON.NOAUTOAIM
States
{
Spawn:
C_0B A 1
loop
Ready:
DYHD A 0 ACS_ExecuteAlways(998,0,DYE_DYNAMOMAN)
DYHD A 0 A_GunFlash("Flash",1)
goto Ready1
Ready1:
DYHD A 0 A_JumpIfInventory("DynamoCoolDownFlag",1,1)
DYHD A 0 A_JumpIfInventory("DynamoHealAmmo",1,"Ready1Heal")
DYHD A 2 A_WeaponReady
DYHD A 0 //A_GiveInventory("TeslaCoilAmmo",2)
//DYHD A 0 A_GiveInventory("DynamoARGS_PG2",1)
loop
Ready1Heal:
DYHD A 2 A_WeaponReady(WRF_ALLOWRELOAD)
DYHD A 0 //A_GiveInventory("TeslaCoilAmmo",2)
//DYHD A 0 A_GiveInventory("DynamoARGS_PG2",1)
goto Ready1
Deselect:
DYHD AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
DYHD A 1 A_Lower
Loop
Select:
DYHD AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
DYHD A 1 A_Raise
Loop

Fire:
DYHD A 0 A_JumpIfInventory("DynamoItemFlag",1,"EndCharge")
DYHD A 0 A_JumpIfInventory("IsBot",1,"BotFire")
DYHD A 0 A_GiveInventory("DynamoCoolDownFlag",1)
DYHD A 0 A_GiveInventory("DynamoIsScanning",1)
DYHD A 0 A_SpawnItemEx("DynamoM_TaggerTracker_H")
DYHD A 0 A_GiveInventory("VivifyDelay5",1)
DYHD A 0 A_Refire(1)
DYHD F 2 A_GunFlash("Flash.ChargeSnd",1)
DYHD G 2
DYHD G 0 A_SpawnItemEx("DynamoM_ScannerWarp",0,0,0,0,0,0,0,1)
//TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,7.5,1)//75% jumpz
DYHD G 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,2)//50% speed
DYHD G 0 A_JumpIfInventory("IsBot",1,"BotFire2")

FireHold:
DYHD G 0 A_JumpIfInventory("TeslaCoilAmmo",144,"FireHold2")
DYHD G 1 A_GiveInventory("TeslaCoilAmmo",6+CallACS("cbm_CheckForRage",0)*3)
DYHD G 0 A_Refire("FireHold")
goto FireLightning
FireHold2:
DYHD G 0 A_GiveInventory("TeslaCoilAmmo",6+CallACS("cbm_CheckForRage",0)*3)
DYHD A 0 A_GiveInventory("DynamoStaminaTaker_P")
DYHD G 1 A_WeaponReady(WRF_NOPRIMARY|WRF_NOSWITCH)
DYHD G 0 A_JumpIfInventory("DynamoStaminaFlag",1,1)
goto FireLightning
DYHD G 0 A_Refire("FireHold2")
FireLightning:
DYHD G 0 A_GunFlash("Flash.Lightning",1)
DYHD HIHIJ 2 A_GiveInventory("DynamoM_TagEnd_F")
DYHD G 0 A_GiveInventory("DynamomanMain2_CI",1)//A_FireCustomMissile("DynamoM_LBoltThrow",0,0,8,0)
DYHD A 0 A_GiveInventory("DynamoStaminaFlag",500)
DYHD G 0 ACS_NamedExecuteAlways("cbm_DynamoScannerMissile",0,1)//Fire the target LightningBolts
DYHD G 0 A_TakeInventory("DynamoIsScanning",99)
DYHD KGGF 2
//TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)//100% jumpz
DYHD A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)//Normal speed
DYHD AAAAAAAA 2 //A_GiveInventory("DynamoStaminaFlag",31)
DYHD A 0 A_TakeInventory("DynamoCoolDownFlag",99)
goto Ready1

Flash:
TNT1 A 8 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 AAAAAA 8
TNT1 A 8 //A_GiveInventory("DynamoHealAmmo",1)
loop
Flash.ChargeSnd:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 74 A_PlaySoundEx("weapon/dynamocharge","Weapon")
TNT1 A 0 //A_GiveInventory("DynamoHealAmmo",1)
loop

Flash.Lightning:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 0 A_PlaySoundEx("weapon/dynamoorbs","Weapon")
TNT1 A 2 A_SpawnItemEx("DynamoM_RisingOrbBall",4,0,32,0,0,28,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/dynamoorbs","Weapon")
TNT1 A 2 A_SpawnItemEx("DynamoM_RisingOrbBall",4,0,32,0,0,28,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/dynamoorbs","Weapon")
TNT1 A 2 A_SpawnItemEx("DynamoM_RisingOrbBall",4,0,32,0,0,28,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/lightningbolt","Weapon")
TNT1 A 2 A_SpawnItemEx("DynamoM_LBoltStartFX1",4,0,48,0,0,0,0,1)
TNT1 A 2 A_SpawnItemEx("DynamoM_LBoltStartFX2",4,0,48,0,0,0,0,1)
goto Flash+1

AltFire:
DYHD A 0 A_JumpIfInventory("DynamoItemFlag",1,"EndCharge")
DYHD A 0 A_JumpIfInventory("DynamoIsScanning",1,"AltfireOrb")
DYHD A 0 A_GiveInventory("DynamoCoolDownFlag",1)
DYHD A 0 A_PlaySoundEx("weapon/magnetmissile","Weapon")
DYHD A 0 A_GiveInventory("DynamomanAlt2_CI",1)
DYHD B 3 //A_GiveInventory("TeslaCoilAmmo",21)
DYHD B 3 Offset(4,36)
DYHD D 6 A_WeaponReady(14)
DYHD E 6
DYHD A 10
DYHD A 0 A_TakeInventory("DynamoCoolDownFlag",99)
Goto Ready1
AltfireOrb:
DYHD G 0 A_GunFlash("Flash",1)
DYHD G 0 A_GiveInventory("DynamoM_TagEnd_F")
DYHD G 0 A_TakeInventory("DynamoIsScanning",99)
//DYHD G 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)//100% jumpz
DYHD G 1 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)//Normal speed
goto OrbFireTime
OrbFireTime:
DYHD G 0 A_PlaySoundEx("weapon/dynamoorbs","Weapon")
DYHD G 0 A_GiveInventory("DynamomanAlt1_CI",1)
DYHD G 8 A_TakeInventory("TeslaCoilAmmo",144)
DYHD G 0 A_JumpIfInventory("TeslaCoilAmmo",144,"OrbFireTime")
goto AltfireOrbE
AltfireOrbE:
DYHD GF 2
DYHD A 2
DYHD A 4
DYHD AAAAAAA 2 A_GiveInventory("DynamoStaminaFlag",31)
DYHD A 0 A_GiveInventory("DynamoStaminaFlag",500)
DYHD A 0 A_TakeInventory("DynamoCoolDownFlag",99)
goto Ready1

Reload:
TNT1 A 0 A_PlaySoundEX("item/ItemUseMM9","SoundSlot6")
TNT1 A 0 A_JumpIfInventory("DynamoCoolDownFlag",1,"Ready1")
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,"EndCharge")
ItemRecharge:
DYHD A 0 A_GiveInventory("DynamoHealingWeakness",1)
DYHD A 0 A_GiveInventory("GuardDownFlag",1)
DYHD A 0 A_GiveInventory("StunArmor",1)
DYHD A 0 A_GiveInventory("DynamoCoolDownFlag",1)
TNT1 A 0 A_GiveInventory("DynamoItemFlag",1)
DYHD A 0 A_JumpIfInventory("FlightDisableFlag",1,2)
//DYHD A 0 A_ScaleVelocity(0.5)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,3,8)
DYHD A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
DYHD A 0 A_SpawnItemEx("DynaHealSoundFX")
DYHD A 0 A_GiveInventory("DynamomanOther2_CI")
DYHD A 2 Offset(0,42)
DYHD A 2 Offset(0,54)
DYHD A 2 Offset(0,66)
DYHD A 2 Offset(0,78)
DYHD A 2 Offset(0,90)
TNT1 A 1 A_GiveInventory("DynamoIsCharging",1)
TNT1 A 0 A_TakeInventory("DynamoCoolDownFlag",99)
TNT1 A 0 A_SpawnItemEx("DynaHealSoundFX2")
Recharging:
TNT1 A 0 
TNT1 A 2 A_WeaponReady(WRF_NOSWITCH|WRF_NOBOB|WRF_ALLOWRELOAD)
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,3)
TNT1 A 1 A_WeaponReady(WRF_NOSWITCH|WRF_NOBOB|WRF_ALLOWRELOAD)
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
//TNT1 A 0 HealThing(10)
TNT1 A 0 A_GiveInventory("DynamoM_Healing_P",1)
//TNT1 A 0 A_TakeInventory("DynamoHealAmmo",1)
TNT1 A 0 //A_JumpIf(Health>=100,"EndCharge")
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
TNT1 A 0 A_JumpIfInventory("DynamoHealAmmo",1,1)
goto EndCharge
TNT1 A 0 
TNT1 A 2 A_WeaponReady(WRF_NOSWITCH|WRF_NOBOB|WRF_ALLOWRELOAD)
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,3)
TNT1 A 1 A_WeaponReady(WRF_NOSWITCH|WRF_NOBOB|WRF_ALLOWRELOAD)
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
//TNT1 A 0 HealThing(10)
TNT1 A 0 A_GiveInventory("DynamoM_Healing_P",1)
//TNT1 A 0 A_TakeInventory("DynamoHealAmmo",1)
TNT1 A 0 //A_JumpIf(Health>=100,"EndCharge")
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,1)
goto EndCharge
TNT1 A 0 A_JumpIfInventory("DynamoHealAmmo",1,"Recharging")
goto EndCharge
EndCharge:
DYHD A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 A_TakeInventory("StunArmor",99)
TNT1 A 0 A_TakeInventory("DynamoHealingWeakness",99)
TNT1 A 0 A_TakeInventory("GuardDownFlag",99)

TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_Speed,1,1)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
//TNT1 A 0 A_ScaleVelocity(0.5)

TNT1 A 0 //A_PlayWeaponSound("weapon/junkshield")
TNT1 A 0 A_SpawnItemEx("DynamoM_HealingEndFX",0,0,32,0,0,0,0,1)

TNT1 A 0 A_TakeInventory("DynamoItemFlag",99)
TNT1 A 0 A_TakeInventory("DynamoIsCharging",99)

DYHD A 0 A_GiveInventory("DynamoCoolDownFlag",1)
DYHD A 2 Offset(0,90)
DYHD A 2 Offset(0,78)
DYHD A 2 Offset(0,66)
DYHD A 2 Offset(0,54)
DYHD A 2 Offset(0,42)
DYHD A 6

DYHD A 0 A_TakeInventory("DynamoCoolDownFlag",99)
goto Ready1

BotFire:
TNT1 A 0 A_Jump(128,"AltFire")
goto Fire+2
BotFire2:
DYHD G 0 A_Jump(5,"FireLightning","AltfireOrb")
DYHD G 1 A_GiveInventory("TeslaCoilAmmo",4+CallACS("cbm_CheckForRage",0)*4)
DYHD G 0 A_TakeInventory("DynamoStaminaFlag",2)
DYHD G 0 A_JumpIfInventory("DynamoStaminaFlag",1,1)
goto FireLightning
DYHD G 0 A_ReFire("BotFire2")
goto FireLightning
}
}

actor TeslaCoilAmmo : Ammo
{
Inventory.Amount 1
Inventory.MaxAmount 720
+INVENTORY.IGNORESKILL
}

actor DynamoHealAmmo : Ammo
{
Inventory.Amount 1
Inventory.MaxAmount 50
+INVENTORY.IGNORESKILL
}

actor DynamoStaminaFlag : Inventory
{
inventory.amount 1
inventory.maxamount 500
}

actor DynamoIsScanning :OnceC{}
actor DynamoItemFlag :OnceC{}
actor DynamoCoolDownFlag :OnceC{}
actor DynamoIsCharging :OnceC{}

actor DynamoM_TagEnd_F : Powerup
{
Powerup.Duration 8
}

actor DynamoHealingWeakness : BasePowerWeak
{
Powerup.Duration 0x7FFFFFFF
DamageFactor "Normal", 1.25
}

actor DynaTagCooldown : Powerup
{
Powerup.Duration 18
}

actor DynamoRecharger : BasicClassItem
{
inventory.icon "DYNCSI"
inventory.pickupmessage "Batteries not included."
Tag "Dynamo Recharger Trigger"
states
{
Spawn:
DYPJ [ 1
loop
Use:
TNT1 A 0 A_JumpIfInventory("DynamoCoolDownFlag",1,"No")
TNT1 A 0 //A_JumpIfHealthLower(1000,"Use1")
TNT1 A 0 A_JumpIfInventory("DynamoHealAmmo",1,"Use2")
fail
Use1:
TNT1 A 0 A_JumpIfInventory("DynamoHealAmmo",1,"Use2")
fail
Use2:
TNT1 A 0 A_PlaySoundEX("item/ItemUseMM9","SoundSlot7")
TNT1 A 0 A_JumpIfInventory("DynamoIsCharging",1,"Use4")
TNT1 A 0 A_JumpIfInventory("DynamoHealAmmo",1,"Use3")
TNT1 A 0
fail
Use3:
TNT1 A 0 A_GiveInventory("DynamoItemFlag",1)
fail
Use4:
TNT1 A 0 A_TakeInventory("DynamoIsCharging",99)
TNT1 A 0 A_TakeInventory("DynamoItemFlag",99)
fail
}
}

actor DynamoStaminaTaker_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("TeslaCoilAmmo",720,"Take")
stop
Take:
DYHD G 0 A_TakeInventory("DynamoStaminaFlag",2)
stop
}
}

actor DynaHealSoundFX : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_PlaySound("weapon/timestopper",4,1.0)
stop
}
}

actor DynaHealSoundFX2 : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_GiveToTarget("DynaChargeSndPickup")
TNT1 A 0 A_JumpIfInTargetInventory("IsDead",1,"Death")
TNT1 A 1 A_JumpIfInTargetInventory("DynamoIsCharging",1,"Spawn")
stop
}
}

actor DynaChargeSndPickup : CustomInventory
{
States
{
Pickup:
TNT1 A 1 A_PlaySound("weapon/thunderbolt",4,1.0)
stop
}
}

actor DynamoM_Healing_P : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_GiveInventory("CBM_HealThing10_P")
TNT1 A 0 A_TakeInventory("DynamoHealAmmo",1,1)
TNT1 AAA 0 A_SpawnItemEx("DynamoM_HealFX",random(24,240),0,random(-64,16)+28,0,0,random(4,5),random(0,359),1)
TNT1 A 0 A_GiveInventory("DynamoM_HealDischarge_CI")//A_RadiusGive("DynamoM_HealDischarge_P",240,2)//RGF_PLAYERS = 2|RGF_NOTARGET = 64
stop
}
}

//whichever sick freak let Dynamo heal enemies in core should report to greg to get stomped at third strike

actor DynamoM_HealDischarge_X : CustomInventory
{
	States
	{
		Pickup2:
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,0)==2,"No")
		TNT1 A 0 A_JumpIf(!(health>0),"No")
		TNT1 A 0 HealThing(1)
		stop
		Pickup3:
		TNT1 A 0 A_JumpIf(!(health>0),"No")
		TNT1 A 0 HealThing(1)
		stop
		No:
		TNT1 A 1
		stop
	}
}

actor DynamoM_HealDischarge_B : DynamoM_HealDischarge_X{States{Pickup:TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_getplayerteam",-1)==0,"Pickup3")stop}}
actor DynamoM_HealDischarge_R : DynamoM_HealDischarge_X{States{Pickup:TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_getplayerteam",-1)==1,"Pickup3")stop}}
actor DynamoM_HealDischarge_O : DynamoM_HealDischarge_X{States{Pickup:TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_getplayerteam",-1)==2,"Pickup3")stop}}
actor DynamoM_HealDischarge_P : DynamoM_HealDischarge_X{States{Pickup:TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_getplayerteam",-1)==3,"Pickup3")stop}}

actor DynamoM_HealFX : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(64,"Spawn3")
TNT1 A 0 A_Jump(128,"Spawn2")
goto Spawn1
Spawn1:
X_0C AAABBB 1 A_FadeOut(0.05)
loop
Spawn2:
X_0C CCCDDD 1 A_FadeOut(0.05)
loop
Spawn3:
X_0C EEEFFF 1 A_FadeOut(0.05)
loop
}
}

actor DynamoM_HealingStartFX : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_PlaySound("weapon/timestopper",4,1.0)
stop
}
}

actor DynamoM_HealingEndFX : BasicExplosion
{
Scale 3.5
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("BasicBoom5FX_Y",0,0,0,0,0,0,0,1+32+16384)
stop
}
}

actor DynamoM_TaggerTracker_H : BasicHelper
{
var int user_Tagged[63];
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(0,ACS_ExecuteWithResult(257,0)*-1)
TNT1 A 0 Thing_Remove(-2100+Args[0])
TNT1 A 0 Thing_ChangeTID(0,-2100+Args[0])
SpawnL:
TNT1 A 2 ACS_NamedExecuteAlways("cbm_DynamoScannerCheck",0)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
//TNT1 A 0 A_JumpIfInTargetInventory("DynamoIsScanning",1,"SpawnL")
TNT1 A 0 A_JumpIfInTargetInventory("DynamoM_TagEnd_F",1,"SpawnL2")
loop
SpawnL2:
TNT1 A 10 ACS_NamedExecuteAlways("cbm_DynamoScannerCheck",0)
TNT1 A 2
TNT1 A 70//Delay for online??
stop
Death:
TNT1 A 4
stop
}
}

//TNT1 A 0 A_SpawnItemEx("LightningOrbTracer",0,0,0,(args[2]/62 + 1)*66,0,0,ACS_ExecuteWithResult(C_GET_USER_VAR,WEPANGLE_NUM)-angle+ACS_ExecuteWithResult(C_GET_USER_VAR,WEPANGLE2_NUM),1)
//TNT1 A 0 A_SpawnItemEx("LightningOrbTracer2",0,0,0,(args[2]/62 + 1)*33,0,0,ACS_ExecuteWithResult(C_GET_USER_VAR,WEPANGLE_NUM)-angle-ACS_ExecuteWithResult(C_GET_USER_VAR,WEPANGLE2_NUM)-4,1)
Const Int DYN_ScannerRange = 50;

actor DynamoM_ScannerWarp : BasicHelper
{
+NOTIMEFREEZE
Radius 16
states
{
Spawn:
TNT1 A 0
//TNT1 A 0 A_SetArg(2,Args[2]+8)
TNT1 A 0 A_Warp(2,0,0,0,7+CallACS("cbm_CheckForRage",2)*2,4+8+256)

TNT1 A 0 A_SpawnItemEx("DynamoM_RealScanner",0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange,0,0,angle,5)
TNT1 A 0 A_SpawnItemEx("DynamoM_RealScanner",0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange,0,0,angle+120,5)
TNT1 A 0 A_SpawnItemEx("DynamoM_RealScanner",0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange,0,0,angle+240,5)

TNT1 A 0 A_SpawnItemEx("DynamoM_ScannerLineStartFX",0,0,0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange/33,angle,5)
TNT1 A 0 A_SpawnItemEx("DynamoM_ScannerLineStartFX",0,0,0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange/33,angle+120,5)
TNT1 A 0 A_SpawnItemEx("DynamoM_ScannerLineStartFX",0,0,0,0,0,(CallACS("cbm_countinv_acs",802,2)/100 + 1)*DYN_ScannerRange/33,angle+240,5)

TNT1 A 1
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
TNT1 A 0 A_JumpIfInTargetInventory("DynamoM_TagEnd_F",1,"Death")
loop
}
}

actor DynamoM_ScannerLineFX
{
+MISSILE
+NOBLOCKMAP
+NOGRAVITY
+NOTIMEFREEZE
+DONTSPLASH
+NOEXPLODEFLOOR
//+NOCLIP
+FORCEXYBILLBOARD
+THRUGHOST
+THRUACTORS//Can hit user
+FLOORHUGGER
+DONTBLAST
+DONTREFLECT
+CLIENTSIDEONLY
RenderStyle None
ReactionTime 1
Damage (0)
Radius 16
Height 48
Speed 100
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetPitch(pitch+1)
TNT1 A 0 A_JumpIf(pitch>=(Args[0]*2),2)//Death
TNT1 A 0 A_SpawnItemEx("DynamoM_ScannerLineFX",16,0,0,0,0,0,0,1+32+512+32768)
TNT1 A 0 A_SpawnItemEx("DynamoM_ScannerFX",0,0,z-floorz,0,0,0,0,1+32)
TNT1 A 1
stop
Death:
TNT1 A 0
TNT1 A 1 //A_SpawnItemEx("DynamoM_ScannerEndFX",0,0,12,0,0,0,0,1)
stop
}
}

actor DynamoM_ScannerLineStartFX : BasicHelper//DynamoM_ScannerLineFX
{
//+THRUACTORS
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(0,momz)
TNT1 A 2 A_SpawnItemEx("DynamoM_ScannerLineFX",40,0,0,0,0,0,0,1+32+32768)
stop
}
}

actor DynamoM_ScannerFX : BasicClientSide
{
+NOTIMEFREEZE
+FORCEXYBILLBOARD
+BRIGHT
RenderStyle translucent
Alpha 0.90
States
{
Spawn://Elecman sprites
ELEA K 0
ELEA K 0 A_Jump(256,1,2,3,4,5,6,7,8,9)
ELEA K 1
stop
ELEA L 1
stop
ELEA M 1
stop
ELEA N 1
stop
ELEA O 1
stop
ELEA P 1
stop
ELEA Q 1
stop
ELEA R 1
stop
ELEA S 1
stop
}
}

actor DynamoM_ScannerEndFX : BasicClientSide
{
+FORCEYBILLBOARD
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
TNT1 A 0
//TNT1 A 1
TNT1 A 0 A_Jump(256,1,2,3,4,5,6,7,8)
DYPJ D 1
stop
DYPJ E 1
stop
DYPJ F 1
stop
DYPJ G 1
stop
DYPJ H 1
stop
DYPJ I 1
stop
DYPJ J 1
stop
DYPJ K 1
stop
}
}

actor DynamoM_RealScanner// : FastProjectile
{
PROJECTILE
Obituary "$OB_DYNAMOSCAN"
damagetype "DynamoM_Tag"
+DONTSPLASH
+NOTIMEFREEZE
+NOEXPLODEFLOOR
//+NOCLIP
+FORCEXYBILLBOARD
+THRUGHOST
+FLOORHUGGER
+DONTBLAST
+DONTREFLECT
//+NONETID
+HITTRACER
+SERVERSIDEONLY
RenderStyle None
ReactionTime 1
Damage (0)//1
Radius 16
Height 48//96
Speed 300
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 1 A_CountDown
wait

XDeathFX:
TNT1 A 0 A_GiveInventory("DynaTagCooldown",1,8)
TNT1 A 0 A_PlaySoundEx("classes/DynamoTag","Voice")
goto Death
XDeath:
TNT1 A 0 A_JumpIfInventory("DynaTagCooldown",1,"Death",8)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_DynamoScannerHit")==1, "XDeathFX")
Death://cbm_DynamoScannerLineFX//cbm_drawdynamotrail
TNT1 A 0 //ACS_NamedExecuteAlways("cbm_DynamoScannerLineFX", 0, ACS_NAmedExecuteWithResult("core_gettarget"), ACS_ExecuteWithResult(143,0))
TNT1 A 0 //A_SpawnItemEx("DynamoM_ScannerEndFX",0,0,16,0,0,0,0,1)
TNT1 A 3 A_SpawnItemEx("DynamoM_RealScannerFX",0,0,0,0,0,0,0,1+32)
stop
}
}
actor DynamoM_RealScannerFX : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_SpawnItemEx("DynamoM_ScannerEndFX",0,0,16,0,0,0,0,1)
stop
}
}

actor DynamoM_ScannerKiller_H : BasicHelper
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 Thing_Move(0,angle*256/360+1000,1)
TNT1 A 1 A_SpawnItemEx("DynamoM_ScannerKiller",0,0,20)
stop
}
}

actor DynamoM_ScannerKiller
{
PROJECTILE
Obituary "$OB_DYNAMOSCAN"
damagetype "DynamoM_Tag"
+DONTREFLECT
+DONTBLAST
RenderStyle None
damage (10)
speed 1
States
{
Spawn:
TNT1 A 1
stop
}
}

actor DynamoM_ScannerLBolt//Spawned via ACS
{
translation "202:202=96:96", "199:199=240:240"
PROJECTILE
+DONTSPLASH
+NOEXPLODEFLOOR
//+FLOORHUGGER
+NOCLIP
+DONTBLAST
+DONTREFLECT
+THRUGHOST
+THRUACTORS
RenderStyle None
ReactionTime 1
Damage (0)
Speed 1
Radius 12//16
Height 16//56
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(2,momz*8)//Player Num 1 to 64
TNT1 A 0 A_SetArg(1,angle*256/360-1)//Power
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOCLIP",0)
TNT1 A 0 A_ChangeFlag("FLOORHUGGER",1)
//Move actor at high speeds to Target Player
TNT1 AAAA 1 ACS_NamedExecuteAlways("cbm_DynamoScannerMissile",0,0,Args[2]+1000)
TNT1 A 1 A_CountDown
wait

Death:
TNT1 A 0 //A_Log("DynamoM_ScannerLBolt IS DEAD!")
Crash:
XDeath:
TNT1 A 0
TNT1 A 0 A_SetArg(3,ACS_ExecuteWithResult(C_FETCH_TEAM,2)+100)
TNT1 A 0 A_JumpIf(Args[3]==100,"Death_B")
TNT1 A 0 A_JumpIf(Args[3]==101,"Death_R")
TNT1 A 0 A_JumpIf(Args[3]==102,"Death_O")
TNT1 A 0 A_JumpIf(Args[3]==103,"Death_P")
TNT1 A 0 A_SpawnItemEx("DynamoM_SuperbLBolt",0,0,0,0,0,0,0,32768)//512
stop
NoDeath:
TNT1 A 0
stop

Death_B:
TNT1 A 0 A_SpawnItemEx("DynamoM_SuperbLBoltB",0,0,0,0,0,0,0,32768)
stop
Death_R:
TNT1 A 0 A_SpawnItemEx("DynamoM_SuperbLBoltR",0,0,0,0,0,0,0,32768)
stop
Death_O:
TNT1 A 0 A_SpawnItemEx("DynamoM_SuperbLBoltO",0,0,0,0,0,0,0,32768)
stop
Death_P:
TNT1 A 0 A_SpawnItemEx("DynamoM_SuperbLBoltP",0,0,0,0,0,0,0,32768)
stop
}
}

actor DynamoM_HomingOrb
{
translation "202:202=96:96", "199:199=240:240"
PROJECTILE
damagetype "DynamoM_Orb"
Obituary "$OB_LIGHTNINGORB"
+DONTSEEKINVISIBLE
+SEEKERMISSILE
reactiontime 11
+FORCEXYBILLBOARD
+BRIGHT
damage (10)
Radius 8
Height 8
speed 24
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
TNT1 A 0 A_ScaleVelocity(0.5)
DYPJ MNOPQMNOPQMNOPQMNOPQMNOPQMNOPQMNOPQ 1 
TNT1 A 0 A_ScaleVelocity(2)
SpawnLOOP:
DYPJ DEFGHIJK 2 A_SeekerMissile(1,7,3,50,5)
DYPJ A 0 A_CountDown
loop
Death:
DYPJ LMNOPQ 2 A_FadeOut(0.15)
stop
}
}

actor DynamoM_HomingOrbB:DynamoM_HomingOrb{translation"202:202=205:205","199:199=74:74"}
actor DynamoM_HomingOrbR:DynamoM_HomingOrb{translation"202:202=171:171","199:199=41:41"}
actor DynamoM_HomingOrbO:DynamoM_HomingOrb{translation"202:202=104:104","199:199=128:128"}
actor DynamoM_HomingOrbP:DynamoM_HomingOrb{translation"202:202=229:229","199:199=232:232"}

actor DynamoM_RisingOrbBall
{
PROJECTILE
damagetype "DynamoM_Orb"
Obituary "%o learned that %k's balls are inert."
+DONTREFLECT
+FORCEXYBILLBOARD
+BRIGHT
reactiontime 2
damage (10)
Radius 8
Height 8
speed 0
scale 2.5
States
{
Spawn:
DYPJ DEFGHIJK 2
DYPJ A 0 A_CountDown
loop
Death:
TNT1 A 0
TNT1 A 0 A_Jump(256,1,2,3,4,5,6)
DYPJ LMNOPQLMNOPQ 2 A_FadeOut(0.2)
stop
}
}


actor DynamoM_LBoltThrow : FastProjectile
{
PROJECTILE
damagetype "DynamoM_Orb"
+RIPPER
+FORCEXYBILLBOARD
+BRIGHT
renderstyle translucent
alpha 0.8
reactiontime 20
damage (0)
Radius 8
Height 8
speed 96
scale 1.5
States
{
Spawn:
DYPJ DEFGHIJK 3
DYPJ D 0 A_CountDown
loop
Death:
TNT1 A 1 A_SpawnItemEx("DynamoM_LBoltSpawner",0,0,0,0,0,0,0,1)
stop
}
}

actor DynamoM_LBoltSpawner : BasicHelper
{
translation "202:202=96:96", "199:199=240:240"
ReactionTime 12
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(2,60-CallACS("cbm_CheckForSpread",2)*40)
goto SpawnFire
SpawnFire:
TNT1 A 1 A_SpawnItemEx("DynamoM_LBoltTracer1",cos(-pitch)*4,8,28+(sin(-pitch)*4),cos(-pitch)*60,0,sin(-pitch)*60,(12-ReactionTime)*30,33,0)
TNT1 A 0 A_SpawnItemEx("DynamoM_LBoltTracer2",cos(-pitch)*4,8,28+(sin(-pitch)*4),cos(-pitch)*60,0,sin(-pitch)*60,345-(12-ReactionTime)*30,33,0)
TNT1 A 0 A_TakeFromTarget("TeslaCoilAmmo",Args[2],1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIfInTargetInventory("TeslaCoilAmmo",1,"SpawnFire")
TNT1 A 0
stop
}
}

actor DynamoM_LBoltSpawnerB:DynamoM_LBoltSpawner{translation"202:202=205:205","199:199=74:74"}
actor DynamoM_LBoltSpawnerR:DynamoM_LBoltSpawner{translation"202:202=171:171","199:199=41:41"}
actor DynamoM_LBoltSpawnerO:DynamoM_LBoltSpawner{translation"202:202=104:104","199:199=128:128"}
actor DynamoM_LBoltSpawnerP:DynamoM_LBoltSpawner{translation"202:202=229:229","199:199=232:232"}

actor DynamoM_LBoltStartFX1 : BasicClientSide
{
+FORCEYBILLBOARD
+BRIGHT
States
{
Spawn:
Y_BC BCD 3
stop
}
}

actor DynamoM_LBoltStartFX2 : BasicClientSide
{
+BRIGHT
States
{
Spawn:
Y_BC EFGHIJ 3
stop
}
}

actor DynamoM_LBoltTracer1
{
PROJECTILE
+DONTSPLASH
+NOEXPLODEFLOOR
+NOCLIP
+DONTBLAST
+FLOORHUGGER
Damage (0)
Speed 60
Radius 16
Height 96
Scale 2.5
states
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_ChangeFlag("FLOORHUGGER",1)
TNT1 A 8 A_Changeflag("NOCLIP",0)
Goto XDeath
Death:
TNT1 A 0
stop
Crash:
XDeath:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DynamoM_LBolt",0,0,0,0,0,0,0,1)
stop
}
}

actor DynamoM_LBoltTracer2 : DynamoM_LBoltTracer1
{
states
{
Spawn:
TNT1 A 0
TNT1 A 0 //A_ChangeFlag("FLOORHUGGER",1)
TNT1 A 4 A_Changeflag("NOCLIP",0)
Goto XDeath
}
}

actor DynamoM_LBolt
{
PROJECTILE
DamageType "DynamoM_Bolt"
Obituary "$OB_LIGHTNINGBOLT"
+THRUACTORS
+NOEXPLODEFLOOR
+FORCEYBILLBOARD
+FLOORHUGGER
+DONTBLAST
+BRIGHT
ReactionTime 1
Damage (0)
height 32
radius 16
scale 2.5
states
{
Spawn:
Y_BC N 0
Y_BC N 1 A_SpawnItemEx("DynamoM_LightningFX",0,0,355,0,0,0,0,1)
Y_BC N 0 A_PlaySoundEx("weapon/lightningbolt","Weapon")
Y_BC N 0 A_Explode(10,128,0,0,8)
goto Spawn3
Spawn3:
Y_BC O 1
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(32,96),Random(32,96),32,0,0,0,0,1)
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(-32,-96),Random(-32,-96),64,0,0,0,0,1)
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(32,96),Random(32,96),96,0,0,0,0,1)
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(-32,-96),Random(-32,-96),128,0,0,0,0,1)
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(32,96),Random(32,96),160,0,0,0,0,1)
Y_BC P 0 A_SpawnItemEx("DynamoM_LBoltSpasmFX",Random(-32,-96),Random(-32,-96),192,0,0,0,0,1)
Y_BC PQR 1
stop
//Y_BC O 0 A_CountDown
//Y_BC N 1 A_SpawnItemEx("DynamoM_LightningFX",0,0,355,0,0,0,0,1)
//goto Spawn+3
}
}

actor DynamoM_LBoltSpasmFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
Y_BC K 0
Y_BC K 0 A_ChangeVelocity(Random(-2,2),Random(-2,2),Random(-2,2),CVF_REPLACE)
Y_BC KLM 1
stop
}
}

actor DynamoM_SuperbLBolt : DynamoM_LBolt
{
translation "202:202=96:96","199:199=240:240"
DamageType "DynamoM_TaggedBolt"
Obituary "$OB_LIGHTNINGBOLTB"
+OLDRADIUSDMG
+DONTREFLECT
ReactionTime 1
states
{
Spawn:
Y_BC N 0
Y_BC N 1 A_SpawnItemEx("DynamoM_LightningFX",0,0,355,0,0,0,0,1)
Y_BC N 0 A_PlaySoundEx("weapon/lightningbolt","Weapon")
Y_BC N 0 A_SpawnItemEx("DynamoM_LBoltBoutadeFX_H",0,0,0,0,0,0,random(0,40),1+32768)//512
//Damage is as follows: 150>300>450>600>650>700>750 and so on.
Y_BC N 0 A_Explode((20*(Args[1]<=0)+(Args[1]>0)*20+(Args[1]>0)*Args[1]*10)*(1+2*CallACS("cbm_CheckForSpread",2)),128+Args[1]*8,0,0,64+Args[1]*4)
Y_BC N 0 A_SpawnItemEx("DynamoM_LBoltStrikeFX",0,0,16,0,0,0,0,1)
goto Spawn3
}
}
actor DynamoM_SuperbLBoltB:DynamoM_SuperbLBolt{translation"202:202=205:205","199:199=74:74"}
actor DynamoM_SuperbLBoltR:DynamoM_SuperbLBolt{translation"202:202=171:171","199:199=41:41"}
actor DynamoM_SuperbLBoltO:DynamoM_SuperbLBolt{translation"202:202=104:104","199:199=128:128"}
actor DynamoM_SuperbLBoltP:DynamoM_SuperbLBolt{translation"202:202=229:229","199:199=232:232"}

Actor DynamoM_LightningFX : BasicClientSide
{
+FORCEYBILLBOARD
+BRIGHT
States
{
Spawn:
Y_BC S 0
Y_BC S 0 A_JumpIf(ceilingz-z <= 32,"Death")
Y_BC S 0 A_SpawnItemEx("DynamoM_LightningFX",0,0,160,0,0,0,0,1)
Y_BC SSTUV 1
stop
Death:
TNT1 A 0
stop
}
}

actor DynamoM_LBoltStrikeFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
Y_BC DEFGHIJ 2
stop
}
}

actor DynamoM_LBoltBoutadeFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
Scale 2.0
States
{
Spawn:
Y_BC K 0
Y_BC KKLLMM 1 A_ScaleVelocity(frandom(1.025,1.100))
stop
}
}

actor DynamoM_LBoltBoutadeFX_H : BasicClientSide
{
reactiontime 9
States
{
Spawn:
TNT1 A 0
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("DynamoM_LBoltBoutadeFX",random(20,40),0,random(-6,6),random(8,12),0,random(-4,4),ReactionTime*40+random(-9,9),37)
TNT1 A 0 A_JumpIf(Args[1]>1,2)//Pitch
TNT1 A 0 A_Countdown
loop
TNT1 A 0 A_SpawnItemEx("DynamoM_LBoltBoutadeFX",random(20,40),0,random(-6,6),random(8,12)+40,0,random(-4,4),ReactionTime*40+random(-9,9)+5,37)
TNT1 A 0 A_JumpIf(Args[1]>2,1)
goto Spawn+4
TNT1 A 0 A_SpawnItemEx("DynamoM_LBoltBoutadeFX",random(20,40),0,random(-6,6),random(8,12)+80,0,random(-4,4),ReactionTime*40+random(-9,9)+10,37)
TNT1 A 0 A_JumpIf(Args[1]>3,1)
goto Spawn+4
TNT1 A 0 A_SpawnItemEx("DynamoM_LBoltBoutadeFX",random(20,40),0,random(-6,6),random(8,12)+120,0,random(-4,4),ReactionTime*40+random(-9,9)+15,37)
goto Spawn+4
Death:
TNT1 A 0
stop
}
}


//192:192=217:217, 198:198=110:110, 199:199=240:240, 202:202=96:96
actor DynamoM_Dish
{
translation "192:192=217:217","202:202=96:96","199:199=240:240"
PROJECTILE
damagetype "DynamoM_Dish"
Obituary "$OB_DYNAMODISH"
damage (15)
Radius 12
Height 8
speed 30
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
DYPJ AB 4
Flying:
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZap"   ,0,0,0,momx/2+33*-sin(angle)    ,momy/2+33*cos(angle)    ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXC",0,0,0,momx/2+33*-sin(angle)    ,momy/2+33*cos(angle)    ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXB",0,0,0,momx/2+33*-sin(angle)*2/3,momy/2+33*cos(angle)*2/3,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXA",0,0,0,momx/2+33*-sin(angle)/3  ,momy/2+33*cos(angle)/3  ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZap"   ,0,0,0,momx/2-33*-sin(angle)    ,momy/2-33*cos(angle)    ,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXC",0,0,0,momx/2-33*-sin(angle)    ,momy/2-33*cos(angle)    ,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXB",0,0,0,momx/2-33*-sin(angle)*2/3,momy/2-33*cos(angle)*2/3,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXA",0,0,0,momx/2-33*-sin(angle)/3  ,momy/2-33*cos(angle)/3  ,momz/2,90,9)
DYPJ C 1
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZap"   ,0,0,0,momx/2+33*-sin(angle)    ,momy/2+33*cos(angle)    ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXF",0,0,0,momx/2+33*-sin(angle)    ,momy/2+33*cos(angle)    ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXE",0,0,0,momx/2+33*-sin(angle)*2/3,momy/2+33*cos(angle)*2/3,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXD",0,0,0,momx/2+33*-sin(angle)/3  ,momy/2+33*cos(angle)/3  ,momz/2,-90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZap"   ,0,0,0,momx/2-33*-sin(angle)    ,momy/2-33*cos(angle)    ,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXF",0,0,0,momx/2-33*-sin(angle)    ,momy/2-33*cos(angle)    ,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXE",0,0,0,momx/2-33*-sin(angle)*2/3,momy/2-33*cos(angle)*2/3,momz/2,90,9)
DYPJ C 0 A_SpawnItemEx("DynamoM_DishZapFXD",0,0,0,momx/2-33*-sin(angle)/3  ,momy/2-33*cos(angle)/3  ,momz/2,90,9)
DYPJ C 1
loop
Crash:
TNT1 A 1
stop
Death:
TMFX IJKD 3
stop
}
}

actor DynamoM_DishB:DynamoM_Dish{translation"192:192=205:205","202:202=205:205","199:199=74:74"}
actor DynamoM_DishR:DynamoM_Dish{translation"192:192=171:171","202:202=171:171","199:199=41:41"}
actor DynamoM_DishO:DynamoM_Dish{translation"192:192=104:104","202:202=104:104","199:199=128:128"}
actor DynamoM_DishP:DynamoM_Dish{translation"192:192=229:229","202:202=229:229","199:199=232:232"}

actor DynamoM_DishZap
{
PROJECTILE
damagetype "DynamoM_DishZap"
Obituary "$OB_DYNAMODISH"
+DONTREFLECT
+DONTBLAST
//+RIPPER
+SERVERSIDEONLY
damage (9)
Radius 6
Height 6
speed 36
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
}
}

actor DynamoM_DishZapFX
{
damagetype "DynamoM_DishZap"
Obituary "$OB_DYNAMODISH"
+MISSILE
+NOGRAVITY
+THRUACTORS
+DONTREFLECT
+DONTBLAST
//+NONETID
+CLIENTSIDEONLY
+FORCEXYBILLBOARD
+BRIGHT
damage 0
Radius 6
Height 6
speed 24
scale 1.5
}

actor DynamoM_DishZapFXA : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXA2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXA2 : DynamoM_DishZapFX
{
States
{
Spawn://DynamoTendril sprites
XH0P R 0
XH0P R 1
stop
}
}

actor DynamoM_DishZapFXB : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXB2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXB2 : DynamoM_DishZapFX
{
States
{
Spawn:
XH0P S 0
XH0P S 1
stop
}
}

actor DynamoM_DishZapFXC : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXC2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXC2 : DynamoM_DishZapFX
{
States
{
Spawn:
XH0P T 0
XH0P T 1
stop
}
}

actor DynamoM_DishZapFXD : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXD2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXD2 : DynamoM_DishZapFX
{
States
{
Spawn:
XH0P U 0
XH0P U 1
stop
}
}

actor DynamoM_DishZapFXE : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXE2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXE2 : DynamoM_DishZapFX
{
States
{
Spawn:
XH0P V 0
XH0P V 1
stop
}
}

actor DynamoM_DishZapFXF : DynamoM_DishZapFX
{
States
{
Spawn:
TNT1 A 0
TNT1 A 1
TNT1 A 0 A_SpawnItemEx("DynamoM_DishZapFXF2",0,0,0,0,0,0,0,1)
stop
}
}
actor DynamoM_DishZapFXF2 : DynamoM_DishZapFX
{
States
{
Spawn:
XH0P W 0
XH0P W 1
stop
}
}




actor DynamoM_IsTagged : Powerup
{
Powerup.Duration 12
}
actor DynamoM_TagFXDelay : Powerup
{
Powerup.Duration 4
}

actor DynamoM_IsTagged_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("DynamoM_TagFXDelay",1,3)
TNT1 A 0 A_GiveInventory("DynamoM_TagFXDelay",1)
TNT1 A 0 A_GiveInventory("DynamoM_TagFX_P",1)
TNT1 A 0 A_GiveInventory("DynamoM_IsTagged",1)
stop
}
}
actor DynamoM_TagFX_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEx("DynamoM_TagFX",random(16,52),0,Random(16,48),0,0,0,random(0,359),1)
stop
}
}
actor DynamoM_TagFX : BasicClientSide
{
+FLOATBOB
Scale 1.0
States
{
Spawn:
DYPJ XYZ 2 bright A_Fadeout(0.1)
loop
}
}

actor DynamomanMain2_CI : TeamColor_CI
{
states{
FireX:
TNT1 A 0 A_FireCustomMissile("DynamoM_LBoltSpawner",random(-45,45),0,0,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("DynamoM_LBoltSpawnerB",random(-45,45),0,0,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("DynamoM_LBoltSpawnerR",random(-45,45),0,0,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("DynamoM_LBoltSpawnerO",random(-45,45),0,0,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("DynamoM_LBoltSpawnerP",random(-45,45),0,0,0)
goto Done
}
}

actor DynamomanAlt1_CI : TeamColor_CI{states{
FireX:TNT1 A 0 A_FireCustomMissile("DynamoM_HomingOrb",0,0,8,0)goto Done
FireB:TNT1 A 0 A_FireCustomMissile("DynamoM_HomingOrbB",0,0,8,0)goto Done
FireR:TNT1 A 0 A_FireCustomMissile("DynamoM_HomingOrbR",0,0,8,0)goto Done
FireO:TNT1 A 0 A_FireCustomMissile("DynamoM_HomingOrbO",0,0,8,0)goto Done
FireP:TNT1 A 0 A_FireCustomMissile("DynamoM_HomingOrbP",0,0,8,0)goto Done}}

actor DynamomanAlt2_CI : TeamColor_CI{states{
FireX:TNT1 A 0 A_FireCustomMissile("DynamoM_Dish",0,1,8,0)goto Done
FireB:TNT1 A 0 A_FireCustomMissile("DynamoM_DishB",0,1,8,0)goto Done
FireR:TNT1 A 0 A_FireCustomMissile("DynamoM_DishR",0,1,8,0)goto Done
FireO:TNT1 A 0 A_FireCustomMissile("DynamoM_DishO",0,1,8,0)goto Done
FireP:TNT1 A 0 A_FireCustomMissile("DynamoM_DishP",0,1,8,0)goto Done}}

actor DynamomanOther2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0
goto Done
FireB:
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXB",0,0,32,0,0,0,330,1)
goto Done
FireR:
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXR",0,0,32,0,0,0,330,1)
goto Done
FireO:
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXO",0,0,32,0,0,0,330,1)
goto Done
FireP:
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("DynamomanHeal_RadiusFXP",0,0,32,0,0,0,330,1)
goto Done
}
}

actor DynamoM_HealDischarge_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_RadiusGive("DynamoM_HealDischarge_X",240,2)
goto Done
FireB:
TNT1 A 0 A_RadiusGive("DynamoM_HealDischarge_B",240,2)
goto Done
FireR:
TNT1 A 0 A_RadiusGive("DynamoM_HealDischarge_R",240,2)
goto Done
FireO:
TNT1 A 0 A_RadiusGive("DynamoM_HealDischarge_O",240,2)
goto Done
FireP:
TNT1 A 0 A_RadiusGive("DynamoM_HealDischarge_P",240,2)
goto Done
}
}

actor DynamomanHeal_RadiusFX
{
+BRIGHT
PROJECTILE
+NOBLOCKMAP
+NOGRAVITY
+NOINTERACTION
Renderstyle Normal
Scale 2.5
States
{
Spawn:
X_0C F 0
X_0C ZEDCB 2 A_Warp(AAPTR_TARGET,240,0,32,angle,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
SpawnLoop:
X_0C A 0 A_JumpIfInTargetInventory("DynamoIsCharging",1,1)
Goto Death
X_0C B 1 A_Warp(AAPTR_TARGET,240,0,32,angle,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
X_0C B 0 A_SetAngle(angle+5)
X_0C B 1 A_Warp(AAPTR_TARGET,240,0,32,angle,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
X_0C B 0 A_SetAngle(angle+5)
X_0C C 1 A_Warp(AAPTR_TARGET,240,0,32,angle,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
X_0C C 0 A_SetAngle(angle+5)
X_0C C 1 A_Warp(AAPTR_TARGET,240,0,32,angle,WARPF_ABSOLUTEANGLE|WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
X_0C C 0 A_SetAngle(angle+5)
Loop

Death:
X_0C BCDEF 2 A_FadeOut(0.25)
Stop
}
}

actor DynamomanHeal_RadiusFXB : DynamomanHeal_RadiusFX { VisibleToTeam 0 }
actor DynamomanHeal_RadiusFXR : DynamomanHeal_RadiusFX { VisibleToTeam 1 }
actor DynamomanHeal_RadiusFXO : DynamomanHeal_RadiusFX { VisibleToTeam 2 }
actor DynamomanHeal_RadiusFXP : DynamomanHeal_RadiusFX { VisibleToTeam 3 }