2023-10-18 19:53:12 +00:00
|
|
|
from typing import List
|
|
|
|
|
2024-11-12 23:13:49 +00:00
|
|
|
from BaseClasses import MultiWorld
|
2023-10-18 19:53:12 +00:00
|
|
|
from .. import DLCQuestTestBase
|
|
|
|
from ... import Options
|
|
|
|
|
|
|
|
|
|
|
|
def get_all_item_names(multiworld: MultiWorld) -> List[str]:
|
|
|
|
return [item.name for item in multiworld.itempool]
|
|
|
|
|
|
|
|
|
|
|
|
def get_all_location_names(multiworld: MultiWorld) -> List[str]:
|
2024-04-14 18:37:48 +00:00
|
|
|
return [location.name for location in multiworld.get_locations() if not location.advancement]
|
2023-10-18 19:53:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
def assert_victory_exists(tester: DLCQuestTestBase, multiworld: MultiWorld):
|
2024-11-12 23:13:49 +00:00
|
|
|
campaign = multiworld.worlds[1].options.campaign
|
2023-10-18 19:53:12 +00:00
|
|
|
all_items = [item.name for item in multiworld.get_items()]
|
|
|
|
if campaign == Options.Campaign.option_basic or campaign == Options.Campaign.option_both:
|
|
|
|
tester.assertIn("Victory Basic", all_items)
|
|
|
|
if campaign == Options.Campaign.option_live_freemium_or_die or campaign == Options.Campaign.option_both:
|
|
|
|
tester.assertIn("Victory Freemium", all_items)
|
|
|
|
|
|
|
|
|
|
|
|
def collect_all_then_assert_can_win(tester: DLCQuestTestBase, multiworld: MultiWorld):
|
|
|
|
for item in multiworld.get_items():
|
|
|
|
multiworld.state.collect(item)
|
2024-11-12 23:13:49 +00:00
|
|
|
campaign = multiworld.worlds[1].options.campaign
|
2023-10-18 19:53:12 +00:00
|
|
|
if campaign == Options.Campaign.option_basic or campaign == Options.Campaign.option_both:
|
|
|
|
tester.assertTrue(multiworld.find_item("Victory Basic", 1).can_reach(multiworld.state))
|
|
|
|
if campaign == Options.Campaign.option_live_freemium_or_die or campaign == Options.Campaign.option_both:
|
|
|
|
tester.assertTrue(multiworld.find_item("Victory Freemium", 1).can_reach(multiworld.state))
|
|
|
|
|
|
|
|
|
|
|
|
def assert_can_win(tester: DLCQuestTestBase, multiworld: MultiWorld):
|
|
|
|
assert_victory_exists(tester, multiworld)
|
|
|
|
collect_all_then_assert_can_win(tester, multiworld)
|
|
|
|
|
|
|
|
|
|
|
|
def assert_same_number_items_locations(tester: DLCQuestTestBase, multiworld: MultiWorld):
|
2024-04-14 18:37:48 +00:00
|
|
|
non_event_locations = [location for location in multiworld.get_locations() if not location.advancement]
|
2024-11-12 23:13:49 +00:00
|
|
|
tester.assertEqual(len(multiworld.itempool), len(non_event_locations))
|