Skip to content

Instantly share code, notes, and snippets.

# https://github.com/Grayfox96/FFX-RNG-tracker required
# download the code as a zip file, unzip and
# run 'py -m pip install .' in the main directory to install
from datetime import datetime, timedelta
from ffx_rng_tracker.data.constants import EncounterCondition
from ffx_rng_tracker.data.seeds import datetime_to_seed
from ffx_rng_tracker.events.parsing_functions import (parse_encounter,
parse_encounter_checks,

numbers in brackets are timings of sections where you only need to mash dialogue
every "Random Encounters" section is valid until the next one
heal often, the route buys a lot of Potions (keep in mind that you need 1 Potion for Aria, after Hein), Hi-Potions and status curing items a lot of bosses change attack pattern once they reach specific hp thresholds, the strat is usually to start using the most powerful attacks/spells/items only when they are about to reach those thresholds

Altar Cave:

  • (B3) cutscene until Goblins (1:32)
  • Goblins:
    • Autobattle
  • (B3) cutscene until controls tutorial

this guide assumes you are using the tracker for at least encounters and yojimbo, no encounters armor is really useful to move between zones without wasting encounters

any% section

use this route for yuna's stats up to sin core, with a handful of modifications:

  • do not teach tidus any skill so you can flee faster (you will teach him quick hit right before for arena monsters)
  • get every accuracy node in tidus' any% path
  • get 2 lv. 1 key spheres x3 chests in moonflow
  • move wakka to the left and get 1 str node before extractor (the one near the acc node)
  • pray at the first qactuar stone (its on the left in thunder plains south)
  • try to get 2 special spheres from seymour for flee on yuna and entrust on rikku (not necessary)

Strategy explanation

In Mushroom Rock Road it's necessary to farm AP for Yuna and Kimahri: the strategy involves using Energy Ray on an encounter, doing a Sphere Grid to give Yuna (and Valefor) more Magic and Magic Defense, doing a second encounter to recharge Valefor's Overdrive then killing Raptors and Gandarewas until reaching a certain amount of AP on Yuna.

First fight (using Energy Ray)

The formation should be Tidus/Wakka/Auron; since Funguars give more AP compared to other monsters (44 vs 32), it's preferable to kill an encounter containing one but to avoid having to farm encounters at the end of the road kill anything that isn't a Garuda after fleeing 2 encounters.

As long as Kimahri and Wakka took a turn in battle and they are alive, you can Switch anyone for Yuna and Summon Valefor to Energy Ray with her (both Energy Ray and Energy Blast will kill anything but the former has a shorter animation), even on an Ambush.

Structure of the fight

  • Tidus > Switch > Kimahri

Intro

The times in brackets tell how long until the next non-X input
When optimizing equipment the updated equipment is in bold (E.g. Optimize (Mage Masher / Leather Hat / Wrist / Leather Shirt / -))

Credits

Based on this guide made by Muttski and petroesjka

The Run Begins!

(2:10)

from datetime import datetime, timedelta
import threading
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)
import datetime
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)
seed = s32(s32(seed * 1108104919) + 11786)
import datetime
def s32(integer: int) -> int:
return ((integer & 0xffffffff) ^ 0x80000000) - 0x80000000
def datetime_to_seed(datetime: int) -> int:
seed = s32(datetime + 1)
seed = s32(s32(seed * 1108104919) + 11786)
from typing import List, Optional
AURON_DAMAGE_VALUES = (
(
260, 261, 262, 263, 264, 266, 267, 268, 269, 270, 271,
272, 273, 274, 275, 276, 278, 279, 280, 281, 282, 283,
284, 285, 286, 287, 288, 289, 291, 292, 293, 294
),
(
520, 522, 524, 526, 528, 532, 534, 536, 538, 540, 542,
"""This script is used to find a seed by inputting the first 3 damage values
from Tidus and the first 5 damage values from Auron. It will look for files
in the ffx_ps2_seeds directory and try to find the seed that corresponds
to those damage values.
"""
import os
import time
import datetime
import array