actor TunnelDriverWep_NormalBar : NormalBar{args 87,174}
actor TunnelDriverWep_ScriptBar : ScriptBar {}
actor TunnelDriverWep : BaseMM8BDMWep
{
Weapon.AmmoUse 1
Weapon.AmmoGive 56
Weapon.SlotNumber 4
Inventory.Pickupmessage "$PU_TUNNELDRIVER"
Obituary "$OB_TUNNELDRIVER"
Tag "$TAG_TUNNELDRIVER"
weapon.ammotype "TunnelDriverAmmo"
inventory.icon "TNLDICON"
States
{
SpawnLoop:
TNLD Z 1
loop
Ready:
TNLD A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_TUNNELDRIVER)
TNLD A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
TNLD A 0 
goto DeselectSwap
Select:
TNLD A 0 
goto SelectSwap
Fire:
TNLD A 0 A_JumpIfNoAmmo("NoAmmo")
TNLD B 0 A_PlayWeaponSound("weapon/tunneldriver")
TNLD A 0 A_JumpIf(z-floorz!=0,2)
TNLD A 0 ThrustThingZ(0,25,0,0)
TNLD A 0 ThrustThingZ(0,25,0,1)
TNLD BCCC 3
goto AirLoop
AirLoop:
TNLD C 0 A_SpawnItemEx("TunnelDriverDamager",0,0,-1)
TNLD C 0 ThrustThingZ(0,1,1,1)
TNLD C 2 A_JumpIf(z-floorz==0,"DigStart")
loop
DigStart:
TNLD A 0 A_GiveInventory("TunnelDriver_P2",1)
TNLD A 0 A_ChangeFlag("PICKUP",0)
TNLD A 0 A_ChangeFlag("THRUACTORS",true)
TNLD A 0 A_SetTranslucent(0.0,0)
TNLD A 0 ACS_NamedExecuteWithResult("core_notargetplayer",0,true)
TNLD A 0 ACS_NamedExecuteWithResult("core_nonshootableplayer",0,true)
TNLD A 0 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,true)
TNLD A 0 ACS_NamedExecuteWithResult("core_unsolidplayer",0,USP_TOGGLEON)
TNLD AAAAAA 0 A_SpawnItemEx("DriverDebris",0,0,8,random(-6,6),0,random(3,8),random(0,359),1)
goto DigLoop
DigLoop:
TNT1 A 0 A_JumpIf(z-floorz!=0,"DigJump")
TNT1 A 2 A_GiveInventory("TunnelDriver_P",1)
TNT1 A 0 A_JumpIfNoAmmo("DigEnd")
TNT1 A 0 A_Refire("DigLoop")
goto DigEnd
DigJump:
TNLD A 0 A_ChangeFlag("PICKUP",1)
TNLD A 0 A_SetTranslucent(1.0,0)
TNLD A 0 ACS_NamedExecuteWithResult("core_notargetplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_nonshootableplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_unsolidplayer",0,USP_TOGGLEOFF_DAMAGE,ACS_NamedExecuteWithResult("core_getmaxhealth")/10)
DigJump2:
TNLD C 0 A_SpawnItemEx("TunnelDriverDamager",0,0,-1)
TNLD CC 1 A_JumpIf(z-floorz==0,"DigStart")
TNLD C 0 A_SpawnItemEx("TunnelDriverDamager",0,0,-1)
TNLD CC 1 A_JumpIf(z-floorz==0,"DigStart")
TNLD A 0 A_ChangeFlag("THRUACTORS", false)
TNLD C 0 A_SpawnItemEx("TunnelDriverDamager",0,0,-1)
TNLD CC 1 A_JumpIf(z-floorz==0,"DigStart")
TNLD C 0 A_SpawnItemEx("TunnelDriverDamager",0,0,-1)
TNLD CC 1 A_JumpIf(z-floorz==0,"DigStart")

