Maybe not to early but the torpedo just keeps flying after it has hit a target (passable = on and my != null) So why not change the argument in the while loop to: my.skill1 = 1; while(my.skill1) { ... } wait(1); ent_remove(me);
And then in the event function, nothing more than: my.skill1 = 0;