const int FUSE_LENGTH = 77;
//Didn't work for FuseLength's MaxAmmo

actor HyperBombBoss : BaseMM8BDMWep_CBM
{
tag "$TAGC_1D"
dropitem "HyperBombWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 0
Obituary "$OB_HYPERBOMB"
weapon.ammotype "GigaSpamAmmo"
weapon.ammotype2 "GigaAmmo"
+WEAPON.NOAUTOAIM
States
{
Spawn:
C_01 D 1
loop
Ready:
TNT1 AA 2 A_TakeInventory("GigaAmmo",FUSE_LENGTH)
BOMT A 0 ACS_ExecuteAlways(998,0,DYE_BOMBMAN)
BOMT A 9
Ready1:
BOMT A 0 A_JumpIfInventory("SuperArmTemp",1,"Ready2")
BOMT A 1 A_WeaponReady
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
loop

Ready2:
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Drop")
BOMT F 1 A_WeaponReady
TNT1 A 0 //A_SpawnItemEx("TempSplode",0,0,56,momx,momy,momz,0,9,0)
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Drop")
BOMT H 1 A_WeaponReady
TNT1 A 0 //A_SpawnItemEx("TempSplode",0,0,56,momx,momy,momz,0,9,0)
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Drop")
BOMT H 1 A_WeaponReady
TNT1 A 0 //A_SpawnItemEx("TempSplode",0,0,56,momx,momy,momz,0,9,0)
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Drop")
BOMT F 1 A_WeaponReady
TNT1 A 0 //A_SpawnItemEx("TempSplode",0,0,56,momx,momy,momz,0,9,0)
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
loop

Deselect:
BOMT A 0 A_JumpIfInventory("SuperArmTemp",1,"Drop")
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BOMT A 1 A_Lower
goto Deselect+1
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BOMT A 1 A_Raise
Loop
SpawnProtect:
BOMT A 1
Goto Ready0

Fire:
BOMT A 0 A_JumpIfInventory("SuperArmTemp",1,"HardThrow")
TNT1 A 0 A_JumpIfInventory("GigaSpamAmmo",54,"AltThrow")
goto AltThrowX
HardThrow:
BOMT C 0 A_PlaySoundEx("weapon/BombThrow","Weapon")
BOMT C 0 A_GiveInventory("BombmanMainCBM_CI",1)
BOMT C 0 A_GiveInventory("VivifyDelay8",1)
BOMT C 0 A_TakeInventory("SuperArmTemp",1)
BOMT C 0 A_Refire(1)
BOMT G 0 A_Refire(1)
BOMT F 2 OffSet(1,70)//OffSet(-70,72)
BOMT E 2 OffSet(-10,60)//OffSet(-121,112)
BOMT I 1 OffSet(-20,50)//OffSet(1,33)
BOMT J 1 OffSet(-40,30)//OffSet(-21,56)
//BOMT J 2 //OffSet(-35,84)
//BOMT J 2 //OffSet(-35,78)
TNT1 A 14 //OffSet(1,92)
TNT1 AA 2 A_TakeInventory("GigaAmmo",FUSE_LENGTH)
BOMT A 3 OffSet(1,72)
BOMT A 3 OffSet(1,52)
goto Ready1

AltFire:
TNT1 A 0 A_JumpIfInventory("SpawningMisfire",1,"SpawnProtect")
TNT1 A 0 A_JumpIfInventory("SuperArmTemp",1,"Throw")
goto Prime

Prime:
BOMT B 0 A_PlaySoundEx("weapon/superarmuse","Weapon")
BOMT B 0 A_GiveInventory("SuperArmTemp",1)
BOMT B 0 A_GiveInventory("VivifyDelay5",1)
BOMT B 0 A_Refire(1)
BOMT B 1 A_SpawnItemEx("TempSplodePick",0,0,0,0,0,0,0,1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT B 1 A_JumpIfInventory("PowerRage_ST",1,1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT C 1 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT C 1 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT D 1 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT D 1 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT E 1 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT E 1 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT F 1 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
BOMT F 1 A_GiveInventory("GigaAmmo",1)
//TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,2)
BOMT FF 1 A_GiveInventory("GigaAmmo_RC",1)
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,2)
BOMT HHF 1 A_GiveInventory("GigaAmmo_RC",1)
goto Ready1

AltThrowX:
BOMT G 0 A_PlaySoundEx("weapon/BombThrow","Weapon")
BOMT G 0 A_GiveInventory("BombmanMain_CI",1)
BOMT G 0 A_GiveInventory("VivifyDelay8",1)
BOMT G 0 A_TakeInventory("SuperArmTemp",9)
BOMT G 0 A_Refire(1)
BOMT F 2 OffSet(1,70)
BOMT E 2 OffSet(-10,60)
BOMT I 1 OffSet(-20,50)
BOMT J 1 OffSet(-40,30)
TNT1 A 16 OffSet(1,92)
BOMT A 3 OffSet(1,72)
BOMT A 3 OffSet(1,52)
goto Ready1

AltThrow:
BOMT G 0 A_PlaySoundEx("weapon/BombThrow","Weapon")
BOMT G 0 A_GiveInventory("BombmanMain2_CI",1)
BOMT G 0 A_GiveInventory("VivifyDelay8",1)
BOMT G 0 A_TakeInventory("SuperArmTemp",9)
BOMT G 0 A_Refire(1)
BOMT G 0 A_TakeInventory("GigaSpamAmmo",54)
BOMT F 2 OffSet(1,70)
BOMT E 1 OffSet(-10,60)
//BOMT D 1 OffSet(-20,50)
BOMT I 1 OffSet(-20,50)
BOMT J 1 OffSet(-40,30)
TNT1 A 10 OffSet(1,92)
BOMT A 2 OffSet(1,72)
BOMT A 2 OffSet(1,52)
goto Ready1

ThrowX:
Throw:
BOMT M 0 A_PlaySoundEx("weapon/BombThrow","Weapon")
BOMT M 0 A_GiveInventory("BombmanAlt_CI",1)
BOMT M 0 A_GiveInventory("VivifyDelay8",1)
BOMT M 0 A_TakeInventory("SuperArmTemp",1)
BOMT M 0 A_Refire(1)
BOMT K 1 Offset(-1, -15)
BOMT K 1 Offset(-60, -53)
BOMT K 2 Offset(-118, -65)
BOMT K 2 Offset(-170, -58)
BOMT K 2 Offset(-215, -27)
BOMT K 2 Offset(-225, 32)
BOMT K 1 Offset(-244, 77)
BOMT K 1 Offset(-277, 121)
TNT1 AA 2 A_TakeInventory("GigaAmmo",FUSE_LENGTH)
TNT1 A 15 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
BOMT A 2 OffSet(1,72)
BOMT A 2 OffSet(1,52)
goto Ready1


Drop:
BOMT A 0 A_PlaySoundEx("weapon/BombThrow","Weapon")
BOMT A 0 A_GiveInventory("BombmanOther_CI",1)
JOEB H 0 ThrustThingZ(0,10,0,0)
JOEB H 0 A_ChangeVelocity(Cos(pitch)*16,0,(-sin(pitch)*10)+(Cos(pitch)*8),1)
BOMT A 0 A_TakeInventory("SuperArmTemp",1)
BOMT K 1 Offset(-1, -15)
BOMT K 1 Offset(-60, -53)
BOMT K 2 Offset(-118, -65)
BOMT K 2 Offset(-170, -58)
BOMT K 2 Offset(-215, -27)
BOMT B 2 Offset(-225, 32)
BOMT B 1 Offset(-244, 77)
BOMT B 1 Offset(-277, 121)
TNT1 AA 2 A_TakeInventory("GigaAmmo",FUSE_LENGTH)
TNT1 A 15 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
BOMT A 2 OffSet(1,72)
BOMT A 2 OffSet(1,52)
goto Ready1
}
}


actor HyperBombThrow
{
Translation "192:192=216:216", "199:199=41:41", "202:202=215:215", "198:198=41:41"
PROJECTILE
damagetype "BombM_Boom"
Obituary "$OB_HYPERBOMBSPLITX"
+SKYEXPLODE
+BOUNCEONWALLS
-NOGRAVITY
+USEBOUNCESTATE
bouncefactor 0.5
damage (4)
Radius 16
Height 16
speed 50
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
BOMB S 1 ThrustThingZ(0,30,0,1)

Spawn2:
BOMB S 1 A_SpawnItemEx("HyperBombTheFuseFX",0,-15,33,random(-4,4),random(-4,4),5,0) //A_SpawnItemEx("HyperBombThrowAltFX",0,0,0,0,0,0,0,1)
BOMB S 0 A_PlaySound("weapon/acidboost",CHAN_BODY,0.1)
loop

Bounce:
BOMB S 0 A_PlaySound("weapon/minitubthumpin", CHAN_7 , 1.0)
goto Spawn2

Death:
TNT1 A 0 A_CheckCeiling("Ceiling")
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,8,8,0,8,45,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,8,8,0,8,135,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,8,8,0,8,225,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,8,8,0,8,315,1,0)
Goto RealDeath
Ceiling:
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,-8,8,0,-8,45,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,-8,8,0,-8,135,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,-8,8,0,-8,225,1,0)
TNT1 A 0 A_SpawnItemEx("HyperBombThrowSplit",0,0,-8,8,0,-8,315,1,0)
Goto RealDeath
RealDeath:
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_Explode(12,96,0,0,32)
TNT1 A 0 A_SpawnItemEx("BasicBoom5FX_Y",0,0,0,0,0,0,0,1+32)
TNT1 A 10
stop
}
}

actor HyperBombThrowB : HyperBombThrow{translation "192:192=205:205", "199:199=74:74", "198:198=74:74", "202:202=205:205"}
actor HyperBombThrowR : HyperBombThrow{translation "192:192=171:171", "199:199=41:41", "198:198=41:41", "202:202=171:171"}
actor HyperBombThrowO : HyperBombThrow{translation "192:192=104:104", "199:199=128:128", "198:198=128:128", "202:202=104:104"}
actor HyperBombThrowP : HyperBombThrow{translation "192:192=229:229", "199:199=232:232", "198:198=232:232", "202:202=229:229"}

actor HyperBombThrowSplit
{
Translation "192:192=216:216", "199:199=41:41", "202:202=215:215", "198:198=41:41"
PROJECTILE
damagetype "BombM_Split"
Obituary "$OB_HYPERBOMBSPLIT"
+SKYEXPLODE
-NOGRAVITY
+THRUACTORS
damage (0)
Radius 10
Height 10
speed 60
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
1BOM A 3
1BOM A 0 A_ChangeFlag(THRUACTORS,0)
Spawn2:
1BOM A 1
loop

Death:
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySound("weapon/bomb_split","Weapon",0.6)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_Explode(4,80,0,0,40)
DKC1 GHIJK 1 A_SetScale(ScaleX+1)
stop
}
}

