actor PileDriverBoss : BaseMM8BDMWep_CBM
{
Tag "$TAGC_11G"
dropitem "PileDriverWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 200 
Weapon.Ammotype "PileDrivingAmmo"
Weapon.AmmoUse2 0
Weapon.AmmoGive2 0 
Weapon.Ammotype2 "ImpactPowerGearAmmo"
Obituary "$OB_PILEDRIVER"
+WEAPON.NOAUTOAIM  
States
{
Spawn:
C_01 F 1
loop
Deselect: 
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
IMPP A 1 A_Lower
Loop
Select:
TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
IMPP A 1 A_Raise
Loop

Ready:
TNT1 A 0 ACS_NamedExecuteWithResult("ImpactManDoubleJump",0,0,0)
TNT1 A 0 ACS_ExecuteAlways(998,0,DYE_IMPACTMAN)
TNT1 A 0 A_GunFlash 
Ready1:
TNT1 A 0 A_JumpIfInventory("ImpactPowerGearAmmo",180,"Ready1a")
TNT1 A 0 A_JumpIfInventory("PileDrivingAmmo",100,"Ready2")
IMPP A 1 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",6)
TNT1 A 0 A_GiveInventory("PileDrivingAmmo",2)
Loop
Ready2:
TNT1 A 0 A_JumpIfInventory("ImpactPowerGearAmmo",180,"Ready2a")
IMPP A 1 A_WeaponReady
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",6)
TNT1 A 0 A_GiveInventory("PileDrivingAmmo",2)
loop
Ready1a:
TNT1 A 0 A_JumpIfInventory("PileDrivingAmmo",100,"Ready2a")
IMPP A 1 A_WeaponReady(WRF_NOSECONDARY|WRF_ALLOWRELOAD)
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",6)
TNT1 A 0 A_GiveInventory("PileDrivingAmmo",2)
Goto Ready1
Ready2a:
IMPP A 1 A_WeaponReady(WRF_ALLOWRELOAD)
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",6)
TNT1 A 0 A_GiveInventory("PileDrivingAmmo",2)
loop

Fire:  
TNT1 A 0 A_GiveInventory("SpikingFlag",99)
IMPP BCD 1 A_GiveInventory("PileDrivingAmmo",1)
FireLoopCheck:
TNT1 A 0 //A_GiveInventory("SpikingFlag",99)  
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",300,"FireChill")
TNT1 A 0 A_JumpIfInventory("PileDrivingAmmo",100,"FireLoopCanM2")
FireLoop:
TNT1 A 0 A_PlaySoundEx("weapon/impactoraora","Weapon")
TNT1 A 0 A_GiveInventory("ImpactMain1_CI")
TNT1 A 0 A_GiveInventory("WarioSteamAmmo",10)
IMPP EDE 1 A_GiveInventory("PileDrivingAmmo",2)
TNT1 A 0 A_PlaySoundEx("weapon/impactoraora","Weapon")
TNT1 A 0 A_GiveInventory("ImpactMain1_CI")
TNT1 A 0 A_GiveInventory("WarioSteamAmmo",10)
IMPP EDE 1 A_GiveInventory("PileDrivingAmmo",2)
TNT1 A 0 A_JumpIfInventory("IsBot",1,"BotM2Check")
TNT1 A 0 A_Refire("FireLoopCheck")
Goto FireEnd

FireLoopCanM2:
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY)
TNT1 A 0 A_PlaySoundEx("weapon/impactoraora","Weapon")
TNT1 A 0 A_GiveInventory("ImpactMain1_CI")
TNT1 A 0 A_GiveInventory("WarioSteamAmmo",10)
IMPP EDE 1 A_GiveInventory("PileDrivingAmmo",2)
TNT1 A 0 A_WeaponReady(WRF_NOPRIMARY)
TNT1 A 0 A_PlaySoundEx("weapon/impactoraora","Weapon")
TNT1 A 0 A_GiveInventory("ImpactMain1_CI")
TNT1 A 0 A_GiveInventory("WarioSteamAmmo",10)
IMPP EDE 1 A_GiveInventory("PileDrivingAmmo",2)
TNT1 A 0 A_JumpIfInventory("IsBot",1,"BotM2Check")
TNT1 A 0 A_Refire("FireLoopCheck")
Goto FireEnd

BotM2Check:
TNT1 A 0 A_JumpIfInventory("ImpactPowerGearAmmo",180,"Reload")
TNT1 A 0 A_Jump(16,"FireArm")
TNT1 A 0 A_Refire("FireLoopCheck")//for skinsprites
FireChill:
TNT1 A 0 A_PlaySoundEx("weapon/impactoverheat","soundslot7")
IMPP DB 2 A_GiveInventory("PileDrivingAmmo",2)
TNT1 A 0 A_TakeInventory("SpikingFlag",99)  
TNT1 A 0 A_PlaySoundEx("weapon/impactcooloff","Item")
FireChillLoop:
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1)
IMPP A 1 A_TakeInventory("WarioSteamAmmo",5)
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",1,"FireChillLoop2")
TNT1 A 0 A_PlaySoundEx("weapon/impactcooledoff","Item")
Goto Ready1
FireEnd:
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",200,"FireChill")
TNT1 A 0 A_PlaySoundEx("weapon/impactoverheat","soundslot7")
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1)
TNT1 A 0 A_TakeInventory("SpikingFlag",99)  
IMPP DDBBAAAAAA 1 A_GiveInventory("PileDrivingAmmo",2)
Goto Ready1

FireArm:
TNT1 A 0 A_GiveInventory("SpikeTossFlag",1)  
TNT1 A 0 A_StopSound(CHAN_6)
IMPP DCBA 1
TNT1 A 0 A_PlaySoundEx("weapon/impactoverheat","soundslot7")
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1)
TNT1 A 0 A_PlaySoundEx("weapon/impactdrill","auto")
TNT1 A 0 A_GiveInventory("WarioSteamAmmo",99)//100
TNT1 A 0 A_GiveInventory("ImpactMainX_CI") 
MAGB A 0 A_TakeInventory("PileDrivingAmmo",100, TIF_NOTAKEINFINITE)
TNT1 A 0 A_TakeInventory("SpikeTossFlag",99)  
TNT1 A 0 A_TakeInventory("SpikingFlag",99)  
TNT1 A 0 A_TakeInventory("PileDriverCharge",999) 
IMPP GH 1
IMPP J 10
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",300,"FireChill2")
IMPP JKL 1
IMPP L 1 A_WeaponReady
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",200,"FireChill2")
Goto Ready1

