summaryrefslogtreecommitdiff
path: root/pokemontools/vba/autoplayer.py
diff options
context:
space:
mode:
authorBryan Bishop <kanzure@gmail.com>2013-09-22 11:38:35 -0500
committerBryan Bishop <kanzure@gmail.com>2013-09-22 11:38:35 -0500
commit54579ad69962d62a7af874635ff4e3e5fb4738b7 (patch)
treeb45ac4fc52e7972fcc455ff00d92e0e999a63aac /pokemontools/vba/autoplayer.py
parentd0b0b9c5f2e0d302b9150e6eeb5be9b2467fb792 (diff)
make skippable decorator not always save state
There are some runs where the "skippable" decorator should not save the state of the game before and after, like if the function is given different parameters and the after state should not be the canonical after state.
Diffstat (limited to 'pokemontools/vba/autoplayer.py')
-rw-r--r--pokemontools/vba/autoplayer.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/pokemontools/vba/autoplayer.py b/pokemontools/vba/autoplayer.py
index b47634e..c1e36bc 100644
--- a/pokemontools/vba/autoplayer.py
+++ b/pokemontools/vba/autoplayer.py
@@ -19,11 +19,16 @@ def skippable(func):
def wrapped_function(*args, **kwargs):
self = args[0]
skip = True
+ override = True
if "skip" in kwargs.keys():
skip = kwargs["skip"]
del kwargs["skip"]
+ if "override" in kwargs.keys():
+ override = kwargs["override"]
+ del kwargs["override"]
+
# override skip if there's no save
if skip:
full_name = func.__name__ + "-end.sav"
@@ -33,9 +38,13 @@ def skippable(func):
return_value = None
if not skip:
- self.cry.save_state(func.__name__ + "-start", override=True)
+ if override:
+ self.cry.save_state(func.__name__ + "-start", override=override)
+
return_value = func(*args, **kwargs)
- self.cry.save_state(func.__name__ + "-end", override=True)
+
+ if override:
+ self.cry.save_state(func.__name__ + "-end", override=override)
elif skip:
self.cry.vba.state = self.cry.load_state(func.__name__ + "-end")
@@ -81,7 +90,7 @@ class SpeedRunner(Runner):
self.new_bark_level_grind(10, skip=False)
@skippable
- def skip_intro(self):
+ def skip_intro(self, stop_at_name_selection=False):
"""
Skip the game boot intro sequence.
"""
@@ -124,6 +133,9 @@ class SpeedRunner(Runner):
# read text until name selection
self.cry.text_wait()
+ if stop_at_name_selection:
+ return
+
# select "Chris"
self.cry.vba.press("d", hold=10, after=1)
self.cry.vba.press("a", hold=50, after=1)