Wenn der punkt so weit oben ist kannst du das ja ausnutzen:
if (player.z > my.z) {erst dann kannst du abrutschen}
natürlich in kombination wenn du über ihn stehst, sonst fliegst du schon wenn du auf einem hügel über ihn stehst

Ich glaube das mit dem Schlagen sollt kein problem sein. Wenn ich mich nicht irre und du das polygon flag gesetzt hast müsste es nur den umriss des ersten frames berechnen können.
Wenn du auf dem gegner bist und nicht mehr springen kannst ist das woll ein zeichen das der trace den gegner unter dir nicht erkennt und dich immer noch weiter runterzieht. Probier mal testweise ACTIVATE_SHOOT bei dem trace und beim gegner setzt du ENABLE_SHOOT um ihn darauf empfindlich zu machen. Ändere seine skin oder mach das "beep()" geräusch um es auszutesten.