actor BusterRodG : VCBaseClass
{
Player.ScoreIcon "BUSRMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "BusterRodG"
player.soundclass "BusterRodGc"
player.startitem "BusterRodBoss"
player.startitem "UltimateAttackItem1"
player.startitem "UltSoundWatcherSpawn1"
player.startitem "Base56Ammo", 56
player.startitem "IsFromWW"
player.viewheight 51
player.forwardmove 0.85,0.85
player.sidemove 0.83,0.83
player.jumpz 12
States
{
Spawn: 
BRGZ B 0
BRGZ B 1 A_JumpIfInventory("BusterOutFrame",1,"Spawn.Buster")
BRGZ A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2
Spawn.Buster:
TNT1 A 0 A_JumpIf(momx>1||momy>1||momx<-1||momy<-1,"See")
BRGZ T 1 A_JumpIf(z-floorz>0, "Jumping")
TNT1 A 0 A_JumpIfInventory("BusterOutFrame",1,"Spawn.Buster")
Goto Spawn+2
See:
BRGZ BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Jumping:
BRGZ B 0 A_JumpIfInventory("BusterOutFrame",1,"Jumping.Buster")
BRGZ I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait
Jumping.Buster:
BRGZ U 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Animation1:
Missile:
Missile.Rod:
TNT1 A 0 A_JumpIfInventory("BRGSpinAnim",1,"Missile.RodSpin")
TNT1 A 0 A_JumpIfInventory("BusterOutFrame",1,"Missile.Buster")
BRGX FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile.Rod")
Missile2.Rod:
BRGX G 1 A_JumpIf(z-floorz>0, "JumpingMissile2.Rod")
BRGX GG 1 A_JumpIfInventory("BRGThrustAnim",1,"Missile2.Rod")
BRGX GG 1 A_JumpIfInventory("BRGThrustAnim",1,"Missile2.Rod")
Goto Spawn+2

Missile.RodSpin:
TNT1 A 0 A_JumpIfInventory("BRGSpinAnimEnder",1,"Spawn")
BRG6 F 1 A_JumpIf(z-floorz>0, "JumpingMissile.Spin")
Missile2.RodSpin:
TNT1 A 0 A_JumpIfInventory("BRGSpinAnimEnder",1,"Spawn")
BRG6 G 1 A_JumpIf(z-floorz>0, "JumpingMissile2.Spin")
Goto Missile.RodSpin

Missile.Buster:
BRG3 FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile.Buster")
Missile2.Buster:
BRG3 FFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile2.Buster")
Goto Spawn.Buster

JumpingMissile.Rod:
BRGZ JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile.Rod")
JumpingMissile2.Rod:
BRGZ K 1 A_JumpIf(z-floorz<=0, "Missile2.Rod")
BRGZ KK 1 A_JumpIfInventory("BRGThrustAnim",1,"JumpingMissile2.Rod")
BRGZ KK 1 A_JumpIfInventory("BRGThrustAnim",1,"JumpingMissile2.Rod")
Goto Jumping

JumpingMissile.Spin:
TNT1 A 0 A_JumpIfInventory("BRGSpinAnimEnder",1,"Spawn")
BRG2 J 1 A_JumpIf(z-floorz<=0, "Missile2.RodSpin")
JumpingMissile2.Spin:
TNT1 A 0 A_JumpIfInventory("BRGSpinAnimEnder",1,"Spawn")
BRG2 K 1 A_JumpIf(z-floorz<=0, "Missile.RodSpin")
Goto JumpingMissile.Spin

JumpingMissile.Buster:
BRG3 JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile.Buster")
JumpingMissile2.Buster:
BRG3 JJJJ 1 A_JumpIf(z-floorz<=0, "Missile2.Buster")
Goto Jumping

ClassPain:
BRGZ B 0 A_JumpIfInventory("BusterOutFrame",1,"ClassPain.Buster")
BRGZ HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassPain.Buster:
BRGZ VVVVVVVVVV 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
WeaponGetM:
ClassDeath:
BRGZ B 0 A_JumpIfInventory("BusterOutFrame",1,"ClassDeath.Buster")
BRGZ H 20 ACS_ExecuteAlways(999,0,0)
BRGZ H 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFXMMWT", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath.Buster:
BRGZ V 20 ACS_ExecuteAlways(999,0,0)
BRGZ V 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFXMMWT", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
}
}

actor BusterRodBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammouse 1
Obituary "$OB_BUSTERRODGOKU1"
States
{
Ready:
TNT1 A 0
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
BROG A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BROG A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",1,14)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base56Ammo",1)
Goto Ready
Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BROG A 1 A_Lower
Goto Deselect
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,940)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BROG A 1 A_Raise
Goto Select
Fire:
BROG A 1
TNT1 A 0 A_JumpIfInventory("Base56Ammo",2,"Fire.BusterRod")
Goto Fire.Buster
Fire.BusterRod:
BROG A 1
TNT1 A 0 A_GiveInventory("BRGThrustAnim",1) TNT1 A 0 A_TakeInventory("BusterOutFrame",99) TNT1 A 0 A_Stop
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_TakeInventory("Base56Ammo",14)
BROG A 1 offset(10,32)
BROG A 1 offset(20,35)
BROG A 1 offset(30,38)
TNT1 A 0 A_GiveInventory("HalfDamageProtection")
TNT1 A 0 A_GiveInventory("NoPushFlag")
TNT1 A 0 A_FireCustomMissile("BusterRodTip",0,0,12,7) TNT1 A 0 A_PlaySoundEx("misc/brgstaff",0)
BROG E 1 offset(0,32)
BROG E 1 offset(1,32)
BROG E 1 offset(2,32)
BROG E 1 offset(3,32)
BROG E 1 offset(4,32)
BROG EEEEEEEEEEE 1 offset(5,32)
BROG D 1 offset(5,32)A_Stop
BROG D 1 offset(4,32)A_Stop
BROG D 1 offset(3,32)A_Stop
BROG D 1 offset(2,32)A_Stop
BROG D 1 offset(1,32)A_Stop
BROG D 1 offset(0,32)A_Stop
BROG D 0 A_Refire("Rethrust")
BROG DD 1
BROG E 0 A_TakeInventory("BRGThrustReturn",99)
TNT1 A 0 A_TakeInventory("BRGThrustAnim",9)
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_TakeInventory("NoPushFlag")
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
BROG D 1 offset(5,47)
BROG D 1 offset(4,62)
BROG D 1 offset(3,77)
BROG D 1 offset(2,92)
BROG D 1 offset(1,107)
BROG D 1 offset(-1,122)
BROG D 1 offset(-3,137)
BROG A 1 offset(-13,137)
BROG A 1 offset(-12,122)
BROG A 1 offset(-11,107)
BROG A 1 offset(-10,92)
BROG A 1 offset(-9,77)
BROG A 1 offset(-8,62)
BROG A 1 offset(-7,47)
BROG A 1 offset(-6,37)
BROG A 1 offset(-5,36)
BROG A 1 offset(-4,35)
BROG A 1 offset(-3,34)
BROG A 1 offset(-2,33)
BROG A 1 offset(-1,32)
Goto Ready
Rethrust:
TNT1 A 0 A_Stop
BROG A 1 offset(30,38)A_Stop
BROG A 1 offset(20,35)A_Stop
BROG A 1 offset(10,32)A_Stop
Goto Fire
StrongRod:
TNT1 A 0 A_GiveInventory("BRGThrustAnim",1) TNT1 A 0 A_TakeInventory("BusterOutFrame",99) TNT1 A 0 A_Stop
TNT1 A 0 A_GiveInventory("NoSpeed",1)
TNT1 A 0 A_SetGravity(0.0)
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
BROG A 1 offset(10,32) A_TakeInventory("BRGSpinAnim",9) TNT1 A 0 A_TakeInventory("BRGSpinAnimEnder",9)
BROG A 1 offset(20,35) A_TakeInventory("BRGSpinAnim",9) TNT1 A 0 A_TakeInventory("BRGSpinAnimEnder",9)
BROG A 1 offset(30,38) A_TakeInventory("BRGSpinAnim",9) TNT1 A 0 A_TakeInventory("BRGSpinAnimEnder",9)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
TNT1 A 0 A_TakeInventory("Base56Ammo",14)
TNT1 A 0 A_GiveInventory("HalfDamageProtection")
TNT1 A 0 A_GiveInventory("NoPushFlag")
TNT1 A 0 A_PlaySoundEx("weapon/brgstrong","Auto")
TNT1 A 0 A_FireCustomMissile("BusterRodTip2",0,0,12,7) TNT1 A 0 A_PlaySoundEx("misc/brgstaff",0)
BROG E 1 offset(0,32)
BROG E 1 offset(1,32)
BROG E 1 offset(2,32)
BROG E 1 offset(3,32)
BROG E 1 offset(4,32)
BROG EEEEEEEEEEE 1 offset(5,32)
BROG D 1 offset(5,32)A_Stop
BROG D 1 offset(4,32)A_Stop
BROG D 1 offset(3,32)A_Stop
BROG D 1 offset(2,32)A_Stop
BROG D 1 offset(1,32)A_Stop
BROG D 1 offset(0,32)A_Stop
BROG DD 1
BROG E 0 A_TakeInventory("BRGThrustReturn",99)
TNT1 A 0 A_TakeInventory("BRGThrustAnim",9)
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
TNT1 A 0 A_TakeInventory("NoPushFlag")
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
FANB B 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
BROG D 1 offset(5,47)
BROG D 1 offset(4,62)
BROG D 1 offset(3,77)
BROG D 1 offset(2,92)
BROG D 1 offset(1,107)
BROG D 1 offset(-1,122)
BROG D 1 offset(-3,137)
BROG A 1 offset(-13,137)
BROG A 1 offset(-12,122)
BROG A 1 offset(-11,107)
BROG A 1 offset(-10,92)
BROG A 1 offset(-9,77)
BROG A 1 offset(-8,62)
BROG A 1 offset(-7,47)
BROG A 1 offset(-6,37)
BROG A 1 offset(-5,36)
BROG A 1 offset(-4,35)
BROG A 1 offset(-3,34)
BROG A 1 offset(-2,33)
BROG A 1 offset(-1,32)
Goto Ready
Fire.Buster:
TNT1 A 0 A_TakeInventory("HalfDamageProtection")
BROG E 0 A_TakeInventory("BRGThrustReturn",99)
TNT1 A 0 A_TakeInventory("BRGThrustAnim",9)
TNT1 A 0 A_GiveInventory("BusterOutFrame",1)
TNT1 A 0 A_TakeInventory("NoSpeed",999)
TNT1 A 0 A_GiveInventory("GravityRestore")
BROG AOP 1 ACS_Execute(191,0,APROP_JumpZ,12,1)
BRBS EDA 1
FiringBuster:
TNT1 A 0 A_PlaySoundEx("weapon/mbuster","Weapon")
BROG B 0 A_FireCustomMissile("GBusterShot",0,0,12)
BRBS BCB 2
BRBS A 5
TNT1 A 0 A_Refire("FiringBuster")
TNT1 A 0 A_TakeInventory("BusterOutFrame",9)
BRBS ADE 2
BROG POA 2
Goto Ready
AltFire:
RATU A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_GiveInventory("BRGSpinAnim",1)
BROG B 1 offset(4,32)
BROG B 1 offset(2,32)
BROG C 1 offset(4,32)
BROG C 1 offset(2,32)
RodSpin:
TNT1 A 0 A_JumpIfInventory("Base56Ammo",1,1)
goto SpinEnd
BROG G 0 A_PlaySoundEx("weapon/BRGSpin","Weapon")
TNT1 A 0 A_SpawnItemEx("BRGSpinBoom",10,0,0,5,0,0)
BROG F 0 A_JumpIfInventory("BRGCounterFlag",1,"StrongRod")
BROG F 1 offset(1,32) A_SpawnItemEx("RodSpinBlocker",48,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
BROG G 0 A_JumpIfInventory("BRGCounterFlag",1,"StrongRod")
BROG G 1 offset(1,32) A_SpawnItemEx("RodSpinBlocker",48,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
BROG G 0 A_Refire("RodSpin")
Goto SpinEnd
SpinEnd:
TNT1 A 0 A_GiveInventory("BRGSpinAnimEnder",1)
BROG F 0 A_PlaySoundEx("weapon/topspin","Weapon")
BROG FG 2 offset(1,32) 
BROG FG 3 offset(1,32)
BROG C 1 offset(2,32)
BROG C 1 offset(4,32)
BROG C 1 offset(6,32)
BROG B 1 offset(2,32)
BROG B 1 offset(4,32)
BROG B 1 offset(6,32)
BROG A 1 offset(-6,32)
BROG A 1 offset(-4,32)
BROG A 1 offset(-2,32)
TNT1 A 0 A_TakeInventory("BRGSpinAnim",9) TNT1 A 0 A_TakeInventory("BRGSpinAnimEnder",9)
Goto Ready
UltimateAttack:
BROG A 1
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,118)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 A_PlaySoundEx("weapon/BRGClone","Weapon")
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
BROG A 1 A_SetTranslucent(0.9,0)
BROG A 1 A_SetTranslucent(0.8,0)
BROG A 1 A_SetTranslucent(0.7,0)
BROG A 1 A_SetTranslucent(0.6,0)
BROG A 1 A_SetTranslucent(0.5,0)
BROG A 1 A_SetTranslucent(0.4,0)
BROG A 1 A_SetTranslucent(0.3,0)
BROG A 1 A_SetTranslucent(0.2,0)
BROG A 1 A_SetTranslucent(0.1,0)
BROG A 1 A_SetTranslucent(0.0,0)
BROG A 0 A_GiveInventory("ShadowInvisible",1)
UltStart:
TNT1 A 0 A_JumpIfInventory("BRGIllusionSpawnTimer",16,"UltSpawn")
TNT1 A 0 A_TakeInventory("ShortUltimateAmmo",1)
TNT1 A 0 A_GiveInventory("WindUltCooldown",1)
TNT1 A 0 A_GiveInventory("BRGIllusionSpawnTimer",1)
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("ShortUltimateAmmo",1,"UltStart")
TNT1 A 1
Goto UltEnd
UltSpawn:
TNT1 A 0 A_TakeInventory("BRGIllusionSpawnTimer",99)
TNT1 A 0 A_CheckFloor("GroundSpawn")
TNT1 A 0 A_SpawnItemEx("BRGCloneJumper",0,0,0,0,0,0,0,1)
Goto UltStart
GroundSpawn:
TNT1 A 0 A_SpawnItemEx("BRGCloneRunner",32,0,0,30,0,0,0,1)
Goto UltStart
UltEnd:
TNT1 A 0 A_PlaySoundEx("weapon/BRGClone","Weapon")
TNT1 A 0 A_TakeInventory("BRGIllusionSpawnTimer",99)
BROG A 1 A_SetTranslucent(0.1,0)
BROG A 1 A_SetTranslucent(0.2,0)
BROG A 1 A_SetTranslucent(0.3,0)
BROG A 1 A_SetTranslucent(0.4,0)
BROG A 1 A_SetTranslucent(0.5,0)
BROG A 1 A_SetTranslucent(0.6,0)
BROG A 1 A_SetTranslucent(0.7,0)
BROG A 1 A_SetTranslucent(0.8,0)
BROG A 1 A_SetTranslucent(0.9,0)
BROG A 1 A_SetTranslucent(1.0,0)
BROG A 0 A_GiveInventory("ShadowVisible",1)
BROG A 10 A_TakeInventory("UltAttackFlag")
Goto Ready
}
}

actor BusterRodAmmoDepleter : CustomInventory
{
states
{
Spawn:
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1) TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
TNT1 A 1 A_TakeFromTarget("Base56Ammo",1)
stop
}
}

actor BusterRodTip //Core
{
PROJECTILE
+DONTREFLECT
+DONTBLAST
scale 2.5
speed 80
damagetype "BusterRodGTip"
Obituary "$OB_BUSTERRODGOKU1"
+RIPPER
+NOINTERACTION
+THRUGHOST
+NOCLIP
Damage (0)
+THRUSPECIES
Species "BusterRod"
const int OFS = 2;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
BRGZ P 1 
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
RodLooper:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,OFS,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
GoBack:
BRGZ A 0 A_ScaleVelocity(-1.0)
Back:
BRGZ PP 1 A_SpawnItemEx("BusterRodPartC",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
BackLoop:
BRGZ P 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BRGZ PP 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ P 0 A_JumpIfCloser(64, "End")
BRGZ OO 1 A_SpawnItemEx("BusterRodPartC",0,0,OFS,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager",0,0,OFS,2,0,0)
BRGZ O 0 A_JumpIfCloser(64, "End")
BRGZ O 0 A_JumpIfInventory("CutterFlag", 2, "End")
loop
End:
TNT1 A 0 A_GiveToTarget("BRGThrustReturn",99)
TNT1 A 5
TNT1 A 0 A_TakeFromTarget("BRGThrustReturn",99)
stop
Death:
TNT1 A 0 A_GiveToTarget("BRGThrustReturn",99)
TNT1 A 10
TNT1 A 0 A_TakeFromTarget("BRGThrustReturn",99)
stop
}
}

actor BusterRodTip2 : BusterRodTip
{
speed 120
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
RodLooper:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ P 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ O 1 A_SpawnItemEx("BusterRodPartC",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BRGRodFX")
TNT1 A 0 A_SpawnItemEx("RodBlocker",0,0,0,-momx/4,-momy/4,-momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
GoBack:
BRGZ A 0 A_ScaleVelocity(-1.0)
Back:
BRGZ PP 1 A_SpawnItemEx("BusterRodPartC",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
BackLoop:
BRGZ P 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0)==0,"Death")
BRGZ PP 1 A_SpawnItemEx("BusterRodPartC",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ P 0 A_JumpIfCloser(64, "End")
BRGZ OO 1 A_SpawnItemEx("BusterRodPartC",0,0,0,momx/4,momy/4,momz/4,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_SpawnItemEx("BusterRodDamager2",0,0,0,2,0,0)
BRGZ O 0 A_JumpIfCloser(64, "End")
BRGZ O 0 A_JumpIfInventory("CutterFlag", 2, "End")
loop
End:
TNT1 A 0 A_GiveToTarget("BRGThrustReturn",99)
TNT1 A 5
TNT1 A 0 A_TakeFromTarget("BRGThrustReturn",99)
stop
Death:
TNT1 A 0 A_GiveToTarget("BRGThrustReturn",99)
TNT1 A 10
TNT1 A 0 A_TakeFromTarget("BRGThrustReturn",99)
stop
}
}

actor BRGRodFX : BasicClientSide
{
reactiontime 5
scale 1.0
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
loopit:
BRGZ O 1 A_SetScale(scalex+0.5,scaley+0.5)
BRGZ O 0 A_FadeOut(0.2)
BRGZ O 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor BusterRodPartC
{
scale 2.5
speed 32
damage(0)
+DONTREFLECT
+DONTBLAST
PROJECTILE
+NOINTERACTION
damagetype "BusterRodGRod"
Obituary "$OB_BUSTERRODGOKU1"
+THRUSPECIES
Species "BusterRod"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 A_JumpIfCloser(32, "Death")
TNT1 A 0 A_JumpIfCloser(1000, "Ok")
Goto Death
Ok:
TNT1 A 0 A_SpawnItemEx("BusterRodPartC",0,0,0,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 0 A_Explode(1,16,0,0,16)
BRGZ NN 1 A_Stop
stop
Death:
TNT1 A 0
stop
}
}

actor BusterRodGRodProtect : PowerProtection
{
Powerup.Duration 2
DamageFactor "BusterRodGRod", 0.0
}

actor BusterRodDamager : BasicExplosion
{
damagetype "BusterRodGTip"
Obituary "$OB_BUSTERRODGOKU1"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(23,40,0,0,40)
stop
}
}

actor BusterRodDamager2 : BasicExplosion
{
damagetype "BusterRodGKnockback"
Obituary "$OB_BUSTERRODGOKU1"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(34,40,0,0,40)
stop
}
}

actor BusterRodGKnockbackProtect : PowerProtection
{
Powerup.Duration 17
DamageFactor "BusterRodGKnockback", 0.0
}

actor BusterRodGTipProtect : PowerProtection
{
Powerup.Duration 24
DamageFactor "BusterRodGTip", 0.0
}

actor GBusterShot
{
PROJECTILE
damagetype "BusterRodG"
Obituary "$OB_BUSTERRODGOKU2"
Speed 40
Damage (10)
radius 6
height 6
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
6ULT X 1
goto Spawn+2
XDeath:
Death:
TNT1 A 0
stop
}
}

actor BRGSpinBoom : BasicExplosion
{
Obituary "$OB_BUSTERRODGOKU3"
Damagetype "BusterRodG"
States
{
Spawn:
TNT1 A 0
TNT1 A 2 A_Explode(2,32,0,0,32)
stop
}
}

actor RodBlocker
{
+MISSILE
Speed 0
+DONTSPLASH
+NOGRAVITY
Damage 0
Height 16
Radius 16
health 9999
scale 2.5
+SHOOTABLE
+NOBLOOD
-SOLID
Species "BusterRod"
+THRUSPECIES
painchance 256
bloodtype ""
+DONTRIP
+GHOST
+NORADIUSDMG
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 2
stop
Death:
TNT1 A 0
TNT1 A 1
stop
Pain:
TNT1 A 0
TNT1 A 2
stop
}
}

