戦闘に勝利or敗北したのにバトルループに戻っているのが原因で
GOSUB〜RETURNの使い方の間違いっぽいです
RETURNの効果は「一番最近通ったGOSUBの場所に戻る」ため
@WINの中でRETURNすると戻る場所はバトルループの中です
IF (略) THEN GOSUB @WIN:RETURNのように、バトル自体から抜けるRETURNを足すと直ります
敗北の場合はそもそも冒険に戻ってはいけないので
IF 略 GOTO @GAMEOVERで飛んだあと、RETURNしないで@TOPに飛ぶのが正しそうです