FireChill2:
TNT1 A 0 A_PlaySoundEx("weapon/impactoverheat","soundslot7")
IMPP JKL 1
TNT1 A 0 A_TakeInventory("SpikingFlag",99)  
TNT1 A 0 A_PlaySoundEx("weapon/impactcooloff","Item")
FireChillLoop2:
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1)
IMPP A 1 A_TakeInventory("WarioSteamAmmo",5)
TNT1 A 0 A_JumpIfInventory("WarioSteamAmmo",1,"FireChillLoop2")
TNT1 A 0 A_PlaySoundEx("weapon/impactcooledoff","Item")
Goto Ready1


Altfire: 
TNT1 A 0 A_JumpIfInventory("SpikingFlag",1,"FireArm")
TNT1 A 0 A_JumpIfInventory("PileDrivingAmmo",300,"AltFireCanM2")
TNT1 A 0 A_JumpIfInventory("PileDrivingAmmo",100,"FireArm")//so you can refire m2
Goto FireChill2
AltFireCanM2:
IMPP BC 1 A_TakeInventory("PileDriverCharge",99)
AltfireCharger:
IMPP D 1 A_WeaponReady(WRF_NOSECONDARY)
TNT1 A 0 A_JumpIfInventory("PileDriverCharge",4,"AltFireContinue") 
TNT1 A 0 A_GiveInventory("PileDriverCharge",1)
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",4)
TNT1 A 0 A_ReFire("AltfireCharger")
Goto FireArm
AltFireContinue:
TNT1 A 0 A_PlaySound("weapon/piledriverstart","Weapon")
AltFireLoop:
TNT1 A 0 A_GiveInventory("PileDriverCharge",2)
TNT1 A 0 A_TakeInventory("WarioSteamAmmo",6)
IMPP D 1 A_JumpIfInventory("PileDriverCharge",100,"PileDriverReady")
TNT1 A 0 A_ReFire("AltFireLoop")
Goto FireArm
PileDriverReady:
TNT1 A 0 A_PlaySound("weapon/piledriverloop","Weapon",1.0,1)
PileDriverReadyLoop:
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1,32)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1,32)
IMPP DF 1 
TNT1 A 0 A_ReFire("PileDriverReadyLoop")
PileDriver: 
IMPP C 1 A_TakeInventory("ShieldCheck",1)
TNT1 A 0 A_GiveInventory("ImpactShouldntHiJump",1)
IMPP BAGH 1 A_GiveInventory("ShieldCheck",1)
TNT1 A 0 A_SpawnItemEx("ImpactBoostWarper3",0,0,0,0,0,0,0,1,0)
TNT1 A 0 A_SpawnItemEx("ImpactBoostWarper4",0,0,0,0,0,0,0,1,0) 
TNT1 A 0 A_StopSound("Body")
TNT1 A 0 A_PlaySoundEx("weapon/piledriver","Weapon") 
TNT1 A 0 //A_GiveInventory("ImpactShouldntHiJump",1) 
TNT1 A 0 A_TakeInventory("PileDrivingAmmo",600, TIF_NOTAKEINFINITE)
TNT1 A 0 A_Stop 
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,0,1)
TNT1 A 0 A_Recoil(-50)
Goto ContinueDash
ContinueDash:
TNT1 A 0 A_GiveInventory("BoostPowerPickup")
TNT1 A 0 A_JumpIfInventory("PileManRecoil",1,"Impact")
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(35,25),Random(60,70),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_SpawnItemEx("FlashBombPBossFX",Random(-20,-10),Random(-35,-25),Random(60,70),frandom(-2,0),frandom(-5,-1),frandom(4,5),0,1)
IMPP H 1 A_SpawnItemEX("PileDriverHitbox",16,0,8,momx,momy,momz,0,8)
TNT1 A 0 A_JumpIfInventory("PileManRecoil",1,"Impact")
TNT1 A 0 A_GiveInventory("BoostPowerTimer",1)
TNT1 A 0 A_JumpIfInventory("BoostPowerTimer",11,"DashSlow")
loop
DashSlow:
TNT1 A 0 //A_ScaleVelocity(.5)
DashEnding:
TNT1 A 0 A_JumpIfInventory("PileManRecoil",1,"Impact")
IMPP I 1 A_SpawnItemEX("PileDriverHitbox",16,0,8,momx,momy,momz,0,8)
TNT1 A 0 A_GiveInventory("BoostPowerTimer",1)
TNT1 A 0 A_JumpIfInventory("BoostPowerTimer",20,"DashStop")
loop
DashStop:
TNT1 A 0 A_ScaleVelocity(.5)
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)  
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)
TNT1 A 0 A_TakeInventory("ShieldCheck",1)
TNT1 A 0 A_TakeInventory("BoostPowerTimer",999) 
TNT1 A 0 A_TakeInventory("PileDriverCharge",999) 
TNT1 A 0 A_TakeInventory("ImpactShouldntHiJump",1) 
IMPP IGAAA 3 
Goto Ready1
Impact: 
TNT1 A 0 A_TakeInventory("ShieldCheck",1)
TNT1 A 0 A_TakeInventory("PileDriverCharge",999) 
TNT1 A 0 A_PlaySound("weapon/piledriven",0,1.0)
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_Stop
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 SetPlayerProperty(0,0,4) 
TNT1 A 0 A_SpawnItemEX("ImpactDriverExpVisual",0,0,28,0,0,0,0,1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Quake(2,20,0,150,0)
TNT1 A 0 A_PlaySoundEx("weapon/piledriven","Weapon")
TNT1 A 0 ThrustThingZ(0,35,0,0)
TNT1 A 0 ThrustThing(angle*256/360+128,15,1,0) 
TNT1 A 0 A_TakeInventory("ImpactShouldntHiJump",1) 
TNT1 A 0 A_TakeInventory("BoostPowerTimer",999) 
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)
TNT1 A 0 SetPlayerProperty(0,0,3)
IMPP MMNNOP 1
TNT1 A 14
IMPP A 1 Offset(0,44)
IMPP A 1 Offset(0,40)
IMPP A 1 Offset(0,36)
IMPP A 1 Offset(0,32)
IMPP A 1 Offset(0,28)
goto Ready1