actor GigaSpamAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 162
+INVENTORY.IGNORESKILL
}

actor GigaSpamAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 3 A_GiveInventory("GigaSpamAmmo",1)
PickupR:
TNT1 A 3 A_GiveInventory("GigaSpamAmmo",1)
stop
}
}

actor GigaAmmo : Ammo
{
inventory.amount 1
//inventory.maxamount FUSE_LENGTH
inventory.maxamount 77
+INVENTORY.IGNORESKILL
}

actor GigaAmmo_RC : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("PowerRage_ST",1,"PickupR")
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",1)
stop
PickupR:
TNT1 A 0 A_GiveInventory("GigaAmmo",2)
TNT1 A 0 A_GiveInventory("GigaSpamAmmo",2)
stop
}
}

actor TempSplodePick : ShieldWarper_CBM
{
States
{
Spawn:
TNT1 A 0
BOMB T 0 ACS_NamedExecuteAlways("cbm_clientwarper",0,-4)
Goto Lift

Lift:
"####" "#" 1 A_Warp(2,37,0,-16,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,34,0,33,0,24)
"####" "#" 1 A_Warp(2,31,0,72,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,28,0,102,0,24)
"####" "#" 1 A_Warp(2,25,0,124,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,22,0,139,0,24)
"####" "#" 1 A_Warp(2,19,0,148,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,16,0,152,0,24)
"####" "#" 1 A_Warp(2,14,0,152,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,12,0,148,0,24)
"####" "#" 1 A_Warp(2,10,0,140,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,8,0,128,0,24)
"####" "#" 1 A_Warp(2,6,0,113,0,24)
"####" "#" 0 A_JumpIfInTargetInventory("PowerRage_ST",1,2)
"####" "#" 1 A_Warp(2,4,0,95,0,24)
"####" "#" 1 A_Warp(2,2,0,75,0,24)
Shield:
"####" "#" 1 A_Warp(2,0,0,56,0,24)
loop
}
}

