//	Movement recoded
actor Groundman : SemiHighArmorClass
{
Player.ScoreIcon "GROUMUGS"
player.startitem "BaseFlagPack", 1
player.displayname "Groundman"
player.soundclass "Groundmanc"
player.startitem "SpreadDrillBoss"
player.startitem "UltimateAttackItem4"
player.startitem "UltSoundWatcherSpawn4"
player.startitem "Base56Ammo", 56
player.startitem "BaseAltfireAmmo", 112
player.startitem "IsFromMMB"
player.startitem "NoHealthBar"
player.viewheight 51
player.forwardmove 0.8,0.8
player.sidemove 0.78,0.78
player.jumpz 14
States
{
Spawn:
GROU B 0 
GROU B 1 A_JumpIf(z-floorz>0, "Jumping")
Animation0:
GROU A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2
See:
GROU B 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU B 1 A_JumpIf(z-floorz>0, "Jumping")
GROU B 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU B 1 A_JumpIf(z-floorz>0, "Jumping")
GROU B 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU B 1 A_JumpIf(z-floorz>0, "Jumping")
GROU B 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU B 1 A_JumpIf(z-floorz>0, "Jumping")
GROU C 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU C 1 A_JumpIf(z-floorz>0, "Jumping")
GROU C 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU C 1 A_JumpIf(z-floorz>0, "Jumping")
GROU C 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU C 1 A_JumpIf(z-floorz>0, "Jumping")
GROU C 0 A_SpawnItemEx("TankDigRocks",-5,random(-20,20),0,random(-3,-8),0,random(2,7),0,0,128)
GROU C 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+1
Animation1:
Jumping:
GROU I 1 A_JumpIf(z-floorz<=0, "Spawn")
wait
Missile:
GROU FFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
Missile2:
GROU GGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+2
JumpingMissile:
GROU JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile")
JumpingMissile2:
GROU JJJJJ 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Jumping

Animation2: FormShift:
GROU KKK 1
Goto Spawn+2
Animation3: TankFormA:
GROU LLL 1
Animation4: TankFormB:
GROU MMM 1
Goto Spawn+1
Animation5: TankDigA:
GROU NNN 1
Animation6: TankDigB:
GROU OOO 1
Animation7: TankDigC:
GROU PPP 1
Animation8: TankDigD:
GROU QQQ 1
Animation9: TankDigE:
GROU RRR 1
Animation10: TankDigF:
GROU SSS 1
Animation11: TankDigG:
GROU TTT 1
Animation12: TankDigH:
GROU UUU 1
Animation13: TankDigI:
GROU VVV 1
Goto Spawn+1
Animation14: TankPopUp:
GROU WWW 1
Goto Spawn+1

Animation15: GroundManInvis:
TNT1 AAA 1
Goto Spawn+1

ClassPain:
GROU HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1

Death.RemoteMine:
Death.PirateManMineDirect1:
Death.PirateManMineDirect2:
Death.PirateManMineDirect3:
Death.PirateManMineDirect4:
Death.PirateManMineDirect5:
Death.PirateManMineDirect6:
Death.PirateManMineDirect7:
Death.PirateManMineDirect8:
Death.PirateManMine1:
Death.PirateManMine2:
Death.PirateManMine3:
Death.PirateManMine4:
Death.PirateManMine5:
Death.PirateManMine6:
Death.PirateManMine7:
Death.PirateManMine8:
TNT1 A 0 A_SpawnItemEx("DeadKeelhauledGroundMan",0,0,32,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
GROU H 0 A_StopSound(CHAN_BODY)
GROU H 20 ACS_ExecuteAlways(999,0,0)
GROU H 0 A_PlayerScream
PLY1 H 0 A_SpawnItemEx("FakeDeathFXMMB", 0, 0, 32)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
GROU H 0 A_JumpIfInTargetInventory("SpreadDrillWepM",1,2)
GROU H 0 A_GiveToTarget("WeaponGetter")
GROU H 0 A_GiveToTarget("SpreadDrillWepM")
goto ClassDeath
}
}

actor DeadKeelhauledGroundMan
{
Translation "198:198=167:167", "192:192=229:229"
PROJECTILE
-NOGRAVITY
+THRUACTORS
+BOUNCEONWALLS
+BOUNCEONCEILINGS
+NOEXPLODEFLOOR
Gravity 1.0
height 8
radius 8
scale 2.5
const int OFS = 64;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 ThrustThingZ(0,30,0,1)
Spawn2:
GROU XYXYXYXY 1
TNT1 A 0 A_SpawnItemEx("GroundManRemoteMineExplosion",Random(-OFS,OFS),Random(-OFS,OFS),Random(0,80))
TNT1 A 0 A_GiveInventory("CutterFlag",1)
TNT1 A 0 A_JumpIfInventory("CutterFlag",6,1)
loop
TNT1 A 0 A_PlaySoundEx("mm7/dead","Auto")
TNT1 A 2 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
Stop
}
}