Reload:
TNT1 A 0 A_TakeInventory("ShieldCheck",1)
TNT1 A 0 A_GiveInventory("PowerGearMode",1)
TNT1 A 0 A_ChangeFlag("PICKUP",0)
TNT1 A 0 A_GiveInventory("ImpactShouldntHiJump",1) 
HFIS A 0 A_GiveInventory("NoJumpCancel",1)
HFIS A 0 A_GiveInventory("LadderDisable",1) 
TNT1 A 0 ACS_NamedExecuteWithResult("BULL_SetState",1)
TNT1 A 0 A_ChangeVelocity(momx,momy,0,CVF_REPLACE)
TNT1 A 0 A_PlaySoundEx("weapon/impacttransform","auto")
TNT1 A 0 A_SpawnItemEx("ImpactPGTransformEffect2",0,0,50,0,0,0,0,1)
TNT1 A 0 ThrustThingZ(0,30,1,0)
TNT1 A 0 ThrustThingZ(0,70,0,0)
TNT1 A 0 A_PlaySoundEx("weapon/impactleap","auto") 
TNT1 A 0 A_ChangeVelocity(momx,momy,0,CVF_REPLACE)
TNT1 A 0 ThrustThingZ(0,30,1,0)
TNT1 A 0 ThrustThingZ(0,70,0,0)
TNT1 A 0 A_Recoil(-30)  
IMPP MNOP 1
BigLeap:
TNT1 A 0 ACS_NamedExecuteWithResult("BULL_SetState",2)
IMPZ KLM 3
TNT1 A 0 A_GiveInventory("StunArmor",1) 
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_ChangeFlag("SOLID",0)
TNT1 A 0 A_ChangeFlag("THRUSPECIES",1)
TNT1 A 0 A_GiveInventory("InvulnerableOn_Pickup",1)
TNT1 A 0 A_GiveInventory("ImpactPowerGearLandDelay",1)
TNT1 A 0 ACS_NamedExecuteWithResult("BULL_SetState",3)
AirTime:
HFIS A 0 A_GiveInventory("WeaponCharge",1) 
IMPZ M 1 A_JumpIf(z-floorz==0,"PowerStomp")
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,Random(50,70),Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,0,Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,Random(-70,-50),Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_JumpIfInventory("WeaponCharge",210,"ReloadFinish")
loop 
PowerStomp:
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,0,1)
TNT1 A 0 SetPlayerProperty(0,1,0)
TNT1 A 0 A_Stop
TNT1 A 0 A_PlaySoundEx("weapon/impactimpact","auto")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Quake(4,20,0,350,0)
TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx("UranusDeepDiggerSlamFX",random(0,300),0,0,random(0,8),0,random(8,20),random(0,359),1)
TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx("UranusDeepDiggerSlamFX",random(0,200),0,0,random(0,8),0,random(8,20),random(0,359),1)
TNT1 AAAAAAAAAAAAAA 0 A_SpawnItemEx("UranusDeepDiggerSlamFX",random(0,100),0,0,random(0,8),0,random(8,20),random(0,359),1)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_FloorQuakeDamage",0,300,3,33)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_FloorQuakeDamage",0,250,3,33)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_FloorQuakeDamage",0,200,3,33) 
TNT1 A 0 ACS_NamedExecuteAlways("cbm_FloorQuakeDamage",0,150,3,33)
TNT1 A 0 ACS_NamedExecuteAlways("cbm_FloorQuakeDamage",0,100,3,33) 
TNT1 AA 0 A_SpawnItemEx("Hardman_QuakeFX_H1") 
PowerStompL: 
IMPZ L 1 A_TakeInventory("WeaponCharge",999)
TNT1 A 0 A_JumpIfInventory("ImpactPowerGearLandDelay",1,"PowerStompL") 
IMPZ L 5
TNT1 A 0 A_PlaySoundEx("weapon/impactsupacharge","auto") 
PowerStompFXStartup:
IMPZ L 1
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,Random(50,70),Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,0,Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
IMPZ LL 0 A_SpawnItemEx("FlashBombPBossFX",0,Random(-70,-50),Random(150,200),frandom(-2,0),frandom(1,5),frandom(4,5),0,1)
TNT1 A 0 A_GiveInventory("WeaponCharge",1) 
TNT1 A 0 A_JumpIfInventory("WeaponCharge",13,"ItsTimeToStomp") 
goto PowerStompFXStartup
ItsTimeToStomp:
TNT1 A 0 A_TakeInventory("WeaponCharge",999) 
TNT1 A 0 A_PlaySoundEx("weapon/impactcrush","auto")
IMPZ L 2
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,192),0,5,0,0,Random(0,3),Random(0,359),1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,192),0,5,0,0,Random(0,3),Random(0,359),1)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,192),0,5,0,0,Random(0,3),Random(0,359),1) 
IMPZ L 5
TNT1 A 0 A_PlaySoundEx("weapon/impactmegaquake","auto") 
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Quake(8,40,0,600,0)  
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_Quake(8,20,0,1500,0)  
//TNT1 A 0 A_TakeInventory("ImpactPGReady",999)
Goto BOOOOOOOOOOOM
BOOOOOOOOOOOM: 
TNT1 A 0 A_GiveInventory("BringTheBoom_PU",1)   
//inner ring for 60
TNT1 A 0 A_SpawnItemEx("ImpactPGCenterExplosionDamage",0,0,5,0,0,0,0,1)
//inner ring for 35
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,225,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSideExplosionDamage",128,0,5,0,0,0,315,1)
//outer ring for 25
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,22.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,67.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,112.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,157.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,202.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,247.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,292.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide2ExplosionDamage",256,0,5,0,0,0,337.5,1)
//outer ring for 15
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,22.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,67.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,112.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,157.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,202.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,225,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,247.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,292.5,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,315,1)
TNT1 A 0 A_SpawnItemEx("ImpactPGSide3ExplosionDamage",384,0,5,0,0,0,337.5,1)
//fire
BGHA A 0 A_SpawnItemEx("ImpactPowerGearAmmoTake60")
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
IMPZ N 2 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
IMPZ NK 1 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
IMPZ NK 1 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1) 
IMPZ NK 1
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(8,16),Random(0,359),1)  
IMPZ NK 1
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(6,12),Random(0,359),1) 
IMPZ NK 1
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(6,12),Random(0,359),1) 
IMPZ NK 1
TNT1 AAAAAA 0 A_SpawnItemEx("ImpactPGFireVisuals",Random(0,128),0,5,0,0,Random(6,12),Random(0,359),1) 
//POWB HFJIHFJIHFJIH 2
IMPZ KKKKKLLLL 2
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
IMPZ LLLL 2 A_JumpIf(ACS_NamedExecuteWithResult("Get_Button_R") == 1, "ReFireTime")
goto ReloadFinish
ReFireTime:
IMPZ L 2 A_JumpIfInventory("ImpactPowerGearAmmo",60,"BigLeapState")
Goto ReloadFinish
BigLeapState:
TNT1 A 0 A_PlaySoundEx("weapon/impactleap","auto") 
TNT1 A 0 A_ChangeVelocity(momx,momy,0,CVF_REPLACE)
TNT1 A 0 ThrustThingZ(0,30,1,0)
TNT1 A 0 ThrustThingZ(0,70,0,0)
TNT1 A 0 A_Recoil(-30)
goto BigLeap 
ReloadFinish:
TNT1 A 0 A_TakeInventory("WeaponCharge",999)
TNT1 A 0 A_TakeInventory("ImpactPGReady",999)
TNT1 A 0 A_TakeInventory("ImpactPowerGearAmmo",999) 
TNT1 A 0 A_TakeInventory("PowerGearMode",999)  
TNT1 A 0 A_TakeInventory("StunArmor",999)  
TNT1 A 0 A_GiveInventory("InvulnerableOff_Pickup",1)
TNT1 A 0 A_ChangeFlag("PICKUP",1)
TNT1 A 0 A_SpawnItemEx("ResolidifyPlayer_H") 
//POWB FJIHFJI 3
TNT1 A 3 Offset(0,44)
IMPP A 3 Offset(0,44)
IMPP A 3 Offset(0,40)
IMPP A 3 Offset(0,36)
IMPP A 3 Offset(0,32)
IMPP A 3 Offset(0,28)
IMPP A 6 A_GiveInventory("LadderEnable",1)
DRIA B 0 A_TakeInventory("NoJumpCancel",1)
TNT1 A 0 ACS_ExecuteAlways(CORE_ACS_191,0,APROP_JumpZ,10,1)
TNT1 A 0 A_ChangeFlag("NOGRAVITY",0)
TNT1 A 0 A_ChangeFlag("THRUSPECIES",0)
TNT1 A 0 A_TakeInventory("ImpactShouldntHiJump",999) 
TNT1 A 0 SetPlayerProperty(1,0,0) 
Goto Ready1

/*Item method
Flash: 
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("IsDead",1,"Flash")
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"Flash")
//TNT1 A 0 A_JumpIf(z-floorz==0,"FlashEnabled")
//Loop
FlashEnabled:
TNT1 A 1
TNT1 A 0 A_JumpIfInventory("ImpactBootActivation",1,"FlashJump")
Goto Flash*/

Flash:
TNT1 A 1 
TNT1 A 0 A_JumpIfInventory("IsDead",1,"Flash")
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"Flash") 
TNT1 A 0 A_JumpIfInventory("ImpactBootActivation",1,"FlashJump")
Loop 
FlashJump:
TNT1 A 0 A_ChangeVelocity(momx,momy,0,CVF_REPLACE)
TNT1 A 0 A_PlaySoundEx("misc/marslaunch","SoundSlot6")
TNT1 A 0 ThrustThingZ(0,80,0,1)
TNT1 A 0 A_GiveInventory("ShieldCheck",1)
TNT1 A 0 A_GiveInventory("ImpactRocketBoots_P",1)
TNT1 A 1 A_SpawnItemEx("ImpactPointyHead",0,0,56,0,0,momz,0,SXF_ABSOLUTEMOMENTUM)
TNT1 A 0 A_SpawnItemEx("ImpactBoostWarper1",0,0,0,0,0,0,0,1,0)
TNT1 A 0 A_SpawnItemEx("ImpactBoostWarper2",0,0,0,0,0,0,0,1,0) 
FlashFlyLoop: 
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"FlyCancel") 
TNT1 A 0 A_JumpIfInventory("IsDead",1,"FlyCancel")
TNT1 A 0 A_JumpIfInventory("ImpactAirTime",25,"FlashFallLoop")
TNT1 A 0 A_GiveInventory("ImpactAirTime",1) 
TNT1 A 0 A_JumpIfInventory("ImpactActorLand",1,"FlashFallen")
TNT1 A 1 A_JumpIf(z-floorz==0,"FlashFallen")
TNT1 A 0 A_SpawnItemEx("ImpactStompChecker",0,0,0,0,0,-15,0,1)
TNT1 A 0 A_PlaySoundEx("weapon/ragingtorchflame","SoundSlot5") 
loop
FlashFallLoop: 
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"FlyCancel")
TNT1 A 0 A_JumpIfInventory("IsDead",1,"FlyCancel")
TNT1 A 0 A_GiveInventory("ImpactStompForce",1)  
TNT1 A 0 A_SpawnItemEx("ImpactStompChecker",0,0,0,0,0,-15,0,1)
TNT1 A 0 A_JumpIfInventory("ImpactActorLand",1,"FlashFallen")
TNT1 A 1 A_JumpIf(z-floorz==0,"FlashFallen")
TNT1 A 0 A_PlaySoundEx("weapon/ragingtorchflame","SoundSlot5") 
loop
FlashFallen:
TNT1 A 0 A_PlaySoundEx("misc/quake","Body")
TNT1 A 0 A_Quake(3,10,0,96) 
//TNT1 A 0 A_FireCustomMissile("ImpactStompDamager",0,0,0,0)
TNT1 A 0 A_SpawnItemEx("BassDashDustLarger")
TNT1 AAAAAAA 0 A_SpawnItemEx("UranusDeepDiggerSlamFX",random(0,96),0,0,random(0,8),0,random(3,20),random(0,359),1) 
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,15,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,30,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,45,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,60,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,75,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,90,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,105,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,120,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,135,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,150,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,165,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,180,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,195,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,210,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,225,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,240,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,255,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,270,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,285,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,300,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,315,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,330,1)
TNT1 A 0 A_SpawnItemEx("ImpactStompDamager",0,0,0,15,0,0,345,1)
TNT1 A 0 A_TakeInventory("ImpactRocketBoots_P",1) 
TNT1 A 0 A_TakeInventory("ImpactAirTime",999)
TNT1 A 0 A_TakeInventory("ShieldCheck",999)
TNT1 A 0 A_GiveInventory("ImpactStompCooldownGiver",1)
TNT1 A 5 
TNT1 A 0 A_TakeInventory("ImpactStompForce",999)
TNT1 A 100 
goto Flash
FlyCancel: 
TNT1 A 0 A_TakeInventory("ImpactRocketBoots_P",1) 
TNT1 A 0 A_TakeInventory("ImpactAirTime",999)
TNT1 A 0 A_TakeInventory("ImpactStompForce",999)
TNT1 A 0 A_TakeInventory("ShieldCheck",999)
FlyCancelL:
TNT1 A 1 
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"FlyCancelL")
TNT1 A 0 A_GiveInventory("ImpactStompCooldownGiver",1)
TNT1 A 105 
goto Flash
}
}
 
