gameboy_worlds.emulation.harry_potter.trackers

  1from gameboy_worlds.emulation.tracker import (
  2    StateTracker,
  3    TestTrackerMixin,
  4    DummySubGoalMetric,
  5    make_subgoal_metric_class,
  6)
  7from gameboy_worlds.emulation.harry_potter.base_metrics import HarryPotterOCRMetric
  8from gameboy_worlds.emulation.harry_potter.test_metrics import (
  9    PotionsShopTerminateMetric,
 10    OllivandersInteriorTerminateMetric,
 11    OutsideOllivandersSubgoal,
 12    GetWandTerminateMetric,
 13    TalkToOllivanderSubgoal,
 14    ReceiveFolioMagiTerminateMetric,
 15    BoyApproachesSubgoal,
 16    SelectCardDeckTerminateMetric,
 17    CardOptionsShownSubgoal,
 18    GringottsInteriorTerminateMetric,
 19    OutsideGringottsSubgoal,
 20    TalkHagridGringottsTerminateMetric,
 21    FindHagridGringottsSubgoal,
 22    ReenterGringottsSubgoal,
 23    ExitGringottsTerminateMetric,
 24    TalkToWeasleysSubgoal,
 25    OnTrainTerminateMetric,
 26    TalkToRonWeasleySubgoal,
 27    ChocolateFrogs5InventoryTerminateMetric,
 28    SellChocolateFrogSubgoal,
 29    ChocolateFrogs4InventoryTerminateMetric,
 30    StartOfDuelSubgoal,
 31    LoseDuelTerminateMetric,
 32    WinDuelTerminateMetric,
 33    LeftmostTrainCarTerminateMetric,
 34    RightmostTrainCarSubgoal,
 35    LeftmostTrainCarSubgoal,
 36    GainLevelTerminateMetric,
 37    GainSpellTerminateMetric,
 38    WinBattleTerminateMetric,
 39    FindBossRatSubgoal,
 40    RatKingSpriteSubgoal,
 41    UnableToEscapeSubgoal,
 42    RespawnDeathRatTerminateMetric,
 43    FullyRestoreMPSubgoal,
 44    UtilizeDeflectCardsSubgoal,
 45    # Task 14
 46    FindHagridVaultTerminateMetric,
 47    NavigateToHagridSubgoal,
 48    # Madam Malkin split tasks
 49    EnterMalkinsTerminateMetric,
 50    OpenMalkinsBuyMenuTerminateMetric,
 51    SelectRobesTerminateMetric,
 52    ConfirmRobesPurchaseTerminateMetric,
 53    OutsideMalkinsSubgoal,
 54    # Flourish & Blotts split tasks
 55    EnterFlourishBlottsTerminateMetric,
 56    OutsideFlourishBlottsSubgoal,
 57    BuyBooksTerminateMetric,
 58    TalkToFlourishClerkSubgoal,
 59    # Apothecary tasks
 60    EnterApothecaryTerminateMetric,
 61    BuyPotionKitTerminateMetric,
 62    OutsideApothecarySubgoal,
 63    ApothecaryBuyMenuOpenSubgoal,
 64    # Cauldron shop tasks
 65    EnterCauldronShopTerminateMetric,
 66    BuyCauldronTerminateMetric,
 67    OutsideCauldronShopSubgoal,
 68    CauldronBuyMenuOpenSubgoal,
 69    # Sugarplums Sweets filler tasks
 70    EnterSugarplumsTerminateMetric,
 71    OpenSugarplumsBuyMenuTerminateMetric,
 72    OutsideSugarplumsSubgoal,
 73    # Talk to Hagrid in Diagon Alley
 74    TalkToHagridDiagonTerminateMetric,
 75    # CoS Task 1
 76    FindDobbyTerminateMetric,
 77    FindDobbySubgoal,
 78    # CoS Task 2
 79    SelectCardDeckCosTerminateMetric,
 80    # CoS Task 3
 81    BoardFlyingCarTerminateMetric,
 82    TalkToRonCosSubgoal,
 83    # CoS Task 4
 84    EnterBurrowTerminateMetric,
 85    OutsideBurrowAfterCutsceneSubgoal,
 86    # CoS Task 5
 87    EnterBattleCosTerminateMetric,
 88    # Burrow room navigation tasks (CoS)
 89    EnterPercyRoomTerminateMetric,
 90    EnterGinnyRoomTerminateMetric,
 91    EnterParentsRoomTerminateMetric,
 92    EnterFredGeorgeRoomTerminateMetric,
 93    EnterRonsRoomTerminateMetric,
 94    TalkToRonBurrowTerminateMetric,
 95    EnterKitchenBurrowTerminateMetric,
 96    EnterBurrowGardenTerminateMetric,
 97    OutsideGardenDoorSubgoal,
 98    NavigateToCarTerminateMetric,
 99    StartMenuTerminateMetric,
100    DiagonAlleySubgoal,
101    PumpkinPastySubgoal,
102    EatPumpkinPastyTerminateMetric,
103    EquippedPointedHatSubgoal,
104    EquippedPointedHatPlainWorkRobeTerminateMetric,
105    RemoveHatSubgoal,
106    RemoveRobeSubgoal,
107    EmptyEquipCursorRobeTerminateMetric,
108    TalkToHagridBeforeBoatSubgoal,
109    BoatBattleTerminateMetric,
110    WeakenedHealthBarSubgoal,
111    RestoredFullHealthTerminateMetric,
112    FightYellowRatSubgoal,
113    FightBigYellowMonsterTerminateMetric,
114    FightBatMiddleSubgoal,
115    FightBigYellowMonsterMiddleTerminateMetric,
116)
117
118
119class HarryPotterOCRTracker(StateTracker):
120    """
121    Base tracker that adds OCR dialogue capture support for Harry Potter games.
122    Requires the parser to have a "dialogue_box_full" region defined.
123    """
124
125    def start(self):
126        super().start()
127        self.metric_classes.extend([HarryPotterOCRMetric])
128
129
130class HarryPotterTestTracker(TestTrackerMixin, HarryPotterOCRTracker):
131    """
132    Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games.
133    All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.
134    """
135
136    TERMINATION_TRUNCATION_METRIC = PotionsShopTerminateMetric
137    SUBGOAL_METRIC = DummySubGoalMetric
138
139
140class PotionsShopTestTracker(HarryPotterTestTracker):
141    """
142    A TestTracker for Harry Potter Philosopher's Stone that ends an episode when the agent enters the potions shop.
143    """
144
145    TERMINATION_TRUNCATION_METRIC = PotionsShopTerminateMetric
146    SUBGOAL_METRIC = DummySubGoalMetric
147
148
149class EnterOllivandersTestTracker(HarryPotterTestTracker):
150    TERMINATION_TRUNCATION_METRIC = OllivandersInteriorTerminateMetric
151    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideOllivandersSubgoal])
152
153
154class GetWandTestTracker(HarryPotterTestTracker):
155    TERMINATION_TRUNCATION_METRIC = GetWandTerminateMetric
156    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToOllivanderSubgoal])
157
158
159class ReceiveFolioMagiTestTracker(HarryPotterTestTracker):
160    TERMINATION_TRUNCATION_METRIC = ReceiveFolioMagiTerminateMetric
161    SUBGOAL_METRIC = make_subgoal_metric_class([BoyApproachesSubgoal])
162
163
164class SelectCardDeckTestTracker(HarryPotterTestTracker):
165    TERMINATION_TRUNCATION_METRIC = SelectCardDeckTerminateMetric
166    SUBGOAL_METRIC = make_subgoal_metric_class([CardOptionsShownSubgoal])
167
168
169class EnterGringottsTestTracker(HarryPotterTestTracker):
170    TERMINATION_TRUNCATION_METRIC = GringottsInteriorTerminateMetric
171    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideGringottsSubgoal])
172
173
174class TalkHagridGringottsTestTracker(HarryPotterTestTracker):
175    TERMINATION_TRUNCATION_METRIC = TalkHagridGringottsTerminateMetric
176    SUBGOAL_METRIC = make_subgoal_metric_class([FindHagridGringottsSubgoal])
177
178
179class ExitGringottsWithoutHagridTestTracker(HarryPotterTestTracker):
180    TERMINATION_TRUNCATION_METRIC = ExitGringottsTerminateMetric
181    SUBGOAL_METRIC = make_subgoal_metric_class([ReenterGringottsSubgoal])
182
183
184class GetOnTrainTestTracker(HarryPotterTestTracker):
185    TERMINATION_TRUNCATION_METRIC = OnTrainTerminateMetric
186    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToWeasleysSubgoal])
187
188
189class BuyChocolateFrogsTestTracker(HarryPotterTestTracker):
190    TERMINATION_TRUNCATION_METRIC = ChocolateFrogs5InventoryTerminateMetric
191    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToRonWeasleySubgoal])
192
193
194class SellOneChocolateFrogTestTracker(HarryPotterTestTracker):
195    TERMINATION_TRUNCATION_METRIC = ChocolateFrogs4InventoryTerminateMetric
196    SUBGOAL_METRIC = make_subgoal_metric_class([SellChocolateFrogSubgoal])
197
198
199class LoseDuelTestTracker(HarryPotterTestTracker):
200    TERMINATION_TRUNCATION_METRIC = LoseDuelTerminateMetric
201    SUBGOAL_METRIC = make_subgoal_metric_class([StartOfDuelSubgoal])
202
203
204class WinDuelTestTracker(HarryPotterTestTracker):
205    TERMINATION_TRUNCATION_METRIC = WinDuelTerminateMetric
206    SUBGOAL_METRIC = make_subgoal_metric_class([StartOfDuelSubgoal])
207
208
209class GainLevelTestTracker(HarryPotterTestTracker):
210    TERMINATION_TRUNCATION_METRIC = GainLevelTerminateMetric
211    SUBGOAL_METRIC = DummySubGoalMetric
212
213
214class GainSpellTestTracker(HarryPotterTestTracker):
215    TERMINATION_TRUNCATION_METRIC = GainSpellTerminateMetric
216    SUBGOAL_METRIC = DummySubGoalMetric
217
218
219class WinBattleTestTracker(HarryPotterTestTracker):
220    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric
221    SUBGOAL_METRIC = DummySubGoalMetric
222
223
224class BeatBossRatTestTracker(HarryPotterTestTracker):
225    """Boss fight — termination TBD, subgoal is finding the boss rat."""
226    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric  # placeholder until boss-specific termination
227    SUBGOAL_METRIC = make_subgoal_metric_class([FindBossRatSubgoal])
228
229
230class FailRatKingBattleTestTracker(HarryPotterTestTracker):
231    """Fail the rat king battle by attempting to escape and dying."""
232    TERMINATION_TRUNCATION_METRIC = RespawnDeathRatTerminateMetric
233    SUBGOAL_METRIC = make_subgoal_metric_class([RatKingSpriteSubgoal, UnableToEscapeSubgoal])
234
235
236class DefeatRatKingWithDeflectTestTracker(HarryPotterTestTracker):
237    """Restore MP, use deflect cards, and beat the rat king."""
238    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric
239    SUBGOAL_METRIC = make_subgoal_metric_class([FullyRestoreMPSubgoal, UtilizeDeflectCardsSubgoal])
240
241
242# Task 14
243class FindHagridVaultTestTracker(HarryPotterTestTracker):
244    TERMINATION_TRUNCATION_METRIC = FindHagridVaultTerminateMetric
245    SUBGOAL_METRIC = make_subgoal_metric_class([NavigateToHagridSubgoal])
246
247
248# Madam Malkin split tasks (Task 15a/b/c/d)
249class EnterMalkinsTestTracker(HarryPotterTestTracker):
250    TERMINATION_TRUNCATION_METRIC = EnterMalkinsTerminateMetric
251    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideMalkinsSubgoal])
252
253
254class OpenMalkinsBuyMenuTestTracker(HarryPotterTestTracker):
255    TERMINATION_TRUNCATION_METRIC = OpenMalkinsBuyMenuTerminateMetric
256    SUBGOAL_METRIC = DummySubGoalMetric
257
258
259class SelectRobesTestTracker(HarryPotterTestTracker):
260    TERMINATION_TRUNCATION_METRIC = SelectRobesTerminateMetric
261    SUBGOAL_METRIC = DummySubGoalMetric
262
263
264class ConfirmRobesPurchaseTestTracker(HarryPotterTestTracker):
265    TERMINATION_TRUNCATION_METRIC = ConfirmRobesPurchaseTerminateMetric
266    SUBGOAL_METRIC = DummySubGoalMetric
267
268
269# Flourish & Blotts split tasks
270class EnterFlourishBlottsTestTracker(HarryPotterTestTracker):
271    TERMINATION_TRUNCATION_METRIC = EnterFlourishBlottsTerminateMetric
272    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideFlourishBlottsSubgoal])
273
274
275class BuyBooksTestTracker(HarryPotterTestTracker):
276    TERMINATION_TRUNCATION_METRIC = BuyBooksTerminateMetric
277    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToFlourishClerkSubgoal])
278
279
280# Apothecary tasks
281class EnterApothecaryTestTracker(HarryPotterTestTracker):
282    TERMINATION_TRUNCATION_METRIC = EnterApothecaryTerminateMetric
283    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideApothecarySubgoal])
284
285
286class BuyPotionKitTestTracker(HarryPotterTestTracker):
287    TERMINATION_TRUNCATION_METRIC = BuyPotionKitTerminateMetric
288    SUBGOAL_METRIC = make_subgoal_metric_class([ApothecaryBuyMenuOpenSubgoal])
289
290
291# Cauldron shop tasks
292class EnterCauldronShopTestTracker(HarryPotterTestTracker):
293    TERMINATION_TRUNCATION_METRIC = EnterCauldronShopTerminateMetric
294    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideCauldronShopSubgoal])
295
296
297class BuyCauldronTestTracker(HarryPotterTestTracker):
298    TERMINATION_TRUNCATION_METRIC = BuyCauldronTerminateMetric
299    SUBGOAL_METRIC = make_subgoal_metric_class([CauldronBuyMenuOpenSubgoal])
300
301
302class WalkTrain3TimesTestTracker(HarryPotterTestTracker):
303    TERMINATION_TRUNCATION_METRIC = LeftmostTrainCarTerminateMetric
304    SUBGOAL_METRIC = make_subgoal_metric_class([
305        RightmostTrainCarSubgoal,
306        LeftmostTrainCarSubgoal,
307        RightmostTrainCarSubgoal,
308        LeftmostTrainCarSubgoal,
309        RightmostTrainCarSubgoal
310    ])
311
312
313# Sugarplums Sweets filler tasks
314class EnterSugarplumsTestTracker(HarryPotterTestTracker):
315    TERMINATION_TRUNCATION_METRIC = EnterSugarplumsTerminateMetric
316    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideSugarplumsSubgoal])
317
318
319class OpenSugarplumsBuyMenuTestTracker(HarryPotterTestTracker):
320    TERMINATION_TRUNCATION_METRIC = OpenSugarplumsBuyMenuTerminateMetric
321    SUBGOAL_METRIC = DummySubGoalMetric
322
323
324# Talk to Hagrid in Diagon Alley
325class TalkToHagridDiagonTestTracker(HarryPotterTestTracker):
326    TERMINATION_TRUNCATION_METRIC = TalkToHagridDiagonTerminateMetric
327    SUBGOAL_METRIC = DummySubGoalMetric
328
329
330# CoS Task 1
331class FindDobbyTestTracker(HarryPotterTestTracker):
332    TERMINATION_TRUNCATION_METRIC = FindDobbyTerminateMetric
333    SUBGOAL_METRIC = make_subgoal_metric_class([FindDobbySubgoal])
334
335
336# CoS Task 2
337class SelectCardDeckCosTestTracker(HarryPotterTestTracker):
338    TERMINATION_TRUNCATION_METRIC = SelectCardDeckCosTerminateMetric
339    SUBGOAL_METRIC = DummySubGoalMetric
340
341
342# CoS Task 3
343class BoardFlyingCarTestTracker(HarryPotterTestTracker):
344    TERMINATION_TRUNCATION_METRIC = BoardFlyingCarTerminateMetric
345    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToRonCosSubgoal])
346
347
348# CoS Task 4
349class EnterBurrowTestTracker(HarryPotterTestTracker):
350    TERMINATION_TRUNCATION_METRIC = EnterBurrowTerminateMetric
351    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideBurrowAfterCutsceneSubgoal])
352
353
354# CoS Task 5
355class EnterBattleCosTestTracker(HarryPotterTestTracker):
356    TERMINATION_TRUNCATION_METRIC = EnterBattleCosTerminateMetric
357    SUBGOAL_METRIC = DummySubGoalMetric
358
359
360# Burrow room navigation tasks (CoS)
361class EnterPercyRoomTestTracker(HarryPotterTestTracker):
362    TERMINATION_TRUNCATION_METRIC = EnterPercyRoomTerminateMetric
363    SUBGOAL_METRIC = DummySubGoalMetric
364
365
366class EnterGinnyRoomTestTracker(HarryPotterTestTracker):
367    TERMINATION_TRUNCATION_METRIC = EnterGinnyRoomTerminateMetric
368    SUBGOAL_METRIC = DummySubGoalMetric
369
370
371class EnterParentsRoomTestTracker(HarryPotterTestTracker):
372    TERMINATION_TRUNCATION_METRIC = EnterParentsRoomTerminateMetric
373    SUBGOAL_METRIC = DummySubGoalMetric
374
375
376class EnterFredGeorgeRoomTestTracker(HarryPotterTestTracker):
377    TERMINATION_TRUNCATION_METRIC = EnterFredGeorgeRoomTerminateMetric
378    SUBGOAL_METRIC = DummySubGoalMetric
379
380
381class EnterRonsRoomTestTracker(HarryPotterTestTracker):
382    TERMINATION_TRUNCATION_METRIC = EnterRonsRoomTerminateMetric
383    SUBGOAL_METRIC = DummySubGoalMetric
384
385
386class TalkToRonBurrowTestTracker(HarryPotterTestTracker):
387    TERMINATION_TRUNCATION_METRIC = TalkToRonBurrowTerminateMetric
388    SUBGOAL_METRIC = DummySubGoalMetric
389
390
391class EnterKitchenBurrowTestTracker(HarryPotterTestTracker):
392    TERMINATION_TRUNCATION_METRIC = EnterKitchenBurrowTerminateMetric
393    SUBGOAL_METRIC = DummySubGoalMetric
394
395
396class EnterBurrowGardenTestTracker(HarryPotterTestTracker):
397    TERMINATION_TRUNCATION_METRIC = EnterBurrowGardenTerminateMetric
398    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideGardenDoorSubgoal])
399
400class NavigateToCarTestTracker(HarryPotterTestTracker):
401    TERMINATION_TRUNCATION_METRIC = NavigateToCarTerminateMetric
402    SUBGOAL_METRIC = DummySubGoalMetric
403
404class StartMenuTestTracker(HarryPotterTestTracker):
405    TERMINATION_TRUNCATION_METRIC = StartMenuTerminateMetric
406    SUBGOAL_METRIC = make_subgoal_metric_class([DiagonAlleySubgoal])
407
408class EatPumpkinPastyTestTracker(HarryPotterTestTracker):
409    TERMINATION_TRUNCATION_METRIC = EatPumpkinPastyTerminateMetric
410    SUBGOAL_METRIC = make_subgoal_metric_class([PumpkinPastySubgoal])
411
412class EquipPointedHatPlainWorkRobeTestTracker(HarryPotterTestTracker):
413    TERMINATION_TRUNCATION_METRIC = EquippedPointedHatPlainWorkRobeTerminateMetric
414    SUBGOAL_METRIC = make_subgoal_metric_class([EquippedPointedHatSubgoal])
415
416class RemoveAllEquippedItemsTestTracker(HarryPotterTestTracker):
417    TERMINATION_TRUNCATION_METRIC = EmptyEquipCursorRobeTerminateMetric
418    SUBGOAL_METRIC = make_subgoal_metric_class([RemoveHatSubgoal, RemoveRobeSubgoal])
419
420# Boat Battle Task
421class TalkToHagridBoatTestTracker(HarryPotterTestTracker):
422    TERMINATION_TRUNCATION_METRIC = BoatBattleTerminateMetric
423    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToHagridBeforeBoatSubgoal])
424
425# Die Task
426class DieTestTracker(HarryPotterTestTracker):
427    TERMINATION_TRUNCATION_METRIC = RestoredFullHealthTerminateMetric
428    SUBGOAL_METRIC = make_subgoal_metric_class([WeakenedHealthBarSubgoal])
429
430# Fight Yellow Rat then Big Yellow Monster Task
431class FightRatThenMonsterTestTracker(HarryPotterTestTracker):
432    TERMINATION_TRUNCATION_METRIC = FightBigYellowMonsterTerminateMetric
433    SUBGOAL_METRIC = make_subgoal_metric_class([FightYellowRatSubgoal])
434
435# Fight Bat then Big Yellow Monster (middle) Task
436class FightBatThenMonsterMiddleTestTracker(HarryPotterTestTracker):
437    TERMINATION_TRUNCATION_METRIC = FightBigYellowMonsterMiddleTerminateMetric
438    SUBGOAL_METRIC = make_subgoal_metric_class([FightBatMiddleSubgoal])
class HarryPotterOCRTracker(gameboy_worlds.emulation.tracker.StateTracker):
120class HarryPotterOCRTracker(StateTracker):
121    """
122    Base tracker that adds OCR dialogue capture support for Harry Potter games.
123    Requires the parser to have a "dialogue_box_full" region defined.
124    """
125
126    def start(self):
127        super().start()
128        self.metric_classes.extend([HarryPotterOCRMetric])

