Bueno, mientras investigando eso en RUBY (u), he descubierto que el SURF es un híbrido de ASM con SCRIPT.
El asm es lo que verifica si tienes la flag 0x80B (la 5 insignia, del surf), verifica si tienes algún pokemon en el equipo con SURF (mismo que el script haga eso) y verifica si estas antes...