//Chain Bomb sprites by Mister Mike
//= Blast man
//	Now has a thirdfire: a high leap backwards, increases rate of fire in M1 and decreases it's ammo cost briefly, for the cost of half of your altfire bar 

actor Blastman : VCBaseClass
{
Player.ScoreIcon "BLASMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Blastman"
player.soundclass "blastmanc"
player.startitem "ChainBlastBoss"
player.startitem "UltimateAttackItem4"
player.startitem "UltSoundWatcherSpawn4"
player.startitem "Base56Ammo", 56
player.startitem "BaseAltfireAmmo", 112
player.startitem "IsFromMM11"
player.startitem "NoHealthBar"
player.viewheight 51
player.jumpz 12
States
{
Spawn:
BLT1 B 0 
BLT1 B 1 A_JumpIf(z-floorz>0,"Jumping")
BLT1 A 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+2

See:
BLT1 BBBBBCCCCCDDDDDEEEEE 1 A_JumpIf(z-floorz>0,"Jumping")
Goto Spawn+1

Jumping:
BLT1 J 1 A_JumpIf(z-floorz<=0,"Spawn")
wait

Animation1:
Missile:
BLT1 FFFFF 1 A_JumpIf(z-floorz>0,"JumpingMissile")
Animation2:
Missile2:
BLT1 GGGGG 1 A_JumpIf(z-floorz>0,"JumpingMissile2")
Goto Spawn+2
JumpingMissile:
BLT1 IIIII 1 A_JumpIf(z-floorz<=0,"Missile")
JumpingMissile2:
BLT1 JJJJJ 1 A_JumpIf(z-floorz<=0,"Missile2")
Goto Jumping

ClassPain:
BLT1 HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassDeath:
TNT1 A 0 A_StopSound(CHAN_VOICE)
TNT1 A 0 A_SpawnItemEx("DeadBlastMan",0,0,0,0,0,0,0,1)
TNT1 A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("ChainBlastWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("ChainBlastWepM")
goto ClassDeath
}
}

actor DeadBlastMan
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
-NOEXPLODEFLOOR
+NOINTERACTION
scale 2.5
reactiontime 38
var int user_x;
var int user_y;
var int user_z;
States
{
Spawn:
BLT1 H 0 
goto Spawn2

Spawn2:
"####" "#" 35 A_SetUserVar("user_x",0)
"####" "#" 0 A_SetUserVar("user_y",0)
"####" "#" 0 A_SetUserVar("user_z",0)
"####" "#" 0 A_SpawnItemEx("MM11LongBeams",0,0,32)
"####" "#" 0 A_SpawnItemEx("MM11BlackEnergies",0,0,32)
"####" "#" 0 A_SpawnItemEx("MM11ClosingCircle1",0,0,32,0,0,0,0,1)
"####" "#" 0 A_SpawnItemEx("MM11ClosingCircle2",0,0,32,0,0,0,0,1)
"####" "#" 0 A_PlaySoundEx("mm11/deathwait","Auto")
"####" "#" 0 A_Jump(256,"Spawn3")
goto Spawn3

Spawn3:
"####" "#" 0 A_PlaySoundEx("blastman/deadx","Body")
goto loopit

loopit:
"####" "#" 0 A_SetUserVar("user_x",user_x+random(-9,9))
"####" "#" 0 A_SetUserVar("user_y",user_y+random(-9,9))
"####" "#" 0 A_SetUserVar("user_z",user_z+random(-9,9))
"####" "#" 1 A_ChangeVelocity(user_x,user_y,user_z,CVF_REPLACE)
"####" "#" 0 A_SpawnItemEx("MM11SmallBoom",random(0,52),0,random(-12,80),0,0,random(1,2),random(0,359),0,192)
"####" "#" 0 A_SpawnItemEx("MM11DeathBolt",random(32,80),0,random(-12,92),0,0,0,random(0,359),0,64)
"####" "#" 1 A_ChangeVelocity(-user_x,-user_y,-user_z,CVF_REPLACE)
"####" "#" 0 A_SpawnItemEx("MM11CircleBoom",random(0,52),0,random(-12,64),0,0,0,random(0,359))
"####" "#" 0 A_SpawnItemEx("MM11SmallBoom",random(0,52),0,random(-12,80),0,0,random(1,2),random(0,359),0,192)
"####" "#" 0 A_SpawnItemEx("MM11DeathBolt",random(32,80),0,random(-12,92),0,0,0,random(0,359),0,64)
"####" "#" 0 A_SetUserVar("user_x",0)
"####" "#" 0 A_SetUserVar("user_y",0)
"####" "#" 0 A_SetUserVar("user_z",0)
"####" "#" 0 A_Countdown
loop

Death:
"####" "#" 0 A_SpawnItemEx("FakeDeathFXMM11", 0, 0, 32, 0, 0, 0, 0, 1)
"####" "#" 2 Thing_SetTranslation(0, 5678)
TNT1 A 0 A_SpawnItemEx("MM11DeathBoom")
TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MM11BurntPiece",0,0,32,random(4,18),0,random(-4,18),random(0,359))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MM11DeathSmoke",random(0,64),0,random(32,64),frandom(0,1.5),0,frandom(1,4),random(0,359))
TNT1 A 0 A_PlaySoundEx("mm11/deathboom","Auto")
TNT1 A 2 A_PlaySoundEx("weapon/drillexplode","Auto")
stop
}
}

