diff --git a/worlds/civ_6/Data.py b/worlds/civ_6/Data.py index 8e3eb40f5e..ccc4142820 100644 --- a/worlds/civ_6/Data.py +++ b/worlds/civ_6/Data.py @@ -17,8 +17,6 @@ def _get_data(key: str): return _cache[key] -def get_boosts_data(): - return _get_data("boosts") @dataclass class CivVIBoostData(): Type: str diff --git a/worlds/civ_6/Items.py b/worlds/civ_6/Items.py index b7d801fa1b..9de0ea7b8f 100644 --- a/worlds/civ_6/Items.py +++ b/worlds/civ_6/Items.py @@ -1,5 +1,5 @@ from enum import Enum -from typing import Dict, List, Optional, TYPE_CHECKING, List +from typing import Dict, Optional, TYPE_CHECKING, List from BaseClasses import Item, ItemClassification from .Data import get_era_required_items_data, get_existing_civics_data, get_existing_techs_data, get_goody_hut_rewards_data, get_progressive_districts_data from .Enum import CivVICheckType @@ -122,7 +122,7 @@ def format_item_name(name: str) -> str: return " ".join([part.capitalize() for part in name_parts]) -def get_item_by_civ_name(item_name: List[str], item_table: Dict[str, 'CivVIItemData']) -> 'CivVIItemData': +def get_item_by_civ_name(item_name: str, item_table: Dict[str, 'CivVIItemData']) -> 'CivVIItemData': """Gets the names of the items in the item_table""" for item in item_table.values(): if item_name == item.civ_name: @@ -131,7 +131,7 @@ def get_item_by_civ_name(item_name: List[str], item_table: Dict[str, 'CivVIItemD raise Exception(f"Item {item_name} not found in item_table") -def _generate_tech_items(id_base: int, required_items: List[str], progressive_items: Dict[str, str]) -> List[CivVIItemData]: +def _generate_tech_items(id_base: int, required_items: List[str], progressive_items: Dict[str, str]) -> Dict[str, CivVIItemData]: # Generate Techs existing_techs = get_existing_techs_data() tech_table = {} @@ -164,7 +164,7 @@ def _generate_tech_items(id_base: int, required_items: List[str], progressive_it return tech_table -def _generate_civics_items(id_base: int, required_items: List[str], progressive_items: Dict[str, str]) -> List[CivVIItemData]: +def _generate_civics_items(id_base: int, required_items: List[str], progressive_items: Dict[str, str]) -> Dict[str, CivVIItemData]: civic_id = 0 civic_table = {} existing_civics = get_existing_civics_data() @@ -198,7 +198,7 @@ def _generate_civics_items(id_base: int, required_items: List[str], progressive_ return civic_table -def _generate_progressive_district_items(id_base: int) -> List[CivVIItemData]: +def _generate_progressive_district_items(id_base: int) -> Dict[str, CivVIItemData]: progressive_table = {} progressive_id_base = 0 progressive_items = get_progressive_districts_data() @@ -221,7 +221,7 @@ def _generate_progressive_district_items(id_base: int) -> List[CivVIItemData]: return progressive_table -def _generate_progressive_era_items(id_base: int) -> List[CivVIItemData]: +def _generate_progressive_era_items(id_base: int) -> Dict[str, CivVIItemData]: """Generates the single progressive district item""" era_table = {} # Generate progressive eras @@ -239,7 +239,7 @@ def _generate_progressive_era_items(id_base: int) -> List[CivVIItemData]: return era_table -def _generate_goody_hut_items(id_base: int) -> List[CivVIItemData]: +def _generate_goody_hut_items(id_base: int) -> Dict[str, CivVIItemData]: # Generate goody hut items goody_huts = get_filler_item_data() goody_table = {} @@ -281,14 +281,14 @@ def generate_item_table() -> Dict[str, CivVIItemData]: return item_table -def get_items_by_type(item_type: CivVICheckType, item_table: Dict[str, CivVIItemData]) -> List[CivVIItemData]: +def get_items_by_type(item_type: CivVICheckType, item_table: Dict[str, CivVIItemData]) -> Dict[str, CivVIItemData]: """ Returns a list of items that match the given item type """ return [item for item in item_table.values() if item.item_type == item_type] -def get_random_filler_by_rarity(world: 'CivVIWorld', rarity: FillerItemRarity, item_table: Dict[str, CivVIItemData]) -> CivVIItemData: +def get_random_filler_by_rarity(world: 'CivVIWorld', rarity: FillerItemRarity) -> FillerItemData: """ Returns a random filler item by rarity """ diff --git a/worlds/civ_6/Regions.py b/worlds/civ_6/Regions.py index 49a3fd9dbc..c2c9a70e13 100644 --- a/worlds/civ_6/Regions.py +++ b/worlds/civ_6/Regions.py @@ -60,8 +60,7 @@ def has_required_progressive_districts(state: CollectionState, era: EraType, pla required_counts[key] += 1 for key, value in required_counts.items(): - has_amount = state.has(format_item_name(key), player, required_counts[key]) - if not has_amount: + if not state.has(format_item_name(key), player, required_counts[key]): return False return True diff --git a/worlds/civ_6/Rules.py b/worlds/civ_6/Rules.py index b51e187769..60fee5e914 100644 --- a/worlds/civ_6/Rules.py +++ b/worlds/civ_6/Rules.py @@ -22,11 +22,11 @@ def create_boost_rules(world: 'CivVIWorld'): if not boost_data or boost_data.PrereqRequiredCount == 0: continue - set_rule(world_location, lambda state, prereqs=boost_data.Prereq, required_count=boost_data.PrereqRequiredCount: has_required_items(state, prereqs, required_count, world.player)) + set_rule(world_location, lambda state, prereqs=boost_data.Prereq, required_count=boost_data.PrereqRequiredCount: has_required_items(state, prereqs, required_count, world)) -def has_required_items(state: CollectionState, prereqs: List[str], required_count: int, player: int) -> bool: - world: 'CivVIWorld' = state.multiworld.worlds[player] +def has_required_items(state: CollectionState, prereqs: List[str], required_count: int, world: 'CivVIWorld') -> bool: + player = world.player has_progressive_items = world.options.progression_style != "none" if has_progressive_items: count = 0 diff --git a/worlds/civ_6/__init__.py b/worlds/civ_6/__init__.py index 2a464710ea..6bd5a72230 100644 --- a/worlds/civ_6/__init__.py +++ b/worlds/civ_6/__init__.py @@ -74,7 +74,7 @@ class CivVIWorld(World): self.location_table[location.name] = location def get_filler_item_name(self) -> str: - return get_random_filler_by_rarity(self, FillerItemRarity.COMMON, self.item_table).name + return get_random_filler_by_rarity(self, FillerItemRarity.COMMON).name def create_regions(self) -> None: create_regions(self, self.options, self.player) @@ -103,7 +103,7 @@ class CivVIWorld(World): item_to_create = item_name if self.options.progression_style != "none": item: CivVIItemData = self.item_table[item_name] - if item.progression_name != None: + if item.progression_name: item_to_create = self.item_table[item.progression_name].name self.multiworld.itempool += [self.create_item( @@ -123,8 +123,7 @@ class CivVIWorld(World): num_filler_items += 10 if self.options.boostsanity: - boost_data = get_boosts_data() - num_filler_items += len(boost_data) + num_filler_items += len(get_boosts_data()) filler_count = {rarity: math.ceil(FILLER_DISTRIBUTION[rarity] * num_filler_items) for rarity in FillerItemRarity.__reversed__()} min_count = 1 @@ -135,7 +134,7 @@ class CivVIWorld(World): if total_created >= num_filler_items: break self.multiworld.itempool += [self.create_item( - get_random_filler_by_rarity(self, rarity, self.item_table).name)] + get_random_filler_by_rarity(self, rarity).name)] total_created += 1 def post_fill(self) -> None: