actor MetoolSlamWep_NormalBar : NormalBar{args 4,216}
actor MetoolSlamWep : BaseMM8BDMWep 
{
Weapon.AmmoUse 5
Weapon.AmmoGive 30
Weapon.SlotNumber 6
Inventory.Pickupmessage "$PU_METOOLSLAM"
Obituary "$OB_METOOLSLAM"
Tag "$TAG_METOOLSLAM"
weapon.ammotype "MetoolSlamAmmo"
inventory.pickupsound "weapon/weaponup"
inventory.icon "MTLSICON"
+WEAPON.AMMO_OPTIONAL
Scale 2.0
States
{
SpawnLoop:
MTLS Z 1
loop
Ready:
MTLS A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_METOOLSLAM)
MTLS A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
MTLS A 0 
goto DeselectSwap
Select:
MTLS A 0 
goto SelectSwap
Fire:
MTLS A 0 A_JumpIfNoAmmo("NoAmmo")
MTLS ABC 2
MTLS Q 0 A_PlaySoundEx("weapon/watershieldburst", "Weapon")
MTLS D 0 A_TakeInventory("MetoolSlamAmmo",5,TIF_NOTAKEINFINITE)
MTLS D 2 ThrustThingZ(0,70,0,0)
MTLS EEFFGGIIJJKK 1 A_SpawnItemEx("MetoolSlamFX",-4)
Fire2:
MTLS K 0 A_SpawnItemEx("MetoolSlamFX",-4)
MTLS K 0 A_GiveInventory("WeaponCharge",1)
MTLS K 1 A_ChangeVelocity(momx*0.95, momy*0.95, 0, CVF_REPLACE)
MTLS K 0 A_JumpIfInventory("WeaponCharge",10,1)
loop
Fire3:
MTLS D 0 A_TakeInventory("WeaponCharge",999)
MTLS D 0 ThrustThingZ(0, 100, 1, 1)
MTLS LMNO 1 A_SpawnItemEx("MetoolSlamFX",-4)
Falling:
MTLS P 1 ThrustThingZ(0,8,1,1)
MTLS P 0 A_SpawnItemEx("MetoolSlamFX",-4)
MTLS P 0 A_JumpIf(CallACS("core_CheckFooting"),"Pound")
loop
Pound:
MTLS Q 0 A_PlaySoundEx("misc/hugequake", "Voice")
MTLS Q 0 A_SpawnItemEx("MetoolSlamExplode")
MTLS QQ 1 A_Stop
WAVA A 0 A_SpawnItemEx("MetoolSlamSpawner",0,0,0)
TNT1 AAAAAAAAAAAAAAAA 1 A_Stop
TNT1 A 17
MTLS A 1 Offset(8,42)
MTLS A 1 Offset(8,38)
MTLS A 1 Offset(2,34)
MTLS A 1 A_WeaponReady(14)
goto Ready+1
NoAmmo:
MTLS A 0 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor MetoolSlamAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 30
+INVENTORY.IGNORESKILL
}

actor MetoolSlamFX : BoomerangRushFX
{
translation "0:255=216:216"
}

actor MetoolSlamExplode : BasicExplosion
{
Obituary "$OB_METOOLSLAM"
damagetype "MetoolSlam"
States
{
Spawn:
TNT1 A 0
TNT1 AAAAA 0 A_SpawnItemEx("ExplosionEffect2",172,0,random(-32,32),0,0,0,random(0,359))
TNT1 AAAAA 0 A_SpawnItemEx("ExplosionEffect2",random(-172,172),random(-172,172),random(-32,32))
TNT1 A 0 A_Explode(CallACS("vile_cbm_damage",50),172,0,0,172)
TNT1 A 3
stop
}
}

actor MetoolSlamSpawner
{
+DONTBLAST
+NOGRAVITY
+MISSILE
obituary "$OB_METOOLSLAM"
damagetype "MetoolSlam"
+NOINTERACTION
+NOCLIP
//+CEILINGHUGGER
States
{
Spawn:
TNT1 A 0
Death:
TNT1 A 0 A_SpawnItemEx("MetoolSlamMet",random(12,-12),random(12,-12),24,10,0,6,45)
TNT1 A 0 A_SpawnItemEx("MetoolSlamMet",random(12,-12),random(12,-12),24,10,0,6,135)
TNT1 A 0 A_SpawnItemEx("MetoolSlamMet",random(12,-12),random(12,-12),24,10,0,6,225)
TNT1 A 1 A_SpawnItemEx("MetoolSlamMet",random(12,-12),random(12,-12),24,10,0,6,315)
Stop
}
}

actor MetoolSlamMet : BasicProjectile
{
PROJECTILE
+SHOOTABLE
+SEEKERMISSILE
+NOEXPLODEFLOOR
+DONTBLAST
-NOGRAVITY
+THRUSPECIES
+NOBLOOD
+DOOMBOUNCE
-BOUNCEONFLOORS
+USEDAMAGEEVENTSCRIPT
var int user_NoOwnerDamage;
Painchance 256
health 30
Radius 32
Height 32
scale 2.5
damage (CallACS("vile_cbm_damage",20))
obituary "$OB_METOOLSLAM"
damagetype "MetoolSlam"
damagefactor "MetoolSlam", 0.0
speed 16
+THRUACTORS
States
{
Spawn:
METT D 10 A_CheckFloor("Spawn2")
METT D 0 A_ChangeFlag(THRUACTORS,false)
loop
Spawn2:
METT D 0 A_Stop
Spawn3:
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT D 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
METT B 0 A_JumpIfTargetInLOS("See", 0, 1)
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
METT A 0 A_ChangeFlag("FLOORHUGGER",1)
METT A 0 A_GiveInventory("WeaponCharge",1)
METT A 0 A_JumpIfInventory("WeaponCharge",16,"WhatIfI")
loop
See:
METT A 0 A_ChangeFlag("SHOOTABLE",1)
METT A 0 A_ChangeFlag("NOBLOCKMAP",0)
METT ABCB 3 A_SeekerMissile(2, 10, SMF_LOOK, 60, 10)
METT A 0 A_GiveInventory("WeaponCharge",1)
METT A 0 A_JumpIfInventory("WeaponCharge",16,"WhatIfI")
METT A 0 A_ChangeFlag("DOOMBOUNCE",1)
Goto See
Pain:
TNT1 A 0 A_PlaySoundEx("misc/monkeybutt","Voice")
TNT1 A 1 A_SeekerMissile(2, 10, SMF_LOOK, 50, 10)
goto See
Death:
TNT1 A 0 A_Stop
TNT1 A 0 A_ChangeFlag("NOGRAVITY",1)
MMFX BCDE 2
stop
WhatIfI:
METT D 0 A_Die
goto Death
}
}