actor MM11CircleBoom : BasicClientSide
{
States
{
Spawn:
11DZ ABCDEF 1
stop
}
}

actor MM11SmallBoom : BasicClientSide
{
States
{
Spawn:
11DY ABCD 2
stop
}
}

actor MM11BigBoom : BasicClientSide
{
States
{
Spawn:
11DY ABCD 4
stop
}
}

actor MM11ClosingCircle1 : BasicClientSide
{
scale 1.7
renderstyle translucent
alpha 0.7
States
{
Spawn:
TNT1 A 67
11DZ GGGGHHHHHHHH 1 A_SetScale(scalex-0.1,scaley-0.1)
stop
}
}

actor MM11ClosingCircle2 : MM11ClosingCircle1
{
renderstyle add
alpha 1.0
}

actor MM11DeathBolt : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4")

S_1:
11DX QR 2
stop

S_2:
11DX ST 2
stop

S_3:
11DX UV 2
stop

S_4:
11DX WX 2
stop
}
}

actor MM11LongBeams : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 A 9 A_SpawnItemEx("MM11LongBeam1")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam2")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam3")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam4")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam5")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam6")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam7")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam8")
TNT1 A 9 A_SpawnItemEx("MM11LongBeam9")
stop
}
}

actor MM11LongBeam1 : BasicClientSide
{
renderstyle add
reactiontime 78
var int user_scale;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar(user_scale,frandom(1.0,6.0))
TNT1 A 0 A_SetScale(user_scale,user_scale)
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8","S_9","S_10","S_11","S_12","S_13","S_14","S_15","S_16")

S_1:
11DX AAAAAAAAAAAA 1 A_Countdown

S_2:
11DX BBBBBBBBBBBB 1 A_Countdown

S_3:
11DX CCCCCCCCCCCC 1 A_Countdown

S_4:
11DX DDDDDDDDDDDD 1 A_Countdown

S_5:
11DX EEEEEEEEEEEE 1 A_Countdown

S_6:
11DX FFFFFFFFFFFF 1 A_Countdown

S_7:
11DX GGGGGGGGGGGG 1 A_Countdown

S_8:
11DX HHHHHHHHHHHH 1 A_Countdown

S_9:
11DX IIIIIIIIIIII 1 A_Countdown

S_10:
11DX JJJJJJJJJJJJ 1 A_Countdown

S_11:
11DX KKKKKKKKKKKK 1 A_Countdown

S_12:
11DX LLLLLLLLLLLL 1 A_Countdown

S_13:
11DX MMMMMMMMMMMM 1 A_Countdown

S_14:
11DX NNNNNNNNNNNN 1 A_Countdown

S_15:
11DX OOOOOOOOOOOO 1 A_Countdown

S_16:
11DX PPPPPPPPPPPP 1 A_Countdown
goto S_1
}
}