actor MainfireCheck : Inventory {
inventory.maxamount 1
}


actor TempSplode
{
-SOLID
+NOGRAVITY
+NOINTERACTION
//+CLIENTSIDEONLY
//+DONTBLAST
+NOTIMEFREEZE
Radius 4
Height 4
Scale 2.5
States
{
Spawn:
BOMB T 0
BOMB T 1
stop
}
}


actor HyperBombB
{
Translation "192:192=216:216", "199:199=0:0", "202:202=215:215"
PROJECTILE
damagetype "BombM_Boom"
Obituary "$OB_HYPERBOMB"
-NOGRAVITY
+HEXENBOUNCE
+CANBOUNCEWATER
+THRUACTORS
+USEBOUNCESTATE
bouncefactor 0.7
reactiontime 1
Damage (0)
Radius 6
Height 12
speed 30
scale 2.5
states
{
Spawn:
BOMB TT 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
BOMB T 0 A_JumpIfInTargetInventory("GigaAmmo",FUSE_LENGTH,"DetonateX")
BOMB T 0 ThrustThingZ(0,18,0,1)
goto FuseGiveCheck
FuseGive:
TNT1 A 0 A_GiveInventory("GigaAmmo",ACS_ExecuteWithResult(803,GIGAAMMO))
TNT1 A 0 //A_TakeFromTarget("GigaAmmo",FUSE_LENGTH)
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Detonate")
goto Spawn2+1
/*FuseGive:
TNT1 A 0 A_TakeFromTarget("GigaAmmo",1)
TNT1 A 0 A_GiveInventory("GigaAmmo",1)
TNT1 A 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Detonate")*/
FuseGiveCheck:
TNT1 A 0 A_JumpIfInTargetInventory("GigaAmmo",1,"FuseGive")
goto Spawn2+1
Spawn2:
BOMB T 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH,"Detonate")
BOMB T 0 A_JumpIfInTargetInventory("PowerRage_ST",1,"Spawn2R")
BOMB T 1 A_GiveInventory("GigaAmmo",1)
loop
Spawn2R:
BOMB T 1 A_GiveInventory("GigaAmmo",2)
goto Spawn2
Bounce:
BOMB T 0 A_PlaySound("weapon/tubthumpin", CHAN_7 , 0.3)
goto Spawn2
Detonate:
BOMB T 0 A_CountDown
BOMB T 1
loop
DetonateX:
BOMB T 0 A_SpawnItemEx("HyperBombBX",0,0,0,0,0,0,0,1)
stop
Death:
BOMB T 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)
BOMB T 0 A_ChangeFlag("NOGRAVITY",1)
BOMB T 0 A_JumpIfInventory("MainfireCheck",1,"RegularBoom")
BOMB T 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH-5,"Deathtonation")
BOMB T 0 A_Explode(40,135,0,0,35)

BOMB T 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
BOMB T 0 A_TakeInventory("MainfireCheck",1)
TN_B EF 1 ThrustThingZ(0,0,0,0)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H1",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H3",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H4",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H5",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H6",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,2,0,0,17,0,33)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,-2,0,0,-17,0,33)
TNT1 A 10
stop
Deathtonation:
BOMB T 0 A_Stop
BOMB T 0 A_TakeInventory("MainfireCheck",1)
BOMB T 0 A_ChangeFlag("NOGRAVITY",1)
BOMB T 0 A_PlaySoundEx("weapon/BombmanBoom", "Weapon")
BOMB T 0 A_Explode(40,135,0,0,35)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H1",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H3",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H4",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H5",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H6",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,2,0,0,17,0,33)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,-2,0,0,-17,0,33)
TNT1 A 10
stop
RegularBoom:
BOMB T 0 A_Explode(40,135,0,0,35)

BOMB T 0 A_TakeInventory("MainfireCheck",1)
BOMB T 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
TN_B EF 1 ThrustThingZ(0,0,0,0)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H1",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H3",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H4",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H5",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H6",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,2,0,0,17,0,33)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,-2,0,0,-17,0,33)
TNT1 A 10
stop
}
}

