I made some major changes to my project, a big one is I found out that using more than one timer makes it run faster. The thing is the UFO sprites aren't moving or colliding anymore. I think it's a problem with one FOR loop because they don't collide anymore either.
This is the entire open card section:
CREATESPRITE 1, "BG"
MOVESPRITE 1,0,0
CREATESPRITE 2, "Ship"
MOVESPRITE 2,100,180
LET enemies = 10
LET other = 4
LET shots = 1
LET numy = enemies+other
FOR x = 4 to 14
 CREATESPRITE x, "UFO"
 MOVESPRITE x, random(100)*20+700, random(300)
NEXT
ON TIMER 1
Â
 IF fail = true THEN
  Â
   EXPLODE 2
   STOPTIMER
  Â
 END IF
Â
END TIMER
ON TIMER 1
Â
 FOR x = 4 to 14   //this seems to be broken
   IF SPRITEVALID(x) = true THEN
   PUSHSPRITE x, -8, 0
   END IF
   IF SPRITESTOUCHING(2,x) = TRUE THEN
    LET fail = true
   END IF
  Â
 NEXT
Â
END TIMER
ON TIMER 1
Â
 IF fail = false THEN
   PUSHSPRITE 1, -8,0
  Â
   IF spritex(1) < -2210 THEN
    LET spritex (1) = 0
   END IF
  Â
   FOR i = numy to numy+shots     //pushes shots
   Â
    IF spritevalid(i) = true THEN
      PUSHSPRITE i, 10, 0
    END IF
   NEXT
 END IF
END TIMER
(i will improve the code to create/push shots once I want them to actually do something, and they are created in the key down section)
EDIT: why must this be so hard? I thought I would be nearly done by now.