actor MM11LongBeam2 : MM11LongBeam1
{
reactiontime 69
}

actor MM11LongBeam3 : MM11LongBeam1
{
reactiontime 60
}

actor MM11LongBeam4 : MM11LongBeam1
{
reactiontime 51
}

actor MM11LongBeam5 : MM11LongBeam1
{
reactiontime 42
}

actor MM11LongBeam6 : MM11LongBeam1
{
reactiontime 33
}

actor MM11LongBeam7 : MM11LongBeam1
{
reactiontime 24
}

actor MM11LongBeam8 : MM11LongBeam1
{
reactiontime 15
}

actor MM11LongBeam9 : MM11LongBeam1
{
reactiontime 4
}

actor MM11BlackEnergies : BasicClientSide
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAA 7 A_SpawnItemEx("MM11BlackEnergy")
stop
}
}

actor MM11BlackEnergy : BasicClientSide
{
var int user_scale;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar(user_scale,frandom(1.0,3.0))
TNT1 A 0 A_SetScale(user_scale,user_scale)
TNT1 A 0 A_Jump(256,"Spawn2")
goto Spawn2

Spawn2:
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8")
goto S_1

S_1:
11DW AABBCCC 1 
stop

S_2:
11DW DDEEFFF 1 
stop

S_3:
11DW GGHHIII 1 
stop

S_4:
11DW JJKKLLL 1 
stop

S_5:
11DW MNMNOOO 1 
stop

S_6:
11DW PPQQRRR 1 
stop

S_7:
11DW SSTTUUU 1 
stop

S_8:
11DW VVWWXXX 1 
stop
}
}

actor MM11BurntPiece : BasicClientSide
{
reactiontime 140
var int user_z;
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_SetUserVar(user_z,random(1,5))
TNT1 A 0 A_Jump(256,"S_1","S_2","S_3","S_4","S_5","S_6","S_7","S_8","S_9","S_10","S_11","S_12","S_13","S_14")

S_1:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY M 1 A_Countdown
loop

S_2:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY N 1 A_Countdown
loop

S_3:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY O 1 A_Countdown
loop

S_4:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY P 1 A_Countdown
loop

S_5:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY Q 1 A_Countdown
loop

S_6:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY R 1 A_Countdown
loop

S_7:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY S 1 A_Countdown
loop

S_8:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY T 1 A_Countdown
loop

S_9:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY U 1 A_Countdown
loop

S_10:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY V 1 A_Countdown
loop

S_11:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY W 1 A_Countdown
loop

S_12:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY X 1 A_Countdown
loop

S_13:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY Y 1 A_Countdown
loop

S_14:
TNT1 A 0 ThrustThingZ(0,user_z,1,1)
11DY Z 1 A_Countdown
loop
}
}

actor MM11DeathBoom : BasicClientSide
{
scale 4.0
States
{
Spawn:
11DZ IJKLM 2
stop
}
}

actor MM11DeathSmoke : MM11BlackEnergy
{
States
{
Spawn2:
TNT1 A 0
goto S_1

S_1:
MGME JJJJJJJJJJ 1 A_Jump(32,"S_2")

S_2:
MGME KKKKKKKKKK 1 A_Jump(32,"S_3")

S_3:
MGME LLLLLLLLLL 1 A_Jump(32,"S_4")

S_4:
MGME MMMMMMMMMM 1 A_Jump(32,"S_5")

S_5:
MGME NNNNNNNNNN 1 A_Jump(32,"Death")

Death:
TNT1 A 0
stop
}
}