//Impact Stomp 
/* item method
actor ImpactBootActivationItem : BasicClassItem
{
inventory.pickupmessage "To infinity... AND BEYOND!"
inventory.icon "HornIcon"
Tag "Jet-Boots Button"
states
{
Spawn:
HORH I 1
loop
Use: 
TNT1 A 0
TNT1 A 0 A_JumpIf(z-floorz!=0,"Nope")
TNT1 A 0 A_JumpIfInventory("ImpactShouldntHiJump",1,"Nope")
TNT1 A 0 A_JumpIfInventory("ImpactStompCooldown",1,"Nope")
TNT1 A 0 A_GiveInventory("ImpactBootActivation",1)
fail
Nope:   
TNT1 A 0 A_PlaySoundEx("weapon/noammo","soundSlot5")
fail
}
}*/

actor ImpactBootActivation : Powerup
{ 
Powerup.Duration 3
} 

/*actor ImpactStompDamager : BasicExplosion
{
obituary "$OB_IMPACTSTOMP"
damagetype "ImpactM_Stomp"
States
{
Spawn:
TNT1 A 0  
TNT1 A 2 A_Explode(5+ACS_NamedExecuteWithResult("ImpactStompDMG"),128,0,0,64)
stop 
}
}  */

  Actor ImpactStompDamager
  {
	obituary "$OB_IMPACTSTOMP"
	damagetype "ImpactM_Stomp"
    +MISSILE
	+DONTBLAST
	+THRUACTORS
	+DONTSPLASH
	+FORCEXYBILLBOARD
	Damage (0)
	Height 2
	Radius 2
	Speed 5
	Scale 2.5
    +NOGRAVITY
	RenderStyle translucent
	Alpha 0.25
	Speed 15
	States
	{
		Spawn:
		DUOR TT 0
		SpawnLoop1:
		DUOR T 1 A_SetScale(1.5,scaleY-0.08) 
		DUOR T 0 A_Explode(5+ACS_NamedExecuteWithResult("ImpactStompDMG"),48,0,0,64)
		DUOR T 0 A_JumpIfInventory("WeaponCharge",12,"SpawnLoop2")
		DUOR T 0 A_GiveInventory("WeaponCharge",1)
		loop
		SpawnLoop2:
		DUOR T 0 A_Explode(5+ACS_NamedExecuteWithResult("ImpactStompDMG"),48,0,0,64)
		DUOR T 1 A_FadeOut(0.05)
		Wait
		
		Death:
		TNT1 A 0
		Stop
	}
  }
  
actor ImpactM_StompProtect : PowerProtection
{
Powerup.Duration 50
DamageFactor "ImpactM_Stomp", 0.0
}
  
actor ImpactAirTime : Inventory
{ 
inventory.maxamount 100
} 

actor ImpactActorLand : Powerup
{ 
Powerup.Duration 3
} 

actor ImpactStompForce : Inventory
{ 
inventory.maxamount 100
}
 
actor ImpactStompCooldown : Powerup {}
  
actor ImpactStompCooldownGiver : PowerupGiver
{ 
powerup.type "ImpactStompCooldown"
Powerup.Duration 105
+INVENTORY.AUTOACTIVATE   
} 

actor BringTheBoom_PU : Powerup
{ 
Powerup.Duration 5
} 

actor ImpactPowerGearAmmoTake60 : BasicHelper
{
	args 60//hehehe
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_TakeFromTarget("ImpactPowerGearAmmo", args[0], TIF_NOTAKEINFINITE)
			stop
	}
}

actor ImpactStompChecker
{
PROJECTILE 
height 5
radius 15
speed 32
Damage (0) 
+DOOMBOUNCE
+CANBOUNCEWATER
+DONTSPLASH
States
{
Spawn:
TNT1 A 0
TNT1 A 1
stop
Death: 
TNT1 A 0 A_GiveToTarget("ImpactActorLand",1)
stop
}
}
 
actor ImpactPointyHead
{
PROJECTILE 
height 10
radius 15
speed 5
Damage (50)//This should instakill tbh
Scale 2.5
Obituary "$OB_IMPACTHEAD"
+DONTSPLASH 
States
{
Spawn:
TNT1 A 0
TNT1 AAAAAAAAAAAA 1 A_Warp(AAPTR_TARGET,0,0,56,0,24)
Stop
Death:   
TNT1 A 1 
stop
}
}  
 
actor ImpactRocketBoots_P : PowerSpeed
{
Speed 2.5
powerup.duration 0x7fffffff
+POWERSPEED.NOTRAIL
}

actor ImpactBoostWarper1 : ShieldWarper_CBM
{
+NOTIMEFREEZE
+FORCEYBILLBOARD
renderstyle add
scale 2
States
{
Shield:
STAC D 0 A_JumpIfInTargetInventory("PowerRage_ST",1,"ShieldR")
IMFX AABBCC 1 A_Warp(AAPTR_TARGET,-2,-16,0,0,24)
loop
ShieldR:
IMFX ABC 1 A_Warp(AAPTR_TARGET,-2,-16,0,0,24)
goto Shield
}
}

actor ImpactBoostWarper2 : ImpactBoostWarper1
{
States
{
Shield:
STAC D 0 A_JumpIfInTargetInventory("PowerRage_ST",1,"ShieldR")
IMFX AABBCC 1 A_Warp(AAPTR_TARGET,-2,16,0,0,24)
loop
ShieldR:
IMFX ABC 1 A_Warp(AAPTR_TARGET,-2,16,0,0,24)
goto Shield
}
}

actor ImpactBoostWarper3 : ShieldWarper_CBM
{
+NOTIMEFREEZE
+FORCEYBILLBOARD
renderstyle add
scale 2.5
States
{
Shield:
STAC D 0 A_JumpIfInTargetInventory("PowerRage_ST",1,"ShieldR")
IMFX DDEEFFGG 1 A_Warp(AAPTR_TARGET,65,-16,20,180,24)
loop
ShieldR:
IMFX DEFG 1 A_Warp(AAPTR_TARGET,65,-16,20,180,24)
goto Shield
}
}

actor ImpactBoostWarper4 : ImpactBoostWarper3
{
States
{
Shield:
STAC D 0 A_JumpIfInTargetInventory("PowerRage_ST",1,"ShieldR")
IMFX DDEEFFGG 1 A_Warp(AAPTR_TARGET,65,16,20,180,24)
loop
ShieldR:
IMFX DEFG 1 A_Warp(AAPTR_TARGET,65,16,20,180,24)
goto Shield
}
}