actor HyperBombBB : HyperBombB{translation "192:192=205:205", "199:199=[30,54,172]:[30,54,172]", "202:202=205:205"}
actor HyperBombBR : HyperBombB{translation "192:192=171:171", "199:199=191:191", "202:202=171:171"}
actor HyperBombBO : HyperBombB{translation "192:192=104:104", "199:199=135:135", "202:202=104:104"}
actor HyperBombBP : HyperBombB{translation "192:192=229:229", "199:199=234:234", "202:202=229:229"}

actor Bombman_HyperBToss : HyperBombB
{
-HEXENBOUNCE
states
{
Death:
BOMB T 0 A_ChangeVelocity(0,0,0,CVF_REPLACE)
BOMB T 0 A_ChangeFlag("NOGRAVITY",1)
BOMB T 0 A_JumpIfInventory("MainfireCheck",1,"RegularBoom")
BOMB T 0 A_JumpIfInventory("GigaAmmo",FUSE_LENGTH-5,"Deathtonation")
BOMB T 0 A_Explode(24,135,0,0,35)

BOMB T 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
BOMB T 0 A_TakeInventory("MainfireCheck",1)
TN_B EF 0 ThrustThingZ(0,0,0,0)
TNT1 A 0 A_SetScale(4)
Y_1D OPQRSTUVWXYZ 1
Y_1D "[" 1
TNT1 A 10
stop
Deathtonation:
BOMB T 0 A_Stop
BOMB T 0 A_TakeInventory("MainfireCheck",1)
BOMB T 0 A_ChangeFlag("NOGRAVITY",1)
BOMB T 0 A_PlaySoundEx("weapon/BombmanBoom", "Weapon")
BOMB T 0 A_Explode(24,135,0,0,35)
TNT1 A 0 A_SetScale(4)
Y_1D OPQRSTUVWXYZ 1
Y_1D "[" 1
TNT1 A 10
stop
RegularBoom:
BOMB T 0 A_Explode(24,135,0,0,35)

BOMB T 0 A_TakeInventory("MainfireCheck",1)
BOMB T 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
TNT1 A 0 A_SetScale(4)
Y_1D OPQRSTUVWXYZ 1
Y_1D "[" 1
TNT1 A 10
stop
}
}

actor Bombman_HyperBTossB : Bombman_HyperBToss{translation "192:192=205:205", "199:199=74:74", "202:202=205:205"}
actor Bombman_HyperBTossR : Bombman_HyperBToss{translation "192:192=171:171", "199:199=41:41", "202:202=171:171"}
actor Bombman_HyperBTossO : Bombman_HyperBToss{translation "192:192=104:104", "199:199=128:128", "202:202=104:104"}
actor Bombman_HyperBTossP : Bombman_HyperBToss{translation "192:192=229:229", "199:199=232:232", "202:202=229:229"}

actor BombmanFuseExplosionFX_H0 : BasicClientSide
{
renderstyle none
Reactiontime 12//Sections
Args 20,6
//Speed/lines
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetArg(3,Args[1]+1)
TNT1 A 0 A_SetArg(4,Reactiontime)
SpawnL:
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",Cos(90-180/Args[3]*Args[1])*Args[0],0,Sin(90-180/Args[3]*Args[1])*Args[0],Cos(90-180/Args[3]*Args[1])*Args[0],0,Sin(90-180/Args[3]*Args[1])*Args[0],360/Args[4]*Reactiontime,33)
TNT1 A 0 A_SetArg(1,Args[1]-1)
TNT1 A 0 A_JumpIf(Args[1]<=0,1)
loop
TNT1 A 0 A_Countdown
TNT1 A 0 A_SetArg(1,Args[3]-1)
loop
Death:
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,Args[0],0,0,Args[0],0,33)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,-Args[0],0,0,-Args[0],0,33)
TNT1 A 1
stop
}
}