Actor ChainBlastBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammouse 1
weapon.ammotype2 "BaseAltfireAmmo"
weapon.ammouse2 1
Obituary "$OB_BLASTMAN1"
States
{
Ready:
BLAH A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Ready.Ultimate")
BLAH A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.TF")
Ready2:
BLAH A 0 A_JumpIfInventory("BlastAltCooldown",1,"Ready.AltActive")
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLAH A 0 A_GiveInventory("Base56Ammo",1) TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
goto Ready//loop
Ready.AltActive:
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,14)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,14)) TNT1 A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
TNT1 A 0 A_GiveInventory("Base56Ammo",1) TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready
Ready.Ultimate:
TNT1 A 0 A_JumpIfInventory("BlastAltCooldown",1,"Ready.Ultimate.AltActive")
BLA4 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,21)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56))
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,21)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56))
TNT1 A 0 A_GiveInventory("Base56Ammo",1) TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready
Ready.Ultimate.AltActive:
BLA4 A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,21)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,14))
BLAH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,21)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,14))
TNT1 A 0 A_GiveInventory("Base56Ammo",1) TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready
Ready.TF:
SHMH A 0 A_JumpIf(CallACS("VC_CheckBtn",3)==3,"User1")
goto Ready2


User1:
BLAH A 0 A_CheckFloor("TheHop")
goto Ready2

TheHop:
BLA4 A 1 A_ChangeVelocity(-22,0,15,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 ThrustThingZ(0,80,0,0)
TNT1 A 0 A_GiveInventory("BlastHopTimer")
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
TNT1 A 0 A_PlaySoundEx("misc/mm3explosion","Body")
TNT1 A 0 A_SpawnItemEx("BlastManTfWatcher")
TNT1 A 0 A_SpawnItemEx("BlastManThirdfireFX")
goto Ready2


Deselect:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
BLA1 A 1 A_Lower
Loop
Select:
TNT1 A 0 ACS_ExecuteAlways(991,0,908)
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
BLA1 A 1 A_Raise
Loop

Fire:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Fire.Ultimate")
TNT1 A 0 A_JumpIf(z-floorz>8,"Fire.Air")
Goto Fire.Ground
//Fire.GroundPower:
//TNT1 A 0 A_GiveInventory("VC_Timer",1)
Fire.Ground:
TNT1 A 0 A_JumpIfInventory("BlastHopTimer",1,1)
BLA1 ABCDE 1 ACS_NamedExecute("VC_SetState",0,1)
BLA1 F 1 ACS_NamedExecute("VC_SetState",0,2)
TNT1 A 0 A_GiveInventory("BlastManM1Checker_CI",1)
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_FireCustomMissile("RaidBomb",20,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA1 G 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_FireCustomMissile("RaidBomb",10,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA1 H 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA1 I 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_FireCustomMissile("RaidBomb",-10,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA1 J 1
TNT1 A 0 A_TakeInventory("Base56Ammo",2)
TNT1 A 0 A_FireCustomMissile("RaidBomb",-20,0,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA1 K 1
TNT1 A 0 A_TakeInventory("VC_Timer",9)
AttackFinish:
TNT1 A 5
//TNT1 A 0 A_TakeInventory("VC_Timer",9)
TNT1 A 0 A_GiveInventory("GravityRestore")
TNT1 A 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
TNT1 A 0 //A_JumpIfInventory("VC_Timer",1,"Fire.Air")
TNT1 A 0 A_JumpIfInventory("BlastHopTimer",1,"Ready")//A_JumpIfInventory("BlastHopTimer",1,"Fire.Ground")
BLA1 LMNO 2
Goto Ready

Fire.Air:
BLA1 A 0 A_JumpIfInventory("VC_Timer",1,"Fire.Ground")
TNT1 A 0 A_JumpIfInventory("BlastHopTimer",1,1)
BLA2 ABCDE 1 ACS_NamedExecute("VC_SetState",0,1)
BLA2 F 1 ACS_NamedExecute("VC_SetState",0,2)
TNT1 A 0 A_GiveInventory("BlastManM1Checker_CI",1)
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0,0,-14)
BLA2 G 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0,0,-7)
BLA2 H 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0)
BLA2 I 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0,0,7)
BLA2 J 1
TNT1 A 0 A_TakeInventory("Base56Ammo",3)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
TNT1 A 0 A_FireCustomMissile("RaidBomb",0,0,0,0,0,14)
BLA2 K 1
//TNT1 A 0 A_TakeInventory("VC_Timer",9)
Goto AttackFinish

Fire.Ultimate:
TNT1 A 0 A_JumpIf(z-floorz>8,"Fire.Ultimate.Air")
Goto Fire.Ultimate.Ground

Fire.Ultimate.Ground:
BLA4 ABCDE 1 ACS_NamedExecute("VC_SetState",0,1)
BLA4 F 1 ACS_NamedExecute("VC_SetState",0,2)
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",25,0,0,0)
BLA4 GH 1
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",0,0,0,0)
BLA4 IJ 1
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",-25,0,0,0)
BLA4 K 1
UltimateAttackFinish:
TNT1 A 5
BLA3 JKLM 2
Goto Ready

Fire.Ultimate.Air:
BLA5 ABCDE 1 ACS_NamedExecute("VC_SetState",0,1)
BLA5 F 1 ACS_NamedExecute("VC_SetState",0,2)
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",0,0,0,0,0,-18)
BLA5 GH 1
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",0,0,0,0)
BLA5 IJ 1
TNT1 A 0 A_TakeInventory("Base56Ammo",7)
TNT1 A 0 A_PlaySoundEx("misc/sharktorpedo","Weapon")
TNT1 A 0 A_FireCustomMissile("PoweredRaidBomb",0,0,0,0,0,18)
BLA5 K 1
Goto UltimateAttackFinish

AltFire:
TNT1 A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,"Altfire.Ultimate")
TNT1 A 0 A_JumpIfInventory("BlastAltCooldown",1,"Altfire.Single")
BLA1 ONML 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 A_GunFlash("Flash.LeftArm")
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,2)
BLA1 EFG 1
BLA1 H 1 A_GiveInventory("BlastManAltfirePickUp",1)
BLA1 IJK 1
Goto AttackFinish