actor GroundManRemoteMineExplosion
{
Translation "41:41=167:167", "210:210=229:229"
PROJECTILE
+NOINTERACTION
scale 2.5
states
{
Spawn:
TNT1 AA 0
TNT1 A 0 A_PlaySoundEx("weapon/rmineexplode", "Weapon")
REME ABACADAEAFAGAHAIAJAKALAMANOP 1
stop
}
}

Actor SpreadDrillBoss : VCBaseWeapon
{
weapon.ammotype "Base56Ammo"
weapon.ammotype2 "BaseAltfireAmmo"
Obituary "$OB_GROUNDMAN1"
States
{
Ready:
GRDH A 0 A_JumpIfInventory("SpreadDrillRMFlag",1,"Ready2")
GRDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) GRDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRDH A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",1,14)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) GRDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRDH A 0 A_GiveInventory("Base56Ammo",1) GRDH A 0 A_GiveInventory("BaseAltfireAmmo",1)
loop
Ready2:
GRDH A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) GRDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRDH A 1 A_WeaponReady(WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,28)) GRDH A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
GRDH A 0 A_GiveInventory("Base56Ammo",1) GRDH A 0 A_GiveInventory("BaseAltfireAmmo",1)
Goto Ready

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

Fire:
GRDH B 0 A_JumpIfInventory("SpreadDrillRMFlag",5,"Reset")
GRDH B 0 A_JumpIfInventory("SpreadDrillRMFlag",2,"Spread2")
GRDH B 0 A_JumpIfInventory("SpreadDrillRMFlag",1,"Spread1")
GRDH B 0 A_JumpIfInventory("SpreadDrillRMBuffer",1,"Waiting")
GRDH B 0 A_GiveInventory("SpreadDrillRMBuffer",1)
GRDH BC 3
GRDH D 0 A_PlaySoundEx("weapon/spreaddrill1","Weapon")
GRDH D 0 A_SpawnItemEx("SpreadDrillRM",cos(pitch)*32,0,28-(sin(pitch)*32),cos(pitch)*36,0,-sin(pitch)*36,0,0,0)
GRDH D 0 A_GiveInventory("SpreadDrillRMFlag",1)
GRDH D 0 A_TakeInventory("Base56Ammo",14)
GRDH DCBA 3
Goto Ready
Reset:
GRDH B 6 A_TakeInventory("SpreadDrillRMFlag",5)
GRDH B 0 A_TakeInventory("SpreadDrillRMBuffer",99)
Goto Ready
Spread1:
GRDH B 2 Offset( 1,32)A_GiveInventory("SpreadDrillRMFlag",3)
GRDH B 2 Offset(-1,32)
GRDH B 2 Offset( 1,32)
GRDH B 2 Offset(-1,32)
Goto Ready
Spread2:
GRDH B 2 Offset( 2,32)A_GiveInventory("SpreadDrillRMFlag",5)
GRDH B 2 Offset(-2,32)
GRDH B 2 Offset( 2,32)
GRDH B 2 Offset(-2,32)
Goto Ready
Waiting:
GRDH B 5
Goto Ready