actor RodSpinBlocker
{
+MISSILE
Speed 0
+DONTSPLASH
+NOGRAVITY
Damage 0
Height 56
Radius 56
health 99999
scale 2.5
+SHOOTABLE
+NOBLOOD
-SOLID
species "BusterSpin"
+THRUSPECIES
painchance 256
bloodtype ""
+DONTRIP
+GHOST
+NORADIUSDMG
States
{
Spawn:
TNT1 A 0
TNT1 A 3
stop
Death:
TNT1 A 0
TNT1 A 1
stop
//Heroes
Pain.MegaUlt:
Pain.BigBangStrike:
//MM1
Pain.CutmanUlt:
Pain.ElecmanLightning:
//Pain.Iceman:
Pain.FiremanUlt:
//Pain.Timeman:
Pain.OilmanUlt:
//Pain.GutsGBlock:
//Pain.GutsGDrill:
Pain.GutsmanGUpperCut:
//Pain.GigaBomb:
//MM2
//Pain.Quickman:
Pain.NoUlt: //Woodman
Pain.MetalUlt:
//Pain.Crashman:
Pain.AirmanUlt:
Pain.HeatmanAfterBurnPillar:
Pain.BubbleCrit:
//Pain.Flashman:
Pain.AlienDozer:
//MM3
Pain.SparkmanUlt:
Pain.GeminimanUlt:
Pain.TopmanUltimate:
Pain.NeedleUlt:
Pain.MagnetmanUlt:
Pain.ShadowmanTongue:
Pain.ShadowmanFlame:
Pain.HardmanUlt:
Pain.SnakemanUlt:
//Pain.DocRobot:
//MM4
Pain.BrightManUltSmall:
Pain.BrightManUltLarge:
Pain.DivemanMoby:
Pain.DrillmanUlt:
Pain.PharaohUlt:
Pain.DustmanUlt:
Pain.RingRing:
Pain.SkullmanUlt:
Pain.ToadmanUlt:
//MM5
Pain.NapalmUlt:
Pain.WavemanBike:
Pain.StarManRock:
Pain.CrystalmanUlt:
Pain.ChargemanUltCoal:
Pain.GyromanAttackUlt:
Pain.GravityUltDrop:
//Pain.Darkman1:
//Pain.Darkman2:
//Pain.Darkman3:
//Pain.Darkman4:
//MM6
Pain.FlameUlt:
Pain.KnightFullJump:
//Pain.Tomahawkman:
Pain.CentaurUlt:
Pain.CentaurDash:
Pain.WindmanUlt:
//Pain.Yamatoman:
//MM6
Pain.FreezemanUltFreeze:
Pain.FreezemanUltFreeze2:
Pain.BurstmanUlt:
//Pain.Cloudman:
Pain.TurbomanUlt:
//MM8
Pain.TenguManUlt:
Pain.AstroCrushUlt:
Pain.GrenademanUlt:
Pain.SearchBush:
//MMB
//Pain.Coldman:
Pain.BurnerTrap:
Pain.KingUlt:
//MM9
//Pain.Plugman:
Pain.GalaxymanUlt:
//Pain.Concreteman:
Pain.MagmamanUlt:
//MM10
Pain.CommandomanStorm:
Pain.ChillmanFreeze:
Pain.StrikeManUlt:
Pain.SheepmanUlt:
Pain.PumpmanUlt:
Pain.BadTraffic:
Pain.SolarInferno:
Pain.BlademanUlt:
//MM11
//Pain.Blastman:
Pain.AcidmanUlt:
Pain.FusemanHighVoltage:
//MMV
//Pain.Mercury:
Pain.VenusWaterCrash:
Pain.TerraUlt:
Pain.MarsUlt:
//Pain.Jupiter:
Pain.SaturnStopper:
Pain.UranusDeepDestroyer:
Pain.NeptuneInstantRust:
//Pain.Pluto:
//MMK
Pain.EnkerUlt:
Pain.QuintUlt:
Pain.PunkUlt:
Pain.BalladeUlt:
Pain.RaThorUlt:
//WT
//Pain.BusterRodG:
Pain.HyperStormHUlt:
TNT1 A 0
stop
Pain:
TNT1 A 0
TNT1 A 0 A_PlaySound("item/protoreflect")
TNT1 A 1 A_GiveToTarget("BRGCounterFlag",1)
stop
}
}

