function unit_hit()
{
if(you.UNIT_TYPE == UNIT_TYPE_TORPEDO) my.STATE = UNITSTATE_HIT;
}
action unit_action()
{ my.event = unit_hit;
my.emask |= ENABLE_IMPACT; //you = other object pointer
while(1)
{ move_friction=0;
unit_physics(act_unit);
c_move(my, vector(unit_data[act_unit][UNIT_DATA_SPEED]*time_step,0,0), vector(unit_data[act_unit][UNIT_DATA_X_FORCE]*time_step,unit_data[act_unit][UNIT_DATA_Y_FORCE]*time_step,unit_data[act_unit][UNIT_DATA_Z_FORCE]*time_step), IGNORE_PASSABLE | GLIDE);
//sink the sub
if(my.STATE == UNITSTATE_HIT)
{
//my.STATE = UNITSTATE_NORMAL;
unit_data[act_unit][UNIT_DATA_Z_FORCE]-=time_step;
unit_data[act_unit][UNIT_DATA_POWER] = 0;
}
wait(1);
}