Altfire:
GRDH A 0 A_JumpIfInventory("NoAltfire",1,"Ready")
GRDH A 0 A_GiveInventory("IsTankDrilling",1)
GRDH A 0 A_JumpIf(z-floorz<=8,"TankRide")
Goto TankDigStart

TankRide:
GRDH B 0 A_PlaySoundEx("misc/sharkjoeraise","Voice")
GRDH BBCCDD 1 ACS_NamedExecuteWithResult("VC_SetState",2)
TankRideHold:
GRDH E 0 A_GunFlash("TankMoving")
GRDH E 0 A_PlaySoundEx("weapon/groundtank","Body")
GRDH E 0 A_SpawnItemEx("TankFormDust",0,16) GRDH E 0 A_SpawnItemEx("TankFormDust",0,-16)
GRDH E 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto EndTankRide 
GRDH E 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"EndTankRide") 
GRDH E 1 Offset(0,31)ACS_NamedExecuteWithResult("VC_SetState",3) 
GRDH E 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto EndTankRide 
GRDH E 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"EndTankRide") 
GRDH E 1 Offset(0,31)ACS_NamedExecuteWithResult("VC_SetState",3)
GRDH F 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto EndTankRide 
GRDH F 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"EndTankRide") 
GRDH F 1 Offset(0,33)ACS_NamedExecuteWithResult("VC_SetState",4)
GRDH F 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto EndTankRide 
GRDH F 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"EndTankRide") 
GRDH F 1 Offset(0,33)ACS_NamedExecuteWithResult("VC_SetState",4)
Goto TankRideHold+1
EndTankRide:
GRDH D 0 A_GunFlash("EndFlash")
GRDH D 0 A_WeaponReady(WRF_NOFIRE)
GRDH D 0 A_TakeInventory("IsTankDrilling",1)
GRDH D 0 A_PlaySoundEx("misc/sharkjoeraise","Voice")
GRDH DDCC 1 ACS_NamedExecuteWithResult("VC_SetState",2)
GRDH BBAAAA 1
Goto Ready

TankDigStart:
GRDH BBCC 1 ACS_NamedExecuteWithResult("VC_SetState",1)
TankDigStartCheck:
GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",1)
GRDH D 1 A_CheckFloor(1)
loop
TankDig:
GRDH E 0 A_GunFlash("TankDigRockMaker")
GRDH E 0 A_GiveInventory("GroundUndergroundStartPickUp",1)
GRDH E 1 Offset(0,36)ACS_NamedExecuteWithResult("VC_SetState",2)
GRDH E 1 Offset(0,40)ACS_NamedExecuteWithResult("VC_SetState",2)
GRDH F 1 Offset(0,44)ACS_NamedExecuteWithResult("VC_SetState",3)
GRDH F 1 Offset(0,48)ACS_NamedExecuteWithResult("VC_SetState",3)
GRDH E 1 Offset(0,52)ACS_NamedExecuteWithResult("VC_SetState",5) 
GRDH E 1 Offset(0,56)ACS_NamedExecuteWithResult("VC_SetState",5)
GRDH F 1 Offset(0,60)ACS_NamedExecuteWithResult("VC_SetState",6)
GRDH F 1 Offset(0,64)ACS_NamedExecuteWithResult("VC_SetState",6)
GRDH E 1 Offset(0,68)ACS_NamedExecuteWithResult("VC_SetState",7)
GRDH E 1 Offset(0,72)ACS_NamedExecuteWithResult("VC_SetState",7)
GRDH F 1 Offset(0,76)ACS_NamedExecuteWithResult("VC_SetState",8)
GRDH F 1 Offset(0,80)ACS_NamedExecuteWithResult("VC_SetState",8)
GRDH E 1 Offset(0,84)ACS_NamedExecuteWithResult("VC_SetState",9)
GRDH E 1 Offset(0,88)ACS_NamedExecuteWithResult("VC_SetState",9)
GRDH F 1 Offset(0,92)ACS_NamedExecuteWithResult("VC_SetState",10)
GRDH F 1 Offset(0,96)ACS_NamedExecuteWithResult("VC_SetState",10)
GRDH E 1 Offset(0,100)ACS_NamedExecuteWithResult("VC_SetState",11)
GRDH E 1 Offset(0,104)ACS_NamedExecuteWithResult("VC_SetState",11)
GRDH F 1 Offset(0,108)ACS_NamedExecuteWithResult("VC_SetState",12)
GRDH F 1 Offset(0,112)ACS_NamedExecuteWithResult("VC_SetState",12)
GRDH E 1 Offset(0,116)ACS_NamedExecuteWithResult("VC_SetState",13)
GRDH E 1 Offset(0,120)ACS_NamedExecuteWithResult("VC_SetState",13)
GRDH E 0 A_GiveInventory("GroundUndergroundBeginPickUp",1)
TankDigHold:
TNT1 A 0 Offset(0,33)
TNT1 A 0 A_GunFlash("TankDigging")
TNT1 A 0 A_PlaySoundEx("weapon/groundtank","Body")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto TankPopUp
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"TankPopUp")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto TankPopUp
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"TankPopUp")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto TankPopUp
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"TankPopUp")
TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,1) Goto TankPopUp
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"TankPopUp")
Goto TankDigHold+2
TankPopUp:
GRDH D 0 A_GunFlash("EndFlash")
GRDH D 0 A_GiveInventory("GroundUndergroundEndPickUp",1)
GRDH D 1 ThrustThingZ(0,40,0,0) GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH D 1 ThrustThingZ(0,40,0,0) GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH C 1 ThrustThingZ(0,40,0,0) GRDH C 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH C 1 ThrustThingZ(0,40,0,0) GRDH C 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH BBAAAA 1
GRDH A 0 A_SpawnItemEx("ReSolidifier")
Goto Ready