//Impact MUDAMUDAMUDAMUDA
actor ImpactM_Spike : FastProjectile
{
var int user_damage;
translation "192:192=85:85","202:202=4:4","199:199=85:85"
PROJECTILE
damagetype "ImpactM_Spike"
Obituary "$OB_IMPACTSPIKE"
damage (4)
Radius 14
Height 8
speed 70
scale 3 
+FORCEXYBILLBOARD 
States
{
Spawn:
TNT1 AA 0
IMPC A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
IMPC ABCDEE 1
Stop
XDeath:
ELEA C 0 A_PlaySound("weapon/impactimpale","Voice")
Death:
NEDR UVU 2
stop
}
}

actor ImpactM_SpikeB : ImpactM_Spike{translation "192:192=74:74","202:202=205:205","199:199=74:74"}
actor ImpactM_SpikeR : ImpactM_Spike{translation "192:192=41:41","202:202=171:171","199:199=41:41"}
actor ImpactM_SpikeO : ImpactM_Spike{translation "192:192=128:128","202:202=104:104","199:199=128:128"}
actor ImpactM_SpikeP : ImpactM_Spike{translation "192:192=232:232","202:202=229:229","199:199=232:232"}


actor SpikingFlag : Inventory
{ 
inventory.maxamount 1 
}

actor SpikeTossFlag : Inventory
{ 
inventory.maxamount 1 
}

//Impact Arm
Actor ImpactM_Arm
{
Translation "192:192=229:229", "198:198=220:220", "202:202=198:198", "250:250=210:210"
PROJECTILE
damagetype "ImpactM_Traps"
Obituary "$OB_IMPACTDRILL"
+FORCEXYBILLBOARD 
+EXPLODEONWATER 
+HITTRACER
Damage (0)
Radius 14
Height 14
speed 40
Scale 2.5
gravity 1.5
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 ACS_NamedExecuteAlways("BULL_Tidifier", 0)
SpawnLoop:
IMPD A 1 A_SpawnItemEx("KuiFireFX",0,0,0,0,0,0,180,1)
TNT1 A 0 A_PlaySoundEx("weapon/ragingtorchflame","Body") 
IMPD A 1 A_SpawnItemEx("KuiFireFX",0,0,0,0,0,0,180,1)
TNT1 A 0 A_PlaySoundEx("weapon/ragingtorchflame","Body") 
TNT1 A 0 A_JumpIfInventory("WeaponCharge",18,"Fallin")
TNT1 A 0 A_GiveInventory("WeaponCharge",2)
loop
Fallin:
//IMPD A 0 A_ScaleVelocity(.75)
IMPD A 0 A_ChangeFlag("NOGRAVITY",FALSE)
IMPD A 1
wait
Death:
TNT1 A 0 A_PlaySound("weapon/crashland","voice")
//TNT1 A 0 A_PlaySoundEx("weapon/impactarmhit","soundslot5")
TNT1 A 0 A_PlaySoundEx("weapon/fistimpact","Body")
TNT1 A 0 A_CheckCeiling("DeathCeiling")
TNT1 A 0 A_CheckFloor("DeathFloor") 
TNT1 A 0 A_SpawnItemEx("ImpactSpikeMineW",0,0,0,0,0,0,0,1)
TNT1 A 5
Stop
DeathFloor:
TNT1 A 0 A_SpawnItemEx("ImpactSpikeMineF",0,0,0,0,0,0,0,1)
TNT1 A 5
Stop
DeathCeiling:
TNT1 A 0 A_SpawnItemEx("ImpactSpikeMineC",0,0,-28,0,0,0,0,1)
TNT1 A 5
Stop
XDeath:
/*TNT1 A 0 A_PlaySoundEx("weapon/fistimpact", "Weapon")
TNT1 A 0 A_Explode(4,96,0,0,48)
IMPD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 1 A_Warp(AAPTR_TRACER,0,0,52,0,0)*/
TNT1 A 0 A_PlaySoundEx("classes/drillexplode", "Weapon")
TNT1 A 0 A_Explode(16,96,0,0,48)
TNT1 A 0 A_SpawnItemEx("ImpactDriverExpVisual",0,0,0,0,0,0,0,1)
TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturn",0,0,0,0,0,0,0,1)
TNT1 A 2
stop
}
}

actor KuiFireFX
{
PROJECTILE
+CLIENTSIDEONLY 
+NOGRAVITY
+NOCLIP
+THRUACTORS
renderstyle add
radius 1
height 1
scale 1
States
{
Spawn:
Y_5G EE 0
TNT1 A 1
IMFX D 1 A_FadeOut(.2)
IMFX D 0 A_SetScale(scalex-0.15)
IMFX E 1 A_FadeOut(.2)
IMFX E 0 A_SetScale(scalex-0.15)
IMFX F 1 A_FadeOut(.2)
IMFX F 0 A_SetScale(scalex-0.15)
IMFX G 1 A_FadeOut(.2)
IMFX G 0 A_SetScale(scalex-0.15)
stop
}
}

actor KuiFireFX2 : KuiFireFX{alpha 0.8}

Actor ImpactM_ArmB : ImpactM_Arm{translation "192:192=205:205", "198:198=74:74", "202:202=205:205", "199:199=74:74","250:250=205:205"}
Actor ImpactM_ArmR : ImpactM_Arm{translation "192:192=171:171", "198:198=41:41", "202:202=171:171", "199:199=41:41","250:250=171:171"}
Actor ImpactM_ArmO : ImpactM_Arm{translation "192:192=104:104", "198:198=128:128", "202:202=104:104", "199:199=128:128","250:250=104:104"}
Actor ImpactM_ArmP : ImpactM_Arm{translation "192:192=229:229", "198:198=232:232", "202:202=229:229", "199:199=232:232","250:250=229:229"}

Actor ImpactM_ArmReturn : DuoPunchLeftyReturn
{
Translation "194:194=193:193","195:195=39:39"
+NOCLIP
Scale 2.5
+FORCEXYBILLBOARD
renderstyle translucent
alpha 0.8
reactiontime 500 //15 sec
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_RearrangePointers(0,0,2)
TNT1 A 0 A_FaceTarget
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfCloser(64,"Death")
TNT1 AA 0 A_SeekerMissile(90,90,SMF_PRECISE)
TNT1 A 0 A_PlaySoundEx("weapon/ragingtorchflame","Body") 
IMPD A 1 A_SpawnItemEx("KuiFireFX2",0,0,0,0,0,0,180,1)//A_SpawnItemEx("BounceM_TetherWireFX",0,0,0,0,0,0,0,1)
TNT1 A 0 A_CountDown
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,"Death")
loop
Return:
Death2:
Death:
BNCM I 0 //A_GiveToTarget("BounceHandReturn",999)
TNT1 A 3
stop
}
}