Altfire.Ultimate:
TNT1 A 0 A_JumpIfInventory("BlastAltCooldown",1,"Altfire.Single.Ultimate")
BLA4 ONML 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 A_GunFlash("Flash.LeftArm.Ultimate")
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,2)
BLA4 EFG 1
BLA4 H 1 A_GiveInventory("BlastManAltfirePickUp",1)
BLA4 IJK 1
Goto UltimateAttackFinish

Altfire.Single:
TNT1 A 0 //A_JumpIfInventory("BaseAltfireAmmo",14,1)
//Goto Ready
BLA2 ABCD 1 ACS_NamedExecute("VC_SetState",0,1)
Altfire.SingleNext:
TNT1 A 0 //A_JumpIfInventory("BaseAltfireAmmo",14,1)
//Goto Altfire.SingleEnd
BLA2 EF 1
//TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",14)
TNT1 A 0 A_FireCustomMissile("RaidBomb2",0,0,-8,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA2 GHIJKL 1
TNT1 A 6
TNT1 A 0 A_Refire("Altfire.SingleNext")
Altfire.SingleEnd:
BLA1 LMNO 2 A_ClearRefire
Goto Ready

Altfire.Single.Ultimate:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",14,1)
Goto Ready
BLA5 ABCD 1 ACS_NamedExecute("VC_SetState",0,1)
Altfire.SingleNext.Ultimate:
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",14,1)
Goto Altfire.SingleEnd.Ultimate
BLA5 EF 1
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",14)
TNT1 A 0 A_FireCustomMissile("RaidBomb2",0,0,-8,0)
TNT1 A 0 A_PlaySoundEx("weapon/blastthrow","Weapon")
BLA5 GHIJKL 1
TNT1 A 6
TNT1 A 0 A_Refire("Altfire.SingleNext.Ultimate")
Altfire.SingleEnd.Ultimate:
BLA3 JKLM 2 A_ClearRefire
Goto Ready

UltimateAttack:
TNT1 A 0 A_TakeInventory("UltAttackFlag",1)
TNT1 A 0 A_GiveInventory("PowerUltBuildCooldown",1)
TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,98)
TNT1 A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 AA 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 BB 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 DD 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 EE 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 FF 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 CC 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 GG 1 Offset(3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 Offset(-3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 GG 1 Offset(3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 Offset(-3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 GG 1 Offset(3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 Offset(-3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,908) BLA3 GG 1 Offset(3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 ACS_ExecuteAlways(971,0,10908) BLA3 CC 1 Offset(-3,32)ACS_NamedExecute("VC_SetState",0,1)
TNT1 A 0 A_Quake(4,35,0,400,0)
TNT1 A 0 ACS_NamedExecute("VC_SetState",0,2)
TNT1 A 0 A_SpawnItemEx("BlastManUltWatcher")
TNT1 A 0 A_PlaySoundEx("weapon/mm4explode","SoundSlot5")
TNT1 A 0 A_PlaySoundEx("megaman/powergear3","SoundSlot6")
TNT1 A 0 A_PlaySoundEx("blastman/powergearx","SoundSlot7")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("PowerGearFX", random(-16, 16), 0, random(0,48), random(2,20), 0, random(-10,10), random(0, 359))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("RaidBombExplosionFX", random(-16, 16), 0, random(0,48), random(1,10), 0, random(-5,5), random(0, 359))
BLA3 GHI 2
TNT1 A 6
BLA3 JKL 2
BLA3 M 2 Offset(1,32)
Goto Ready

Flash.LeftArm:
BLA2 EFGHIJK 1
stop
Flash.LeftArm.Ultimate:
BLA5 EFGHIJK 1
stop
}
}

actor RaidBomb
{
PROJECTILE
-NOGRAVITY
-THRUACTORS
damagetype "Blastman"
Obituary "$OB_BLASTMAN1"
Gravity 1.0
speed 50
Radius 16
Height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
TNT1 A 0 A_ChangeFlag("THRUACTORS",False)
Spawn2:
CBLA IJKM 2
loop
Death:
TNT1 A 0 A_ChangeFlag("NOGRAVITY",True)
TNT1 A 0 A_Explode(10,64,0)//A_Explode(8,64,0,0,16)
Goto Death2
Death2:
TNT1 A 0 A_PlaySoundEx("weapon/chainblastfour", "Weapon")
RDUS ABCDEF 1
RDUS JKLMNO 1 A_FadeOut(0.1)
stop
}
}
actor RaidBomb2 : RaidBomb
{
+NOGRAVITY
States
{
Death:
TNT1 A 0 A_Explode(18,64,0)
Goto Death2
}
}

actor BlastManAltfirePickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("BlastAltfireWatcher")
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
TNT1 A 0 A_GiveInventory("BlastAltCooldown",210)
TNT1 A 0 A_PlaySoundEx("weapon/chainblastone","Weapon")
TNT1 A 0 A_FireCustomMissile("ChainBombSTart",12,0,8,0)
TNT1 A 0 A_FireCustomMissile("ChainBombSTart",-12,0,8,0)
TNT1 A 0 A_FireCustomMissile("ChainBombSTart",0,0,8,0,0,12)
TNT1 A 0 A_FireCustomMissile("ChainBombSTart",0,0,8,0,0,-12)
stop
}
}

actor BlastManM1Checker_CI : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("BlastHopTimer",1,"GotIt")
stop
GotIt:
TNT1 A 0 A_GiveInventory("Base56Ammo",5)
TNT1 A 0 A_Stop
TNT1 A 0 A_SetGravity(0.0)
TNT1 A 0 A_GiveInventory("VC_Timer",1)
stop
}
}

