Actor MetalCatcherWep_V_NormalBar : NormalBar {Args 215, 43}
actor MetalCatcherWep_V : BaseMM8BDMWep
{
Weapon.AmmoUse 4
Weapon.AmmoGive 28
Weapon.SlotNumber 2
Inventory.Pickupmessage "$PU_METALCATCHER"
Obituary "$OB_METALCATCHER"
Tag "$TAG_METALCATCHER"
weapon.ammotype "MetalCatcherAmmo_V"
inventory.icon "MTCRICON"
States
{
SpawnLoop:
MTCR A 1
loop
ReadyC: Goto Ready+1
Ready:
MTCR B 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_METALCATCHER)
MTCR B 0 A_JumpIfNoAmmo("ReadyNoAmmo")
MTCR I 1 A_WeaponReady
Goto Ready+2
ReadyNoAmmo:
MTCR B 1 A_WeaponReady
MTCR B 0 A_JumpIfNoAmmo("ReadyNoAmmo")
Goto Ready+1
Deselect:
MTCR B 0
goto DeselectSwap
Select:
MTCR B 0
goto SelectSwap
Fire:
MTCR B 0 A_JumpIfNoAmmo("NoAmmo")
MTCR B 0 A_PlaySoundEx("weapon/metalcatcher","Weapon")
MTCR B 0 A_FireCustomMissile("MetalCatcher_V",0,1,8,0,SXF_TRANSFERPOINTERS)
MTCR CDEFGH 2
MTCR H 1 Offset(0,42)
MTCR H 1 Offset(0,42)
MTCR H 1 Offset(0,42)
MTCR B 0 A_JumpIfNoAmmo("FireNoAmmo")
MTCR I 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
MTCR I 0 A_Refire
Goto Ready+1
FireNoAmmo:
MTCR B 2 A_WeaponReady(WRF_NOFIRE|WRF_NOSWITCH)
MTCR B 0 A_Refire
Goto Ready+1
NoAmmo:
MTCR B 1 ACS_NamedExecuteWithResult("core_noammo", 0)
Goto ReadyNoAmmo
}
}

actor MetalCatcherAmmo_V : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor MetalCatcher_V : BasicProjectile
{
PROJECTILE
Speed 31
Damage (CallACS("vile_cbm_damage",25))
damagetype "MetalCatcher_V"
Obituary "$OB_METALCATCHER"
Radius 12
Height 12
scale 2.5
+HITTRACER
+NOGRAVITY
+NOTARGETSWITCH
+SKYEXPLODE
States
{
Spawn:
TNT1 AA 0 ACS_NamedExecuteWithResult("vile_MetalCatcherStart")
goto Spawn2
Spawn2:
MTCR JJJKKKJJJKKK 1 //A_CheckFloor("GoBack")
goto Spawn+2
Yoink:
TNT1 A 0 A_SpawnItemEx("MetalCatcherGotHealth_V",0,0,0,-31,0,0,0,SXF_TRANSFERPOINTERS+1)
TNT1 A 1
goto DeathReal
Death:
TNT1 A 0 A_ChangeFlag("NOINTERACTION",1)
TNT1 A 0 A_ChangeFlag("NOCLIP",1)
TNT1 A 0 A_ChangeFlag("THRUGHOST",1)
Death2:
MTCR A 0 ACS_NamedExecuteWithResult("vile_MetalCatcher_FaceTargetCenter")
MTCR A 0 A_ChangeVelocity(cos(-pitch)*CallACS("vile_MetalCatcher_GetSpeed"),0,-sin(-pitch)*CallACS("vile_MetalCatcher_GetSpeed"),CVF_RELATIVE|CVF_REPLACE)
MTCR A 0 A_JumpIfCloser(64,"DeathReal")
MTCR J 3
MTCR B 0 A_JumpIfCloser(64,"DeathReal")
MTCR K 3
loop
XDeath:
MTCR A 0 A_JumpIfInventory("CanBeGrabBustered", 1, "TeamCheck", AAPTR_TRACER)
stop
TeamCheck:
MTCR A 0 A_GiveInventory("TracerAndTargetTeamsMatchCheck",1)
MTCR A 0 A_JumpIfInventory("TracerAndTargetTeamsMatchFlag", 1, "DeathReal")
goto Yoink
DeathReal:
TNT1 A 0
stop
}
}