//Impact Mine

ACTOR ImpactSpikeMineW
{
Radius 14
Height 14
Speed 0
Damage (0) 
ReactionTime 280
Projectile  
Obituary "$OB_IMPACTTRAPS" 
damagetype "ImpactM_Traps"  
+DONTBLAST
Scale 2.5
States
{
Spawn: 
TNT1 A 0
TNT1 A 0 A_FaceTarget
IMPD B 1 A_Countdown
Goto Spawn+2
Death: 
TNT1 A 0 A_PlaySoundEx("classes/drillexplode", "Weapon")
TNT1 A 0 A_Explode(16,96,0,0,48)
TNT1 A 0 A_SpawnItemEx("ImpactDriverExpVisual",0,0,12,0,0,0,0,1)
TNT1 A 0 A_CheckFloor("FloorDeath")
TNT1 A 0 A_JumpIfInventory("WeaponCharge",1,"CeilingDeath")
IMPD A 1 A_Recoil(-50)
IMPD AA 1 A_Fadeout//TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturnSpawner_W",0,0,0,0,0,0,0,1)
IMPD A 5
TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturn",0,0,0,0,0,0,0,1)
Stop
FloorDeath:
IMPD F 1 ThrustThingZ(0,40,0,0)
IMPD FF 1 A_Fadeout//TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturnSpawner_W",0,0,0,0,0,0,0,1)
IMPD F 5
TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturn",0,0,0,0,0,0,0,1)
Stop
CeilingDeath:
IMPD E 1 ThrustThingZ(0,40,1,0)
IMPD EE 1 A_Fadeout//TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturnSpawner_W",0,0,0,0,0,0,0,1)
IMPD E 5
TNT1 A 0 A_SpawnItemEx("ImpactM_ArmReturn",0,0,0,0,0,0,0,1)
Stop
}
} 
 
ACTOR ImpactSpikeMineF : ImpactSpikeMineW
{
Height 28
States
{
Spawn: 
TNT1 AA 0
IMPD D 1 A_Countdown
Loop 
}
}

ACTOR ImpactSpikeMineC : ImpactSpikeMineW
{
Height 28
States
{
Spawn: 
TNT1 AA 0
TNT1 A 0 A_GiveInventory("WeaponCharge",1)
IMPD C 1 A_Countdown
Loop 
}
}
  
 
//Impact Pile Driver
actor PileDriverHitbox //: FastProjectile
{
PROJECTILE 
Obituary "$OB_PILEDRIVER"
Damagetype "ImpactM_PileDriver"
height 48
Radius 32//20
speed 32
Damage (32)
Scale 2.5
alpha 0.85
renderstyle translucent
+STEPMISSILE 
+HITTRACER
+NOEXPLODEFLOOR
States
{
Spawn:
TNT1 AA 0
TNT1 A 1
stop
Death:
XDeath:
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("cbm_istracerally")==1,"Stupid")
Recoil:
//TNT1 A 0 A_SetDamageType("ImpactM_DriverBoom")
TNT1 A 1
TNT1 A 0 A_Explode (32, 96, 0,0,48)
TNT1 A 0 A_GiveToTarget("PileManRecoil", 1)
stop
Stupid:
TNT1 A 0
stop
}
}

actor PileManRecoil : Powerup
{
powerup.duration 10
}
 
actor PileDriverCharge : Inventory
{ 
inventory.maxamount 100
} 
    
actor PileDrivingAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 300
+INVENTORY.IGNORESKILL
}

actor WarioSteamAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 300
+INVENTORY.IGNORESKILL
}

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

actor BoostPowerPickup : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_SpawnItemEX("BoostBlastFX",35,0,35,0,0,0,0,1)
TNT1 A 0 A_JumpIf(z-floorz==0,"Ground")
goto Air
Air:
TNT1 A 0 A_ChangeVelocity(5,0,momz,CVF_RELATIVE)
//TNT1 A 0 A_Recoil(-2)//A_JumpIfInventory("BoostPowerTimer",10,"Death")
//TNT1 A 0 A_ChangeVelocity(-2,0,momz,CVF_RELATIVE)//A_Recoil(-2)
stop
Ground:
TNT1 A 0 A_ChangeVelocity(10,0,momz,CVF_RELATIVE)
//TNT1 A 0 A_Recoil(-10)//A_Recoil(-10)
TNT1 A 0 A_SpawnItemEX("DashDust",0,0,8,5,0,0,180,1)
stop
Death:
TNT1 A 0
stop
}
}

actor BoostBlastFX
{
PROJECTILE 
damage (0)
Radius 1
Height 1
scale 3
alpha 0.5
RenderStyle add
+CLIENTSIDEONLY
+NOCLIP
+THRUACTORS
States
{
Spawn:
TNT1 A 0
X_5F DEF 1 A_Warp(AAPTR_TARGET, 35, 0, 35, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
stop
}
}
 
actor ImpactDriverExpVisual : BasicClientSide
{    
scale 3//2.5
+FORCEXYBILLBOARD
+BRIGHT  
translation "192:192=4:4", "198:198=215:215"
States
{
Spawn:
IMPX AA 0
IMPX ABCDEFG 2
stop
}
}   
  
actor ImpactLilBum
{ 
PROJECTILE
Translation "192:192=4:4","198:198=214:214","250:250=215:215","249:249=215:215"
scale 3 
+NOINTERACTION
States
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_PlaySoundEx("weapon/pileimpact","Weapon")
TMFX ABCD 3
stop
}
}

actor ImpactM_DriverProtect : PowerProtection
{
Powerup.Duration 35
DamageFactor "ImpactM_PileDriver", 0.0
DamageFactor "ImpactM_DriverBoom", 0.0
}

/*actor PileDriverArmorBreak : Powerup//PowerProtection
{
Powerup.Duration 140
//DamageFactor "Normal", 1.30
}*/

actor PileDriverArmorBreak : PowerSpeed
{
Speed 0.65
Powerup.Duration 140
+POWERSPEED.NOTRAIL
}

actor Impact_DEF_Break_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 
TNT1 A 0 A_JumpIfInventory("PileDriverArmorBreak",1,2)
TNT1 A 0 A_SpawnItemEx("PileDriverArmorBreak_H")
TNT1 A 0 A_GiveInventory("PileDriverArmorBreak",1) 
stop
}
}