actor BombmanFuseExplosionFX_H1 : BasicClientSide
{
var int user_RT;
var int user_A;

Mass 100
MeleeRange 0
accuracy 6
renderstyle none
reactiontime 15//18
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_RT",360/reactiontime)
TNT1 A 0 A_SetUserVar("user_A",random(0,user_RT))
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",Mass/accuracy,0,0,Mass/accuracy,0,MeleeRange/accuracy,user_A,37)
TNT1 A 0 A_SetUserVar("user_A",user_A+user_RT)
TNT1 A 0 A_Countdown
goto Spawn+3
Death:
TNT1 A 1
stop
}
}
actor BombmanFuseExplosionFX_H2 : BombmanFuseExplosionFX_H1
{
Mass 96
MeleeRange 26
reactiontime 12//15
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_RT",360/reactiontime)
TNT1 A 0 A_SetUserVar("user_A",random(0,user_RT))
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",Mass/accuracy,0,MeleeRange/accuracy,Mass/accuracy,0,MeleeRange/accuracy,user_A,37)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",Mass/accuracy,0,MeleeRange/-accuracy,Mass/accuracy,0,MeleeRange/-accuracy,user_A,37)
TNT1 A 0 A_SetUserVar("user_A",user_A+user_RT)
TNT1 A 0 A_Countdown
goto Spawn+3
Death:
TNT1 A 1
stop
}
}

actor BombmanFuseExplosionFX_H3 : BombmanFuseExplosionFX_H2
{
Mass 87
MeleeRange 50
reactiontime 10//12
}
actor BombmanFuseExplosionFX_H4 : BombmanFuseExplosionFX_H2
{
Mass 70
MeleeRange 70
reactiontime 8//9
}
actor BombmanFuseExplosionFX_H5 : BombmanFuseExplosionFX_H2
{
Mass 50
MeleeRange 87
reactiontime 6
}
actor BombmanFuseExplosionFX_H6 : BombmanFuseExplosionFX_H2
{
Mass 26
MeleeRange 96
reactiontime 4//3
}

actor BombmanFuseExplosionFX : BasicClientSide
{
+FORCEXYBILLBOARD
+BRIGHT
States
{
Spawn:
TNT1 A 0
XMFX S 0
XMFX S 1
UMFX TJKD 1
XMFX S 1
UMFX TJKD 1
stop

Spawn2:
UMFX R 1//Circle 202 and white
XMFX Q 1
UMFX T 1//Solid 202 and white
XMFX S 1
UMFX IJK 1//202/white center
XMFX D 1
stop
}
}

actor HyperBombMine
{
Translation "192:192=216:216", "199:199=0:0", "202:202=215:215", "198:198=41:41"
PROJECTILE
Radius 6
Height 12
Damage (0)
Speed 0
Obituary "$OB_HYPERBOMB"
+DONTBLAST
-NOGRAVITY
+NOEXPLODEFLOOR
+DONTREFLECT
+NOTARGETSWITCH
States
{
}
}

actor HyperBombMineB : HyperBombMine{translation "192:192=205:205", "199:199=74:74", "202:202=205:205"}
actor HyperBombMineR : HyperBombMine{translation "192:192=171:171", "199:199=41:41", "202:202=171:171"}
actor HyperBombMineO : HyperBombMine{translation "192:192=104:104", "199:199=128:128", "202:202=104:104"}
actor HyperBombMineP : HyperBombMine{translation "192:192=229:229", "199:199=232:232", "202:202=229:229"}

actor HyperBombBX : BasicExplosion
{
damagetype "BombM_Boom"
Obituary "$OB_HYPERBOMB"
Scale 2.5
States
{
Spawn:
BOMB T 0
BOMB T 0 A_Explode(40,110,0,0,110)
BOMB T 0 A_PlaySoundEx("weapon/BombmanBoom", "Weapon")
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H1",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H2",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H3",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H4",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H5",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX_H6",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,2,0,0,17,0,33)
TNT1 A 0 A_SpawnItemEx("BombmanFuseExplosionFX",0,0,-2,0,0,-17,0,33)
TNT1 A 10
stop
}
}

actor HyperBombBDrop : HyperBombB
{
speed 10
states
{
Spawn:
BOMB T 0
BOMB T 0 ThrustThingZ(0,12,0,1)
goto FuseGiveCheck
}
}

actor HyperBombBDropB : HyperBombBDrop{translation "192:192=205:205", "199:199=74:74", "202:202=205:205"}
actor HyperBombBDropR : HyperBombBDrop{translation "192:192=171:171", "199:199=41:41", "202:202=171:171"}
actor HyperBombBDropO : HyperBombBDrop{translation "192:192=104:104", "199:199=128:128", "202:202=104:104"}
actor HyperBombBDropP : HyperBombBDrop{translation "192:192=229:229", "199:199=232:232", "202:202=229:229"}