UltimateAttack:
GRDH A 1
GRDH B 0 A_TakeInventory("UltAttackFlag",1)
GRDH B 0 A_GiveInventory("PowerUltBuildCooldown",1)
GRDH B 0 ACS_NamedExecuteAlways("VC_UltimateText",0,77)
GRDH B 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
GRDH B 0 A_JumpIf(z-floorz<=8,1)
Goto GigaDrillWait
GRDH B 0 A_PlaySoundEx("misc/sharkjoeraise","Voice")
GRDH BBCCDD 1 ACS_NamedExecuteWithResult("VC_SetState",2)
Goto GigaDrillStart
GigaDrillWait:
GRDH BBCC 1 ACS_NamedExecuteWithResult("VC_SetState",1)
GigaDrillWaitCheck:
GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",1)
GRDH D 1 A_JumpIf(z-floorz<=8,1)
loop
GigaDrillStart:
GRDH B 0 A_GunFlash("TankDigRockMaker")
GRDH E 0 A_GiveInventory("GroundUndergroundStartPickUp",1)
GRDH E 1 Offset(0,36)ACS_NamedExecuteWithResult("VC_SetState",2)
GRDH E 1 Offset(0,40)ACS_NamedExecuteWithResult("VC_SetState",2)
GRDH F 1 Offset(0,44)ACS_NamedExecuteWithResult("VC_SetState",3)
GRDH F 1 Offset(0,48)ACS_NamedExecuteWithResult("VC_SetState",3)
GRDH E 1 Offset(0,52)ACS_NamedExecuteWithResult("VC_SetState",5) 
GRDH E 1 Offset(0,56)ACS_NamedExecuteWithResult("VC_SetState",5)
GRDH F 1 Offset(0,60)ACS_NamedExecuteWithResult("VC_SetState",6)
GRDH F 1 Offset(0,64)ACS_NamedExecuteWithResult("VC_SetState",6)
GRDH E 1 Offset(0,68)ACS_NamedExecuteWithResult("VC_SetState",7)
GRDH E 1 Offset(0,72)ACS_NamedExecuteWithResult("VC_SetState",7)
GRDH F 1 Offset(0,76)ACS_NamedExecuteWithResult("VC_SetState",8)
GRDH F 1 Offset(0,80)ACS_NamedExecuteWithResult("VC_SetState",8)
GRDH E 1 Offset(0,84)ACS_NamedExecuteWithResult("VC_SetState",9)
GRDH E 1 Offset(0,88)ACS_NamedExecuteWithResult("VC_SetState",9)
GRDH F 1 Offset(0,92)ACS_NamedExecuteWithResult("VC_SetState",10)
GRDH F 1 Offset(0,96)ACS_NamedExecuteWithResult("VC_SetState",10)
GRDH E 1 Offset(0,100)ACS_NamedExecuteWithResult("VC_SetState",11)
GRDH E 1 Offset(0,104)ACS_NamedExecuteWithResult("VC_SetState",11)
GRDH F 1 Offset(0,108)ACS_NamedExecuteWithResult("VC_SetState",12)
GRDH F 1 Offset(0,112)ACS_NamedExecuteWithResult("VC_SetState",12)
GRDH E 1 Offset(0,116)ACS_NamedExecuteWithResult("VC_SetState",13)
GRDH E 1 Offset(0,120)ACS_NamedExecuteWithResult("VC_SetState",13)
GRDH E 0 A_GunFlash("TankDigging2")
GRDH E 0 A_GiveInventory("DrillUltSpeed")
GRDH E 0 A_GiveInventory("GigaDrillWatcherPickUp",1)
GRDH E 0 A_GiveInventory("GroundUndergroundBeginPickUp",1)
Goto GigaDrill

