hmmm, maybe im doing something wrong in the colision.. because its not removing either of the MJ's..
i've got this colision set up:
SpriteA: Attack
SpriteB: EnemyMJ   (EnemyOthr is the class for other enemies)
Terminate A
Activate: COL_<BDef>*
I tried unchecking the 'Terminate A', but that didn't change anything.
since hte script has been changed several dozen times, and I may have made a mistake along the way, here it is for reference:
Option Explicit 
Class Hit 
   Private hMap 
   Private hSpriteName 
   Private hHPs 
   Public Default Sub Hit(Map, SpriteName, HPs) 
      hMap = Map 
      hSpriteName = SpriteName 
      hHPs = HPs 
   End Sub 
   public function getMap() 
      getMap = hMap 
   End function 
   public function getSprite() 
      getSprite = hSpriteName 
   End function 
   public function getHPs() 
      getHPs = hHPs 
   end function 
End Class 
Sub Player_OnPlayInit() 
   Dim i, oMap 
   Dim oNewSpecial 
   Set oNewSpecial = NewSpecialFunction 
   for i = 0 to ubound(Hits) 
      Set oMap = ProjectObj.Maps(Hits(i).getMap())
      oNewSpecial.FuncType = 7 ' SPECIAL_EVENT 
      oNewSpecial.Name = "COL_" & Hits(i).getSprite() 
      oMap.AddSpecial(hostObj.AsObject(oNewSpecial)) 
   Next 
End Sub
Sub Player_OnSpecialFunction(SpecialObj) 
   dim i, layer, idx, spr
   for i = 0 to UBound(Hits) 
   spr = Hits(i).getSprite() 
   if left(SpecialObj.Name,4 + len(spr)) = "COL_" & spr then 
      spr = FindSpriteByDef(spr,layer,idx) 
      if spr.UserData > Hits(i).getHPs() or spr.UserData < 0 then spr.UserData = 0 
      spr.UserData = spr.UserData + 1 
      if spr.UserData = Hits(i).getHPs() then 
         layer.RemoveSprite(idx) 
      end if 
   end if 
next 
End Sub 
Function FindSpriteByDef(SpriteName, byref oLayer, byref oSprIndex) 
   dim i, j 
   oMap = ProjectObj.GamePlayer.rMap 
   for i = 0 to rMap.LayerCount 
      for j = 0 to rMap.MapLayer(i).SpriteCount() 
         if rMap.MapLayer(i).Sprite(j).SpriteDef.Name = SpriteName then 
            set oLayer = rMap.MapLayer(i) 
            oSprIndex = j 
            set FindSpriteByDef = oLayer.Sprite(j) 
         end if 
      next 
   next 
End Function 
'-----Initialize Sprites----- 
Dim Hits(16), i 
for i = 0 to 3 
   set Hits(i) = new Hit 
   Hits(i).Hit "5-0TheMoon","MJW" & i + 1,2 
next 
for i = 4 to 16 
   set Hits(i) = new Hit 
   Hits(i).Hit "5-0TheMoon","MS" & i - 3,3 
next 
'-----End Initialization-----
HostObj.SinkObjectEvents ProjectObj.GamePlayer, "Player" 
HostObj.ConnectEventsNow() 
ProjectObj.GamePlayer.Play 16
Let me know if I should post the entire game.