From 2f2801a0312b38fb790130f77cf303d8450853b1 Mon Sep 17 00:00:00 2001 From: zerosenses Date: Mon, 31 Aug 2026 22:18:32 +0300 Subject: [PATCH] mount olympus by ratul - Includes fix: 100% HP loop fix on recovery due to in-game health bar exceeding bug. (bricked bot) - Includes fix: Occasional dialogue nasty bug after completing puzzle during Athena talk. (bricked bot) --- bots/Aquila/AQ_Z00_Hub/MountOlympus.txt | 609 ++++++++++++++++++++++++ 1 file changed, 609 insertions(+) create mode 100644 bots/Aquila/AQ_Z00_Hub/MountOlympus.txt diff --git a/bots/Aquila/AQ_Z00_Hub/MountOlympus.txt b/bots/Aquila/AQ_Z00_Hub/MountOlympus.txt new file mode 100644 index 0000000..ccb4519 --- /dev/null +++ b/bots/Aquila/AQ_Z00_Hub/MountOlympus.txt @@ -0,0 +1,609 @@ +###deimos_expertmode +# @name: Mount Olympus +# @zone: Aquila/AQ_Z00_Hub +# @author: Ratul +# @format: expertmode +# @clients: <=4 +# @description: Mount Olympus: Puzzle & CM/Standard toggles. +# SPEEDHACK Optional +# COMBAT Optional +# Dialogue ON +# Settings for Challenge Mode and Puzzle Fight Only (default to False, can be set to True) +# Chat Menu setting set to "EASY CHAT" or "BOTH" in-game +# Start in the hub area of Aquila (Garden of Hesperides) + + + +### SETTINGS ### + +# Challenge Mode Toggle +setvar ChallengeMode = False + +# Puzzle Combat Fail Toggle +setvar PuzzleFight = False + +# Restart After Puzzle Combat Toggle +setvar RestartAfterPuzzleFight = False + +block Delay { + sleep 2 +} + +block Load { + # Wait for loading screen to appear + times 100 { + if any loading { + break + } else { + sleep 0.1 + } + } + + # Wait for loading screen to finish + while any loading { + sleep 0.1 + } + + # Verify UI is ready by checking EasyChat tooltip + until windowtext ['ToolTipContainer', 'ToolTipText'] "right-click on a phrase to add to/remove from favorites" { + cursorwindow ['WorldView', 'windowQuickChat', 'btnRadialQuickChat'] + sleep 0.1 + } + + # Hover over spellbook to reset cursor state + cursorwindow ['WorldView', 'windowHUD', 'btnSpellbook'] +} + +block Recover { + # Collect Health Wisps until all characters above 100% HP + if any healthbelow 100% and sameany inrange "Health" { + times 5 { + sameany entitytp Health + } + } + + # Collect Mana Wisps until all characters above 100% Mana + if any manabelow 100% and sameany inrange "Mana" { + times 5 { + sameany entitytp Mana + } + } + + call Delay +} + +block Sigil { + # Abort if any character is not in Aquila Hub + if not inzone Aquila/AQ_Z00_Hub { + print "Error: Party not in Aquila Hub." + kill + } + + # Move to sigil position, retrying up to 5 times if not visible + times 5 { + tp XYZ(-600.0, 4450.0, -89.761) + call Delay + call Delay + + if windowvisible ['WorldView','NPCRangeWin','imgBackground','TeamUpButton'] { + break + } else { + minustp XYZ(0, 0, 500) + call Delay + } + } + + # Abort if sigil was not detected after all attempts + if not windowvisible ['WorldView','NPCRangeWin','imgBackground','TeamUpButton'] { + print "Error: Sigil not detected. Reload instance or change realm." + kill + } + + # Toggle Challenge Mode if enabled + if ChallengeMode = True { + # Wait for Challenge Mode toggle button to appear + times 3 { + if windowvisible ['WorldView', 'NPCRangeWin', 'sigilModeToggleButton'] { + break + } else { + sleep 0.5 + } + } + + clickwindow ['WorldView', 'NPCRangeWin', 'sigilModeToggleButton'] + call Delay + } + + # Activate sigil to enter dungeon + while windowvisible ['WorldView','NPCRangeWin','imgBackground','TeamUpButton'] { + sendkey X + } + + # Wait for dungeon load + sleep 10 + call Load +} + +block Exit { + # Skip exit if already in Aquila Hub + if inzone Aquila/AQ_Z00_Hub { + return + } + + # Wait for Go To Aquila cooldown to expire + while any windowvisible ['WorldView', 'windowHUD', 'compassAndTeleporterButtons', 'GoHomeButton', 'txtGoHomeTimer'] { + sleep 1 + } + + # Click Go To Aquila button up to 3 times to return to Aquila Hub + times 3 { + clickwindow ['WorldView', 'windowHUD', 'compassAndTeleporterButtons', 'GoHomeButton'] + sleep 1 + } + + call Load +} + +block CompletePuzzle { + # Carthaginian Elephant + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(500.0, 8800.0, -1671.387) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Minotaur Warrior + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-500.0, 8800.0, -1671.387) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Ophidian Archer + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(0, 9000.0, -1671.387) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay +} + +block FailPuzzle { + # Ophidian Archer + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(0, 9000.0, -1671.387) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Trigger puzzle combat + until incombat { + tp XYZ(0, 8000.0, -1671.387) + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay +} + +block P1TalkToAthena { + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(100.0, 600.0, -68.288) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay +} + +block MountOlympus { + # Talk to Athena Battle Sight + call P1TalkToAthena + + # Collect health and mana wisps + call Recover + + # Locate Sun Chamber + p1 tp XYZ(6500.0, 8300.0, -10.139) + call Delay + except p1 tp XYZ(6500.0, 8300.0, -10.139) + call Load + + # Defeat Apollo Bright One + until incombat { + entitytp AQ-Immortal-Apollo + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + # Collect Legion Token + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-200.0, 1250.0, -35.018) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Talk to Athena Battle Sight + tp XYZ(-200.0, -2400.0, 109.265) + call Load + + call P1TalkToAthena + + # Locate Moon Chamber + p1 tp XYZ(-6500.0, 8300.0, -10.139) + call Delay + except p1 tp XYZ(-6500.0, 8300.0, -10.139) + call Load + + # Defeat Crescent Moon Centaur + until incombat { + entitytp AQ-Centaur-Artemis + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + # Collect Legion Token + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-175.0, 1550.0, 4.130) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Talk to Athena Battle Sight + tp XYZ(-200.0, -2400.0, 109.265) + call Load + + call P1TalkToAthena + + # Locate Sky Balcony + p1 tp quest + call Delay + except p1 tp p1 + + # Defeat Praetorian Guard + until incombat { + entitytp AQ-Eagle-Praetorian + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + # Collect Legion Token + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(850.000, 15250.0, 317.761) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Talk to Athena Battle Sight + call P1TalkToAthena + + # Talk to Eris Golden Apple + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(0, 11500.0, -1445.999) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Solve Puzzle + p1 walkto XYZ(0, 9500.0, -1671.387) + call Delay + waitforfree + call Delay + + if PuzzleFight = False { + call CompletePuzzle + call Delay + call Delay + call Delay + } else { + call FailPuzzle + } + + if RestartAfterPuzzleFight = True { + call Exit + return + } + + # Talk to Athena Battle Sight + call P1TalkToAthena + + # Collect health and mana wisps + except p1 tp p1 + call Delay + call Recover + + # Locate Hall of the Watchful Eye + p1 tp XYZ(0, 13600.0, -1290.588) + call Delay + except p1 tp XYZ(0, 13600.0, -1290.588) + call Load + + # Defeat Elite Cyclops Guard + until incombat { + entitytp AQ-Cyclops-Guard + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + # Talk to Hephaestus Coppersmith + p1 tp XYZ(0, 5000.0, 200.0) + call Load + + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(0, 700.0, 100.0) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Collect Bronze Eagle + p1 tp XYZ(0, -1400.0, 0) + call Load + + p1 tp XYZ(0, -5000.0, 200.0) + call Load + + # First Bronze Eagle + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-2550.0, 12500.0, -979.533) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Second Bronze Eagle + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-4900.0, 6200.0, -10.137) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Third Bronze Eagle + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(-1400.0, -1000.0, -68.287) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Fourth Bronze Eagle + p1 tp XYZ(6500.0, 8300.0, -10.139) + call Load + + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(400.0, -2200.999, 109.264) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Talk to Hephaestus Coppersmith + p1 tp XYZ(-200.0, -2400.0, 109.265) + call Load + + p1 tp XYZ(0, 13600.0, -1290.588) + call Load + + p1 tp XYZ(0, 5000.0, 200.0) + call Load + + until p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 tp XYZ(0, 700.0, 100.0) + call Delay + call Delay + p1 minustp XYZ(0, 0, 500) + call Delay + } + + while p1 windowvisible ['WorldView', 'NPCRangeWin', 'imgBackground'] { + p1 sendkey X + } + + call Delay + waitforfree + call Delay + + # Locate Hall of Battle + p1 tp XYZ(0, -1400.0, 0) + call Load + tp XYZ(0, -5000.0, 200.0) + call Load + + p1 tp XYZ(0, 15500.0, 317.762) + call Delay + except p1 tp XYZ(0, 15500.0, 317.762) + call Load + + # Defeat Ares Savage Spear + until incombat { + entitytp AQ-Immortal-Ares + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + # Locate Throne Room + p1 tp XYZ(0, 5000.0, 200.0) + call Delay + except p1 tp XYZ(0, 5000.0, 200.0) + call Load + + # Defeat Zeus Sky Father + until incombat { + entitytp AQ-Immortal-Zeus-A + call Delay + } + + waitforcombat completion + call Delay + waitforfree + call Delay + + call Exit +} + +loop { + call Sigil + + # Stop if characters are desync + if not sameplace { + call Exit + break + } + + call MountOlympus +}