GigaDrill:
TNT1 A 0 A_JumpIfInventory("PowerUltBuildCooldown",1,1)
Goto EndGigaDrill
TNT1 A 1 Offset(0,33)
TNT1 A 0 A_JumpIfInventory("GigaDrillCoolDown",1,"GigaDrill")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==3,"FloorGigaDrill")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",4)==5,"CeilingGigaDrill")
loop
FloorGigaDrill:
TNT1 A 0 A_SpawnItemEx("GigaDrillFloor")
TNT1 A 0 A_GiveInventory("GigaDrillCoolDown",40)
Goto GigaDrill
CeilingGigaDrill:
TNT1 A 0 A_SpawnItemEx("GigaDrillCeiling")
TNT1 A 0 A_GiveInventory("GigaDrillCoolDown",40)
Goto GigaDrill
EndGigaDrill:
GRDH D 0 A_GunFlash("EndFlash")
GRDH D 0 A_TakeInventory("DrillUltSpeed")
GRDH D 0 A_TakeInventory("UltAttackFlag",1)
GRDH D 0 A_TakeInventory("GigaDrillCoolDown",40)
GRDH D 0 A_GiveInventory("GroundUndergroundEndPickUp",1)
GRDH D 1 ThrustThingZ(0,40,0,0) GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH D 1 ThrustThingZ(0,40,0,0) GRDH D 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH C 1 ThrustThingZ(0,40,0,0) GRDH C 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH C 1 ThrustThingZ(0,40,0,0) GRDH C 0 ACS_NamedExecuteWithResult("VC_SetState",14)
GRDH BBAAAA 1
GRDH A 0 A_SpawnItemEx("ReSolidifier")
Goto Ready