actor BRGCloneRunner
{
Translation "192:192=218:218", "198:198=221:221"
PROJECTILE
-NOGRAVITY
damagetype "BusterRodG"
Obituary "$OB_BUSTERRODGOKU4"
Speed 15
Damage (30)
radius 32
height 32
scale 2.5
+BOUNCEONCEILINGS
+NOEXPLODEFLOOR
+BOUNCEONWALLS
wallbouncefactor 1.0
bouncecount 4
reactiontime 350
States
{
Spawn:
TNT1 A 0
loopit:
TNT1 A 0 A_GiveToTarget("WindUltCooldown")
BRGZ BBBBBBBBBBBBBBBBBBBB 0 A_Countdown
BRGZ BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0, "Air")
TNT1 A 0 A_GiveInventory("BRGIllusionTimer",1)
loop
Air:
BRGZ I 0 A_Countdown
BRGZ I 1 A_JumpIf(z-floorz<=0, "loopit")
loop
XDeath:
Death:
TNT1 A 0
stop
}
}


actor BRGCloneJumper
{
Translation "192:192=218:218", "198:198=221:221"
PROJECTILE
-NOGRAVITY
damagetype "BusterRodG"
Obituary "$OB_BUSTERRODGOKU4"
Speed 0
Damage (30)
radius 32
height 32
scale 2.5
+THRUSPECIES
+NOEXPLODEFLOOR
+BOUNCEONCEILINGS
+BOUNCEONWALLS
wallbouncefactor 1.0
bouncecount 4
bouncefactor 1.0
species "BusterRodGIllusion"
reactiontime 300
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ThrustThingZ(0, -10, 0, 1)
BRGZ I 1 A_GiveToTarget("WindUltCooldown")
Spawn2:
BRGZ I 0 A_Countdown
BRGZ I 1 A_JumpIf(z-floorz<=0, "Land")
loop
Land:
BRGZ I 0 A_Stop
BRGZ I 0 A_Recoil(-25)
BRGZ I 0 ThrustThingZ(0, 40, 0, 0)
BRGZ I 2 A_GiveToTarget("WindUltCooldown")
goto Spawn2
XDeath:
TNT1 A 0
stop
Death:
TNT1 A 0
stop
}
}

actor BRGThrustAnim : Inventory
{
inventory.amount 1
inventory.maxamount 2
}
actor BRGSpinAnim : BRGThrustAnim {}
actor BRGSpinAnimEnder : BRGThrustAnim {}
actor BRGBusterAnim : BRGThrustAnim {}
actor BusterOutFrame : BRGThrustAnim {} 
actor BRGThrustReturn : BRGThrustAnim {}
actor CloneDespawn : BRGThrustAnim {}

actor BRGIllusionSpawnTimer : Inventory
{
inventory.amount 1
inventory.maxamount 20
}

actor BRGIllusionTimer : Inventory
{
inventory.amount 1
inventory.maxamount 5
}

actor BRGRodTimer : BRGIllusionTimer {}

Actor BRGCounterFlag : Powerup
{
	Powerup.Duration 9
}