actor ChainBombStart
{
PROJECTILE
+THRUACTORS
+HEXENBOUNCE
BounceFactor 1.0
WallBounceFactor 1.0
speed 25
Radius 16
Height 16
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
CBLA ABCDABCD 2
TNT1 A 0 A_SpawnItemEx("ChainBomb")
stop
}
}

actor ChainBomb : ChainBombStart
{
PROJECTILE
-THRUACTORS
-NOINTERACTION
+HITTRACER
+SEEKERMISSILE
+LOOKALLAROUND
+NOTARGETSWITCH
damagetype "Blastman"
Obituary "$OB_BLASTMAN2"
speed 5
var int user_stuck;
var int User_PosX;
var int User_PosY;
var int User_PosZ;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 0 A_PlaySound("weapon/chainblasttwo")
loopit:
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA A 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA A 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA A 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA A 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA B 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA B 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA B 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA B 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA C 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA C 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA C 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA C 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA D 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA D 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA D 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_CURSPEED, 256, 1) CBLA D 1 A_JumpIfTargetInLOS("Missile", 0, 1)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",4,"Missile")
loop

Missile:
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA EEEEBBBBCCCCDDDD 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA EEEEBBBBCCCCDDDDAAAA 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFFCCCCDDDDAAAABBBB 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA GGGGDDDDAAAA 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFFCCCCDDDD 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA EEEEBBBBCCCC 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA HHHHAAAA 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFFCCCC 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA HHHHAAAA 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFF 1 A_SeekerMissile(4, 45, SMF_LOOK|SMF_PRECISE, 256, 1)
Goto Detonate
Crash:
XDeath:
CBLA A 0 A_SetUserVar("user_stuck", 1)
Death:
CBLA A 0 A_Stop
CBLA A 0 A_PlaySound("weapon/chainblasttwo")
Latch:
TNT1 A 0 A_ChangeFlag("NOCLIP",True)
TNT1 A 0 A_ChangeFlag("NOINTERACTION",True)
TNT1 A 0 A_SetUserVar(User_PosX,random(-30,-20))
TNT1 A 0 A_SetUserVar(User_PosY,random(-30,30))
TNT1 A 0 A_SetUserVar(User_PosZ,random(5,20))
Timer:
CBLA AAAABBBB 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCCDDDD 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA EEEEBBBB 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCCDDDD 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA AAAA 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFF 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCCDDDD 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA AAAABBBB 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA GGGGDDDD 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA AAAA 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFF 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCCDDDD 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA EEEEBBBB 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCC 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA HHHHH 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA AAAA 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFF 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA CCCC 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA HHHH 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
CBLA AAAA 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_PlaySound("weapon/chainblastthree")
CBLA FFFF 1 A_Warp(AAPTR_TRACER,User_PosX,User_PosY,User_PosZ,0,WARPF_COPYINTERPOLATION|WARPF_INTERPOLATE)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",1) == 0, "StopIt")
Detonate:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOINTERACTION", True)
TNT1 A 0 A_ChangeFlag("SEEKERMISSILE", False)
TNT1 A 0 A_ChangeFlag("LOOKALLAROUND", False)
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975, 0)==2,"Detonate2")
TNT1 A 0 A_Explode(17, 96, 0, 0, 32)
TNT1 A 0 A_PlaySoundEx("weapon/chainblastfour", "Weapon")
TNT1 A 0 A_Explode(2,64,0)
RDUS ABC 1
TNT1 A 0 A_Explode(2,64,0)
RDUS DEF 1
RDUS GHIGHI 3 A_Explode(2,64,0)
RDUS JKLMNO 1
stop
Detonate2:
TNT1 A 0 A_Explode(11, 96, 0, 0, 32)
goto Detonate+6
StopIt:
TNT1 A 0
stop
}
}