TankMoving:
TNT1 A 0 A_JumpIf(z-floorz<=8,"TankMoving.Ground")
TNT1 A 0 A_GiveInventory("GroundmanMobility1")//A_ChangeVelocity(cos(pitch)*15,0,momz,CVF_RELATIVE|CVF_REPLACE)
Goto TankMoving.Return
TankMoving.Ground:
TNT1 A 0 A_GiveInventory("GroundmanMobility2")//A_ChangeVelocity(15,0,0,CVF_RELATIVE|CVF_REPLACE)
TankMoving.Return:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
TNT1 A 0 A_SpawnItemEx("TankFormHitBox",0,0,32,momx,momy,momz,0,SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
Goto TankMoving
TankDigRockMaker:
TNT1 A 0 A_PlaySoundEx("weapon/groundtank","Weapon")
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash") TNT1 AA 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(-10,10),Random(-10,10),Random(5,10))
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash") TNT1 AA 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(-10,10),Random(-10,10),Random(5,10))
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash") TNT1 AA 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(-10,10),Random(-10,10),Random(5,10))
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash") TNT1 AA 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(-10,10),Random(-10,10),Random(5,10))
loop
TankDigging:
TNT1 A 0 A_SetTranslucent(0.0)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",15)
TNT1 A 0 A_ChangeVelocity(17,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(0,10),0,Random(7,10),Random(0,360))
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_SetTranslucent(0.0)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",15)
TNT1 A 0 A_ChangeVelocity(17,0,0,CVF_RELATIVE|CVF_REPLACE)
TNT1 A 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(0,10),0,Random(7,10),Random(0,360))
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",1)
loop
TankDigging2:
TNT1 A 0 A_Quake(3,4,0,400)
TNT1 A 0 A_SetTranslucent(0.0)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",15)
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
TNT1 A 0 A_SetTranslucent(0.0)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",15)
TNT1 A 1 A_JumpIfInventory("IsDead",1,"EndFlash")
loop
EndFlash:
TNT1 A 0
stop
}
}
actor SpreadDrillRM
{
PROJECTILE
+RIPPER
+NOGRAVITY
+SKYEXPLODE
radius 32
height 16
scale 2.5
Speed 15
DamageType "GroundManSpreadDrill"
Obituary "$OB_GROUNDMAN1"
damage (28)
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Y_BE AAFF 1
Spawn2:
Y_BE AAFF 1 A_JumpIfInTargetInventory("SpreadDrillRMFlag",4,"Spread")
Loop
Spread:
TNT1 A 0 A_SpawnItemEx("LargeDrillShellRM",-8,0,0,5)
TNT1 A 0 A_SpawnItemEx("MediumDrillRM",0,0,0,18,13,0,0)
TNT1 A 0 A_SpawnItemEx("MediumDrillRM",0,0,0,18,-13,0,0)
stop
Crash:
Death:
TNT1 A 0 A_TakeFromTarget("SpreadDrillRMFlag",5)
stop
}
}

actor MediumDrillRM : SpreadDrillRM
{
radius 24
damage (15)
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Y_BE CB 2
Goto Death
Crash:
Death:
TNT1 A 0 A_CustomMissile("MediumDrill2RM",0,0,0,2,0)
TNT1 A 0 A_CustomMissile("MediumDrill2RM",0,0,0,2,0)
stop
}
}

actor MediumDrill2RM : MediumDrillRM
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Spawn2:
Y_BE CCBB 1 A_JumpIfInTargetInventory("SpreadDrillRMFlag",5,"Spread")
Loop
Spread:
TNT1 A 0 A_SpawnItemEx("MediumDrillShellRM",-4,0,0,5)
TNT1 A 0 A_SpawnItemEx("SmallDrillRM",0,0,0,18,8,0,0)
TNT1 A 0 A_SpawnItemEx("SmallDrillRM",0,0,0,18,-8,0,0)
TNT1 A 2
TNT1 A 0 A_TakeFromTarget("SpreadDrillRMFlag",5)
stop
Crash:
Death:
TNT1 A 0 A_TakeFromTarget("SpreadDrillRMFlag",1)
stop
}
}

actor SmallDrillRM : MediumDrillRM
{
radius 16
height 8
damage (8)
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Y_BE EEDD 1
Goto Death
Crash:
Death:
TNT1 A 0 A_CustomMissile("SmallDrill2RM",0,0,0, 2,0)
stop
}
}

actor SmallDrill2RM : SmallDrillRM
{
states
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Spawn2:
Y_BE ED 2
loop
Crash:
Death:
TNT1 A 0 
stop
}
}

actor LargeDrillShellRM
{
+MISSILE
+RIPPER
+NOCLIP
Radius 1
Height 1
scale 2.5
Gravity 0.3
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
Y_BE G 1 A_PlaySoundEx("weapon/spreaddrill2","Weapon")
TNT1 A 1 
Spawn2:
Y_BE G 1
TNT1 A 1 A_CheckFloor("Death")
loop
Death:
TNT1 A 0
stop
}
}