actor MetalCatcherGotHealth_V : MetalCatcher_V
{
Damage (0)
+NOINTERACTION
+NOCLIP
States
{
Spawn:
TNT1 A 0
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR J 0 A_ChangeFlag("NOINTERACTION",0)
MTCR J 0 A_ChangeFlag("NOCLIP",0)
MTCR J 0 A_CustomMissile("MetalCatcherGotHealthB_V",0,0,0,0)
stop
Death:
TNT1 A 0 A_PlaySoundEx("item/energyup","Body")
TNT1 A 1 A_GiveToTarget("HealthMetalCatcher_V",1)
TNT1 A 0 A_SpawnItemEx("ExplosionEffect1", 0, 0, 0, 0, 0, 0, 0, SXF_WEPFXCOLOR)
stop
}
}

actor MetalCatcherGotHealthA_V : MetalCatcherGotHealth_V
{
States
{
Spawn:
TNT1 A 0
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR J 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
TNT1 A 0 A_SpawnItemEx("MetalCatcherGotHealthHeathFX_V")
MTCR J 0 A_CustomMissile("MetalCatcherGotHealthB_V",0,0,0,0)
stop
}
}

actor MetalCatcherGotHealthB_V : MetalCatcherGotHealth_V
{
States
{
Spawn:
TNT1 A 0
MTCR K 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR K 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
MTCR K 1 A_FaceTarget MTCR J 0 A_JumpIfCloser(60,"Death")
TNT1 A 0 A_SpawnItemEx("MetalCatcherGotHealthHeathFX_V")
MTCR J 0 A_CustomMissile("MetalCatcherGotHealthA_V",0,0,0,0)
stop
}
}

actor MetalCatcherGotHealthHeathFX_V : BasicGraphicEffect
{
RenderStyle "Add"
ReactionTime 12
scale 2.5
-NONETID
States
{
SpawnFrame:
TNT1 A 0 A_TransferPointer(AAPTR_TARGET,AAPTR_DEFAULT,AAPTR_TARGET,AAPTR_TRACER)
goto Spawn_L
Spawn_L:
HBAL AB 2 A_FadeOut(0.08) HBAL AB 0 A_SetScale(ScaleX - 0.4, ScaleY - 0.4)
HBAL AB 0 A_CountDown
loop
}
}


actor HealthMetalCatcher_V : SmallHealth
{
-THRUACTORS
ReactionTime 12
States
{
SpawnLoop:
HBAL AB 6
HBAL A 0 A_CountDown
loop
Death:
TNT1 A 0
stop
}
}

actor MetalCatcherHitFlag_V : Powerup
{
	Powerup.Duration 3
}

actor MetalCatcherResetItem_V : CustomInventory
{
states
{
Pickup:
POSS A 0 A_JumpIf(!CheckClass("CustomInventory", AAPTR_DEFAULT, TRUE), "Pickup2")
TNT1 A 0 A_SpawnItemEx("ItemFogSpawner")
TNT1 A 0 A_RestoreSpecialPosition
TNT1 A 0 A_RestoreSpecialDoomThing
stop
Pickup2:
TNT1 A 0
stop
}
}

actor MetalCatcher_YesThruActors_V : CustomInventory
{
States
{
Pickup:
TNT1 A 1 A_ChangeFlag("THRUACTORS",1)
stop
}
}

actor MetalCatcher_NoThruActors_V : CustomInventory
{
States
{
Pickup:
TNT1 A 1 A_ChangeFlag("THRUACTORS",0)
stop
}
}