Base tracker that adds OCR dialogue capture support for Harry Potter games. Requires the parser to have a "dialogue_box_full" region defined.

def start(self):
126    def start(self):
127        super().start()
128        self.metric_classes.extend([HarryPotterOCRMetric])

Sets up the metrics for the tracker by creating the list self.metric_classes

Child classes must FIRST call super().start() and THEN set up their own metric classes.

class HarryPotterTestTracker(gameboy_worlds.emulation.tracker.TestTrackerMixin, HarryPotterOCRTracker):
131class HarryPotterTestTracker(TestTrackerMixin, HarryPotterOCRTracker):
132    """
133    Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games.
134    All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.
135    """
136
137    TERMINATION_TRUNCATION_METRIC = PotionsShopTerminateMetric
138    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class PotionsShopTestTracker(HarryPotterTestTracker):
141class PotionsShopTestTracker(HarryPotterTestTracker):
142    """
143    A TestTracker for Harry Potter Philosopher's Stone that ends an episode when the agent enters the potions shop.
144    """
145
146    TERMINATION_TRUNCATION_METRIC = PotionsShopTerminateMetric
147    SUBGOAL_METRIC = DummySubGoalMetric

A TestTracker for Harry Potter Philosopher's Stone that ends an episode when the agent enters the potions shop.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterOllivandersTestTracker(HarryPotterTestTracker):
150class EnterOllivandersTestTracker(HarryPotterTestTracker):
151    TERMINATION_TRUNCATION_METRIC = OllivandersInteriorTerminateMetric
152    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideOllivandersSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class GetWandTestTracker(HarryPotterTestTracker):
155class GetWandTestTracker(HarryPotterTestTracker):
156    TERMINATION_TRUNCATION_METRIC = GetWandTerminateMetric
157    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToOllivanderSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class ReceiveFolioMagiTestTracker(HarryPotterTestTracker):
160class ReceiveFolioMagiTestTracker(HarryPotterTestTracker):
161    TERMINATION_TRUNCATION_METRIC = ReceiveFolioMagiTerminateMetric
162    SUBGOAL_METRIC = make_subgoal_metric_class([BoyApproachesSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class SelectCardDeckTestTracker(HarryPotterTestTracker):
165class SelectCardDeckTestTracker(HarryPotterTestTracker):
166    TERMINATION_TRUNCATION_METRIC = SelectCardDeckTerminateMetric
167    SUBGOAL_METRIC = make_subgoal_metric_class([CardOptionsShownSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterGringottsTestTracker(HarryPotterTestTracker):
170class EnterGringottsTestTracker(HarryPotterTestTracker):
171    TERMINATION_TRUNCATION_METRIC = GringottsInteriorTerminateMetric
172    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideGringottsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class TalkHagridGringottsTestTracker(HarryPotterTestTracker):
175class TalkHagridGringottsTestTracker(HarryPotterTestTracker):
176    TERMINATION_TRUNCATION_METRIC = TalkHagridGringottsTerminateMetric
177    SUBGOAL_METRIC = make_subgoal_metric_class([FindHagridGringottsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class ExitGringottsWithoutHagridTestTracker(HarryPotterTestTracker):
180class ExitGringottsWithoutHagridTestTracker(HarryPotterTestTracker):
181    TERMINATION_TRUNCATION_METRIC = ExitGringottsTerminateMetric
182    SUBGOAL_METRIC = make_subgoal_metric_class([ReenterGringottsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class GetOnTrainTestTracker(HarryPotterTestTracker):
185class GetOnTrainTestTracker(HarryPotterTestTracker):
186    TERMINATION_TRUNCATION_METRIC = OnTrainTerminateMetric
187    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToWeasleysSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BuyChocolateFrogsTestTracker(HarryPotterTestTracker):
190class BuyChocolateFrogsTestTracker(HarryPotterTestTracker):
191    TERMINATION_TRUNCATION_METRIC = ChocolateFrogs5InventoryTerminateMetric
192    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToRonWeasleySubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class SellOneChocolateFrogTestTracker(HarryPotterTestTracker):
195class SellOneChocolateFrogTestTracker(HarryPotterTestTracker):
196    TERMINATION_TRUNCATION_METRIC = ChocolateFrogs4InventoryTerminateMetric
197    SUBGOAL_METRIC = make_subgoal_metric_class([SellChocolateFrogSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class LoseDuelTestTracker(HarryPotterTestTracker):
200class LoseDuelTestTracker(HarryPotterTestTracker):
201    TERMINATION_TRUNCATION_METRIC = LoseDuelTerminateMetric
202    SUBGOAL_METRIC = make_subgoal_metric_class([StartOfDuelSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class WinDuelTestTracker(HarryPotterTestTracker):
205class WinDuelTestTracker(HarryPotterTestTracker):
206    TERMINATION_TRUNCATION_METRIC = WinDuelTerminateMetric
207    SUBGOAL_METRIC = make_subgoal_metric_class([StartOfDuelSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class GainLevelTestTracker(HarryPotterTestTracker):
210class GainLevelTestTracker(HarryPotterTestTracker):
211    TERMINATION_TRUNCATION_METRIC = GainLevelTerminateMetric
212    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class GainSpellTestTracker(HarryPotterTestTracker):
215class GainSpellTestTracker(HarryPotterTestTracker):
216    TERMINATION_TRUNCATION_METRIC = GainSpellTerminateMetric
217    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class WinBattleTestTracker(HarryPotterTestTracker):
220class WinBattleTestTracker(HarryPotterTestTracker):
221    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric
222    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BeatBossRatTestTracker(HarryPotterTestTracker):
225class BeatBossRatTestTracker(HarryPotterTestTracker):
226    """Boss fight — termination TBD, subgoal is finding the boss rat."""
227    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric  # placeholder until boss-specific termination
228    SUBGOAL_METRIC = make_subgoal_metric_class([FindBossRatSubgoal])

Boss fight — termination TBD, subgoal is finding the boss rat.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class FailRatKingBattleTestTracker(HarryPotterTestTracker):
231class FailRatKingBattleTestTracker(HarryPotterTestTracker):
232    """Fail the rat king battle by attempting to escape and dying."""
233    TERMINATION_TRUNCATION_METRIC = RespawnDeathRatTerminateMetric
234    SUBGOAL_METRIC = make_subgoal_metric_class([RatKingSpriteSubgoal, UnableToEscapeSubgoal])

Fail the rat king battle by attempting to escape and dying.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class DefeatRatKingWithDeflectTestTracker(HarryPotterTestTracker):
237class DefeatRatKingWithDeflectTestTracker(HarryPotterTestTracker):
238    """Restore MP, use deflect cards, and beat the rat king."""
239    TERMINATION_TRUNCATION_METRIC = WinBattleTerminateMetric
240    SUBGOAL_METRIC = make_subgoal_metric_class([FullyRestoreMPSubgoal, UtilizeDeflectCardsSubgoal])

Restore MP, use deflect cards, and beat the rat king.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class FindHagridVaultTestTracker(HarryPotterTestTracker):
244class FindHagridVaultTestTracker(HarryPotterTestTracker):
245    TERMINATION_TRUNCATION_METRIC = FindHagridVaultTerminateMetric
246    SUBGOAL_METRIC = make_subgoal_metric_class([NavigateToHagridSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterMalkinsTestTracker(HarryPotterTestTracker):
250class EnterMalkinsTestTracker(HarryPotterTestTracker):
251    TERMINATION_TRUNCATION_METRIC = EnterMalkinsTerminateMetric
252    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideMalkinsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class OpenMalkinsBuyMenuTestTracker(HarryPotterTestTracker):
255class OpenMalkinsBuyMenuTestTracker(HarryPotterTestTracker):
256    TERMINATION_TRUNCATION_METRIC = OpenMalkinsBuyMenuTerminateMetric
257    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class SelectRobesTestTracker(HarryPotterTestTracker):
260class SelectRobesTestTracker(HarryPotterTestTracker):
261    TERMINATION_TRUNCATION_METRIC = SelectRobesTerminateMetric
262    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class ConfirmRobesPurchaseTestTracker(HarryPotterTestTracker):
265class ConfirmRobesPurchaseTestTracker(HarryPotterTestTracker):
266    TERMINATION_TRUNCATION_METRIC = ConfirmRobesPurchaseTerminateMetric
267    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterFlourishBlottsTestTracker(HarryPotterTestTracker):
271class EnterFlourishBlottsTestTracker(HarryPotterTestTracker):
272    TERMINATION_TRUNCATION_METRIC = EnterFlourishBlottsTerminateMetric
273    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideFlourishBlottsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BuyBooksTestTracker(HarryPotterTestTracker):
276class BuyBooksTestTracker(HarryPotterTestTracker):
277    TERMINATION_TRUNCATION_METRIC = BuyBooksTerminateMetric
278    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToFlourishClerkSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterApothecaryTestTracker(HarryPotterTestTracker):
282class EnterApothecaryTestTracker(HarryPotterTestTracker):
283    TERMINATION_TRUNCATION_METRIC = EnterApothecaryTerminateMetric
284    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideApothecarySubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BuyPotionKitTestTracker(HarryPotterTestTracker):
287class BuyPotionKitTestTracker(HarryPotterTestTracker):
288    TERMINATION_TRUNCATION_METRIC = BuyPotionKitTerminateMetric
289    SUBGOAL_METRIC = make_subgoal_metric_class([ApothecaryBuyMenuOpenSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterCauldronShopTestTracker(HarryPotterTestTracker):
293class EnterCauldronShopTestTracker(HarryPotterTestTracker):
294    TERMINATION_TRUNCATION_METRIC = EnterCauldronShopTerminateMetric
295    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideCauldronShopSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BuyCauldronTestTracker(HarryPotterTestTracker):
298class BuyCauldronTestTracker(HarryPotterTestTracker):
299    TERMINATION_TRUNCATION_METRIC = BuyCauldronTerminateMetric
300    SUBGOAL_METRIC = make_subgoal_metric_class([CauldronBuyMenuOpenSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class WalkTrain3TimesTestTracker(HarryPotterTestTracker):
303class WalkTrain3TimesTestTracker(HarryPotterTestTracker):
304    TERMINATION_TRUNCATION_METRIC = LeftmostTrainCarTerminateMetric
305    SUBGOAL_METRIC = make_subgoal_metric_class([
306        RightmostTrainCarSubgoal,
307        LeftmostTrainCarSubgoal,
308        RightmostTrainCarSubgoal,
309        LeftmostTrainCarSubgoal,
310        RightmostTrainCarSubgoal
311    ])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterSugarplumsTestTracker(HarryPotterTestTracker):
315class EnterSugarplumsTestTracker(HarryPotterTestTracker):
316    TERMINATION_TRUNCATION_METRIC = EnterSugarplumsTerminateMetric
317    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideSugarplumsSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class OpenSugarplumsBuyMenuTestTracker(HarryPotterTestTracker):
320class OpenSugarplumsBuyMenuTestTracker(HarryPotterTestTracker):
321    TERMINATION_TRUNCATION_METRIC = OpenSugarplumsBuyMenuTerminateMetric
322    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class TalkToHagridDiagonTestTracker(HarryPotterTestTracker):
326class TalkToHagridDiagonTestTracker(HarryPotterTestTracker):
327    TERMINATION_TRUNCATION_METRIC = TalkToHagridDiagonTerminateMetric
328    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class FindDobbyTestTracker(HarryPotterTestTracker):
332class FindDobbyTestTracker(HarryPotterTestTracker):
333    TERMINATION_TRUNCATION_METRIC = FindDobbyTerminateMetric
334    SUBGOAL_METRIC = make_subgoal_metric_class([FindDobbySubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class SelectCardDeckCosTestTracker(HarryPotterTestTracker):
338class SelectCardDeckCosTestTracker(HarryPotterTestTracker):
339    TERMINATION_TRUNCATION_METRIC = SelectCardDeckCosTerminateMetric
340    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class BoardFlyingCarTestTracker(HarryPotterTestTracker):
344class BoardFlyingCarTestTracker(HarryPotterTestTracker):
345    TERMINATION_TRUNCATION_METRIC = BoardFlyingCarTerminateMetric
346    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToRonCosSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterBurrowTestTracker(HarryPotterTestTracker):
350class EnterBurrowTestTracker(HarryPotterTestTracker):
351    TERMINATION_TRUNCATION_METRIC = EnterBurrowTerminateMetric
352    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideBurrowAfterCutsceneSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterBattleCosTestTracker(HarryPotterTestTracker):
356class EnterBattleCosTestTracker(HarryPotterTestTracker):
357    TERMINATION_TRUNCATION_METRIC = EnterBattleCosTerminateMetric
358    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterPercyRoomTestTracker(HarryPotterTestTracker):
362class EnterPercyRoomTestTracker(HarryPotterTestTracker):
363    TERMINATION_TRUNCATION_METRIC = EnterPercyRoomTerminateMetric
364    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterGinnyRoomTestTracker(HarryPotterTestTracker):
367class EnterGinnyRoomTestTracker(HarryPotterTestTracker):
368    TERMINATION_TRUNCATION_METRIC = EnterGinnyRoomTerminateMetric
369    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterParentsRoomTestTracker(HarryPotterTestTracker):
372class EnterParentsRoomTestTracker(HarryPotterTestTracker):
373    TERMINATION_TRUNCATION_METRIC = EnterParentsRoomTerminateMetric
374    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterFredGeorgeRoomTestTracker(HarryPotterTestTracker):
377class EnterFredGeorgeRoomTestTracker(HarryPotterTestTracker):
378    TERMINATION_TRUNCATION_METRIC = EnterFredGeorgeRoomTerminateMetric
379    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterRonsRoomTestTracker(HarryPotterTestTracker):
382class EnterRonsRoomTestTracker(HarryPotterTestTracker):
383    TERMINATION_TRUNCATION_METRIC = EnterRonsRoomTerminateMetric
384    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class TalkToRonBurrowTestTracker(HarryPotterTestTracker):
387class TalkToRonBurrowTestTracker(HarryPotterTestTracker):
388    TERMINATION_TRUNCATION_METRIC = TalkToRonBurrowTerminateMetric
389    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterKitchenBurrowTestTracker(HarryPotterTestTracker):
392class EnterKitchenBurrowTestTracker(HarryPotterTestTracker):
393    TERMINATION_TRUNCATION_METRIC = EnterKitchenBurrowTerminateMetric
394    SUBGOAL_METRIC = DummySubGoalMetric

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EnterBurrowGardenTestTracker(HarryPotterTestTracker):
397class EnterBurrowGardenTestTracker(HarryPotterTestTracker):
398    TERMINATION_TRUNCATION_METRIC = EnterBurrowGardenTerminateMetric
399    SUBGOAL_METRIC = make_subgoal_metric_class([OutsideGardenDoorSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class StartMenuTestTracker(HarryPotterTestTracker):
405class StartMenuTestTracker(HarryPotterTestTracker):
406    TERMINATION_TRUNCATION_METRIC = StartMenuTerminateMetric
407    SUBGOAL_METRIC = make_subgoal_metric_class([DiagonAlleySubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EatPumpkinPastyTestTracker(HarryPotterTestTracker):
409class EatPumpkinPastyTestTracker(HarryPotterTestTracker):
410    TERMINATION_TRUNCATION_METRIC = EatPumpkinPastyTerminateMetric
411    SUBGOAL_METRIC = make_subgoal_metric_class([PumpkinPastySubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class EquipPointedHatPlainWorkRobeTestTracker(HarryPotterTestTracker):
413class EquipPointedHatPlainWorkRobeTestTracker(HarryPotterTestTracker):
414    TERMINATION_TRUNCATION_METRIC = EquippedPointedHatPlainWorkRobeTerminateMetric
415    SUBGOAL_METRIC = make_subgoal_metric_class([EquippedPointedHatSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class RemoveAllEquippedItemsTestTracker(HarryPotterTestTracker):
417class RemoveAllEquippedItemsTestTracker(HarryPotterTestTracker):
418    TERMINATION_TRUNCATION_METRIC = EmptyEquipCursorRobeTerminateMetric
419    SUBGOAL_METRIC = make_subgoal_metric_class([RemoveHatSubgoal, RemoveRobeSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class TalkToHagridBoatTestTracker(HarryPotterTestTracker):
422class TalkToHagridBoatTestTracker(HarryPotterTestTracker):
423    TERMINATION_TRUNCATION_METRIC = BoatBattleTerminateMetric
424    SUBGOAL_METRIC = make_subgoal_metric_class([TalkToHagridBeforeBoatSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class DieTestTracker(HarryPotterTestTracker):
427class DieTestTracker(HarryPotterTestTracker):
428    TERMINATION_TRUNCATION_METRIC = RestoredFullHealthTerminateMetric
429    SUBGOAL_METRIC = make_subgoal_metric_class([WeakenedHealthBarSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class FightRatThenMonsterTestTracker(HarryPotterTestTracker):
432class FightRatThenMonsterTestTracker(HarryPotterTestTracker):
433    TERMINATION_TRUNCATION_METRIC = FightBigYellowMonsterTerminateMetric
434    SUBGOAL_METRIC = make_subgoal_metric_class([FightYellowRatSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.

class FightBatThenMonsterMiddleTestTracker(HarryPotterTestTracker):
437class FightBatThenMonsterMiddleTestTracker(HarryPotterTestTracker):
438    TERMINATION_TRUNCATION_METRIC = FightBigYellowMonsterMiddleTerminateMetric
439    SUBGOAL_METRIC = make_subgoal_metric_class([FightBatMiddleSubgoal])

Inherit this class and set TERMINATION_TRUNCATION_METRIC to create a TestTracker for Harry Potter games. All test trackers get OCR dialogue capture support via HarryPotterOCRTracker.

The TerminationTruncationMetric class to use for tracking termination and truncation. If None, no such metric will be tracked.

SUBGOAL_METRIC = <class 'gameboy_worlds.emulation.tracker.make_subgoal_metric_class.<locals>.CustomSubGoalMetric'>

The SubGoalMetric class to use for tracking subgoal progress. If None, no such metric will be tracked.