actor MediumDrillShellRM : LargeDrillShellRM
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode", 1)
TNT1 A 0 
Y_BE H 1 A_PlaySoundEx("weapon/spreaddrill3","Weapon")
TNT1 A 1 
Spawn2:
Y_BE H 1
TNT1 A 1 A_CheckFloor("Death")
loop
}
}

actor GroundManSpreadDrillProtect : PowerProtection
{
powerup.duration 17
damagefactor "GroundManSpreadDrill", 0.0
}

actor GroundUndergroundStartPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_Stop
TNT1 A 0 SetPlayerProperty(0,1,4)
TNT1 A 0 A_changeFlag("FLOORHUGGER",True)
TNT1 A 0 A_PlaySoundEx("misc/sharkjoeraise","Voice")
stop
}
}

actor GroundUndergroundBeginPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 SetPlayerProperty(0,0,4)
TNT1 A 0 A_ChangeFlag("SOLID",False)
TNT1 A 0 A_ChangeFlag("PICKUP",False)
TNT1 A 0 A_TakeInventory("UnSolid",1)
TNT1 A 0 A_GiveInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("INVULNERABLE",True)
TNT1 A 0 A_PlaySoundEx("weapon/grounddig","Body",True)
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TankFormDust",40,0,0,0,0,0,random(0,359))
stop
}
}

actor GroundUndergroundEndPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_Recoil(-6)
TNT1 A 0 A_SetTranslucent(1.0)
TNT1 A 0 A_ChangeFlag("PICKUP",True)
TNT1 A 0 A_TakeInventory("InvProtection")
TNT1 A 0 A_ChangeFlag("FLOORHUGGER",False)
TNT1 A 0 A_ChangeFlag("INVULNERABLE",False)
TNT1 A 0 A_TakeInventory("IsTankDrilling",1)
TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",5)
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",28)
TNT1 A 0 A_SpawnItemEx("TankPopUpDamager",0,0,32) 
TNT1 A 0 A_PlaySoundEx("weapon/drilldigend","Body")
TNT1 AAAAAAAAAA 0 A_SpawnItemEx("TankDigRocks",0,0,16,Random(0,10),0,Random(7,14),Random(0,360))
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TankFormDust",40,0,0,0,0,0,random(0,359))
stop
}
}

actor TankFormDust
{
Scale 2.5
Height 16
Radius 8
+NOGRAVITY
+NOINTERACTION
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
DRIA MNOPQ 2
stop
}
}

actor TankFormHitBox : BasicExplosion
{
DamageType "GroundManTank"
Obituary "$OB_GROUNDMAN2"
States
{
Spawn:
TNT1 AA 0
TNT1 A 1 A_Explode(6,48,0,0,48)
stop
}
}

actor TankFormProtect : PowerProtection
{
powerup.duration 3
damagefactor "GroundManTank", 0.0
}

actor TankPopUpDamager : BasicExplosion
{
damagetype "GroundManTankForm"
Obituary "$OB_groundman3"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(35,80,0,0,80)
stop
}
}

actor TankDigRocks
{
Translation "192:192=216:216", "198:198=165:165"
-BOUNCEONFLOORS
+MISSILE
+RIPPER
+THRUACTORS
+CLIENTSIDEONLY
+FLOORCLIP
Damage (0)
Scale 2.5
Height 5
Radius 5
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_Jump(256,"Rock1","Rock2","Rock3","Rock4","Rock5","Rock6","Rock7")
Rock1:
GRD7 A 1
wait
Rock2:
GRD7 B 1
wait
Rock3:
GRD7 C 1
wait
Rock4:
GRD7 D 1
wait
Rock5:
GRD7 E 1
wait
Rock6:
GRD7 F 1
wait
Rock7:
GRD7 G 1
wait
Death:
XDeath:
TNT1 A 0
stop
}
}

actor GigaDrillWatcherPickUp : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GigaDrillWatcher")
stop
}
}

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

