diff --git a/battle/main.py b/battle/main.py index ead1fd71..7ffe1791 100644 --- a/battle/main.py +++ b/battle/main.py @@ -2271,7 +2271,6 @@ def fullheal(target: int, direction: str): # Process written by CrimsonInferno -@battle.utils.speedup_decorator def wendigo_res_heal(turn_char: int, use_power_break: int, tidus_max_hp: int): print("Wendigo Res/Heal function") party_hp = memory.main.get_battle_hp() diff --git a/battle/utils.py b/battle/utils.py index 176369d0..be71eaab 100644 --- a/battle/utils.py +++ b/battle/utils.py @@ -15,6 +15,7 @@ def _monitor_battle(): while not memory.main.battle_active(): pass fast = False + old_game_speed = memory.main.get_game_speed() while memory.main.battle_active(): if fast and memory.main.auditory_dialog_playing(): memory.main.set_game_speed(0) @@ -22,12 +23,12 @@ def _monitor_battle(): elif not fast: memory.main.set_game_speed(2) fast = True - memory.main.set_game_speed(0) + memory.main.set_game_speed(old_game_speed) def wrapper(*args, **kwargs): if game_vars.get_battle_speedup(): logger.debug(f"Speeding battle up: {func.__name__}") - monitor = threading.Thread(target=_monitor_battle) + monitor = threading.Thread(target=_monitor_battle, daemon=True) monitor.start() ret_val = func(*args, **kwargs) monitor.join() diff --git a/memory/main.py b/memory/main.py index 3aff98e2..a4cec15e 100644 --- a/memory/main.py +++ b/memory/main.py @@ -2295,6 +2295,10 @@ def set_encounter_rate(set_val): process.write_bytes(key, set_val, 1) +def get_game_speed(): + return read_val(0x008E82A4) + + def set_game_speed(set_val): global base_value diff --git a/nemesis/arenaPrep.py b/nemesis/arenaPrep.py index 49e2a3c7..ecccffa9 100644 --- a/nemesis/arenaPrep.py +++ b/nemesis/arenaPrep.py @@ -490,7 +490,7 @@ def advanced_battle_logic(): # Double Gemini, two different locations if memory.main.get_use_items_slot(42) < 100: battle.main.use_item( - memory.main.get_use_items_slot(42), rikku_flee=False + memory.main.get_use_items_slot(42), rikku_flee=True ) else: battle.main.defend() @@ -498,7 +498,7 @@ def advanced_battle_logic(): # Armor bomber guys if memory.main.get_use_items_slot(41) < 100: battle.main.use_item( - memory.main.get_use_items_slot(41), rikku_flee=False + memory.main.get_use_items_slot(41), rikku_flee=True ) else: battle.main.defend() @@ -506,7 +506,7 @@ def advanced_battle_logic(): # Demonolith if memory.main.get_use_items_slot(41) < 100: battle.main.use_item( - memory.main.get_use_items_slot(41), rikku_flee=False + memory.main.get_use_items_slot(41), rikku_flee=True ) else: battle.main.defend() @@ -517,7 +517,7 @@ def advanced_battle_logic(): ) if memory.main.get_use_items_slot(41) < 100: battle.main.use_item( - memory.main.get_use_items_slot(41), rikku_flee=False + memory.main.get_use_items_slot(41), rikku_flee=True ) else: battle.main.defend() @@ -533,13 +533,13 @@ def advanced_battle_logic(): # Varuna, use purifying salt to remove haste # Safety potions are fun. battle.main.use_item( - memory.main.get_use_items_slot(63), rikku_flee=False + memory.main.get_use_items_slot(63), rikku_flee=True ) elif encounter_id == 426: # Master Tonberry if not sleepPowder: battle.main.use_item( - memory.main.get_use_items_slot(37), rikku_flee=False + memory.main.get_use_items_slot(37), rikku_flee=True ) else: if memory.main.get_use_items_slot(41) < 100: @@ -556,7 +556,7 @@ def advanced_battle_logic(): ): if not sleepPowder: battle.main.use_item( - memory.main.get_use_items_slot(37), rikku_flee=False + memory.main.get_use_items_slot(37), rikku_flee=True ) else: if memory.main.get_use_items_slot(41) < 100: diff --git a/tas_saves/ffx_019 b/tas_saves/ffx_019 new file mode 100644 index 00000000..cbb06ab8 Binary files /dev/null and b/tas_saves/ffx_019 differ