EDIT: I think something like
proc/IconState(Icon as icon, Iconstate as text, Moving as num, atom/A)
var/frame = 0//define the frame variable
for(var/i=99,i,i--)//loop through 99 times, the max amount of frames allowed in one icon
var/NewIcon = new(Icon,Iconstate,A.dir,++frame,Moving)//next frame
break
if(NewIcon == null)//if the next frame is null, stop adding to frame and start a new loop
for(var/o=frame,o,o--)
A.icon = new(Icon,Iconstate,A.dir,++frame,Moving)//depict each frame individually
//...
mob/verb/Jab_1()
IconState(usr.icon, "jab 1", 0, usr)
Would something like that work? I'm not exactly the programmer for the project, and I'm supposed to be spewing out icons like there's no end, so I don't have time to test it myself. I kinda of figured someone could just look and see if it would work or not.