actor GigaDrillFloor
{
Translation "192:192=216:216", "198:198=165:165"
+MISSILE
+NOGRAVITY
Radius 1
height 1
Damage (5)
-SOLID
+DONTBLAST
+THRUACTORS
+RIPPER
+DONTREFLECT
+THRUGHOST
+FLOORHUGGER
DamageType "GroundManUltBody"
Obituary "$OB_GROUNDMAN4"
Speed 0
scale 2.5
const int OFS = 16;
const int SPD = 8;
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TankFormDust",40,0,0,0,0,0,random(0,359))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 A 1 A_SpawnItemEx("GigaDrillDamager",0,0,47) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 B 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 C 1 A_SpawnItemEx("GigaDrillDamager",0,0,142) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 D 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 E 1 A_SpawnItemEx("GigaDrillDamager",0,0,237) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 F 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 G 1 A_SpawnItemEx("GigaDrillDamager",0,0,250) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"Spawn3")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 H 1 A_SpawnItemEx("GigaDrillDamager",0,0,250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 I 1 A_SpawnItemEx("GigaDrillDamager",0,0,250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 J 1 A_SpawnItemEx("GigaDrillDamager",0,0,250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 K 1 A_SpawnItemEx("GigaDrillDamager",0,0,250)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
Spawn3:
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 G 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 F 1 A_SpawnItemEx("GigaDrillDamager",0,0,250) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 E 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 D 1 A_SpawnItemEx("GigaDrillDamager",0,0,237) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 C 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 B 1 A_SpawnItemEx("GigaDrillDamager",0,0,142) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 A 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
GRD6 A 0 A_SpawnItemEx("GigaDrillDamager",0,0,47) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,OFS,Random(-SPD,SPD),0,Random(SPD/2,SPD),Random(0,360))
stop
}
}

actor GigaDrillCeiling : GigaDrillFloor
{
-FLOORHUGGER
+SPAWNCEILING
+CEILINGHUGGER
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("TankFormDust",40,0,0,0,0,0,random(0,359))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 L 1 A_SpawnItemEx("GigaDrillDamager",0,0,-47) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 M 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 N 1 A_SpawnItemEx("GigaDrillDamager",0,0,-142) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 O 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 P 1 A_SpawnItemEx("GigaDrillDamager",0,0,-237) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 Q 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 R 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
goto Spawn2
Spawn2:
TNT1 A 0 A_JumpIfInventory("CutterFlag",8,"Spawn3")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 S 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 T 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 U 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250)
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 V 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250)
TNT1 A 0 A_GiveInventory("CutterFlag",1)
loop
Spawn3:
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 R 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 Q 1 A_SpawnItemEx("GigaDrillDamager",0,0,-250) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 P 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 O 1 A_SpawnItemEx("GigaDrillDamager",0,0,-237) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 N 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 M 1 A_SpawnItemEx("GigaDrillDamager",0,0,-142) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
TNT1 A 0 A_Explode(5,100,0,0,100)
GRD6 L 1 A_PlaySoundEx("weapon/drilldigend","Weapon")
GRD6 A 0 A_SpawnItemEx("GigaDrillDamager",0,0,-47) TNT1 AAA 0 A_SpawnItemEx("TankDigRocks",OFS,0,-OFS,Random(-SPD,SPD),0,Random(-SPD/2,-SPD),Random(0,360))
stop
}
}

actor GigaDrillDamager : BasicExplosion
{
DamageType "GroundManUltDrill"
Obituary "$OB_GROUNDMAN4"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Explode(8,64,0,0,64)
stop
}
}

actor GroundManUltBodyProtect : PowerProtection
{
powerup.duration 3
damagefactor "GroundManUltBody", 0.0
}
actor GroundManUltDrillProtect : PowerProtection
{
powerup.duration 2
damagefactor "GroundManUltDrill", 0.0
}

actor IsTankDrilling : VCOnce {}

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

actor GigaDrillCoolDown : Inventory
{
inventory.amount 1
inventory.maxamount 40
}

actor SpreadDrillRMBuffer : Powerup
{
powerup.duration 23
}

actor GroundmanMobility1 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",cos(pitch)*15),0,momz,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

actor GroundmanMobility2 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",15),0,0,CVF_RELATIVE|CVF_REPLACE)
stop
}
}