actor BlastAltfireWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_TakeFromTarget("BlastAltCooldown",1)
TNT1 A 0 A_JumpIfInTargetInventory("BlastAltCooldown",1,"Spawn")
Death:
TNT1 A 1
stop
}
}

actor BlastAltCooldown : Ammo
{
	inventory.amount 1
	inventory.maxamount 210
	+INVENTORY.IGNORESKILL
}

actor RaidBombExplosionFX
{
+MISSILE
+NOINTERACTION
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
RDUS ABCDEFJKLMNO 1
stop
}
}

actor PoweredRaidBomb : RaidBomb
{
Obituary "$OB_BLASTMAN3"
Radius 32
Height 32
speed 25
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode",1)
TNT1 A 1
TNT1 A 0 A_ChangeFlag("THRUACTORS",False)
Spawn2:
CBST IIIIJJJJKKKKLLLL 1 A_GiveToTarget("BlastManUltBuildCooldownGiver",1)
loop
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_Explode(20,200,0)
TNT1 A 0 A_Quake(4,35,0,300,0)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",True)
TNT1 A 0 A_PlaySoundEx("weapon/chainblastsix", "Weapon")
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1)
BBFX ABCD 4 A_Explode(4,96,0)
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1)
BBFX ABCD 4 A_Explode(4,96,0)
BBFX EFG 2
stop
}
}