actor PileDriverArmorBreak_H : BasicHelper
{
States
{
Spawn:
TNT1 A 0 
TNT1 A 5 A_GiveToTarget("PileDriverArmorBreakFX_P",1)
TNT1 A 0 A_JumpIfInTargetInventory("ScrewBoltLeakerCounter",3,"Death")
TNT1 A 1 A_JumpIfInTargetInventory("PileDriverArmorBreak",1,"Spawn")
Death:
TNT1 A 0 A_TakeFromTarget("PileDriverArmorBreak",1) 
TNT1 A 5 A_TakeFromTarget("ScrewBoltLeakerCounter",4) 
stop
}
}

actor PileDriverArmorBreakFX_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 AA 0 A_SpawnItemEx("PileDriverArmorBreakFX",random(-16,16),random(-16,16),Random(25,50),frandom(2,6),0,frandom(-0.5,7.55),frandom(1,359),1,128)
stop
}
}

actor PileDriverArmorBreakFX
{   
PROJECTILE
+THRUACTORS
-NOGRAVITY
+CLIENTSIDEONLY
+FORCEXYBILLBOARD
+NOEXPLODEFLOOR
Damage(0)
Height 0
Radius 0 
RenderStyle "Translucent"
Alpha 0.8
Scale 1.5
States
{
Spawn:
TNT1 AA 0
IMAB A 5
IMAB A 1 A_Fadeout(.05)
wait
}
}

actor ScrewBoltLeaker : CustomInventory
{ 
States
{
Pickup:
TNT1 A 0 
//TNT1 A 0 A_JumpIfInventory("ScrewBoltLeakerCounter",3,"nope")
TNT1 A 0 A_JumpIfInventory("ScrewBoltLeakerCooldown",1,"nope")
TNT1 A 0 A_GiveInventory("ScrewBoltLeakerCooldown",1)
//TNT1 A 0 A_GiveInventory("ScrewBoltLeakerCounter",1)
TNT1 A 0 A_SpawnItemEx("ScrewBoltMiniPickup",0,0,32,Random(3,6),0,Random(6,12),Random(0,359),1)
//TNT1 A 0 A_PlaySound("BaBH/Fart")
TNT1 AAAAAA 0 A_SpawnItemEx("PileDriverArmorBreakFX",random(-16,16),random(-16,16),Random(25,50),frandom(2,6),0,frandom(-0.5,7.55),frandom(1,359),1)
stop
nope:
TNT1 A 0
stop
}
} 

actor ScrewBoltLeakerCooldown : Powerup
{
 Powerup.Duration 10
}
 
 actor ScrewBoltLeakerCounter : Inventory
{
 Inventory.MaxAmount 4
}
 
actor IsImpact : Inventory
{
 Inventory.MaxAmount 69
 -INVBAR
}

actor ImpactPGReady : Inventory
{
 Inventory.MaxAmount 69
 -INVBAR
}
 

//Impact ROOOADROLAAADAAAAA
actor ImpactPowerGearAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 180
+INVENTORY.IGNORESKILL
}

actor ImpactPowerAmmoUp : Powerup
{
 Powerup.Duration 20
} 

actor ImpactShouldntHiJump : Inventory
{
 Inventory.MaxAmount 1
} 

actor PowerGearMode : Inventory
{
 Inventory.MaxAmount 1
} 
 
actor ImpactPowerGearLandDelay : Powerup
{
 Powerup.Duration 25
} 
  

ACTOR ImpactPGTransformEffect2 
{
+CLIENTSIDEONLY 
+NOGRAVITY
+NOCLIP
+THRUACTORS
+BRIGHT 
radius 2
height 2
scale 4
States
{
Spawn:
IMPG A 0
IMPG AZBZCZDD 1 A_Warp(AAPTR_TARGET,0,0,50,0,WARPF_INTERPOLATE)
TNT1 A 0 A_SetScale(7.0,7.0)
IMPG AABBCCDDZAZABZBZCZCZ 1 A_Warp(AAPTR_TARGET,0,0,50,0,WARPF_INTERPOLATE)
stop
}
}

actor ImpactPGCenterExplosionDamage : BasicExplosion
{
obituary "$OB_IMPACTBIGBOOM" 
damagetype "ImpactM_PGBOOOOOOOOOOOOOM"
scale 7.5
//+NOCLIP
renderstyle add
alpha 0.25
+STEPMISSILE
-NOINTERACTION
maxstepheight 999
+NOEXPLODEFLOOR
+FLOORHUGGER
States
{
Spawn:
TNT1 A 0  
TNT1 A 2 A_Explode(60,128,0,0,128)
IMPX ABCDEFG 1 A_SetScale(scalex+0.5)
stop 
}
} 

actor ImpactPGSideExplosionDamage : ImpactPGCenterExplosionDamage
{
obituary "$OB_IMPACTBIGBOOM" 
damagetype "ImpactM_PGBOOOOOOOOOOOOOM"
mass 45
scale 3.5
+STEPMISSILE
maxstepheight 999
+NOEXPLODEFLOOR
+FLOORHUGGER
renderstyle normal
States
{
Spawn:
TNT1 AA 0  
TNT1 A 0 A_Explode(mass,128,0,0,128)
IMPX ABCDEFG 2
stop 
}
} 

actor ImpactPGSide2ExplosionDamage : ImpactPGSideExplosionDamage{mass 30} 
actor ImpactPGSide3ExplosionDamage : ImpactPGSideExplosionDamage{mass 15} 

actor ImpactNukeProtect : PowerProtection
{
Powerup.Duration 8
DamageFactor "ImpactM_PGBOOOOOOOOOOOOOM", 0.0
}

actor ImpactPGCenterExplosionVisuals : BasicBoom5FX_Y
{ 
Scale 10
States
{
Spawn:
Y_11 H 0
Y_11 HIJKLM 1
Y_11 NOPQRSTUVWX 1 
stop
}
}

actor ImpactPGFireVisuals : BasicBoom5FX_Y
{ 
Scale 3.5 
States
{
Spawn:
TNT1 A 0 
X_8C EFGE 3
Stop
}
} 

//Impact CI
actor ImpactMain1_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("ImpactM_Spike",0,0,frandom(15,20),frandom(-5,5))
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("ImpactM_SpikeB",0,0,frandom(15,20),frandom(-5,5))
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("ImpactM_SpikeR",0,0,frandom(15,20),frandom(-5,5))
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("ImpactM_SpikeO",0,0,frandom(15,20),frandom(-5,5))
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("ImpactM_SpikeP",0,0,frandom(15,20),frandom(-5,5))
goto Done
}
}

actor ImpactMainX_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("ImpactM_Arm",0,0,-8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("ImpactM_ArmB",0,0,-8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("ImpactM_ArmR",0,0,-8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("ImpactM_ArmO",0,0,-8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("ImpactM_ArmP",0,0,-8,0)
goto Done
}
}
  
