actor CoilupFistWep_NormalBar : NormalBar{args 4,40}
actor CoilupFistWep : BaseMM8BDMWep
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 5
Inventory.Pickupmessage "$PU_COILUPFIST"
Obituary "$OB_COILUPFIST"
Tag "$TAG_COILUPFIST"
weapon.ammotype "CoilupFistAmmo"
inventory.icon "CUFSICON"
States
{
SpawnLoop:
CUFS Z -1
loop
Ready:
CUFS A 0 ACS_NamedExecuteWithResult("core_weaponcolor",COLOR_COILUPFIST)
CUFS A 1 A_WeaponReady
Goto Ready+1
ReadyC: Goto Ready+1
Deselect:
CUFS A 0 
goto DeselectSwap
Select:
CUFS A 0 
goto SelectSwap
Fire:
CUFS B 0 A_JumpIfNoAmmo("NoAmmo")
CUFS B 0 A_PlaySound("weapons/mm7/wildcoilfire","Weapon")
CUFS B 4 A_FireCustomMissile("CoilupPunch",0,1,8,0)
CUFS C 5
goto FistWait1
FistWait1:
CUFS C 1 A_JumpIfInventory("CoilfistFlag",1,"FistFinish")
CUFS C 0 A_GiveInventory("AdapterWaitCount",1)
CUFS C 0 A_JumpIfInventory("AdapterWaitCount",15,"FistFinish")
loop
FistFinish:
CUFS B 2 A_TakeInventory("CoilfistFlag")
CUFS A 2 A_TakeInventory("AdapterWaitCount")
CUFS A 2
Goto Ready+1
NoAmmo:
CUFS A 1 ACS_NamedExecuteAlways("core_noammo",0)
Goto Ready+1
}
}

actor CoilfistFlag : Powerup {Powerup.duration 8}

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

actor CoilupPunch : ProjSpawnFuncActor
{
PROJECTILE
damagetype "CoilupFist"
Obituary "$OB_COILUPFIST"
+SKYEXPLODE
+EXPLODEONWATER
+DONTBLAST
+NOTARGETSWITCH
+DONTREFLECT
+SEEKERMISSILE
reactiontime 10
damage (0)
Radius 10
Height 10
speed 54
scale 2.5
Args 54
States
{
Spawn:
CUFS P 1
CUFS P 0 ACS_NamedExecuteWithResult("core_drawhookshot",CallACS("core_gettarget"),Args[0],8,DHS_MAXDIST+2058)
CUFS P 1 A_CountDown
wait
Death:
CUFS R 0
CUFS R 0 A_PlaySoundEX("weapon/hardquakeland","Weapon")
CUFS R 0 A_Explode(CallACS("vile_cbm_damage",35),96,0,0,32)
CUFS R 0 A_SpawnItemEx("CoilupFistHitFX",0,0,8,0,0,0,0,1)
CUFS R 0 A_TakeFromTarget("AdapterWaitCount",20)
CUFS R 0 A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_TARGET)
TNT1 A 0 A_GiveInventory("CoilupFistCheck",1)
CUFS R 4 A_FaceTarget
CUFS R 1 A_ChangeFlag("NOINTERACTION",1)
goto Death2
Death2:
CUFS R 0 A_TakeFromTarget("AdapterWaitCount",20)
CUFS R 0 A_JumpIfCloser(60,"Return")
CUFS RRRR 0 A_SeekerMissile(90,90,SMF_PRECISE)
CUFS R 1 A_GiveInventory("CutterFlag",1)
CUFS R 0 A_JumpIfInventory("CutterFlag",105,"DeathEnd")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists")==0,"DeathEnd")
loop
Return:
TNT1 A 1 A_GiveToTarget("CoilfistFlag",1)
stop
DeathEnd:
TNT1 A 1 A_GiveToTarget("CoilfistFlag",1)
stop
}
}

actor CoilupFistCheck : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_JumpIfCloser(100,"Close")
stop
Close:
TNT1 A 0 A_GiveToTarget("CoilupFistBounce",1)
stop
}
}

actor CoilupFistBounce : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 0 A_ChangeVelocity(momx/2,momy/2,1+CallACS("CBM_FetchJumpZ"),2)
stop
}
}

actor CoilupFistHitFX : BasicGraphicEffect
{
+FORCEXYBILLBOARD
Scale 3.0
States
{
SpawnFrame:
CUFS STUVWX 2
stop
}
}

actor CoilupPunchFX : BasicGraphicEffect
{
+NOTIMEFREEZE
Speed 0
States
{
Spawn:
CUFS Q 0
CUFS Q 1
stop
}
}