actor BlastManUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_TakeFromTarget("MediumLongUltimateAmmo",1) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1) TNT1 A 0 A_GiveToTarget("BlastManColor1",1)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1) TNT1 A 0 A_GiveToTarget("BlastManColor2",1)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_TakeFromTarget("MediumLongUltimateAmmo",2) TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,1) Goto Death
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1) TNT1 A 0 A_GiveToTarget("BlastManColor1",1)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("BlastManUltBuildCooldownGiver",1) TNT1 A 0 A_GiveToTarget("BlastManColor2",1)
TNT1 A 1 A_Warp(AAPTR_TARGET,0,0,0,0,WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION) TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("MediumLongUltimateAmmo",1,"Spawn")
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("BlastManColor1",1)
TNT1 A 0 A_PlaySoundEx("megaman/geardown","Body")
TNT1 A 0 A_TakeFromTarget("PowerUltBuildCooldown",1)
stop
}
}

actor BlastManColor1 : CustomInventory{states{Pickup:TNT1 A 0 ACS_ExecuteAlways(991,0,908)stop}}
actor BlastManColor2 : CustomInventory{states{Pickup:TNT1 A 0 ACS_ExecuteAlways(991,0,10908)stop}}
actor BlastManColor3 : CustomInventory{states{Pickup:TNT1 A 0 ACS_ExecuteAlways(991,0,20908)stop}}

Actor BlastManUltBuildCooldownGiver : UltBuildCooldownGiver
{
	Powerup.Duration -1
}

//Actor BlastHopTimer : PowerUp{Powerup.Duration 75}//+POWERSPEED.NOTRAIL Speed 1.0}
Actor BlastHopTimer : PowerSpeed{Powerup.Duration 75 Speed 1.2}

actor BlastManTfWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 3 A_GiveToTarget("BlastManColor1",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 3 A_GiveToTarget("BlastManColor2",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 3 A_GiveToTarget("BlastManColor1",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 3 A_GiveToTarget("BlastManColor2",1)
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
Death:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("BlastManColor1",1)
stop
}
}

actor BlastManThirdfireFX : GravityHoldFX
{
ReactionTime 26
States
{
SpawnFrame:
TNT1 A 0
TNT1 A 0 A_SetUserVar("user_angle", random(0, 14))
SpawnLoop:
TNT1 A 0 A_SpawnItemEx("BlastmanTFImpact", 0, 0, 0, 20, 0, 0, user_angle, SXF_ABSOLUTEANGLE|SXF_NOCHECKPOSITION|SXF_TRANSFERPOINTERS|SXF_TRANSFERTRANSLATION)
TNT1 A 0 A_SetUserVar("user_angle", user_angle + 14)
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor BlastmanTFImpact : BasicGraphicEffect
{
Scale 2.5
States
{
SpawnFrame:
SAL3 ABCDDDD 1 A_Fadeout(0.13)
stop
}
}