actor HyperBombThrowAlt
{
Translation "192:192=216:216", "199:199=0:0", "202:202=215:215", "198:198=41:41"
PROJECTILE
damagetype "BombM_Boom"
Obituary "$OB_HYPERBOMB"
+SKYEXPLODE
+BOUNCEONWALLS
-NOGRAVITY
+USEBOUNCESTATE
bouncefactor 1.0
wallbouncefactor 1.0
damage (4)
Radius 16
Height 16
speed 25
scale 2.5
States
{
Spawn:
TNT1 A 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
BOMB S 1 ThrustThingZ(0,30,0,1)

Spawn2:
BOMB S 1 A_SpawnItemEx("HyperBombTheFuseFX",0,-15,33,random(-4,4),random(-4,4),5,0) //A_SpawnItemEx("HyperBombThrowAltFX",0,0,0,0,0,0,0,1)
BOMB S 0 A_PlaySound("weapon/acidboost",CHAN_BODY,0.1)
loop

Bounce:
BOMB S 0 A_PlaySound("weapon/minitubthumpin", CHAN_7 , 1.0)
goto Spawn2

Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySoundEx("weapon/hyperbomb","Weapon")
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
TNT1 A 0 A_Explode(12,96,0,0,32)
TNT1 A 0 A_SpawnItemEx("BasicBoom5FX_Y",0,0,0,0,0,0,0,1+32)
TNT1 A 10
stop
}
}

actor HyperBombThrowAltB : HyperBombThrowAlt{translation "192:192=205:205", "199:199=74:74", "202:202=205:205", "198:198=74:74"}
actor HyperBombThrowAltR : HyperBombThrowAlt{translation "192:192=171:171", "199:199=41:41", "202:202=171:171", "198:198=41:41"}
actor HyperBombThrowAltO : HyperBombThrowAlt{translation "192:192=104:104", "199:199=128:128", "202:202=104:104", "198:198=128:128"}
actor HyperBombThrowAltP : HyperBombThrowAlt{translation "192:192=229:229", "199:199=232:232", "202:202=229:229", "198:198=232:232"}

actor HyperBombThrowAltFX : BasicClientSide
{
renderstyle add
states
{
Spawn:
BOMB S 1 A_FadeOut(0.25)
loop
}
}

actor HyperBombTheFuseFX
{
Translation "192:192=4:4", "198:198=216:216", "199:199=216:216"
+MISSILE
-SOLID
+RIPPER
+THRUGHOST
+THRUACTORS
+DONTBLAST
+CLIENTSIDEONLY
Gravity 0.5
Damage (0)
height 1
radius 1
renderstyle translucent
alpha 1.0
scale 1.0//1.5
speed 25
States
{
Spawn:
GIGO MMMNNN 1 A_FadeOut(0.10)
loop
}
}

actor BombmanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowAlt",0,1,0,8)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowAltB",0,1,0,8)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowAltR",0,1,0,8)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowAltO",0,1,0,8)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowAltP",0,1,0,8)
goto Done
}
}

actor BombmanMain2_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombThrow",0,1,0,8)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowB",0,1,0,8)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowR",0,1,0,8)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowO",0,1,0,8)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombThrowP",0,1,0,8)
goto Done
}
}

actor BombmanMainCBM_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("Bombman_HyperBToss",0,1,0,28)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("Bombman_HyperBTossB",0,1,0,28)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("Bombman_HyperBTossR",0,1,0,28)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("Bombman_HyperBTossO",0,1,0,28)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("Bombman_HyperBTossP",0,1,0,28)
goto Done
}
}

actor BombmanAlt_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombB",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombBB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombBR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombBO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombBP",0,1,8,0)
goto Done
}
}

/*actor BombmanMine_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombMine",0,1,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombMineB",0,1,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombMineR",0,1,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombMineO",0,1,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombMineP",0,1,8,0)
goto Done
}
}*/

actor BombmanOther_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombBDrop",0,1,0,8)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombBDropB",0,1,0,8)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombBDropR",0,1,0,8)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombBDropO",0,1,0,8)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombBDropP",0,1,0,8)
goto Done
}
}

actor BombmanMine_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("HyperBombMine",0,1,0,28)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("HyperBombMineB",0,1,0,28)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("HyperBombMineR",0,1,0,28)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("HyperBombMineO",0,1,0,28)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("HyperBombMineP",0,1,0,28)
goto Done
}
}