TNLD C 0 A_TakeInventory("TunnelDriverAmmo",1)
loop
DigEnd:
TNLD B 0 A_ClearRefire
TNLD B 0 ThrustThingZ(0,55,0,0)
TNLD A 0 A_SetTranslucent(1.0,0)
TNLD A 0 A_ChangeFlag("PICKUP",1)
TNLD A 0 A_PlayWeaponSound("weapon/tunneldriverout")
TNLD AAAAAA 0 A_SpawnItemEx("DriverDebris",0,0,8,random(-6,6),0,random(3,8),random(0,359),1)
TNLD A 0 A_TakeInventory("TunnelDriverSpeed",1)
TNLD A 0 A_TakeInventory("TunnelDriverSpeedLMS",1)
TNLD B 6 A_SpawnItemEx("TunnelDriverDamager2",0,0,-1)
TNLD A 0 A_ChangeFlag("THRUACTORS",false)
TNLD A 0 ACS_NamedExecuteWithResult("core_notargetplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_nonshootableplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_invulnerableplayer",0,false)
TNLD A 0 ACS_NamedExecuteWithResult("core_unsolidplayer",0,USP_TOGGLEOFF_DAMAGE,ACS_NamedExecuteWithResult("core_getmaxhealth")/10)
TNLD AAAA 1 A_JumpIf(CallACS("core_CheckFooting"),"Landed")
TNL0 KKJJIIHHGGGGGGGGGGGGGGGGGGGG 1 A_JumpIf(CallACS("core_CheckFooting"),"Landed")
Landed:
TNL0 G 24
TNL0 G 0 ACS_NamedExecuteWithResult("core_clientsound", CSND_CRYSTALRELOAD) // A_PlaySoundEx("weapons/mm5/crystaleyereload", "Weapon")
TNL0 HIJK 2
Goto Ready+1
NoAmmo:
TNLD A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}


actor TunnelDriver_P2 : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(975,0)==2,"LMS")
TNT1 A 0 A_GiveInventory("TunnelDriverSpeed",1)
stop
LMS:
TNT1 A 0 A_GiveInventory("TunnelDriverSpeedLMS",1)
stop
}
}

ACTOR TunnelDriverSpeed : PowerSpeed
{
+POWERSPEED.NOTRAIL
  Powerup.Duration -5
  Speed 1.45
}

ACTOR TunnelDriverSpeedLMS : PowerSpeed
{
+POWERSPEED.NOTRAIL
  Powerup.Duration -5
  Speed 1.24
}
actor TunnelDriverAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 56
+INVENTORY.IGNORESKILL
}

actor TunnelDriverDamager : BasicProjectile
{
+RIPPER
PROJECTILE
damage (CallACS("vile_cbm_damage",4))
radius 24
height 20
damagetype "TunnelDriver"
Obituary "$OB_TUNNELDRIVER"
States
{
Spawn:
TNT1 A 0
TNT1 A 1 ThrustThingZ(0,50,0,0)
TNT1 A 10
stop
}
}

actor TunnelDriverDamager2 : TunnelDriverDamager
{
damage (CallACS("vile_cbm_damage",44))
}

actor TunnelDriver_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_GiveInventory("TunnelDriver_P2",1)
TNT1 A 0 A_TakeInventory("TunnelDriverAmmo",1)
TNT1 A 0 A_JumpIf(z-floorz!=0,"Nope")
TNT1 A 0 A_PlayWeaponSound("weapon/TunnelDriver2")
TNLD AA 0 A_SpawnItemEx("DriverDebris",0,0,8,random(-12,12),0,random(3,8),random(0,359),1)
stop
Nope:
TNT1 A 0
stop
}
}


actor DriverDebris : BasicProjectile
{
PROJECTILE
Height 32
Radius 32
scale 1.5
Speed 5
damagetype "TunnelDriverDebris"
Obituary "$OB_TUNNELDRIVER"
Translation "192:192=87:87", "198:198=174:174"
Damage (CallACS("vile_cbm_damage",2))
-NOGRAVITY
States
{
	Spawn:
	TNT1 A 0 A_PlaySoundEx("weapon/tunneldriver2","Weapon")
	TNT1 A 1 A_Jump(256,"Debris1","Debris2","Debris3")
	Debris1:
	QBOP A -1
	Debris2:
	QBOP B -1
	Debris3:
	QBOP C -1
	Death:
	MMFX F 0 A_ChangeFlag("NOGRAVITY",1)
	//DRIL A 0 A_PlaySoundEx("weapon/DRILLBOSSIN","Weapon")
	MMFX FGHI 3 A_Stop
	stop
}
}

actor DriverDebris2 : BasicProjectile
{
PROJECTILE
Height 32
Radius 32
scale 1.5
Speed 5
damagetype "TunnelDriver"
Obituary "$OB_TUNNELDRIVER"
Translation "192:192=87:87", "198:198=174:174"
Damage (0)
-NOGRAVITY
States
{
	Spawn:
	TNT1 A 0 A_PlaySoundEx("weapon/DRILLBOSSIN","Weapon")
	TNT1 A 1 A_Jump(256,"Debris1","Debris2","Debris3")
	Debris1:
	QBOP A -1
	Debris2:
	QBOP B -1
	Debris3:
	QBOP C -1
	Death:
	MMFX F 0 A_ChangeFlag("NOGRAVITY",1)
	//DRIL A 0 A_PlaySoundEx("weapon/DRILLBOSSIN","Weapon")
	MMFX FGHI 3 A_Stop
	stop
}
}