diff --git a/Assets/Python/Civilizations.py b/Assets/Python/Civilizations.py index 67d76b6b8..3a6377042 100644 --- a/Assets/Python/Civilizations.py +++ b/Assets/Python/Civilizations.py @@ -3,7 +3,7 @@ from CoreData import civilization, civilizations from CoreFunctions import get_civ_by_id from CoreStructures import human, make_unit, make_units, team, teamtype, year, plots -from CoreTypes import Civ, Technology, Unit +from CoreTypes import Area, Civ, InitialCondition, Technology, Unit from LocationsData import CIV_CAPITAL_LOCATIONS from MiscData import REVEAL_DATE_TECHNOLOGY from RFCUtils import change_attitude_extra_between_civ @@ -24,14 +24,14 @@ def set_starting_gold(): for civ in civilizations(): condition = civ.scenario.get("condition") if condition is not None: - civ.player.changeGold(condition.gold) + civ.player.changeGold(condition[InitialCondition.GOLD]) def set_starting_faith(): for civ in civilizations(): condition = civ.scenario.get("condition") if condition is not None: - civ.player.setFaith(condition.faith) + civ.player.setFaith(condition[InitialCondition.FAITH]) def create_starting_workers(iCiv, tPlot): @@ -137,7 +137,7 @@ def set_initial_contacts(iCiv, bMeet=True): def reveal_rectangle(iCiv, area): - for plot in plots().rectangle(area.tile_min, area.tile_max).entities(): + for plot in plots().rectangle(area[Area.TILE_MIN], area[Area.TILE_MAX]).entities(): plot.setRevealed(teamtype(iCiv), True, False, -1) @@ -145,7 +145,8 @@ def reveal_areas(iCiv): for area in civilization(iCiv).location.visible_area: reveal_rectangle(iCiv, area) + def has_date_revealed(identifier=None): if team(identifier).isHasTech(REVEAL_DATE_TECHNOLOGY): return True - return False \ No newline at end of file + return False diff --git a/Assets/Python/Locations.py b/Assets/Python/Locations.py index 1cf27e48d..c034558b3 100644 --- a/Assets/Python/Locations.py +++ b/Assets/Python/Locations.py @@ -5,7 +5,7 @@ from CoreFunctions import location as _location from CoreData import civilizations from CoreStructures import plots -from CoreTypes import Civ, PlagueType, ProvinceType, Religion, Technology +from CoreTypes import Area, AreaType, Civ, PlagueType, ProvinceType, Religion, Technology from LocationsData import LAKE_LOCATIONS from CityMapData import CITIES_MAP from ProvinceMapData import PROVINCES_MAP @@ -95,12 +95,12 @@ def update_lake_id(): def update_core(): for civ in civilizations().majors(): - core_tile_min = civ.location.area.core.tile_min - core_tile_max = civ.location.area.core.tile_max - core_additional_tiles = civ.location.area.core.additional_tiles - normal_tile_min = civ.location.area.normal.tile_min - normal_tile_max = civ.location.area.normal.tile_max - normal_exception_tiles = civ.location.area.normal.exception_tiles + core_tile_min = civ.location.area[AreaType.CORE][Area.TILE_MIN] + core_tile_max = civ.location.area[AreaType.CORE][Area.TILE_MAX] + core_additional_tiles = civ.location.area[AreaType.CORE][Area.ADDITIONAL_TILES] + normal_tile_min = civ.location.area[AreaType.NORMAL][Area.TILE_MIN] + normal_tile_max = civ.location.area[AreaType.NORMAL][Area.TILE_MAX] + normal_exception_tiles = civ.location.area[AreaType.NORMAL][Area.EXCEPTION_TILES] gc.setCoreNormal( civ.id, core_tile_min[0], diff --git a/Assets/Python/components/Resurrection.py b/Assets/Python/components/Resurrection.py index 72f87c3c8..3a758b01e 100644 --- a/Assets/Python/components/Resurrection.py +++ b/Assets/Python/components/Resurrection.py @@ -14,7 +14,16 @@ plots, cities, ) -from CoreTypes import Building, Civ, StabilityCategory, Technology, Unit +from CoreTypes import ( + Area, + AreaType, + Building, + Civ, + LeaderType, + StabilityCategory, + Technology, + Unit, +) from PyUtils import percentage, percentage_chance, rand from RFCUtils import ( calculateDistance, @@ -66,14 +75,17 @@ def findCivToResurect(iGameTurn, bSpecialRespawn, iDeadCiv): and iGameTurn > civilization(iDeadCiv).date.birth + 25 and iGameTurn > getLastTurnAlive(iDeadCiv) + 10 ): # Sedna17: Allow re-spawns only 10 turns after death and 25 turns after birth - tile_min = civilization(iDeadCiv).location.area.normal.tile_min - tile_max = civilization(iDeadCiv).location.area.normal.tile_max + tile_min = civilization(iDeadCiv).location.area[AreaType.NORMAL][Area.TILE_MIN] + tile_max = civilization(iDeadCiv).location.area[AreaType.NORMAL][Area.TILE_MAX] for city in ( plots() .rectangle(tile_min, tile_max) .filter( - lambda p: p not in civilization(iDeadCiv).location.area.normal.exception_tiles + lambda p: p + not in civilization(iDeadCiv).location.area[AreaType.NORMAL][ + Area.EXCEPTION_TILES + ] ) .cities() .entities() @@ -213,7 +225,7 @@ def resurectCiv(iDeadCiv): # Absinthe: we shouldn't get a previous leader on respawn - would be changed to a newer one in a couple turns anyway # instead we have a random chance to remain with the leader before the collapse, or to switch to the next one - leaders = civilization(iDeadCiv).leaders.late + leaders = civilization(iDeadCiv).leaders[LeaderType.LATE] if leaders: # no change if we are already at the last leader for leader in leaders[:-1]: @@ -424,10 +436,16 @@ def makeResurectionUnits(iPlayer, iX, iY): def convertBackCulture(iCiv): # 3Miro: same as Normal Areas in Resurrection # Sedna17: restored to be normal areas, not core - tile_min = civilization(iCiv).location.area.normal.tile_min - tile_max = civilization(iCiv).location.area.normal.tile_max # collect all the cities in the region - for city in plots().rectangle(tile_min, tile_max).cities().entities(): + for city in ( + plots() + .rectangle( + civilization(iCiv).location.area[AreaType.NORMAL][Area.TILE_MIN], + civilization(iCiv).location.area[AreaType.NORMAL][Area.TILE_MAX], + ) + .cities() + .entities() + ): for plot in plots().surrounding(location(city)).entities(): iCivCulture = plot.getCulture(iCiv) iLoopCivCulture = 0 diff --git a/Assets/Python/components/RiseAndFall.py b/Assets/Python/components/RiseAndFall.py index a4ddae55e..faa8ddcb2 100644 --- a/Assets/Python/components/RiseAndFall.py +++ b/Assets/Python/components/RiseAndFall.py @@ -62,8 +62,11 @@ from MiscData import PLAGUE_IMMUNITY from CoreTypes import ( + Area, + AreaType, Building, Civ, + LeaderType, PlayerType, Scenario, Religion, @@ -231,7 +234,7 @@ def flipPopup(self, iNewCiv, tTopLeft, tBottomRight): for city in ( plots() .rectangle(tTopLeft, tBottomRight) - .add(civilization(iNewCiv).location.area.core.additional_tiles) + .add(civilization(iNewCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]) .cities() .filter(lambda c: c.getOwner() == iHuman and not c.isCapital()) .entities() @@ -261,7 +264,7 @@ def eventApply7615(self, popupReturn): for city in ( plots() .rectangle(tTopLeft, tBottomRight) - .add(civilization(iNewCivFlip).location.area.core.additional_tiles) + .add(civilization(iNewCivFlip).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]) .cities() .filter(lambda c: c.getOwner() == iHuman and not c.isCapital()) .entities() @@ -504,8 +507,8 @@ def setupRespawnTurns(self): def setEarlyLeaders(self): for civ in civilizations().majors().ai(): - if civ.leaders.early != civ.leaders.primary: - leader = civ.leaders.early + if civ.leaders[LeaderType.EARLY] != civ.leaders[LeaderType.PRIMARY]: + leader = civ.leaders[LeaderType.EARLY] civ.player.setLeader(leader) def setWarOnSpawn(self): @@ -627,14 +630,12 @@ def reduceCity(self, tPlot): ) pPlot.eraseCityDevelopment() - pPlot.setImprovementType( - Improvement.TOWN - ) # Improvement Town instead of the city + pPlot.setImprovementType(Improvement.TOWN) # Improvement Town instead of the city pPlot.setRouteType(0) # Also adding a road there def checkPlayerTurn(self, iGameTurn, iPlayer): # Absinthe & Merijn: leader switching with any number of leaders - late_leaders = civilization(iPlayer).leaders.late + late_leaders = civilization(iPlayer).leaders[LeaderType.LATE] if late_leaders: for tLeader in reversed(late_leaders): if iGameTurn >= year(tLeader[1]): @@ -654,9 +655,7 @@ def checkPlayerTurn(self, iGameTurn, iPlayer): if pPlot.isCity(): if pPlot.getPlotCity().getOwner() == Civ.BARBARIAN: pDublin = pPlot.getPlotCity() - cultureManager( - tDublin, 50, Civ.ENGLAND, Civ.BARBARIAN, False, True, True - ) + cultureManager(tDublin, 50, Civ.ENGLAND, Civ.BARBARIAN, False, True, True) flipUnitsInCityBefore(tDublin, Civ.ENGLAND, Civ.BARBARIAN) self.setTempFlippingCity(tDublin) flipCity( @@ -756,8 +755,8 @@ def fragmentBarbarians(self, iGameTurn): for city in ( plots() .rectangle( - civilization(iDeadCiv).location.area.normal.tile_min, - civilization(iDeadCiv).location.area.normal.tile_max, + civilization(iDeadCiv).location.area[AreaType.NORMAL][Area.TILE_MIN], + civilization(iDeadCiv).location.area[AreaType.NORMAL][Area.TILE_MAX], ) .cities() .owner(Civ.BARBARIAN) @@ -773,9 +772,7 @@ def fragmentBarbarians(self, iGameTurn): + 1 ) if iDivideCounter % 4 in [0, 1]: - cultureManager( - tCity, 50, iNewCiv, Civ.BARBARIAN, False, True, True - ) + cultureManager(tCity, 50, iNewCiv, Civ.BARBARIAN, False, True, True) flipUnitsInCityBefore(tCity, iNewCiv, Civ.BARBARIAN) self.setTempFlippingCity(tCity) flipCity( @@ -789,10 +786,10 @@ def initBirth(self, iCurrentTurn, iBirthYear, iCiv): iHuman = human() if iCurrentTurn == iBirthYear - 1 + self.getSpawnDelay(iCiv) + self.getFlipsDelay(iCiv): tCapital = civilization(iCiv).location.capital - core_tile_min = civilization(iCiv).location.area.core.tile_min - core_tile_max = civilization(iCiv).location.area.core.tile_max - broader_tile_min = civilization(iCiv).location.area.broader.tile_min - broader_tile_max = civilization(iCiv).location.area.broader.tile_max + core_tile_min = civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MIN] + core_tile_max = civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MAX] + broader_tile_min = civilization(iCiv).location.area[AreaType.BROADER][Area.TILE_MIN] + broader_tile_max = civilization(iCiv).location.area[AreaType.BROADER][Area.TILE_MAX] if self.getFlipsDelay(iCiv) == 0: # city hasn't already been founded # Absinthe: for the human player, kill all foreign units on the capital plot - this probably fixes a couple instances of the -1 turn autoplay bug @@ -913,7 +910,7 @@ def birthInFreeRegion(self, iCiv, tCapital, tTopLeft, tBottomRight): for tPlot in ( plots() .rectangle(tTopLeft, tBottomRight) - .add(civilization(iCiv).location.area.core.additional_tiles) + .add(civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]) .apply(location) # TODO fix this with _keyify by default ): if tPlot in lSurroundingPlots2: @@ -947,7 +944,7 @@ def birthInFreeRegion(self, iCiv, tCapital, tTopLeft, tBottomRight): tTopLeft, tBottomRight, iCiv, Civ.BARBARIAN, False, True ) # remaining barbs in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, Civ.BARBARIAN, False, @@ -959,7 +956,7 @@ def birthInFreeRegion(self, iCiv, tCapital, tTopLeft, tBottomRight): tTopLeft, tBottomRight, iCiv, iIndyCiv, False, False ) # remaining independents in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, iIndyCiv, False, @@ -1000,7 +997,7 @@ def birthInForeignBorders( # so if all flipped cities are outside of the core area (they are in the "exceptions"), the civ will start without it's starting units and techs plotList = squareSearch(tTopLeft, tBottomRight, ownedCityPlots, iCiv) # Absinthe: add the exception plots - for plot in civilization(iCiv).location.area.core.additional_tiles: + for plot in civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]: plot = gc.getMap().plot(*plot) if plot.getOwner() == iCiv: if plot.isCity(): @@ -1017,7 +1014,7 @@ def birthInForeignBorders( tTopLeft, tBottomRight, iCiv, Civ.BARBARIAN, False, True ) # remaining barbs in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, Civ.BARBARIAN, False, @@ -1028,7 +1025,7 @@ def birthInForeignBorders( tTopLeft, tBottomRight, iCiv, iIndyCiv, False, False ) # remaining independents in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, iIndyCiv, False, @@ -1040,7 +1037,7 @@ def birthInForeignBorders( # so if all flipped cities are outside of the core area (they are in the "exceptions"), the civ will start without it's starting units and techs plotList = squareSearch(tTopLeft, tBottomRight, goodPlots, []) # Absinthe: add the exception plots - for plot in civilization(iCiv).location.area.core.additional_tiles: + for plot in civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]: plot = gc.getMap().plot(*plot) if (plot.isHills() or plot.isFlatlands()) and not plot.isImpassable(): if not plot.isUnit(): @@ -1078,7 +1075,7 @@ def birthInForeignBorders( tTopLeft, tBottomRight, iCiv, Civ.BARBARIAN, True, True ) # remaining barbs in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, Civ.BARBARIAN, True, @@ -1089,7 +1086,7 @@ def birthInForeignBorders( tTopLeft, tBottomRight, iCiv, iIndyCiv, True, False ) # remaining independents in the region now belong to the new civ flipUnitsInPlots( - civilization(iCiv).location.area.core.additional_tiles, + civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES], iCiv, iIndyCiv, True, @@ -1108,7 +1105,7 @@ def convertSurroundingCities(self, iCiv, tTopLeft, tBottomRight): for city in ( plots() .rectangle(tTopLeft, tBottomRight) - .add(civilization(iCiv).location.area.core.additional_tiles) + .add(civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]) .cities() .not_owner(iCiv) .entities() @@ -1165,7 +1162,7 @@ def convertSurroundingPlotCulture(self, iCiv, tTopLeft, tBottomRight): for plot in ( plots() .rectangle(tTopLeft, tBottomRight) - .add(civilization(iCiv).location.area.core.additional_tiles) + .add(civilization(iCiv).location.area[AreaType.CORE][Area.ADDITIONAL_TILES]) .filter(lambda p: not p.isCity()) .entities() ): @@ -1286,8 +1283,8 @@ def canSpecialRespawn(self, iPlayer, iGameTurn, iLastAliveInterval=10): def initMinorBetrayal(self, iCiv): iHuman = human() plotList = squareSearch( - civilization(iCiv).location.area.core.tile_min, - civilization(iCiv).location.area.core.tile_max, + civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MIN], + civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MAX], outerInvasion, [], ) @@ -1297,8 +1294,8 @@ def initMinorBetrayal(self, iCiv): self.unitsBetrayal( iCiv, iHuman, - civilization(iCiv).location.area.core.tile_min, - civilization(iCiv).location.area.core.tile_max, + civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MIN], + civilization(iCiv).location.area[AreaType.CORE][Area.TILE_MAX], tPlot, ) diff --git a/Assets/Python/data/CivilizationsData.py b/Assets/Python/data/CivilizationsData.py index 42cd59c67..92808be3a 100644 --- a/Assets/Python/data/CivilizationsData.py +++ b/Assets/Python/data/CivilizationsData.py @@ -1,4 +1,4 @@ -from BaseStructures import IntEnumDataMapper, ReligionDataMapper, ScenarioDataMapper, CivDataMapper +from BaseStructures import EnumDataMapper, CivDataMapper from CoreTypes import ( Building, Civ, @@ -498,470 +498,386 @@ Civ.MOSCOW: 4, Civ.DUTCH: 4, Civ.POPE: 0, - } + }, ) CIV_INITIAL_UNITS = CivDataMapper( { Civ.BYZANTIUM: None, Civ.FRANCE: None, - Civ.ARABIA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 2, - Unit.SETTLER: 2, - Unit.HORSE_ARCHER: 7, - Unit.AXEMAN: 2, - Unit.SPEARMAN: 2, - }, - PlayerType.AI: { - Unit.HORSE_ARCHER: 2, - Unit.ARCHER: 2, - Unit.SPEARMAN: 2, - Unit.SETTLER: 2, - }, - }, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - PlayerType.ANY: {Unit.ARCHER: 4, Unit.SETTLER: 2, Unit.BULGARIAN_KONNIK: 5}, - PlayerType.AI: {Unit.ARCHER: 1, Unit.SPEARMAN: 2, Unit.SETTLER: 1}, - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 3, - Unit.SETTLER: 1, - Unit.AXEMAN: 2, - Unit.ISLAMIC_MISSIONARY: 3, - }, - PlayerType.AI: { - Unit.ARCHER: 4, - Unit.SETTLER: 2, - Unit.AXEMAN: 1, - Unit.ISLAMIC_MISSIONARY: 2, - }, - PlayerType.HUMAN: {Unit.HORSE_ARCHER: 3}, - }, - do_not_cast=True, - ), - Civ.VENECIA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 2, - Unit.SETTLER: 1, - Unit.SPEARMAN: 1, - Unit.CATHOLIC_MISSIONARY: 1, - } - }, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.SETTLER: 1, - Unit.ARCHER: 2, - Unit.GUISARME: 2, - Unit.AXEMAN: 2, - Unit.CATHOLIC_MISSIONARY: 1, - } - }, - do_not_cast=True, - ), - Civ.GERMANY: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.SETTLER: 2, - Unit.AXEMAN: 2, - Unit.SWORDSMAN: 2, - Unit.GUISARME: 2, - Unit.ARCHER: 2, - Unit.CATHOLIC_MISSIONARY: 2, - }, - PlayerType.AI: {Unit.ARCHER: 2, Unit.SETTLER: 1, Unit.CATHOLIC_MISSIONARY: 1}, - }, - do_not_cast=True, - ), - Civ.NOVGOROD: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 3, - Unit.SETTLER: 3, - Unit.AXEMAN: 1, - Unit.HORSE_ARCHER: 1, - }, - PlayerType.AI: {Unit.ARCHER: 4, Unit.SETTLER: 1}, - }, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 2, - Unit.SETTLER: 2, - Unit.VIKING_BERSERKER: 2, - Unit.SWORDSMAN: 1, - } - }, - do_not_cast=True, - ), - Civ.KIEV: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 4, - Unit.SETTLER: 3, - Unit.AXEMAN: 2, - Unit.HORSE_ARCHER: 3, - }, - PlayerType.AI: {Unit.ARCHER: 3, Unit.SPEARMAN: 3, Unit.SETTLER: 2}, - }, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 4, - Unit.SETTLER: 3, - Unit.AXEMAN: 2, - Unit.HORSE_ARCHER: 4, - }, - PlayerType.AI: {Unit.ARCHER: 2, Unit.SPEARMAN: 2, Unit.SETTLER: 1}, - }, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 4, - Unit.SETTLER: 3, - Unit.CATHOLIC_MISSIONARY: 2, - Unit.SWORDSMAN: 2, - Unit.LANCER: 2, - Unit.CATAPULT: 1, - }, - PlayerType.AI: {Unit.CROSSBOWMAN: 1, Unit.SWORDSMAN: 2, Unit.LANCER: 2}, - }, - do_not_cast=True, - ), - Civ.DENMARK: IntEnumDataMapper( - {PlayerType.ANY: {Unit.CROSSBOWMAN: 2, Unit.SETTLER: 2, Unit.DENMARK_HUSKARL: 4}}, - do_not_cast=True, - ), - Civ.SCOTLAND: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 3, - Unit.SETTLER: 2, - Unit.SWORDSMAN: 2, - Unit.CATHOLIC_MISSIONARY: 2, - } - }, - do_not_cast=True, - ), - Civ.POLAND: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARCHER: 4, - Unit.SETTLER: 3, - Unit.AXEMAN: 2, - Unit.SWORDSMAN: 2, - Unit.CATHOLIC_MISSIONARY: 2, - }, - PlayerType.AI: {Unit.CROSSBOWMAN: 4, Unit.SETTLER: 1}, - }, - do_not_cast=True, - ), - Civ.GENOA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 4, - Unit.SETTLER: 2, - Unit.SWORDSMAN: 2, - Unit.CATHOLIC_MISSIONARY: 1, - } - }, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 4, - Unit.SETTLER: 2, - Unit.MACEMAN: 2, - Unit.HEAVY_LANCER: 2, - Unit.ISLAMIC_MISSIONARY: 1, - }, - PlayerType.AI: {Unit.CROSSBOWMAN: 2, Unit.SETTLER: 1, Unit.ISLAMIC_MISSIONARY: 2}, - }, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 4, - Unit.SETTLER: 3, - Unit.LONG_SWORDSMAN: 2, - Unit.HEAVY_LANCER: 2, - Unit.CATHOLIC_MISSIONARY: 2, - }, - PlayerType.AI: { - Unit.CROSSBOWMAN: 2, - Unit.LONG_SWORDSMAN: 2, - Unit.SETTLER: 1, - Unit.CATHOLIC_MISSIONARY: 1, - }, - }, - do_not_cast=True, - ), - Civ.PORTUGAL: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 2, - Unit.SETTLER: 2, - Unit.PORTUGAL_FOOT_KNIGHT: 4, - Unit.TREBUCHET: 2, - Unit.GUISARME: 2, - Unit.CATHOLIC_MISSIONARY: 1, - } - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 3, - Unit.SETTLER: 2, - Unit.ARAGON_ALMOGAVAR: 5, - Unit.CATHOLIC_MISSIONARY: 2, - } - }, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.LONG_SWORDSMAN: 3, - Unit.HEAVY_LANCER: 1, - Unit.KNIGHT: 1, - Unit.SETTLER: 3, - Unit.CROSSBOWMAN: 2, - Unit.ARBALEST: 2, - Unit.CATHOLIC_MISSIONARY: 2, - } - }, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 3, - Unit.SETTLER: 2, - Unit.TEUTONIC: 3, - Unit.GUISARME: 2, - Unit.TREBUCHET: 2, - Unit.CATHOLIC_MISSIONARY: 3, - } + Civ.ARABIA: { + PlayerType.ANY: { + Unit.ARCHER: 2, + Unit.SETTLER: 2, + Unit.HORSE_ARCHER: 7, + Unit.AXEMAN: 2, + Unit.SPEARMAN: 2, + }, + PlayerType.AI: { + Unit.HORSE_ARCHER: 2, + Unit.ARCHER: 2, + Unit.SPEARMAN: 2, + Unit.SETTLER: 2, }, - do_not_cast=True, - ), - Civ.LITHUANIA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.CROSSBOWMAN: 4, - Unit.SETTLER: 3, - Unit.LITHUANIAN_BAJORAS: 5, - Unit.GUISARME: 3, - } + }, + Civ.BULGARIA: { + PlayerType.ANY: {Unit.ARCHER: 4, Unit.SETTLER: 2, Unit.BULGARIAN_KONNIK: 5}, + PlayerType.AI: {Unit.ARCHER: 1, Unit.SPEARMAN: 2, Unit.SETTLER: 1}, + }, + Civ.CORDOBA: { + PlayerType.ANY: { + Unit.ARCHER: 3, + Unit.SETTLER: 1, + Unit.AXEMAN: 2, + Unit.ISLAMIC_MISSIONARY: 3, + }, + PlayerType.AI: { + Unit.ARCHER: 4, + Unit.SETTLER: 2, + Unit.AXEMAN: 1, + Unit.ISLAMIC_MISSIONARY: 2, + }, + PlayerType.HUMAN: {Unit.HORSE_ARCHER: 3}, + }, + Civ.VENECIA: { + PlayerType.ANY: { + Unit.ARCHER: 2, + Unit.SETTLER: 1, + Unit.SPEARMAN: 1, + Unit.CATHOLIC_MISSIONARY: 1, + } + }, + Civ.BURGUNDY: { + PlayerType.ANY: { + Unit.SETTLER: 1, + Unit.ARCHER: 2, + Unit.GUISARME: 2, + Unit.AXEMAN: 2, + Unit.CATHOLIC_MISSIONARY: 1, + } + }, + Civ.GERMANY: { + PlayerType.ANY: { + Unit.SETTLER: 2, + Unit.AXEMAN: 2, + Unit.SWORDSMAN: 2, + Unit.GUISARME: 2, + Unit.ARCHER: 2, + Unit.CATHOLIC_MISSIONARY: 2, + }, + PlayerType.AI: {Unit.ARCHER: 2, Unit.SETTLER: 1, Unit.CATHOLIC_MISSIONARY: 1}, + }, + Civ.NOVGOROD: { + PlayerType.ANY: { + Unit.ARCHER: 3, + Unit.SETTLER: 3, + Unit.AXEMAN: 1, + Unit.HORSE_ARCHER: 1, }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARBALEST: 4, - Unit.SETTLER: 2, - Unit.MACEMAN: 3, - Unit.HEAVY_LANCER: 3, - Unit.CROSSBOWMAN: 3, - Unit.KNIGHT: 4, - Unit.CATHOLIC_MISSIONARY: 2, - } + PlayerType.AI: {Unit.ARCHER: 4, Unit.SETTLER: 1}, + }, + Civ.NORWAY: { + PlayerType.ANY: { + Unit.ARCHER: 2, + Unit.SETTLER: 2, + Unit.VIKING_BERSERKER: 2, + Unit.SWORDSMAN: 1, + } + }, + Civ.KIEV: { + PlayerType.ANY: { + Unit.ARCHER: 4, + Unit.SETTLER: 3, + Unit.AXEMAN: 2, + Unit.HORSE_ARCHER: 3, }, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.LONGBOWMAN: 5, - Unit.SETTLER: 3, - Unit.MACEMAN: 4, - Unit.KNIGHT: 2, - Unit.HORSE_ARCHER: 4, - Unit.TREBUCHET: 2, - Unit.TURKEY_GREAT_BOMBARD: 3, - Unit.ISLAMIC_MISSIONARY: 4, - }, - PlayerType.AI: {Unit.KNIGHT: 2, Unit.HORSE_ARCHER: 2, Unit.LONGBOWMAN: 3}, + PlayerType.AI: {Unit.ARCHER: 3, Unit.SPEARMAN: 3, Unit.SETTLER: 2}, + }, + Civ.HUNGARY: { + PlayerType.ANY: { + Unit.ARCHER: 4, + Unit.SETTLER: 3, + Unit.AXEMAN: 2, + Unit.HORSE_ARCHER: 4, }, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.ARBALEST: 5, - Unit.SETTLER: 3, - Unit.MOSCOW_BOYAR: 5, - Unit.GUISARME: 4, - Unit.MACEMAN: 3, - Unit.ORTHODOX_MISSIONARY: 3, - }, - PlayerType.AI: { - Unit.MACEMAN: 2, - Unit.SETTLER: 1, - Unit.ARBALEST: 2, - Unit.ORTHODOX_MISSIONARY: 1, - }, + PlayerType.AI: {Unit.ARCHER: 2, Unit.SPEARMAN: 2, Unit.SETTLER: 1}, + }, + Civ.CASTILE: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 4, + Unit.SETTLER: 3, + Unit.CATHOLIC_MISSIONARY: 2, + Unit.SWORDSMAN: 2, + Unit.LANCER: 2, + Unit.CATAPULT: 1, + }, + PlayerType.AI: {Unit.CROSSBOWMAN: 1, Unit.SWORDSMAN: 2, Unit.LANCER: 2}, + }, + Civ.DENMARK: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 2, + Unit.SETTLER: 2, + Unit.DENMARK_HUSKARL: 4, + } + }, + Civ.SCOTLAND: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 3, + Unit.SETTLER: 2, + Unit.SWORDSMAN: 2, + Unit.CATHOLIC_MISSIONARY: 2, + } + }, + Civ.POLAND: { + PlayerType.ANY: { + Unit.ARCHER: 4, + Unit.SETTLER: 3, + Unit.AXEMAN: 2, + Unit.SWORDSMAN: 2, + Unit.CATHOLIC_MISSIONARY: 2, + }, + PlayerType.AI: {Unit.CROSSBOWMAN: 4, Unit.SETTLER: 1}, + }, + Civ.GENOA: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 4, + Unit.SETTLER: 2, + Unit.SWORDSMAN: 2, + Unit.CATHOLIC_MISSIONARY: 1, + } + }, + Civ.MOROCCO: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 4, + Unit.SETTLER: 2, + Unit.MACEMAN: 2, + Unit.HEAVY_LANCER: 2, + Unit.ISLAMIC_MISSIONARY: 1, + }, + PlayerType.AI: {Unit.CROSSBOWMAN: 2, Unit.SETTLER: 1, Unit.ISLAMIC_MISSIONARY: 2}, + }, + Civ.ENGLAND: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 4, + Unit.SETTLER: 3, + Unit.LONG_SWORDSMAN: 2, + Unit.HEAVY_LANCER: 2, + Unit.CATHOLIC_MISSIONARY: 2, + }, + PlayerType.AI: { + Unit.CROSSBOWMAN: 2, + Unit.LONG_SWORDSMAN: 2, + Unit.SETTLER: 1, + Unit.CATHOLIC_MISSIONARY: 1, }, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - PlayerType.ANY: { - Unit.MUSKETMAN: 8, - Unit.SETTLER: 2, - Unit.MACEMAN: 3, - Unit.PROTESTANT_MISSIONARY: 2, - } + }, + Civ.PORTUGAL: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 2, + Unit.SETTLER: 2, + Unit.PORTUGAL_FOOT_KNIGHT: 4, + Unit.TREBUCHET: 2, + Unit.GUISARME: 2, + Unit.CATHOLIC_MISSIONARY: 1, + } + }, + Civ.ARAGON: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 3, + Unit.SETTLER: 2, + Unit.ARAGON_ALMOGAVAR: 5, + Unit.CATHOLIC_MISSIONARY: 2, + } + }, + Civ.SWEDEN: { + PlayerType.ANY: { + Unit.LONG_SWORDSMAN: 3, + Unit.HEAVY_LANCER: 1, + Unit.KNIGHT: 1, + Unit.SETTLER: 3, + Unit.CROSSBOWMAN: 2, + Unit.ARBALEST: 2, + Unit.CATHOLIC_MISSIONARY: 2, + } + }, + Civ.PRUSSIA: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 3, + Unit.SETTLER: 2, + Unit.TEUTONIC: 3, + Unit.GUISARME: 2, + Unit.TREBUCHET: 2, + Unit.CATHOLIC_MISSIONARY: 3, + } + }, + Civ.LITHUANIA: { + PlayerType.ANY: { + Unit.CROSSBOWMAN: 4, + Unit.SETTLER: 3, + Unit.LITHUANIAN_BAJORAS: 5, + Unit.GUISARME: 3, + } + }, + Civ.AUSTRIA: { + PlayerType.ANY: { + Unit.ARBALEST: 4, + Unit.SETTLER: 2, + Unit.MACEMAN: 3, + Unit.HEAVY_LANCER: 3, + Unit.CROSSBOWMAN: 3, + Unit.KNIGHT: 4, + Unit.CATHOLIC_MISSIONARY: 2, + } + }, + Civ.OTTOMAN: { + PlayerType.ANY: { + Unit.LONGBOWMAN: 5, + Unit.SETTLER: 3, + Unit.MACEMAN: 4, + Unit.KNIGHT: 2, + Unit.HORSE_ARCHER: 4, + Unit.TREBUCHET: 2, + Unit.TURKEY_GREAT_BOMBARD: 3, + Unit.ISLAMIC_MISSIONARY: 4, + }, + PlayerType.AI: {Unit.KNIGHT: 2, Unit.HORSE_ARCHER: 2, Unit.LONGBOWMAN: 3}, + }, + Civ.MOSCOW: { + PlayerType.ANY: { + Unit.ARBALEST: 5, + Unit.SETTLER: 3, + Unit.MOSCOW_BOYAR: 5, + Unit.GUISARME: 4, + Unit.MACEMAN: 3, + Unit.ORTHODOX_MISSIONARY: 3, + }, + PlayerType.AI: { + Unit.MACEMAN: 2, + Unit.SETTLER: 1, + Unit.ARBALEST: 2, + Unit.ORTHODOX_MISSIONARY: 1, }, - do_not_cast=True, - ), - } + }, + Civ.DUTCH: { + PlayerType.ANY: { + Unit.MUSKETMAN: 8, + Unit.SETTLER: 2, + Unit.MACEMAN: 3, + Unit.PROTESTANT_MISSIONARY: 2, + } + }, + }, ) CIV_ADDITIONAL_UNITS = CivDataMapper( { Civ.BYZANTIUM: None, Civ.FRANCE: None, - Civ.ARABIA: IntEnumDataMapper( - {PlayerType.AI: {Unit.HORSE_ARCHER: 4}, PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}}, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - PlayerType.AI: {Unit.BULGARIAN_KONNIK: 2}, - PlayerType.HUMAN: {Unit.BULGARIAN_KONNIK: 1}, - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - {PlayerType.AI: {Unit.AXEMAN: 2}, PlayerType.HUMAN: {Unit.AXEMAN: 1}}, do_not_cast=True - ), - Civ.VENECIA: IntEnumDataMapper( - {PlayerType.AI: {Unit.CROSSBOWMAN: 3}, PlayerType.HUMAN: {Unit.CROSSBOWMAN: 2}}, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - {PlayerType.AI: {Unit.LANCER: 3}, PlayerType.HUMAN: {Unit.LANCER: 1}}, do_not_cast=True - ), - Civ.GERMANY: IntEnumDataMapper( - {PlayerType.AI: {Unit.LANCER: 3}, PlayerType.HUMAN: {Unit.LANCER: 1}}, do_not_cast=True - ), - Civ.NOVGOROD: IntEnumDataMapper( - {PlayerType.AI: {Unit.CROSSBOWMAN: 3}, PlayerType.HUMAN: {Unit.CROSSBOWMAN: 1}}, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - PlayerType.AI: {Unit.VIKING_BERSERKER: 3}, - PlayerType.HUMAN: {Unit.VIKING_BERSERKER: 1}, - }, - do_not_cast=True, - ), - Civ.KIEV: IntEnumDataMapper( - {PlayerType.AI: {Unit.HORSE_ARCHER: 4}, PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}}, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - {PlayerType.AI: {Unit.HORSE_ARCHER: 4}, PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}}, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - {PlayerType.AI: {Unit.LANCER: 4}, PlayerType.HUMAN: {Unit.LANCER: 1}}, do_not_cast=True - ), - Civ.DENMARK: IntEnumDataMapper( - { - PlayerType.AI: {Unit.DENMARK_HUSKARL: 3}, - PlayerType.HUMAN: {Unit.DENMARK_HUSKARL: 1}, - }, - do_not_cast=True, - ), - Civ.SCOTLAND: IntEnumDataMapper( - {PlayerType.AI: {Unit.AXEMAN: 4}, PlayerType.HUMAN: {Unit.AXEMAN: 2}}, do_not_cast=True - ), - Civ.POLAND: IntEnumDataMapper( - {PlayerType.AI: {Unit.LANCER: 3}, PlayerType.HUMAN: {Unit.LANCER: 1}}, do_not_cast=True - ), - Civ.GENOA: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 3}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}}, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 2}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}}, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 3}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}}, - do_not_cast=True, - ), - Civ.PORTUGAL: IntEnumDataMapper( - { - PlayerType.AI: {Unit.PORTUGAL_FOOT_KNIGHT: 4}, - PlayerType.HUMAN: {Unit.PORTUGAL_FOOT_KNIGHT: 1}, - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 4}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 2}}, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 4}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}}, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - {PlayerType.AI: {Unit.TEUTONIC: 3}, PlayerType.HUMAN: {Unit.TEUTONIC: 1}}, - do_not_cast=True, - ), - Civ.LITHUANIA: IntEnumDataMapper( - { - PlayerType.AI: {Unit.LITHUANIAN_BAJORAS: 3}, - PlayerType.HUMAN: {Unit.LITHUANIAN_BAJORAS: 1}, - }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 4}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 2}}, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - {PlayerType.AI: {Unit.HEAVY_LANCER: 3}, PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}}, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - {PlayerType.AI: {Unit.MOSCOW_BOYAR: 3}, PlayerType.HUMAN: {Unit.MOSCOW_BOYAR: 1}}, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - PlayerType.AI: {Unit.NETHERLANDS_GRENADIER: 4}, - PlayerType.HUMAN: {Unit.NETHERLANDS_GRENADIER: 2}, - }, - do_not_cast=True, - ), - } + Civ.ARABIA: { + PlayerType.AI: {Unit.HORSE_ARCHER: 4}, + PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}, + }, + Civ.BULGARIA: { + PlayerType.AI: {Unit.BULGARIAN_KONNIK: 2}, + PlayerType.HUMAN: {Unit.BULGARIAN_KONNIK: 1}, + }, + Civ.CORDOBA: { + PlayerType.AI: {Unit.AXEMAN: 2}, + PlayerType.HUMAN: {Unit.AXEMAN: 1}, + }, + Civ.VENECIA: { + PlayerType.AI: {Unit.CROSSBOWMAN: 3}, + PlayerType.HUMAN: {Unit.CROSSBOWMAN: 2}, + }, + Civ.BURGUNDY: { + PlayerType.AI: {Unit.LANCER: 3}, + PlayerType.HUMAN: {Unit.LANCER: 1}, + }, + Civ.GERMANY: { + PlayerType.AI: {Unit.LANCER: 3}, + PlayerType.HUMAN: {Unit.LANCER: 1}, + }, + Civ.NOVGOROD: { + PlayerType.AI: {Unit.CROSSBOWMAN: 3}, + PlayerType.HUMAN: {Unit.CROSSBOWMAN: 1}, + }, + Civ.NORWAY: { + PlayerType.AI: {Unit.VIKING_BERSERKER: 3}, + PlayerType.HUMAN: {Unit.VIKING_BERSERKER: 1}, + }, + Civ.KIEV: { + PlayerType.AI: {Unit.HORSE_ARCHER: 4}, + PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}, + }, + Civ.HUNGARY: { + PlayerType.AI: {Unit.HORSE_ARCHER: 4}, + PlayerType.HUMAN: {Unit.HORSE_ARCHER: 2}, + }, + Civ.CASTILE: { + PlayerType.AI: {Unit.LANCER: 4}, + PlayerType.HUMAN: {Unit.LANCER: 1}, + }, + Civ.DENMARK: { + PlayerType.AI: {Unit.DENMARK_HUSKARL: 3}, + PlayerType.HUMAN: {Unit.DENMARK_HUSKARL: 1}, + }, + Civ.SCOTLAND: { + PlayerType.AI: {Unit.AXEMAN: 4}, + PlayerType.HUMAN: {Unit.AXEMAN: 2}, + }, + Civ.POLAND: { + PlayerType.AI: {Unit.LANCER: 3}, + PlayerType.HUMAN: {Unit.LANCER: 1}, + }, + Civ.GENOA: { + PlayerType.AI: {Unit.HEAVY_LANCER: 3}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}, + }, + Civ.MOROCCO: { + PlayerType.AI: {Unit.HEAVY_LANCER: 2}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}, + }, + Civ.ENGLAND: { + PlayerType.AI: {Unit.HEAVY_LANCER: 3}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}, + }, + Civ.PORTUGAL: { + PlayerType.AI: {Unit.PORTUGAL_FOOT_KNIGHT: 4}, + PlayerType.HUMAN: {Unit.PORTUGAL_FOOT_KNIGHT: 1}, + }, + Civ.ARAGON: { + PlayerType.AI: {Unit.HEAVY_LANCER: 4}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 2}, + }, + Civ.SWEDEN: { + PlayerType.AI: {Unit.HEAVY_LANCER: 4}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}, + }, + Civ.PRUSSIA: { + PlayerType.AI: {Unit.TEUTONIC: 3}, + PlayerType.HUMAN: {Unit.TEUTONIC: 1}, + }, + Civ.LITHUANIA: { + PlayerType.AI: {Unit.LITHUANIAN_BAJORAS: 3}, + PlayerType.HUMAN: {Unit.LITHUANIAN_BAJORAS: 1}, + }, + Civ.AUSTRIA: { + PlayerType.AI: {Unit.HEAVY_LANCER: 4}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 2}, + }, + Civ.OTTOMAN: { + PlayerType.AI: {Unit.HEAVY_LANCER: 3}, + PlayerType.HUMAN: {Unit.HEAVY_LANCER: 1}, + }, + Civ.MOSCOW: { + PlayerType.AI: {Unit.MOSCOW_BOYAR: 3}, + PlayerType.HUMAN: {Unit.MOSCOW_BOYAR: 1}, + }, + Civ.DUTCH: { + PlayerType.AI: {Unit.NETHERLANDS_GRENADIER: 4}, + PlayerType.HUMAN: {Unit.NETHERLANDS_GRENADIER: 2}, + }, + }, ) CIV_SCENARIO_CONDITION_500AD = CivDataMapper( @@ -995,7 +911,7 @@ Civ.MOSCOW: {InitialCondition.GOLD: 500, InitialCondition.FAITH: 0}, Civ.DUTCH: {InitialCondition.GOLD: 1500, InitialCondition.FAITH: 0}, Civ.POPE: {InitialCondition.GOLD: 50, InitialCondition.FAITH: 0}, - } + }, ) CIV_SCENARIO_CONDITION_1200AD = CivDataMapper( @@ -1029,17 +945,16 @@ Civ.MOSCOW: {InitialCondition.GOLD: 500, InitialCondition.FAITH: 0}, Civ.DUTCH: {InitialCondition.GOLD: 1500, InitialCondition.FAITH: 0}, Civ.POPE: {InitialCondition.GOLD: 200, InitialCondition.FAITH: 0}, - } + }, ) -CIV_SCENARIO_CONDITION = ScenarioDataMapper( +CIV_SCENARIO_CONDITION = EnumDataMapper( { Scenario.i500AD: CIV_SCENARIO_CONDITION_500AD, Scenario.i1200AD: CIV_SCENARIO_CONDITION_1200AD, - } + }, ) -# Used by GameBalance CIV_INITIAL_BUILDINGS = CivDataMapper( { Civ.BYZANTIUM: None, @@ -1081,861 +996,673 @@ Building.SMOKEHOUSE, ], Civ.POPE: None, - } + }, ) -# Used by GameBalance CIV_HUMAN_MODIFIERS = CivDataMapper( { - Civ.BYZANTIUM: IntEnumDataMapper( - { - Modifier.GROWTH: (150, 100, 200, 100, 100, 2), - Modifier.PRODUCTION: (200, 150, 200, 350), - Modifier.SUPPORT: (50, 150, 70, 50, 120), - }, - do_not_cast=True, - ), - Civ.FRANCE: IntEnumDataMapper( - { - Modifier.GROWTH: (110, 100, 110, 100, 100, 1), - Modifier.PRODUCTION: (150, 120, 125, 130), - Modifier.SUPPORT: (30, 120, 70, 50, 100), - }, - do_not_cast=True, - ), - Civ.ARABIA: IntEnumDataMapper( - { - Modifier.GROWTH: (150, 100, 150, 100, 100, 1), - Modifier.PRODUCTION: (150, 125, 150, 230), - Modifier.SUPPORT: (30, 150, 70, 40, 120), - }, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 1), - Modifier.PRODUCTION: (150, 150, 125, 200), - Modifier.SUPPORT: (40, 150, 80, 50, 120), - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - { - Modifier.GROWTH: (150, 100, 100, 100, 100, 1), - Modifier.PRODUCTION: (200, 180, 140, 230), - Modifier.SUPPORT: (40, 150, 70, 40, 120), - }, - do_not_cast=True, - ), - Civ.VENECIA: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 130), - Modifier.SUPPORT: (20, 100, 60, 50, 100), - }, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (150, 120, 120, 150), - Modifier.SUPPORT: (30, 120, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.GERMANY: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (140, 140, 125, 130), - Modifier.SUPPORT: (20, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.NOVGOROD: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 125, 125, 150), - Modifier.SUPPORT: (30, 120, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 125, 100, 140), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.KIEV: IntEnumDataMapper( - { - Modifier.GROWTH: (150, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 150, 125, 150), - Modifier.SUPPORT: (30, 120, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 125, 100, 130), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 100, 100, 120), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.DENMARK: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 120), - Modifier.SUPPORT: (20, 100, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.SCOTLAND: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (110, 110, 110, 125), - Modifier.SUPPORT: (25, 100, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.POLAND: IntEnumDataMapper( - { - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (120, 120, 120, 130), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.GENOA: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (100, 100, 100, 125), - Modifier.SUPPORT: (20, 100, 60, 50, 100), - }, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (120, 120, 120, 175), - Modifier.SUPPORT: (25, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (100, 100, 100, 110), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.PORTUGAL: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 90, 100, 100), - Modifier.SUPPORT: (20, 100, 70, 50, 100), - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 100, 100, 125), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 80, 100, 100), - Modifier.SUPPORT: (20, 90, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (75, 80, 120, 100), - Modifier.SUPPORT: (20, 90, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.LITHUANIA: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 100, 110, 100), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - { - # Austria is squashed by other's culture, they need the boost - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 80, 100, 100), - Modifier.SUPPORT: (20, 80, 80, 40, 100), - }, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (75, 75, 100, 110), - Modifier.SUPPORT: (30, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (110, 110, 100, 120), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - Modifier.GROWTH: (100, 200, 60, 100, 50, 4), - Modifier.PRODUCTION: (90, 50, 60, 50), - Modifier.SUPPORT: (20, 70, 80, 50, 100), - }, - do_not_cast=True, - ), - } -).fill_missing_members(IntEnumDataMapper({})) + Civ.BYZANTIUM: { + Modifier.GROWTH: (150, 100, 200, 100, 100, 2), + Modifier.PRODUCTION: (200, 150, 200, 350), + Modifier.SUPPORT: (50, 150, 70, 50, 120), + }, + Civ.FRANCE: { + Modifier.GROWTH: (110, 100, 110, 100, 100, 1), + Modifier.PRODUCTION: (150, 120, 125, 130), + Modifier.SUPPORT: (30, 120, 70, 50, 100), + }, + Civ.ARABIA: { + Modifier.GROWTH: (150, 100, 150, 100, 100, 1), + Modifier.PRODUCTION: (150, 125, 150, 230), + Modifier.SUPPORT: (30, 150, 70, 40, 120), + }, + Civ.BULGARIA: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 1), + Modifier.PRODUCTION: (150, 150, 125, 200), + Modifier.SUPPORT: (40, 150, 80, 50, 120), + }, + Civ.CORDOBA: { + Modifier.GROWTH: (150, 100, 100, 100, 100, 1), + Modifier.PRODUCTION: (200, 180, 140, 230), + Modifier.SUPPORT: (40, 150, 70, 40, 120), + }, + Civ.VENECIA: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 130), + Modifier.SUPPORT: (20, 100, 60, 50, 100), + }, + Civ.BURGUNDY: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (150, 120, 120, 150), + Modifier.SUPPORT: (30, 120, 70, 40, 100), + }, + Civ.GERMANY: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (140, 140, 125, 130), + Modifier.SUPPORT: (20, 100, 70, 40, 100), + }, + Civ.NOVGOROD: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 125, 125, 150), + Modifier.SUPPORT: (30, 120, 70, 40, 100), + }, + Civ.NORWAY: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 125, 100, 140), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.KIEV: { + Modifier.GROWTH: (150, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 150, 125, 150), + Modifier.SUPPORT: (30, 120, 60, 40, 100), + }, + Civ.HUNGARY: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 125, 100, 130), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.CASTILE: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 100, 100, 120), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.DENMARK: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 120), + Modifier.SUPPORT: (20, 100, 80, 50, 100), + }, + Civ.SCOTLAND: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (110, 110, 110, 125), + Modifier.SUPPORT: (25, 100, 80, 50, 100), + }, + Civ.POLAND: { + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (120, 120, 120, 130), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.GENOA: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (100, 100, 100, 125), + Modifier.SUPPORT: (20, 100, 60, 50, 100), + }, + Civ.MOROCCO: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (120, 120, 120, 175), + Modifier.SUPPORT: (25, 100, 60, 40, 100), + }, + Civ.ENGLAND: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (100, 100, 100, 110), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.PORTUGAL: { + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 90, 100, 100), + Modifier.SUPPORT: (20, 100, 70, 50, 100), + }, + Civ.ARAGON: { + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 100, 100, 125), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.SWEDEN: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 80, 100, 100), + Modifier.SUPPORT: (20, 90, 70, 40, 100), + }, + Civ.PRUSSIA: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (75, 80, 120, 100), + Modifier.SUPPORT: (20, 90, 70, 40, 100), + }, + Civ.LITHUANIA: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 100, 110, 100), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.AUSTRIA: { + # Austria is squashed by other's culture, they need the boost + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 80, 100, 100), + Modifier.SUPPORT: (20, 80, 80, 40, 100), + }, + Civ.OTTOMAN: { + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (75, 75, 100, 110), + Modifier.SUPPORT: (30, 100, 60, 40, 100), + }, + Civ.MOSCOW: { + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (110, 110, 100, 120), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.DUTCH: { + Modifier.GROWTH: (100, 200, 60, 100, 50, 4), + Modifier.PRODUCTION: (90, 50, 60, 50), + Modifier.SUPPORT: (20, 70, 80, 50, 100), + }, + }, +).fill_missing_members({}) -# Used by GameBalance CIV_AI_MODIFIERS = CivDataMapper( { - Civ.BYZANTIUM: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 0), # 7 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.ST_CATHERINE_MONASTERY, 15), - (Wonder.BOYANA_CHURCH, 2), - (Wonder.ROUND_CHURCH, 2), - (Wonder.SOPHIA_KIEV, 5), - ], - Modifier.GROWTH: (200, 100, 200, 100, 100, 2), - Modifier.PRODUCTION: (200, 200, 200, 350), - Modifier.SUPPORT: (50, 150, 70, 50, 120), - }, - do_not_cast=True, - ), - Civ.FRANCE: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 0), # 8 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.NOTRE_DAME, 20), - (Wonder.VERSAILLES, 20), - (Wonder.FONTAINEBLEAU, 10), - (Wonder.MONASTERY_OF_CLUNY, 10), - (Wonder.MONT_SAINT_MICHEL, 10), - (Wonder.PALAIS_DES_PAPES, 5), - (Wonder.LOUVRE, 20), - ], - Modifier.GROWTH: (110, 100, 110, 100, 100, 1), - Modifier.PRODUCTION: (140, 120, 125, 150), - Modifier.SUPPORT: (30, 120, 70, 50, 100), - }, - do_not_cast=True, - ), - Civ.ARABIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 1), # 7 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.DOME_ROCK, 15), - (Wonder.TOMB_AL_WALID, 20), - (Wonder.ALAZHAR, 20), - (Wonder.MOSQUE_OF_KAIROUAN, 10), - (Wonder.KOUTOUBIA_MOSQUE, 5), - (Wonder.GARDENS_AL_ANDALUS, 5), - (Wonder.LA_MEZQUITA, 5), - (Wonder.ALHAMBRA, 5), - (Wonder.NOTRE_DAME, -5), - (Wonder.STEPHANSDOM, -5), - (Wonder.SISTINE_CHAPEL, -5), - (Wonder.KRAK_DES_CHEVALIERS, -5), - (Wonder.LEANING_TOWER, -3), - (Wonder.GOLDEN_BULL, -3), - (Wonder.COPERNICUS, -3), - ], - Modifier.GROWTH: (150, 100, 150, 100, 100, 1), - Modifier.PRODUCTION: (130, 125, 150, 280), - Modifier.SUPPORT: (30, 150, 70, 40, 120), - }, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 4), # 11 - Modifier.CITY_WAR_DISTANCE: 1, - Modifier.TECH_PREFERENCE: [(Technology.BRONZE_CASTING, 200)], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.ROUND_CHURCH, 20), - (Wonder.BOYANA_CHURCH, 20), - (Wonder.ST_CATHERINE_MONASTERY, 5), - (Wonder.SOPHIA_KIEV, 5), - ], - Modifier.GROWTH: (150, 100, 100, 100, 100, 1), - Modifier.PRODUCTION: (130, 125, 125, 250), - Modifier.SUPPORT: (40, 150, 80, 50, 120), - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 2, 1), # 10 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.GARDENS_AL_ANDALUS, 20), - (Wonder.LA_MEZQUITA, 20), - (Wonder.ALHAMBRA, 20), - (Wonder.DOME_ROCK, 10), - (Wonder.ALAZHAR, 5), - (Wonder.MOSQUE_OF_KAIROUAN, 10), - (Wonder.KOUTOUBIA_MOSQUE, 5), - (Wonder.NOTRE_DAME, -5), - (Wonder.STEPHANSDOM, -5), - (Wonder.SISTINE_CHAPEL, -5), - (Wonder.KRAK_DES_CHEVALIERS, -5), - (Wonder.LEANING_TOWER, -3), - (Wonder.GOLDEN_BULL, -3), - ], - Modifier.GROWTH: (150, 100, 100, 100, 100, 1), - Modifier.PRODUCTION: (180, 170, 130, 250), - Modifier.SUPPORT: (40, 150, 70, 40, 120), - }, - do_not_cast=True, - ), - Civ.VENECIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.MARCO_POLO, 15), - (Wonder.SAN_MARCO, 20), - (Wonder.LANTERNA, 10), - (Wonder.LEONARDOS_WORKSHOP, 5), - (Wonder.LEANING_TOWER, 5), - (Wonder.GRAND_ARSENAL, 20), - (Wonder.GALATA_TOWER, 10), - (Wonder.FLORENCE_DUOMO, 10), - (Wonder.SAN_GIORGIO, 5), - ], - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 150), - Modifier.SUPPORT: (20, 100, 60, 50, 100), - }, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 3), # 12 - Modifier.CITY_WAR_DISTANCE: 1, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.MONASTERY_OF_CLUNY, 20), - (Wonder.NOTRE_DAME, 10), - (Wonder.VERSAILLES, 10), - (Wonder.MONT_SAINT_MICHEL, 10), - (Wonder.FONTAINEBLEAU, 5), - (Wonder.PALAIS_DES_PAPES, 5), - (Wonder.LOUVRE, 10), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (130, 120, 120, 150), - Modifier.SUPPORT: (30, 120, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.GERMANY: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 4), # 11 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [(Technology.PRINTING_PRESS, 200)], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.BRANDENBURG_GATE, 10), - (Wonder.IMPERIAL_DIET, 20), - (Wonder.COPERNICUS, 5), - (Wonder.GOLDEN_BULL, 10), - (Wonder.MONASTERY_OF_CLUNY, 5), - (Wonder.URANIBORG, 5), - (Wonder.THOMASKIRCHE, 20), - ], - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (120, 120, 100, 140), - Modifier.SUPPORT: (20, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.NOVGOROD: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 2), # 6 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.ST_BASIL, 10), - (Wonder.SOPHIA_KIEV, 10), - (Wonder.ROUND_CHURCH, 5), - (Wonder.BOYANA_CHURCH, 5), - (Wonder.BORGUND_STAVE_CHURCH, 5), - (Wonder.PETERHOF_PALACE, 15), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (120, 120, 120, 150), - Modifier.SUPPORT: (30, 120, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 2, 1), # 10 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.SHRINE_OF_UPPSALA, 20), - (Wonder.SAMOGITIAN_ALKAS, 5), - (Wonder.BORGUND_STAVE_CHURCH, 15), - (Wonder.URANIBORG, 10), - (Wonder.KALMAR_CASTLE, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (125, 125, 125, 130), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.KIEV: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 2), # 6 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.SOPHIA_KIEV, 20), - (Wonder.ST_BASIL, 5), - (Wonder.ROUND_CHURCH, 5), - (Wonder.BOYANA_CHURCH, 5), - (Wonder.PETERHOF_PALACE, 10), - ], - Modifier.GROWTH: (150, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 120, 100, 140), - Modifier.SUPPORT: (30, 120, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 3), # 12 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.PRESSBURG, 20), - (Wonder.GOLDEN_BULL, 20), - (Wonder.BIBLIOTHECA_CORVINIANA, 20), - (Wonder.KAZIMIERZ, 10), - (Wonder.COPERNICUS, 5), - (Wonder.STEPHANSDOM, 5), - ], - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (120, 120, 100, 150), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 2, 1), # 10 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [(Technology.ASTRONOMY, 200)], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.ESCORIAL, 20), - (Wonder.MAGELLANS_VOYAGE, 10), - (Wonder.TORRE_DEL_ORO, 20), - (Wonder.BELEM_TOWER, 10), - ], - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 130), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.DENMARK: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 3), # 12 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.KALMAR_CASTLE, 10), - (Wonder.SHRINE_OF_UPPSALA, 20), - (Wonder.SAMOGITIAN_ALKAS, 5), - (Wonder.BORGUND_STAVE_CHURCH, 15), - (Wonder.URANIBORG, 20), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 110), - Modifier.SUPPORT: (20, 100, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.SCOTLAND: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 2), # 13 - Modifier.CITY_WAR_DISTANCE: 1, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.MAGNA_CARTA, 10), - (Wonder.WESTMINSTER, 10), - (Wonder.MONASTERY_OF_CLUNY, 5), - (Wonder.BORGUND_STAVE_CHURCH, 5), - (Wonder.MONT_SAINT_MICHEL, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 100, 100, 125), - Modifier.SUPPORT: (25, 100, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.POLAND: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 0), # 8 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.PRESSBURG, 10), - (Wonder.COPERNICUS, 10), - (Wonder.GOLDEN_BULL, 5), - (Wonder.KAZIMIERZ, 15), - (Wonder.JASNA_GORA, 20), - (Wonder.BRANDENBURG_GATE, 5), - ], - Modifier.GROWTH: (125, 100, 100, 100, 100, 2), - Modifier.PRODUCTION: (100, 120, 120, 140), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.GENOA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.SAN_GIORGIO, 20), - (Wonder.LANTERNA, 20), - (Wonder.LEONARDOS_WORKSHOP, 5), - (Wonder.LEANING_TOWER, 5), - (Wonder.SAN_MARCO, 5), - (Wonder.MARCO_POLO, 5), - (Wonder.GRAND_ARSENAL, 10), - (Wonder.GALATA_TOWER, 20), - (Wonder.FLORENCE_DUOMO, 10), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (100, 100, 100, 130), - Modifier.SUPPORT: (20, 100, 60, 50, 100), - }, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 2), # 6 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.GARDENS_AL_ANDALUS, 10), - (Wonder.LA_MEZQUITA, 10), - (Wonder.ALHAMBRA, 10), - (Wonder.DOME_ROCK, 10), - (Wonder.ALAZHAR, 5), - (Wonder.MOSQUE_OF_KAIROUAN, 10), - (Wonder.KOUTOUBIA_MOSQUE, 20), - (Wonder.NOTRE_DAME, -5), - (Wonder.STEPHANSDOM, -5), - (Wonder.SISTINE_CHAPEL, -5), - (Wonder.KRAK_DES_CHEVALIERS, -5), - (Wonder.LEANING_TOWER, -3), - (Wonder.GOLDEN_BULL, -3), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (120, 120, 120, 175), - Modifier.SUPPORT: (25, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 2, 1), # 10 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [(Technology.PRINTING_PRESS, 150)], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.MAGNA_CARTA, 20), - (Wonder.WESTMINSTER, 20), - (Wonder.MONASTERY_OF_CLUNY, 5), - (Wonder.URANIBORG, 5), - (Wonder.TORRE_DEL_ORO, 5), - (Wonder.BELEM_TOWER, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 80, 100, 120), - Modifier.SUPPORT: (20, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.PORTUGAL: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [(Technology.ASTRONOMY, 200)], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.BELEM_TOWER, 20), - (Wonder.PALACIO_DA_PENA, 20), - (Wonder.MAGELLANS_VOYAGE, 20), - (Wonder.TORRE_DEL_ORO, 10), - ], - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (70, 90, 100, 110), - Modifier.SUPPORT: (20, 100, 70, 50, 100), - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.MAGELLANS_VOYAGE, 10), - (Wonder.TORRE_DEL_ORO, 10), - (Wonder.ESCORIAL, 5), - (Wonder.BELEM_TOWER, 10), - ], - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (75, 90, 100, 125), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 2, 2), # 9 - Modifier.CITY_WAR_DISTANCE: 3, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.KALMAR_CASTLE, 20), - (Wonder.SHRINE_OF_UPPSALA, 5), - (Wonder.BORGUND_STAVE_CHURCH, 15), - (Wonder.URANIBORG, 10), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 80, 100, 100), - Modifier.SUPPORT: (20, 90, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.BRANDENBURG_GATE, 20), - (Wonder.THOMASKIRCHE, 10), - (Wonder.COPERNICUS, 5), - (Wonder.PRESSBURG, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (60, 80, 120, 90), - Modifier.SUPPORT: (20, 90, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.LITHUANIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 0), # 8 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.SAMOGITIAN_ALKAS, 20), - (Wonder.GEDIMINAS_TOWER, 20), - (Wonder.BORGUND_STAVE_CHURCH, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (70, 100, 110, 110), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 3), # 12 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.STEPHANSDOM, 20), - (Wonder.THOMASKIRCHE, 15), - (Wonder.COPERNICUS, 5), - (Wonder.GOLDEN_BULL, 5), - (Wonder.PRESSBURG, 5), - (Building.AUSTRIAN_OPERA_HOUSE, 10), - ], - # Austria is squashed by other's culture, they need the boost - Modifier.GROWTH: (100, 200, 100, 100, 100, 3), - Modifier.PRODUCTION: (50, 80, 100, 80), - Modifier.SUPPORT: (20, 80, 80, 40, 100), - }, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 3, 1), # 7 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.TOPKAPI_PALACE, 20), - (Wonder.BLUE_MOSQUE, 20), - (Wonder.SELIMIYE_MOSQUE, 20), - (Wonder.TOMB_AL_WALID, 10), - (Wonder.KIZIL_KULE, 10), - (Wonder.ALAZHAR, 5), - ], - Modifier.GROWTH: (100, 150, 100, 100, 100, 3), - Modifier.PRODUCTION: (60, 75, 100, 120), - Modifier.SUPPORT: (30, 100, 60, 40, 100), - }, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (1, 4, 1), # 5 - Modifier.CITY_WAR_DISTANCE: 2, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.ST_BASIL, 20), - (Wonder.PETERHOF_PALACE, 20), - (Wonder.SOPHIA_KIEV, 5), - ], - Modifier.GROWTH: (100, 100, 100, 100, 100, 3), - Modifier.PRODUCTION: (80, 80, 100, 120), - Modifier.SUPPORT: (25, 100, 70, 40, 100), - }, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: (2, 3, 1), # 14 - Modifier.CITY_WAR_DISTANCE: 1, - Modifier.TECH_PREFERENCE: [], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.BEURS, 20), - (Wonder.URANIBORG, 5), - (Wonder.THOMASKIRCHE, 5), - ], - Modifier.GROWTH: (100, 200, 60, 100, 50, 4), - Modifier.PRODUCTION: (80, 50, 50, 50), - Modifier.SUPPORT: (20, 70, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.POPE: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [ - (Technology.PRINTING_PRESS, 10) # Pope shouldn't want this - ], - Modifier.BUILDING_PREFERENCE: [ - (Wonder.SISTINE_CHAPEL, 20), - (Wonder.PALAIS_DES_PAPES, 10), - (Wonder.LEANING_TOWER, 5), - (Wonder.FLORENCE_DUOMO, 5), - (Wonder.LEONARDOS_WORKSHOP, 5), - ], - Modifier.GROWTH: (150, 100, 100, 50, 100, 1), - Modifier.PRODUCTION: (300, 200, 100, 350), - Modifier.SUPPORT: (20, 150, 80, 50, 100), - }, - do_not_cast=True, - ), - Civ.INDEPENDENT: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [], - Modifier.GROWTH: (100, 100, 100, 50, 100, 1), - # The peaceful ones - Modifier.PRODUCTION: (170, 100, 400, 200), - Modifier.SUPPORT: (10, 100, 10, 20, 100), - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_2: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [], - Modifier.GROWTH: (100, 100, 100, 50, 100, 1), - # The peaceful ones - Modifier.PRODUCTION: (170, 100, 400, 200), - Modifier.SUPPORT: (10, 100, 10, 20, 100), - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_3: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [], - Modifier.GROWTH: (100, 100, 100, 50, 100, 1), - # The warlike ones - Modifier.PRODUCTION: (125, 100, 600, 300), - Modifier.SUPPORT: (10, 100, 10, 20, 100), - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_4: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [], - Modifier.GROWTH: (100, 100, 100, 50, 100, 1), - # The warlike ones - Modifier.PRODUCTION: (125, 100, 600, 300), - Modifier.SUPPORT: (10, 100, 10, 20, 100), - }, - do_not_cast=True, - ), - Civ.BARBARIAN: IntEnumDataMapper( - { - Modifier.CITY_CLUSTER: None, - Modifier.CITY_WAR_DISTANCE: None, - Modifier.TECH_PREFERENCE: [], - Modifier.GROWTH: (100, 100, 100, 50, 100, 1), - Modifier.PRODUCTION: (125, 100, 900, 350), - Modifier.SUPPORT: (10, 250, 10, 20, 100), - }, - do_not_cast=True, - ), - } + Civ.BYZANTIUM: { + Modifier.CITY_CLUSTER: (1, 3, 0), # 7 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.ST_CATHERINE_MONASTERY, 15), + (Wonder.BOYANA_CHURCH, 2), + (Wonder.ROUND_CHURCH, 2), + (Wonder.SOPHIA_KIEV, 5), + ], + Modifier.GROWTH: (200, 100, 200, 100, 100, 2), + Modifier.PRODUCTION: (200, 200, 200, 350), + Modifier.SUPPORT: (50, 150, 70, 50, 120), + }, + Civ.FRANCE: { + Modifier.CITY_CLUSTER: (1, 3, 0), # 8 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.NOTRE_DAME, 20), + (Wonder.VERSAILLES, 20), + (Wonder.FONTAINEBLEAU, 10), + (Wonder.MONASTERY_OF_CLUNY, 10), + (Wonder.MONT_SAINT_MICHEL, 10), + (Wonder.PALAIS_DES_PAPES, 5), + (Wonder.LOUVRE, 20), + ], + Modifier.GROWTH: (110, 100, 110, 100, 100, 1), + Modifier.PRODUCTION: (140, 120, 125, 150), + Modifier.SUPPORT: (30, 120, 70, 50, 100), + }, + Civ.ARABIA: { + Modifier.CITY_CLUSTER: (1, 3, 1), # 7 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.DOME_ROCK, 15), + (Wonder.TOMB_AL_WALID, 20), + (Wonder.ALAZHAR, 20), + (Wonder.MOSQUE_OF_KAIROUAN, 10), + (Wonder.KOUTOUBIA_MOSQUE, 5), + (Wonder.GARDENS_AL_ANDALUS, 5), + (Wonder.LA_MEZQUITA, 5), + (Wonder.ALHAMBRA, 5), + (Wonder.NOTRE_DAME, -5), + (Wonder.STEPHANSDOM, -5), + (Wonder.SISTINE_CHAPEL, -5), + (Wonder.KRAK_DES_CHEVALIERS, -5), + (Wonder.LEANING_TOWER, -3), + (Wonder.GOLDEN_BULL, -3), + (Wonder.COPERNICUS, -3), + ], + Modifier.GROWTH: (150, 100, 150, 100, 100, 1), + Modifier.PRODUCTION: (130, 125, 150, 280), + Modifier.SUPPORT: (30, 150, 70, 40, 120), + }, + Civ.BULGARIA: { + Modifier.CITY_CLUSTER: (2, 3, 4), # 11 + Modifier.CITY_WAR_DISTANCE: 1, + Modifier.TECH_PREFERENCE: [(Technology.BRONZE_CASTING, 200)], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.ROUND_CHURCH, 20), + (Wonder.BOYANA_CHURCH, 20), + (Wonder.ST_CATHERINE_MONASTERY, 5), + (Wonder.SOPHIA_KIEV, 5), + ], + Modifier.GROWTH: (150, 100, 100, 100, 100, 1), + Modifier.PRODUCTION: (130, 125, 125, 250), + Modifier.SUPPORT: (40, 150, 80, 50, 120), + }, + Civ.CORDOBA: { + Modifier.CITY_CLUSTER: (1, 2, 1), # 10 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.GARDENS_AL_ANDALUS, 20), + (Wonder.LA_MEZQUITA, 20), + (Wonder.ALHAMBRA, 20), + (Wonder.DOME_ROCK, 10), + (Wonder.ALAZHAR, 5), + (Wonder.MOSQUE_OF_KAIROUAN, 10), + (Wonder.KOUTOUBIA_MOSQUE, 5), + (Wonder.NOTRE_DAME, -5), + (Wonder.STEPHANSDOM, -5), + (Wonder.SISTINE_CHAPEL, -5), + (Wonder.KRAK_DES_CHEVALIERS, -5), + (Wonder.LEANING_TOWER, -3), + (Wonder.GOLDEN_BULL, -3), + ], + Modifier.GROWTH: (150, 100, 100, 100, 100, 1), + Modifier.PRODUCTION: (180, 170, 130, 250), + Modifier.SUPPORT: (40, 150, 70, 40, 120), + }, + Civ.VENECIA: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.MARCO_POLO, 15), + (Wonder.SAN_MARCO, 20), + (Wonder.LANTERNA, 10), + (Wonder.LEONARDOS_WORKSHOP, 5), + (Wonder.LEANING_TOWER, 5), + (Wonder.GRAND_ARSENAL, 20), + (Wonder.GALATA_TOWER, 10), + (Wonder.FLORENCE_DUOMO, 10), + (Wonder.SAN_GIORGIO, 5), + ], + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 150), + Modifier.SUPPORT: (20, 100, 60, 50, 100), + }, + Civ.BURGUNDY: { + Modifier.CITY_CLUSTER: (2, 3, 3), # 12 + Modifier.CITY_WAR_DISTANCE: 1, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.MONASTERY_OF_CLUNY, 20), + (Wonder.NOTRE_DAME, 10), + (Wonder.VERSAILLES, 10), + (Wonder.MONT_SAINT_MICHEL, 10), + (Wonder.FONTAINEBLEAU, 5), + (Wonder.PALAIS_DES_PAPES, 5), + (Wonder.LOUVRE, 10), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (130, 120, 120, 150), + Modifier.SUPPORT: (30, 120, 70, 40, 100), + }, + Civ.GERMANY: { + Modifier.CITY_CLUSTER: (2, 3, 4), # 11 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [(Technology.PRINTING_PRESS, 200)], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.BRANDENBURG_GATE, 10), + (Wonder.IMPERIAL_DIET, 20), + (Wonder.COPERNICUS, 5), + (Wonder.GOLDEN_BULL, 10), + (Wonder.MONASTERY_OF_CLUNY, 5), + (Wonder.URANIBORG, 5), + (Wonder.THOMASKIRCHE, 20), + ], + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (120, 120, 100, 140), + Modifier.SUPPORT: (20, 100, 70, 40, 100), + }, + Civ.NOVGOROD: { + Modifier.CITY_CLUSTER: (1, 3, 2), # 6 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.ST_BASIL, 10), + (Wonder.SOPHIA_KIEV, 10), + (Wonder.ROUND_CHURCH, 5), + (Wonder.BOYANA_CHURCH, 5), + (Wonder.BORGUND_STAVE_CHURCH, 5), + (Wonder.PETERHOF_PALACE, 15), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (120, 120, 120, 150), + Modifier.SUPPORT: (30, 120, 70, 40, 100), + }, + Civ.NORWAY: { + Modifier.CITY_CLUSTER: (1, 2, 1), # 10 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.SHRINE_OF_UPPSALA, 20), + (Wonder.SAMOGITIAN_ALKAS, 5), + (Wonder.BORGUND_STAVE_CHURCH, 15), + (Wonder.URANIBORG, 10), + (Wonder.KALMAR_CASTLE, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (125, 125, 125, 130), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.KIEV: { + Modifier.CITY_CLUSTER: (1, 3, 2), # 6 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.SOPHIA_KIEV, 20), + (Wonder.ST_BASIL, 5), + (Wonder.ROUND_CHURCH, 5), + (Wonder.BOYANA_CHURCH, 5), + (Wonder.PETERHOF_PALACE, 10), + ], + Modifier.GROWTH: (150, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 120, 100, 140), + Modifier.SUPPORT: (30, 120, 60, 40, 100), + }, + Civ.HUNGARY: { + Modifier.CITY_CLUSTER: (2, 3, 3), # 12 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.PRESSBURG, 20), + (Wonder.GOLDEN_BULL, 20), + (Wonder.BIBLIOTHECA_CORVINIANA, 20), + (Wonder.KAZIMIERZ, 10), + (Wonder.COPERNICUS, 5), + (Wonder.STEPHANSDOM, 5), + ], + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (120, 120, 100, 150), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.CASTILE: { + Modifier.CITY_CLUSTER: (1, 2, 1), # 10 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [(Technology.ASTRONOMY, 200)], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.ESCORIAL, 20), + (Wonder.MAGELLANS_VOYAGE, 10), + (Wonder.TORRE_DEL_ORO, 20), + (Wonder.BELEM_TOWER, 10), + ], + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 130), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.DENMARK: { + Modifier.CITY_CLUSTER: (2, 3, 3), # 12 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.KALMAR_CASTLE, 10), + (Wonder.SHRINE_OF_UPPSALA, 20), + (Wonder.SAMOGITIAN_ALKAS, 5), + (Wonder.BORGUND_STAVE_CHURCH, 15), + (Wonder.URANIBORG, 20), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 110), + Modifier.SUPPORT: (20, 100, 80, 50, 100), + }, + Civ.SCOTLAND: { + Modifier.CITY_CLUSTER: (2, 3, 2), # 13 + Modifier.CITY_WAR_DISTANCE: 1, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.MAGNA_CARTA, 10), + (Wonder.WESTMINSTER, 10), + (Wonder.MONASTERY_OF_CLUNY, 5), + (Wonder.BORGUND_STAVE_CHURCH, 5), + (Wonder.MONT_SAINT_MICHEL, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 100, 100, 125), + Modifier.SUPPORT: (25, 100, 80, 50, 100), + }, + Civ.POLAND: { + Modifier.CITY_CLUSTER: (1, 3, 0), # 8 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.PRESSBURG, 10), + (Wonder.COPERNICUS, 10), + (Wonder.GOLDEN_BULL, 5), + (Wonder.KAZIMIERZ, 15), + (Wonder.JASNA_GORA, 20), + (Wonder.BRANDENBURG_GATE, 5), + ], + Modifier.GROWTH: (125, 100, 100, 100, 100, 2), + Modifier.PRODUCTION: (100, 120, 120, 140), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.GENOA: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.SAN_GIORGIO, 20), + (Wonder.LANTERNA, 20), + (Wonder.LEONARDOS_WORKSHOP, 5), + (Wonder.LEANING_TOWER, 5), + (Wonder.SAN_MARCO, 5), + (Wonder.MARCO_POLO, 5), + (Wonder.GRAND_ARSENAL, 10), + (Wonder.GALATA_TOWER, 20), + (Wonder.FLORENCE_DUOMO, 10), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (100, 100, 100, 130), + Modifier.SUPPORT: (20, 100, 60, 50, 100), + }, + Civ.MOROCCO: { + Modifier.CITY_CLUSTER: (1, 3, 2), # 6 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.GARDENS_AL_ANDALUS, 10), + (Wonder.LA_MEZQUITA, 10), + (Wonder.ALHAMBRA, 10), + (Wonder.DOME_ROCK, 10), + (Wonder.ALAZHAR, 5), + (Wonder.MOSQUE_OF_KAIROUAN, 10), + (Wonder.KOUTOUBIA_MOSQUE, 20), + (Wonder.NOTRE_DAME, -5), + (Wonder.STEPHANSDOM, -5), + (Wonder.SISTINE_CHAPEL, -5), + (Wonder.KRAK_DES_CHEVALIERS, -5), + (Wonder.LEANING_TOWER, -3), + (Wonder.GOLDEN_BULL, -3), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (120, 120, 120, 175), + Modifier.SUPPORT: (25, 100, 60, 40, 100), + }, + Civ.ENGLAND: { + Modifier.CITY_CLUSTER: (1, 2, 1), # 10 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [(Technology.PRINTING_PRESS, 150)], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.MAGNA_CARTA, 20), + (Wonder.WESTMINSTER, 20), + (Wonder.MONASTERY_OF_CLUNY, 5), + (Wonder.URANIBORG, 5), + (Wonder.TORRE_DEL_ORO, 5), + (Wonder.BELEM_TOWER, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 80, 100, 120), + Modifier.SUPPORT: (20, 100, 60, 40, 100), + }, + Civ.PORTUGAL: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [(Technology.ASTRONOMY, 200)], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.BELEM_TOWER, 20), + (Wonder.PALACIO_DA_PENA, 20), + (Wonder.MAGELLANS_VOYAGE, 20), + (Wonder.TORRE_DEL_ORO, 10), + ], + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (70, 90, 100, 110), + Modifier.SUPPORT: (20, 100, 70, 50, 100), + }, + Civ.ARAGON: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.MAGELLANS_VOYAGE, 10), + (Wonder.TORRE_DEL_ORO, 10), + (Wonder.ESCORIAL, 5), + (Wonder.BELEM_TOWER, 10), + ], + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (75, 90, 100, 125), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.SWEDEN: { + Modifier.CITY_CLUSTER: (1, 2, 2), # 9 + Modifier.CITY_WAR_DISTANCE: 3, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.KALMAR_CASTLE, 20), + (Wonder.SHRINE_OF_UPPSALA, 5), + (Wonder.BORGUND_STAVE_CHURCH, 15), + (Wonder.URANIBORG, 10), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 80, 100, 100), + Modifier.SUPPORT: (20, 90, 70, 40, 100), + }, + Civ.PRUSSIA: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.BRANDENBURG_GATE, 20), + (Wonder.THOMASKIRCHE, 10), + (Wonder.COPERNICUS, 5), + (Wonder.PRESSBURG, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (60, 80, 120, 90), + Modifier.SUPPORT: (20, 90, 70, 40, 100), + }, + Civ.LITHUANIA: { + Modifier.CITY_CLUSTER: (1, 3, 0), # 8 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.SAMOGITIAN_ALKAS, 20), + (Wonder.GEDIMINAS_TOWER, 20), + (Wonder.BORGUND_STAVE_CHURCH, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (70, 100, 110, 110), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.AUSTRIA: { + Modifier.CITY_CLUSTER: (2, 3, 3), # 12 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.STEPHANSDOM, 20), + (Wonder.THOMASKIRCHE, 15), + (Wonder.COPERNICUS, 5), + (Wonder.GOLDEN_BULL, 5), + (Wonder.PRESSBURG, 5), + (Building.AUSTRIAN_OPERA_HOUSE, 10), + ], + # Austria is squashed by other's culture, they need the boost + Modifier.GROWTH: (100, 200, 100, 100, 100, 3), + Modifier.PRODUCTION: (50, 80, 100, 80), + Modifier.SUPPORT: (20, 80, 80, 40, 100), + }, + Civ.OTTOMAN: { + Modifier.CITY_CLUSTER: (1, 3, 1), # 7 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.TOPKAPI_PALACE, 20), + (Wonder.BLUE_MOSQUE, 20), + (Wonder.SELIMIYE_MOSQUE, 20), + (Wonder.TOMB_AL_WALID, 10), + (Wonder.KIZIL_KULE, 10), + (Wonder.ALAZHAR, 5), + ], + Modifier.GROWTH: (100, 150, 100, 100, 100, 3), + Modifier.PRODUCTION: (60, 75, 100, 120), + Modifier.SUPPORT: (30, 100, 60, 40, 100), + }, + Civ.MOSCOW: { + Modifier.CITY_CLUSTER: (1, 4, 1), # 5 + Modifier.CITY_WAR_DISTANCE: 2, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.ST_BASIL, 20), + (Wonder.PETERHOF_PALACE, 20), + (Wonder.SOPHIA_KIEV, 5), + ], + Modifier.GROWTH: (100, 100, 100, 100, 100, 3), + Modifier.PRODUCTION: (80, 80, 100, 120), + Modifier.SUPPORT: (25, 100, 70, 40, 100), + }, + Civ.DUTCH: { + Modifier.CITY_CLUSTER: (2, 3, 1), # 14 + Modifier.CITY_WAR_DISTANCE: 1, + Modifier.TECH_PREFERENCE: [], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.BEURS, 20), + (Wonder.URANIBORG, 5), + (Wonder.THOMASKIRCHE, 5), + ], + Modifier.GROWTH: (100, 200, 60, 100, 50, 4), + Modifier.PRODUCTION: (80, 50, 50, 50), + Modifier.SUPPORT: (20, 70, 80, 50, 100), + }, + Civ.POPE: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [ + (Technology.PRINTING_PRESS, 10) # Pope shouldn't want this + ], + Modifier.BUILDING_PREFERENCE: [ + (Wonder.SISTINE_CHAPEL, 20), + (Wonder.PALAIS_DES_PAPES, 10), + (Wonder.LEANING_TOWER, 5), + (Wonder.FLORENCE_DUOMO, 5), + (Wonder.LEONARDOS_WORKSHOP, 5), + ], + Modifier.GROWTH: (150, 100, 100, 50, 100, 1), + Modifier.PRODUCTION: (300, 200, 100, 350), + Modifier.SUPPORT: (20, 150, 80, 50, 100), + }, + Civ.INDEPENDENT: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [], + Modifier.GROWTH: (100, 100, 100, 50, 100, 1), + # The peaceful ones + Modifier.PRODUCTION: (170, 100, 400, 200), + Modifier.SUPPORT: (10, 100, 10, 20, 100), + }, + Civ.INDEPENDENT_2: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [], + Modifier.GROWTH: (100, 100, 100, 50, 100, 1), + # The peaceful ones + Modifier.PRODUCTION: (170, 100, 400, 200), + Modifier.SUPPORT: (10, 100, 10, 20, 100), + }, + Civ.INDEPENDENT_3: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [], + Modifier.GROWTH: (100, 100, 100, 50, 100, 1), + # The warlike ones + Modifier.PRODUCTION: (125, 100, 600, 300), + Modifier.SUPPORT: (10, 100, 10, 20, 100), + }, + Civ.INDEPENDENT_4: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [], + Modifier.GROWTH: (100, 100, 100, 50, 100, 1), + # The warlike ones + Modifier.PRODUCTION: (125, 100, 600, 300), + Modifier.SUPPORT: (10, 100, 10, 20, 100), + }, + Civ.BARBARIAN: { + Modifier.CITY_CLUSTER: None, + Modifier.CITY_WAR_DISTANCE: None, + Modifier.TECH_PREFERENCE: [], + Modifier.GROWTH: (100, 100, 100, 50, 100, 1), + Modifier.PRODUCTION: (125, 100, 900, 350), + Modifier.SUPPORT: (10, 250, 10, 20, 100), + }, + }, ) CIV_STABILITY_AI_BONUS = CivDataMapper( @@ -1968,7 +1695,7 @@ Civ.OTTOMAN: 8, Civ.MOSCOW: 0, Civ.DUTCH: 0, - } + }, ) CIV_INITIAL_CONTACTS_500AD = CivDataMapper( @@ -1999,7 +1726,7 @@ Civ.OTTOMAN: [Civ.BYZANTIUM, Civ.ARABIA], Civ.MOSCOW: [Civ.KIEV, Civ.NOVGOROD, Civ.LITHUANIA], Civ.DUTCH: [Civ.ENGLAND, Civ.CASTILE, Civ.FRANCE, Civ.GERMANY, Civ.DENMARK, Civ.NORWAY], - } + }, ) CIV_INITIAL_CONTACTS_1200AD = CivDataMapper( @@ -2065,84 +1792,78 @@ Civ.NORWAY, Civ.SWEDEN, ], - } + }, ) -CIV_INITIAL_CONTACTS = ScenarioDataMapper( - {Scenario.i500AD: CIV_INITIAL_CONTACTS_500AD, Scenario.i1200AD: CIV_INITIAL_CONTACTS_1200AD} +CIV_INITIAL_CONTACTS = EnumDataMapper( + { + Scenario.i500AD: CIV_INITIAL_CONTACTS_500AD, + Scenario.i1200AD: CIV_INITIAL_CONTACTS_1200AD, + }, ) CIV_INITIAL_WARS_500AD = CivDataMapper( { - Civ.BYZANTIUM: CivDataMapper( - {Civ.ARABIA: 90, Civ.BULGARIA: 90, Civ.OTTOMAN: 90}, do_not_cast=True - ), - Civ.FRANCE: CivDataMapper({Civ.ENGLAND: 60}, do_not_cast=True), - Civ.ARABIA: CivDataMapper({Civ.OTTOMAN: 60}, do_not_cast=True), - Civ.BULGARIA: CivDataMapper({Civ.OTTOMAN: 70}, do_not_cast=True), - Civ.CORDOBA: CivDataMapper( - {Civ.CASTILE: 90, Civ.PORTUGAL: 90, Civ.ARAGON: 80}, do_not_cast=True - ), - Civ.NOVGOROD: CivDataMapper({Civ.PRUSSIA: 80}, do_not_cast=True), - Civ.DENMARK: CivDataMapper({Civ.SWEDEN: 60}, do_not_cast=True), - Civ.SCOTLAND: CivDataMapper({Civ.ENGLAND: 60}, do_not_cast=True), - Civ.POLAND: CivDataMapper({Civ.PRUSSIA: 20}, do_not_cast=True), - Civ.PRUSSIA: CivDataMapper({Civ.LITHUANIA: 80}, do_not_cast=True), - Civ.OTTOMAN: CivDataMapper( - { - Civ.INDEPENDENT: 50, - Civ.INDEPENDENT_2: 50, - Civ.INDEPENDENT_3: 50, - Civ.INDEPENDENT_4: 50, - }, - do_not_cast=True, - ), - } -).fill_missing_members(CivDataMapper({})) + Civ.BYZANTIUM: {Civ.ARABIA: 90, Civ.BULGARIA: 90, Civ.OTTOMAN: 90}, + Civ.FRANCE: {Civ.ENGLAND: 60}, + Civ.ARABIA: {Civ.OTTOMAN: 60}, + Civ.BULGARIA: {Civ.OTTOMAN: 70}, + Civ.CORDOBA: {Civ.CASTILE: 90, Civ.PORTUGAL: 90, Civ.ARAGON: 80}, + Civ.NOVGOROD: {Civ.PRUSSIA: 80}, + Civ.DENMARK: {Civ.SWEDEN: 60}, + Civ.SCOTLAND: {Civ.ENGLAND: 60}, + Civ.POLAND: {Civ.PRUSSIA: 20}, + Civ.PRUSSIA: {Civ.LITHUANIA: 80}, + Civ.OTTOMAN: { + Civ.INDEPENDENT: 50, + Civ.INDEPENDENT_2: 50, + Civ.INDEPENDENT_3: 50, + Civ.INDEPENDENT_4: 50, + }, + }, +).fill_missing_members({}) CIV_INITIAL_WARS_1200AD = CivDataMapper( { - Civ.BYZANTIUM: CivDataMapper( - {Civ.ARABIA: 20, Civ.BULGARIA: 70, Civ.VENECIA: 90, Civ.OTTOMAN: 90}, do_not_cast=True - ), - Civ.FRANCE: CivDataMapper({Civ.ARABIA: 30, Civ.ENGLAND: 90}, do_not_cast=True), - Civ.ARABIA: CivDataMapper( - { - Civ.GERMANY: 20, - Civ.HUNGARY: 20, - Civ.CASTILE: 30, - Civ.GENOA: 20, - Civ.ENGLAND: 20, - Civ.PORTUGAL: 20, - Civ.ARAGON: 10, - Civ.OTTOMAN: 60, - }, - do_not_cast=True, - ), - Civ.BULGARIA: CivDataMapper({Civ.OTTOMAN: 70}, do_not_cast=True), - Civ.CORDOBA: CivDataMapper({Civ.PORTUGAL: 90}, do_not_cast=True), - Civ.NOVGOROD: CivDataMapper({Civ.PRUSSIA: 80}, do_not_cast=True), - Civ.DENMARK: CivDataMapper({Civ.SWEDEN: 60}, do_not_cast=True), - Civ.SCOTLAND: CivDataMapper({Civ.ENGLAND: 60}, do_not_cast=True), - Civ.POLAND: CivDataMapper({Civ.PRUSSIA: 20}, do_not_cast=True), - Civ.MOROCCO: CivDataMapper( - {Civ.CASTILE: 90, Civ.PORTUGAL: 80, Civ.ARAGON: 80}, do_not_cast=True - ), - Civ.PRUSSIA: CivDataMapper({Civ.LITHUANIA: 80}, do_not_cast=True), - Civ.OTTOMAN: CivDataMapper( - { - Civ.INDEPENDENT: 50, - Civ.INDEPENDENT_2: 50, - Civ.INDEPENDENT_3: 50, - Civ.INDEPENDENT_4: 50, - }, - do_not_cast=True, - ), - } -).fill_missing_members(CivDataMapper({})) + Civ.BYZANTIUM: { + Civ.ARABIA: 20, + Civ.BULGARIA: 70, + Civ.VENECIA: 90, + Civ.OTTOMAN: 90, + }, + Civ.FRANCE: {Civ.ARABIA: 30, Civ.ENGLAND: 90}, + Civ.ARABIA: { + Civ.GERMANY: 20, + Civ.HUNGARY: 20, + Civ.CASTILE: 30, + Civ.GENOA: 20, + Civ.ENGLAND: 20, + Civ.PORTUGAL: 20, + Civ.ARAGON: 10, + Civ.OTTOMAN: 60, + }, + Civ.BULGARIA: {Civ.OTTOMAN: 70}, + Civ.CORDOBA: {Civ.PORTUGAL: 90}, + Civ.NOVGOROD: {Civ.PRUSSIA: 80}, + Civ.DENMARK: {Civ.SWEDEN: 60}, + Civ.SCOTLAND: {Civ.ENGLAND: 60}, + Civ.POLAND: {Civ.PRUSSIA: 20}, + Civ.MOROCCO: {Civ.CASTILE: 90, Civ.PORTUGAL: 80, Civ.ARAGON: 80}, + Civ.PRUSSIA: {Civ.LITHUANIA: 80}, + Civ.OTTOMAN: { + Civ.INDEPENDENT: 50, + Civ.INDEPENDENT_2: 50, + Civ.INDEPENDENT_3: 50, + Civ.INDEPENDENT_4: 50, + }, + }, +).fill_missing_members({}) -CIV_INITIAL_WARS = ScenarioDataMapper( - {Scenario.i500AD: CIV_INITIAL_WARS_500AD, Scenario.i1200AD: CIV_INITIAL_WARS_1200AD} +CIV_INITIAL_WARS = EnumDataMapper( + { + Scenario.i500AD: CIV_INITIAL_WARS_500AD, + Scenario.i1200AD: CIV_INITIAL_WARS_1200AD, + }, ) # Used for mercenaries (Higher number = less likely to hire) @@ -2182,7 +1903,7 @@ Civ.INDEPENDENT_3: 50, Civ.INDEPENDENT_4: 50, Civ.BARBARIAN: 50, - } + }, ) # Used for war during rise and respawn of new civs (Higher number means less chance for war) @@ -2217,7 +1938,7 @@ Civ.MOSCOW: 70, Civ.DUTCH: 80, Civ.POPE: 90, - } + }, ) # Matrix determines how likely the AI is to switch to Protestantism @@ -2257,7 +1978,7 @@ Civ.INDEPENDENT_3: 40, Civ.INDEPENDENT_4: 40, Civ.BARBARIAN: 40, - } + }, ) # Used to tune frequency of resurrections. @@ -2292,352 +2013,250 @@ Civ.MOSCOW: 80, Civ.DUTCH: 60, Civ.POPE: 90, - } + }, ) CIV_RELIGION_SPREADING_THRESHOLD = CivDataMapper( { - Civ.BYZANTIUM: ReligionDataMapper( - { - Religion.PROTESTANTISM: 100, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 70, - Religion.ORTHODOXY: 150, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.FRANCE: ReligionDataMapper( - { - Religion.PROTESTANTISM: 150, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 70, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.ARABIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 20, - Religion.ISLAM: 350, - Religion.CATHOLICISM: 50, - Religion.ORTHODOXY: 10, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.BULGARIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 80, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 80, - Religion.ORTHODOXY: 400, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.CORDOBA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 50, - Religion.ISLAM: 250, - Religion.CATHOLICISM: 80, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.VENECIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 90, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 200, - Religion.ORTHODOXY: 30, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.BURGUNDY: ReligionDataMapper( - { - Religion.PROTESTANTISM: 150, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 150, - Religion.ORTHODOXY: 70, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.GERMANY: ReligionDataMapper( - { - Religion.PROTESTANTISM: 450, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.NOVGOROD: ReligionDataMapper( - { - Religion.PROTESTANTISM: 60, - Religion.ISLAM: 40, - Religion.CATHOLICISM: 60, - Religion.ORTHODOXY: 500, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.NORWAY: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 150, - Religion.ORTHODOXY: 80, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.KIEV: ReligionDataMapper( - { - Religion.PROTESTANTISM: 90, - Religion.ISLAM: 60, - Religion.CATHOLICISM: 90, - Religion.ORTHODOXY: 400, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.HUNGARY: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 60, - Religion.CATHOLICISM: 200, - Religion.ORTHODOXY: 80, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.CASTILE: ReligionDataMapper( - { - Religion.PROTESTANTISM: 100, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 200, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.DENMARK: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 180, - Religion.ORTHODOXY: 80, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.SCOTLAND: ReligionDataMapper( - { - Religion.PROTESTANTISM: 450, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.POLAND: ReligionDataMapper( - { - Religion.PROTESTANTISM: 200, - Religion.ISLAM: 60, - Religion.CATHOLICISM: 450, - Religion.ORTHODOXY: 200, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.GENOA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 190, - Religion.ISLAM: 50, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 30, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.MOROCCO: ReligionDataMapper( - { - Religion.PROTESTANTISM: 50, - Religion.ISLAM: 250, - Religion.CATHOLICISM: 70, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.ENGLAND: ReligionDataMapper( - { - Religion.PROTESTANTISM: 450, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.PORTUGAL: ReligionDataMapper( - { - Religion.PROTESTANTISM: 200, - Religion.ISLAM: 80, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.ARAGON: ReligionDataMapper( - { - Religion.PROTESTANTISM: 150, - Religion.ISLAM: 80, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.SWEDEN: ReligionDataMapper( - { - Religion.PROTESTANTISM: 450, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 200, - Religion.ORTHODOXY: 50, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.PRUSSIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 450, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.LITHUANIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 80, - Religion.ISLAM: 80, - Religion.CATHOLICISM: 80, - Religion.ORTHODOXY: 80, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.AUSTRIA: ReligionDataMapper( - { - Religion.PROTESTANTISM: 200, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 250, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.OTTOMAN: ReligionDataMapper( - { - Religion.PROTESTANTISM: 20, - Religion.ISLAM: 350, - Religion.CATHOLICISM: 80, - Religion.ORTHODOXY: 80, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.MOSCOW: ReligionDataMapper( - { - Religion.PROTESTANTISM: 100, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 250, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.DUTCH: ReligionDataMapper( - { - Religion.PROTESTANTISM: 550, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 90, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.POPE: ReligionDataMapper( - { - Religion.PROTESTANTISM: 10, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 500, - Religion.ORTHODOXY: 10, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.INDEPENDENT: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 100, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 100, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_2: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 100, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 100, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_3: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 100, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 100, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.INDEPENDENT_4: ReligionDataMapper( - { - Religion.PROTESTANTISM: 250, - Religion.ISLAM: 100, - Religion.CATHOLICISM: 100, - Religion.ORTHODOXY: 100, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - Civ.BARBARIAN: ReligionDataMapper( - { - Religion.PROTESTANTISM: 20, - Religion.ISLAM: 20, - Religion.CATHOLICISM: 20, - Religion.ORTHODOXY: 20, - Religion.JUDAISM: 10, - }, - do_not_cast=True, - ), - } + Civ.BYZANTIUM: { + Religion.PROTESTANTISM: 100, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 70, + Religion.ORTHODOXY: 150, + Religion.JUDAISM: 10, + }, + Civ.FRANCE: { + Religion.PROTESTANTISM: 150, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 70, + Religion.JUDAISM: 10, + }, + Civ.ARABIA: { + Religion.PROTESTANTISM: 20, + Religion.ISLAM: 350, + Religion.CATHOLICISM: 50, + Religion.ORTHODOXY: 10, + Religion.JUDAISM: 10, + }, + Civ.BULGARIA: { + Religion.PROTESTANTISM: 80, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 80, + Religion.ORTHODOXY: 400, + Religion.JUDAISM: 10, + }, + Civ.CORDOBA: { + Religion.PROTESTANTISM: 50, + Religion.ISLAM: 250, + Religion.CATHOLICISM: 80, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.VENECIA: { + Religion.PROTESTANTISM: 90, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 200, + Religion.ORTHODOXY: 30, + Religion.JUDAISM: 10, + }, + Civ.BURGUNDY: { + Religion.PROTESTANTISM: 150, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 150, + Religion.ORTHODOXY: 70, + Religion.JUDAISM: 10, + }, + Civ.GERMANY: { + Religion.PROTESTANTISM: 450, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.NOVGOROD: { + Religion.PROTESTANTISM: 60, + Religion.ISLAM: 40, + Religion.CATHOLICISM: 60, + Religion.ORTHODOXY: 500, + Religion.JUDAISM: 10, + }, + Civ.NORWAY: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 150, + Religion.ORTHODOXY: 80, + Religion.JUDAISM: 10, + }, + Civ.KIEV: { + Religion.PROTESTANTISM: 90, + Religion.ISLAM: 60, + Religion.CATHOLICISM: 90, + Religion.ORTHODOXY: 400, + Religion.JUDAISM: 10, + }, + Civ.HUNGARY: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 60, + Religion.CATHOLICISM: 200, + Religion.ORTHODOXY: 80, + Religion.JUDAISM: 10, + }, + Civ.CASTILE: { + Religion.PROTESTANTISM: 100, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 200, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.DENMARK: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 180, + Religion.ORTHODOXY: 80, + Religion.JUDAISM: 10, + }, + Civ.SCOTLAND: { + Religion.PROTESTANTISM: 450, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.POLAND: { + Religion.PROTESTANTISM: 200, + Religion.ISLAM: 60, + Religion.CATHOLICISM: 450, + Religion.ORTHODOXY: 200, + Religion.JUDAISM: 10, + }, + Civ.GENOA: { + Religion.PROTESTANTISM: 190, + Religion.ISLAM: 50, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 30, + Religion.JUDAISM: 10, + }, + Civ.MOROCCO: { + Religion.PROTESTANTISM: 50, + Religion.ISLAM: 250, + Religion.CATHOLICISM: 70, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.ENGLAND: { + Religion.PROTESTANTISM: 450, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.PORTUGAL: { + Religion.PROTESTANTISM: 200, + Religion.ISLAM: 80, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.ARAGON: { + Religion.PROTESTANTISM: 150, + Religion.ISLAM: 80, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.SWEDEN: { + Religion.PROTESTANTISM: 450, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 200, + Religion.ORTHODOXY: 50, + Religion.JUDAISM: 10, + }, + Civ.PRUSSIA: { + Religion.PROTESTANTISM: 450, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.LITHUANIA: { + Religion.PROTESTANTISM: 80, + Religion.ISLAM: 80, + Religion.CATHOLICISM: 80, + Religion.ORTHODOXY: 80, + Religion.JUDAISM: 10, + }, + Civ.AUSTRIA: { + Religion.PROTESTANTISM: 200, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 250, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.OTTOMAN: { + Religion.PROTESTANTISM: 20, + Religion.ISLAM: 350, + Religion.CATHOLICISM: 80, + Religion.ORTHODOXY: 80, + Religion.JUDAISM: 10, + }, + Civ.MOSCOW: { + Religion.PROTESTANTISM: 100, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 250, + Religion.JUDAISM: 10, + }, + Civ.DUTCH: { + Religion.PROTESTANTISM: 550, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 90, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + Civ.POPE: { + Religion.PROTESTANTISM: 10, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 500, + Religion.ORTHODOXY: 10, + Religion.JUDAISM: 10, + }, + Civ.INDEPENDENT: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 100, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 100, + Religion.JUDAISM: 10, + }, + Civ.INDEPENDENT_2: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 100, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 100, + Religion.JUDAISM: 10, + }, + Civ.INDEPENDENT_3: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 100, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 100, + Religion.JUDAISM: 10, + }, + Civ.INDEPENDENT_4: { + Religion.PROTESTANTISM: 250, + Religion.ISLAM: 100, + Religion.CATHOLICISM: 100, + Religion.ORTHODOXY: 100, + Religion.JUDAISM: 10, + }, + Civ.BARBARIAN: { + Religion.PROTESTANTISM: 20, + Religion.ISLAM: 20, + Religion.CATHOLICISM: 20, + Religion.ORTHODOXY: 20, + Religion.JUDAISM: 10, + }, + }, ) # 100 and 80: don't purge any religions; 60: purge islam if christian, and all christian religions if muslim; 40: also judaism; 20: all but state religion @@ -2677,7 +2296,7 @@ Civ.INDEPENDENT_3: 100, Civ.INDEPENDENT_4: 100, Civ.BARBARIAN: 100, - } + }, ) # Late leader: (leader, starting date, threshold, era) @@ -2842,5 +2461,5 @@ LeaderType.EARLY: Leader.THE_POPE, LeaderType.LATE: None, }, - } + }, ) diff --git a/Assets/Python/data/LocationsData.py b/Assets/Python/data/LocationsData.py index ebab92958..f765423a7 100644 --- a/Assets/Python/data/LocationsData.py +++ b/Assets/Python/data/LocationsData.py @@ -18,12 +18,11 @@ from BaseStructures import ( CompanyDataMapper, DataMapper, - IntEnumDataMapper, - ScenarioDataMapper, + EnumDataMapper, CivDataMapper, ) -CITIES = IntEnumDataMapper( +CITIES = EnumDataMapper( { City.CONSTANTINOPLE: (81, 24), City.PARIS: (44, 46), @@ -130,22 +129,27 @@ City.TANAIS: (96, 38), City.REYKJAVIK: (2, 70), City.VALLETTA: (57, 14), - } + }, ) -ALTERNATE_CITIES_LOCATION = IntEnumDataMapper( +ALTERNATE_CITIES_LOCATION = EnumDataMapper( { City.TOULOUSE: [(40, 34)], City.INVERNESS: [(37, 65)], City.PAMPLONA: [(34, 33)], City.LUBECK: [(57, 53)], City.BRANDEBURG: [(60, 50)], - } + }, ) -INDY_CITIES_TO_BE_REDUCED = [City.INVERNESS, City.NORWICH, City.LEICESTER, City.UPPSALA] +INDY_CITIES_TO_BE_REDUCED = [ + City.INVERNESS, + City.NORWICH, + City.LEICESTER, + City.UPPSALA, +] -REGIONS = IntEnumDataMapper( +REGIONS = EnumDataMapper( { Region.IBERIA: [ Province.GALICIA, @@ -338,7 +342,7 @@ Province.THRAKESION, Province.OPSIKION, ], - } + }, ) COMPANY_REGION = CompanyDataMapper( @@ -494,11 +498,11 @@ Province.LA_MANCHA, Province.BALEARS, ], - } + }, ) # Used for the Colony panel -COLONY_LOCATIONS = IntEnumDataMapper( +COLONY_LOCATIONS = EnumDataMapper( { Colony.VINLAND: (275, 150), Colony.GOLD_COAST: (480, 335), @@ -522,10 +526,10 @@ Colony.PANAMA: (130, 325), Colony.LOUISIANA: (110, 220), Colony.PHILIPPINES: (960, 320), - } + }, ) -LAKE_LOCATIONS = IntEnumDataMapper( +LAKE_LOCATIONS = EnumDataMapper( { Lake.LOUGH_NEAGH: [(32, 61)], Lake.LAKE_BALATON: [(64, 36)], @@ -570,7 +574,7 @@ Lake.LAKE_NASIJARVI: [(72, 68)], Lake.LIMFJORDEN: [(55, 59)], Lake.TRONDHEIMFJORDEN: [(58, 71)], - } + }, ) CIV_CAPITAL_LOCATIONS = CivDataMapper( @@ -604,7 +608,7 @@ Civ.MOSCOW: CITIES[City.MOSCOW], Civ.DUTCH: CITIES[City.AMSTERDAM], Civ.POPE: CITIES[City.ROME], - } + }, ) # Used for respawning @@ -619,7 +623,7 @@ Civ.MOROCCO: [(25, 13)], # Rabat Civ.ARAGON: [(59, 24)], # Naples Civ.PRUSSIA: [(60, 48), (61, 48), (61, 49), (62, 48)], # Berlin - } + }, ) CIV_NEIGHBOURS = CivDataMapper( @@ -672,7 +676,7 @@ Civ.MOSCOW: [Civ.KIEV, Civ.NOVGOROD, Civ.POLAND, Civ.LITHUANIA], Civ.DUTCH: [Civ.GERMANY, Civ.ENGLAND, Civ.BURGUNDY, Civ.SCOTLAND], Civ.POPE: [Civ.VENECIA, Civ.GENOA], - } + }, ) # Reformation neighbours spread reformation choice to each other @@ -733,7 +737,7 @@ Civ.MOSCOW: [Civ.KIEV, Civ.POLAND, Civ.SWEDEN, Civ.LITHUANIA, Civ.NOVGOROD], Civ.DUTCH: [Civ.BURGUNDY, Civ.FRANCE, Civ.GERMANY, Civ.ENGLAND, Civ.SCOTLAND], Civ.POPE: [Civ.VENECIA, Civ.GENOA], - } + }, ) # Used for the Colony panel @@ -767,7 +771,7 @@ Civ.OTTOMAN: (590, 195), Civ.MOSCOW: (595, 110), Civ.DUTCH: (492, 131), - } + }, ) # Used for initial spawn location, no longer relevant for stability. @@ -992,7 +996,7 @@ Area.ADDITIONAL_TILES: [(46, 49), (47, 49), (48, 49), (49, 49), (50, 49)], }, Civ.POPE: {Area.TILE_MIN: (54, 25), Area.TILE_MAX: (58, 29)}, - } + }, ).apply(lambda d: parse_area_dict(d)) # Used for resurrection @@ -1366,7 +1370,7 @@ Area.EXCEPTION_TILES: [(51, 50), (52, 50)], }, Civ.POPE: {Area.TILE_MIN: (54, 25), Area.TILE_MAX: (58, 29)}, - } + }, ).apply(lambda d: parse_area_dict(d)) # Used in civ birth only @@ -1401,7 +1405,7 @@ Civ.MOSCOW: {Area.TILE_MIN: (83, 51), Area.TILE_MAX: (93, 61)}, Civ.DUTCH: {Area.TILE_MIN: (44, 47), Area.TILE_MAX: (54, 57)}, Civ.POPE: {Area.TILE_MIN: (54, 25), Area.TILE_MAX: (58, 29)}, - } + }, ).apply(lambda d: parse_area_dict(d)) CIV_AREAS = CivDataMapper( @@ -1421,958 +1425,923 @@ CIV_PROVINCES = CivDataMapper( { - Civ.BYZANTIUM: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.CONSTANTINOPLE, - Province.THRACE, - Province.THESSALY, - Province.THESSALONIKI, - Province.EPIRUS, - Province.MOREA, - Province.OPSIKION, - Province.PAPHLAGONIA, - Province.THRAKESION, - Province.CILICIA, - Province.ANATOLIKON, - Province.ARMENIAKON, - Province.CHARSIANON, - Province.COLONEA, - Province.ANTIOCHIA, - ], - ProvinceType.HISTORICAL: [ - Province.MOESIA, - Province.SERBIA, - Province.MACEDONIA, - Province.ARBERIA, - Province.CYPRUS, - Province.CRETE, - Province.RHODES, - Province.SYRIA, - Province.LEBANON, - Province.JERUSALEM, - Province.EGYPT, - Province.CYRENAICA, - ], - ProvinceType.POTENTIAL: [ - Province.CALABRIA, - Province.APULIA, - Province.SICILY, - Province.MALTA, - Province.TRIPOLITANIA, - Province.IFRIQIYA, - ], - ProvinceType.CONTESTED: [ - Province.CRIMEA, - Province.ARABIA, - Province.BOSNIA, - Province.SLAVONIA, - Province.DALMATIA, - Province.VERONA, - Province.LOMBARDY, - Province.LIGURIA, - Province.TUSCANY, - Province.LATIUM, - Province.SARDINIA, - Province.CORSICA, - ], - }, - do_not_cast=True, - ), - Civ.FRANCE: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.ILE_DE_FRANCE, Province.ORLEANS, Province.CHAMPAGNE], - ProvinceType.HISTORICAL: [ - Province.PICARDY, - Province.NORMANDY, - Province.AQUITAINE, - Province.LORRAINE, - ], - ProvinceType.POTENTIAL: [ - Province.BRETAGNE, - Province.PROVENCE, - Province.BURGUNDY, - Province.FLANDERS, - ], - ProvinceType.CONTESTED: [ - Province.CATALONIA, - Province.ARAGON, - Province.NAVARRE, - Province.NETHERLANDS, - Province.BAVARIA, - Province.SAXONY, - Province.SWABIA, - Province.FRANCONIA, - Province.LOMBARDY, - Province.LIGURIA, - Province.CORSICA, - ], - }, - do_not_cast=True, - ), - Civ.ARABIA: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.SYRIA, - Province.LEBANON, - Province.JERUSALEM, - Province.ARABIA, - ], - ProvinceType.HISTORICAL: [Province.EGYPT, Province.CYRENAICA], - ProvinceType.POTENTIAL: [ - Province.ANTIOCHIA, - Province.CYPRUS, - Province.IFRIQIYA, - Province.TRIPOLITANIA, - ], - ProvinceType.CONTESTED: [ - Province.ORAN, - Province.ALGIERS, - Province.SICILY, - Province.MALTA, - Province.CRETE, - Province.RHODES, - Province.CILICIA, - ], - }, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.MOESIA], - ProvinceType.HISTORICAL: [Province.MACEDONIA, Province.WALLACHIA], - ProvinceType.POTENTIAL: [Province.THRACE, Province.THESSALONIKI], - ProvinceType.CONTESTED: [ - Province.SERBIA, - Province.BANAT, - Province.EPIRUS, - Province.ARBERIA, - Province.CONSTANTINOPLE, - ], - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.ANDALUSIA, Province.VALENCIA, Province.LA_MANCHA], - ProvinceType.HISTORICAL: [Province.TETOUAN], - ProvinceType.POTENTIAL: [ - Province.MOROCCO, - Province.FEZ, - Province.MARRAKESH, - Province.CATALONIA, - Province.ARAGON, - Province.BALEARS, - ], - ProvinceType.CONTESTED: [ - Province.LEON, - Province.LUSITANIA, - Province.NAVARRE, - Province.CASTILE, - Province.ORAN, - ], - }, - do_not_cast=True, - ), - Civ.VENECIA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.VERONA], - ProvinceType.HISTORICAL: [Province.DALMATIA], - ProvinceType.POTENTIAL: [ - Province.TUSCANY, - Province.ARBERIA, - Province.CRETE, - Province.CYPRUS, - ], - ProvinceType.CONTESTED: [ - Province.EPIRUS, - Province.MOREA, - Province.RHODES, - Province.CONSTANTINOPLE, - ], - }, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.BURGUNDY], - ProvinceType.HISTORICAL: [Province.PROVENCE, Province.FLANDERS], - ProvinceType.POTENTIAL: [ - Province.CHAMPAGNE, - Province.PICARDY, - Province.ILE_DE_FRANCE, - Province.AQUITAINE, - Province.ORLEANS, - Province.NORMANDY, - ], - ProvinceType.CONTESTED: [ - Province.LORRAINE, - Province.SWABIA, - Province.LOMBARDY, - Province.LIGURIA, - Province.BRETAGNE, - ], - }, - do_not_cast=True, - ), - Civ.GERMANY: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.FRANCONIA, - Province.LORRAINE, - Province.BAVARIA, - Province.SWABIA, - Province.SAXONY, - ], - ProvinceType.HISTORICAL: [Province.BRANDENBURG], - ProvinceType.POTENTIAL: [ - Province.BOHEMIA, - Province.HOLSTEIN, - Province.POMERANIA, - Province.NETHERLANDS, - Province.FLANDERS, - Province.LOMBARDY, - ], - ProvinceType.CONTESTED: [ - Province.CHAMPAGNE, - Province.PICARDY, - Province.BURGUNDY, - Province.LIGURIA, - Province.VERONA, - Province.TUSCANY, - Province.AUSTRIA, - Province.MORAVIA, - Province.SILESIA, - Province.GREATER_POLAND, - Province.CARINTHIA, - ], - }, - do_not_cast=True, - ), - Civ.NOVGOROD: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.NOVGOROD, Province.KARELIA], - ProvinceType.HISTORICAL: [Province.ROSTOV, Province.VOLOGDA], - ProvinceType.POTENTIAL: [Province.ESTONIA, Province.OSTERLAND], - ProvinceType.CONTESTED: [Province.SMOLENSK, Province.POLOTSK, Province.LIVONIA], - }, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.NORWAY, Province.VESTFOLD], - ProvinceType.HISTORICAL: [Province.ICELAND], - ProvinceType.POTENTIAL: [Province.THE_ISLES, Province.JAMTLAND], - ProvinceType.CONTESTED: [ - Province.SCOTLAND, - Province.NORTHUMBRIA, - Province.IRELAND, - Province.NORMANDY, - Province.SVEALAND, - Province.NORRLAND, - Province.SICILY, - Province.APULIA, - Province.CALABRIA, - Province.MALTA, - ], - }, - do_not_cast=True, - ), - Civ.KIEV: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.KIEV, - Province.SLOBODA, - Province.PEREYASLAVL, - Province.CHERNIGOV, - ], - ProvinceType.HISTORICAL: [Province.PODOLIA, Province.VOLHYNIA], - ProvinceType.POTENTIAL: [Province.MINSK, Province.SMOLENSK, Province.ZAPORIZHIA], - ProvinceType.CONTESTED: [ - Province.MOLDOVA, - Province.GALICJA, - Province.BREST, - Province.POLOTSK, - Province.NOVGOROD, - Province.MOSCOW, - Province.MUROM, - Province.SIMBIRSK, - Province.CRIMEA, - Province.DONETS, - Province.KUBAN, - ], - }, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.HUNGARY, - Province.UPPER_HUNGARY, - Province.PANNONIA, - Province.TRANSYLVANIA, - ], - ProvinceType.HISTORICAL: [ - Province.SLAVONIA, - Province.BANAT, - Province.BOSNIA, - Province.DALMATIA, - ], - ProvinceType.POTENTIAL: [Province.MORAVIA, Province.AUSTRIA, Province.CARINTHIA], - ProvinceType.CONTESTED: [ - Province.SERBIA, - Province.WALLACHIA, - Province.MOLDOVA, - Province.GALICJA, - Province.BAVARIA, - Province.BOHEMIA, - Province.SILESIA, - ], - }, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.LEON, Province.GALICIA, Province.CASTILE], - ProvinceType.HISTORICAL: [], - ProvinceType.POTENTIAL: [ - Province.NAVARRE, - Province.ANDALUSIA, - Province.VALENCIA, - Province.LA_MANCHA, - Province.CANARIES, - Province.MADEIRA, - ], - ProvinceType.CONTESTED: [ - Province.LUSITANIA, - Province.CATALONIA, - Province.ARAGON, - Province.BALEARS, - Province.AQUITAINE, - Province.PROVENCE, - Province.TETOUAN, - Province.FEZ, - Province.ORAN, - Province.ALGIERS, - Province.SARDINIA, - Province.CORSICA, - Province.AZORES, - Province.SICILY, - Province.CALABRIA, - Province.APULIA, - ], - }, - do_not_cast=True, - ), - Civ.DENMARK: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.DENMARK, Province.SKANELAND], - ProvinceType.HISTORICAL: [], - ProvinceType.POTENTIAL: [Province.ESTONIA, Province.GOTLAND, Province.HOLSTEIN], - ProvinceType.CONTESTED: [ - Province.GOTALAND, - Province.SVEALAND, - Province.NORTHUMBRIA, - Province.MERCIA, - Province.EAST_ANGLIA, - Province.LONDON, - Province.BRANDENBURG, - Province.NORWAY, - Province.VESTFOLD, - Province.NORMANDY, - Province.SICILY, - Province.APULIA, - Province.CALABRIA, - Province.MALTA, - ], - }, - do_not_cast=True, - ), - Civ.SCOTLAND: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.SCOTLAND], - ProvinceType.HISTORICAL: [Province.THE_ISLES], - ProvinceType.POTENTIAL: [Province.NORTHUMBRIA], - ProvinceType.CONTESTED: [Province.IRELAND, Province.MERCIA, Province.WALES], - }, - do_not_cast=True, - ), - Civ.POLAND: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.GREATER_POLAND, - Province.LESSER_POLAND, - Province.MASOVIA, - ], - ProvinceType.HISTORICAL: [Province.BREST, Province.GALICJA], - ProvinceType.POTENTIAL: [Province.POMERANIA, Province.SILESIA, Province.SUVALKIJA], - ProvinceType.CONTESTED: [ - Province.PRUSSIA, - Province.LITHUANIA, - Province.POLOTSK, - Province.MINSK, - Province.VOLHYNIA, - Province.PODOLIA, - Province.MOLDOVA, - Province.KIEV, - ], - }, - do_not_cast=True, - ), - Civ.GENOA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.LIGURIA], - ProvinceType.HISTORICAL: [Province.CORSICA, Province.SARDINIA], - ProvinceType.POTENTIAL: [ - Province.SICILY, - Province.MALTA, - Province.LOMBARDY, - Province.TUSCANY, - Province.RHODES, - Province.CRIMEA, - ], - ProvinceType.CONTESTED: [ - Province.CONSTANTINOPLE, - Province.CRETE, - Province.CYPRUS, - Province.MOREA, - Province.ARMENIAKON, - Province.PAPHLAGONIA, - Province.THRAKESION, - ], - }, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.MARRAKESH, Province.MOROCCO, Province.FEZ], - ProvinceType.HISTORICAL: [Province.TETOUAN], - ProvinceType.POTENTIAL: [Province.ORAN, Province.ALGIERS], - ProvinceType.CONTESTED: [ - Province.IFRIQIYA, - Province.ANDALUSIA, - Province.VALENCIA, - Province.TRIPOLITANIA, - Province.SAHARA, - ], - }, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.LONDON, - Province.EAST_ANGLIA, - Province.MERCIA, - Province.WESSEX, - ], - ProvinceType.HISTORICAL: [Province.NORTHUMBRIA], - ProvinceType.POTENTIAL: [Province.WALES], - ProvinceType.CONTESTED: [ - Province.ILE_DE_FRANCE, - Province.BRETAGNE, - Province.AQUITAINE, - Province.ORLEANS, - Province.CHAMPAGNE, - Province.FLANDERS, - Province.NORMANDY, - Province.PICARDY, - Province.SCOTLAND, - Province.THE_ISLES, - Province.IRELAND, - ], - }, - do_not_cast=True, - ), - Civ.PORTUGAL: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.LUSITANIA], - ProvinceType.HISTORICAL: [Province.AZORES], - ProvinceType.POTENTIAL: [Province.MADEIRA, Province.CANARIES, Province.ANDALUSIA], - ProvinceType.CONTESTED: [ - Province.MOROCCO, - Province.TETOUAN, - Province.LEON, - Province.GALICIA, - ], - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.ARAGON, - Province.CATALONIA, - Province.BALEARS, - Province.VALENCIA, - ], - ProvinceType.HISTORICAL: [], - ProvinceType.POTENTIAL: [ - Province.NAVARRE, - Province.ANDALUSIA, - Province.LA_MANCHA, - Province.SARDINIA, - Province.SICILY, - Province.APULIA, - Province.CALABRIA, - Province.MALTA, - ], - ProvinceType.CONTESTED: [ - Province.CASTILE, - Province.PROVENCE, - Province.CORSICA, - Province.THESSALY, - ], - }, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.NORRLAND, Province.SVEALAND], - ProvinceType.HISTORICAL: [Province.GOTALAND, Province.GOTLAND], - ProvinceType.POTENTIAL: [ - Province.JAMTLAND, - Province.OSTERLAND, - Province.KARELIA, - Province.ESTONIA, - ], - ProvinceType.CONTESTED: [ - Province.SKANELAND, - Province.VESTFOLD, - Province.POMERANIA, - Province.LIVONIA, - Province.PRUSSIA, - Province.NOVGOROD, - ], - }, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.PRUSSIA], - ProvinceType.HISTORICAL: [], - ProvinceType.POTENTIAL: [Province.POMERANIA, Province.LIVONIA], - ProvinceType.CONTESTED: [ - Province.BRANDENBURG, - Province.ESTONIA, - Province.GOTLAND, - Province.LITHUANIA, - Province.SUVALKIJA, - ], - }, - do_not_cast=True, - ), - Civ.LITHUANIA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.LITHUANIA], - ProvinceType.HISTORICAL: [Province.SUVALKIJA, Province.MINSK, Province.POLOTSK], - ProvinceType.POTENTIAL: [ - Province.BREST, - Province.PODOLIA, - Province.VOLHYNIA, - Province.KIEV, - ], - ProvinceType.CONTESTED: [ - Province.GREATER_POLAND, - Province.LESSER_POLAND, - Province.MASOVIA, - Province.GALICJA, - Province.SLOBODA, - Province.PEREYASLAVL, - Province.LIVONIA, - Province.ESTONIA, - Province.NOVGOROD, - Province.SMOLENSK, - Province.CHERNIGOV, - ], - }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.AUSTRIA, Province.CARINTHIA], - ProvinceType.HISTORICAL: [Province.BOHEMIA, Province.MORAVIA], - ProvinceType.POTENTIAL: [ - Province.BAVARIA, - Province.SILESIA, - Province.PANNONIA, - Province.UPPER_HUNGARY, - ], - ProvinceType.CONTESTED: [ - Province.VERONA, - Province.HUNGARY, - Province.TRANSYLVANIA, - Province.SLAVONIA, - Province.DALMATIA, - Province.LESSER_POLAND, - Province.GALICJA, - Province.NETHERLANDS, - Province.FLANDERS, - ], - }, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.OPSIKION, - Province.THRAKESION, - Province.PAPHLAGONIA, - Province.ANATOLIKON, - Province.CONSTANTINOPLE, - ], - ProvinceType.HISTORICAL: [ - Province.THRACE, - Province.ARMENIAKON, - Province.CHARSIANON, - Province.CILICIA, - ], - ProvinceType.POTENTIAL: [ - Province.COLONEA, - Province.ANTIOCHIA, - Province.SYRIA, - Province.LEBANON, - Province.JERUSALEM, - Province.EGYPT, - Province.ARABIA, - Province.MACEDONIA, - Province.THESSALONIKI, - Province.MOESIA, - Province.CYPRUS, - Province.RHODES, - ], - ProvinceType.CONTESTED: [ - Province.THESSALY, - Province.EPIRUS, - Province.MOREA, - Province.ARBERIA, - Province.WALLACHIA, - Province.SERBIA, - Province.BOSNIA, - Province.BANAT, - Province.SLAVONIA, - Province.PANNONIA, - Province.HUNGARY, - Province.TRANSYLVANIA, - Province.MOLDOVA, - Province.CRIMEA, - Province.CRETE, - Province.CYRENAICA, - Province.TRIPOLITANIA, - Province.KUBAN, - ], - }, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - { - ProvinceType.CORE: [ - Province.MOSCOW, - Province.MUROM, - Province.ROSTOV, - Province.SMOLENSK, - ], - ProvinceType.HISTORICAL: [ - Province.NIZHNYNOVGOROD, - Province.SIMBIRSK, - Province.PEREYASLAVL, - Province.CHERNIGOV, - ], - ProvinceType.POTENTIAL: [ - Province.NOVGOROD, - Province.VOLOGDA, - Province.KIEV, - Province.MINSK, - Province.POLOTSK, - Province.VOLHYNIA, - Province.PODOLIA, - Province.DONETS, - Province.SLOBODA, - Province.ZAPORIZHIA, - ], - ProvinceType.CONTESTED: [ - Province.CRIMEA, - Province.MOLDOVA, - Province.GALICJA, - Province.KUBAN, - Province.BREST, - Province.LITHUANIA, - Province.LIVONIA, - Province.ESTONIA, - Province.KARELIA, - Province.OSTERLAND, - Province.PRUSSIA, - Province.SUVALKIJA, - ], - }, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - ProvinceType.CORE: [Province.NETHERLANDS], - ProvinceType.HISTORICAL: [Province.FLANDERS], - ProvinceType.POTENTIAL: [], - ProvinceType.CONTESTED: [], - }, - do_not_cast=True, - ), - } + Civ.BYZANTIUM: { + ProvinceType.CORE: [ + Province.CONSTANTINOPLE, + Province.THRACE, + Province.THESSALY, + Province.THESSALONIKI, + Province.EPIRUS, + Province.MOREA, + Province.OPSIKION, + Province.PAPHLAGONIA, + Province.THRAKESION, + Province.CILICIA, + Province.ANATOLIKON, + Province.ARMENIAKON, + Province.CHARSIANON, + Province.COLONEA, + Province.ANTIOCHIA, + ], + ProvinceType.HISTORICAL: [ + Province.MOESIA, + Province.SERBIA, + Province.MACEDONIA, + Province.ARBERIA, + Province.CYPRUS, + Province.CRETE, + Province.RHODES, + Province.SYRIA, + Province.LEBANON, + Province.JERUSALEM, + Province.EGYPT, + Province.CYRENAICA, + ], + ProvinceType.POTENTIAL: [ + Province.CALABRIA, + Province.APULIA, + Province.SICILY, + Province.MALTA, + Province.TRIPOLITANIA, + Province.IFRIQIYA, + ], + ProvinceType.CONTESTED: [ + Province.CRIMEA, + Province.ARABIA, + Province.BOSNIA, + Province.SLAVONIA, + Province.DALMATIA, + Province.VERONA, + Province.LOMBARDY, + Province.LIGURIA, + Province.TUSCANY, + Province.LATIUM, + Province.SARDINIA, + Province.CORSICA, + ], + }, + Civ.FRANCE: { + ProvinceType.CORE: [ + Province.ILE_DE_FRANCE, + Province.ORLEANS, + Province.CHAMPAGNE, + ], + ProvinceType.HISTORICAL: [ + Province.PICARDY, + Province.NORMANDY, + Province.AQUITAINE, + Province.LORRAINE, + ], + ProvinceType.POTENTIAL: [ + Province.BRETAGNE, + Province.PROVENCE, + Province.BURGUNDY, + Province.FLANDERS, + ], + ProvinceType.CONTESTED: [ + Province.CATALONIA, + Province.ARAGON, + Province.NAVARRE, + Province.NETHERLANDS, + Province.BAVARIA, + Province.SAXONY, + Province.SWABIA, + Province.FRANCONIA, + Province.LOMBARDY, + Province.LIGURIA, + Province.CORSICA, + ], + }, + Civ.ARABIA: { + ProvinceType.CORE: [ + Province.SYRIA, + Province.LEBANON, + Province.JERUSALEM, + Province.ARABIA, + ], + ProvinceType.HISTORICAL: [ + Province.EGYPT, + Province.CYRENAICA, + ], + ProvinceType.POTENTIAL: [ + Province.ANTIOCHIA, + Province.CYPRUS, + Province.IFRIQIYA, + Province.TRIPOLITANIA, + ], + ProvinceType.CONTESTED: [ + Province.ORAN, + Province.ALGIERS, + Province.SICILY, + Province.MALTA, + Province.CRETE, + Province.RHODES, + Province.CILICIA, + ], + }, + Civ.BULGARIA: { + ProvinceType.CORE: [Province.MOESIA], + ProvinceType.HISTORICAL: [ + Province.MACEDONIA, + Province.WALLACHIA, + ], + ProvinceType.POTENTIAL: [Province.THRACE, Province.THESSALONIKI], + ProvinceType.CONTESTED: [ + Province.SERBIA, + Province.BANAT, + Province.EPIRUS, + Province.ARBERIA, + Province.CONSTANTINOPLE, + ], + }, + Civ.CORDOBA: { + ProvinceType.CORE: [ + Province.ANDALUSIA, + Province.VALENCIA, + Province.LA_MANCHA, + ], + ProvinceType.HISTORICAL: [Province.TETOUAN], + ProvinceType.POTENTIAL: [ + Province.MOROCCO, + Province.FEZ, + Province.MARRAKESH, + Province.CATALONIA, + Province.ARAGON, + Province.BALEARS, + ], + ProvinceType.CONTESTED: [ + Province.LEON, + Province.LUSITANIA, + Province.NAVARRE, + Province.CASTILE, + Province.ORAN, + ], + }, + Civ.VENECIA: { + ProvinceType.CORE: [Province.VERONA], + ProvinceType.HISTORICAL: [Province.DALMATIA], + ProvinceType.POTENTIAL: [ + Province.TUSCANY, + Province.ARBERIA, + Province.CRETE, + Province.CYPRUS, + ], + ProvinceType.CONTESTED: [ + Province.EPIRUS, + Province.MOREA, + Province.RHODES, + Province.CONSTANTINOPLE, + ], + }, + Civ.BURGUNDY: { + ProvinceType.CORE: [Province.BURGUNDY], + ProvinceType.HISTORICAL: [ + Province.PROVENCE, + Province.FLANDERS, + ], + ProvinceType.POTENTIAL: [ + Province.CHAMPAGNE, + Province.PICARDY, + Province.ILE_DE_FRANCE, + Province.AQUITAINE, + Province.ORLEANS, + Province.NORMANDY, + ], + ProvinceType.CONTESTED: [ + Province.LORRAINE, + Province.SWABIA, + Province.LOMBARDY, + Province.LIGURIA, + Province.BRETAGNE, + ], + }, + Civ.GERMANY: { + ProvinceType.CORE: [ + Province.FRANCONIA, + Province.LORRAINE, + Province.BAVARIA, + Province.SWABIA, + Province.SAXONY, + ], + ProvinceType.HISTORICAL: [Province.BRANDENBURG], + ProvinceType.POTENTIAL: [ + Province.BOHEMIA, + Province.HOLSTEIN, + Province.POMERANIA, + Province.NETHERLANDS, + Province.FLANDERS, + Province.LOMBARDY, + ], + ProvinceType.CONTESTED: [ + Province.CHAMPAGNE, + Province.PICARDY, + Province.BURGUNDY, + Province.LIGURIA, + Province.VERONA, + Province.TUSCANY, + Province.AUSTRIA, + Province.MORAVIA, + Province.SILESIA, + Province.GREATER_POLAND, + Province.CARINTHIA, + ], + }, + Civ.NOVGOROD: { + ProvinceType.CORE: [ + Province.NOVGOROD, + Province.KARELIA, + ], + ProvinceType.HISTORICAL: [ + Province.ROSTOV, + Province.VOLOGDA, + ], + ProvinceType.POTENTIAL: [ + Province.ESTONIA, + Province.OSTERLAND, + ], + ProvinceType.CONTESTED: [ + Province.SMOLENSK, + Province.POLOTSK, + Province.LIVONIA, + ], + }, + Civ.NORWAY: { + ProvinceType.CORE: [ + Province.NORWAY, + Province.VESTFOLD, + ], + ProvinceType.HISTORICAL: [Province.ICELAND], + ProvinceType.POTENTIAL: [ + Province.THE_ISLES, + Province.JAMTLAND, + ], + ProvinceType.CONTESTED: [ + Province.SCOTLAND, + Province.NORTHUMBRIA, + Province.IRELAND, + Province.NORMANDY, + Province.SVEALAND, + Province.NORRLAND, + Province.SICILY, + Province.APULIA, + Province.CALABRIA, + Province.MALTA, + ], + }, + Civ.KIEV: { + ProvinceType.CORE: [ + Province.KIEV, + Province.SLOBODA, + Province.PEREYASLAVL, + Province.CHERNIGOV, + ], + ProvinceType.HISTORICAL: [ + Province.PODOLIA, + Province.VOLHYNIA, + ], + ProvinceType.POTENTIAL: [ + Province.MINSK, + Province.SMOLENSK, + Province.ZAPORIZHIA, + ], + ProvinceType.CONTESTED: [ + Province.MOLDOVA, + Province.GALICJA, + Province.BREST, + Province.POLOTSK, + Province.NOVGOROD, + Province.MOSCOW, + Province.MUROM, + Province.SIMBIRSK, + Province.CRIMEA, + Province.DONETS, + Province.KUBAN, + ], + }, + Civ.HUNGARY: { + ProvinceType.CORE: [ + Province.HUNGARY, + Province.UPPER_HUNGARY, + Province.PANNONIA, + Province.TRANSYLVANIA, + ], + ProvinceType.HISTORICAL: [ + Province.SLAVONIA, + Province.BANAT, + Province.BOSNIA, + Province.DALMATIA, + ], + ProvinceType.POTENTIAL: [ + Province.MORAVIA, + Province.AUSTRIA, + Province.CARINTHIA, + ], + ProvinceType.CONTESTED: [ + Province.SERBIA, + Province.WALLACHIA, + Province.MOLDOVA, + Province.GALICJA, + Province.BAVARIA, + Province.BOHEMIA, + Province.SILESIA, + ], + }, + Civ.CASTILE: { + ProvinceType.CORE: [ + Province.LEON, + Province.GALICIA, + Province.CASTILE, + ], + ProvinceType.HISTORICAL: [], + ProvinceType.POTENTIAL: [ + Province.NAVARRE, + Province.ANDALUSIA, + Province.VALENCIA, + Province.LA_MANCHA, + Province.CANARIES, + Province.MADEIRA, + ], + ProvinceType.CONTESTED: [ + Province.LUSITANIA, + Province.CATALONIA, + Province.ARAGON, + Province.BALEARS, + Province.AQUITAINE, + Province.PROVENCE, + Province.TETOUAN, + Province.FEZ, + Province.ORAN, + Province.ALGIERS, + Province.SARDINIA, + Province.CORSICA, + Province.AZORES, + Province.SICILY, + Province.CALABRIA, + Province.APULIA, + ], + }, + Civ.DENMARK: { + ProvinceType.CORE: [ + Province.DENMARK, + Province.SKANELAND, + ], + ProvinceType.HISTORICAL: [], + ProvinceType.POTENTIAL: [ + Province.ESTONIA, + Province.GOTLAND, + Province.HOLSTEIN, + ], + ProvinceType.CONTESTED: [ + Province.GOTALAND, + Province.SVEALAND, + Province.NORTHUMBRIA, + Province.MERCIA, + Province.EAST_ANGLIA, + Province.LONDON, + Province.BRANDENBURG, + Province.NORWAY, + Province.VESTFOLD, + Province.NORMANDY, + Province.SICILY, + Province.APULIA, + Province.CALABRIA, + Province.MALTA, + ], + }, + Civ.SCOTLAND: { + ProvinceType.CORE: [Province.SCOTLAND], + ProvinceType.HISTORICAL: [Province.THE_ISLES], + ProvinceType.POTENTIAL: [Province.NORTHUMBRIA], + ProvinceType.CONTESTED: [ + Province.IRELAND, + Province.MERCIA, + Province.WALES, + ], + }, + Civ.POLAND: { + ProvinceType.CORE: [ + Province.GREATER_POLAND, + Province.LESSER_POLAND, + Province.MASOVIA, + ], + ProvinceType.HISTORICAL: [ + Province.BREST, + Province.GALICJA, + ], + ProvinceType.POTENTIAL: [ + Province.POMERANIA, + Province.SILESIA, + Province.SUVALKIJA, + ], + ProvinceType.CONTESTED: [ + Province.PRUSSIA, + Province.LITHUANIA, + Province.POLOTSK, + Province.MINSK, + Province.VOLHYNIA, + Province.PODOLIA, + Province.MOLDOVA, + Province.KIEV, + ], + }, + Civ.GENOA: { + ProvinceType.CORE: [ + Province.LIGURIA, + ], + ProvinceType.HISTORICAL: [ + Province.CORSICA, + Province.SARDINIA, + ], + ProvinceType.POTENTIAL: [ + Province.SICILY, + Province.MALTA, + Province.LOMBARDY, + Province.TUSCANY, + Province.RHODES, + Province.CRIMEA, + ], + ProvinceType.CONTESTED: [ + Province.CONSTANTINOPLE, + Province.CRETE, + Province.CYPRUS, + Province.MOREA, + Province.ARMENIAKON, + Province.PAPHLAGONIA, + Province.THRAKESION, + ], + }, + Civ.MOROCCO: { + ProvinceType.CORE: [ + Province.MARRAKESH, + Province.MOROCCO, + Province.FEZ, + ], + ProvinceType.HISTORICAL: [Province.TETOUAN], + ProvinceType.POTENTIAL: [ + Province.ORAN, + Province.ALGIERS, + ], + ProvinceType.CONTESTED: [ + Province.IFRIQIYA, + Province.ANDALUSIA, + Province.VALENCIA, + Province.TRIPOLITANIA, + Province.SAHARA, + ], + }, + Civ.ENGLAND: { + ProvinceType.CORE: [ + Province.LONDON, + Province.EAST_ANGLIA, + Province.MERCIA, + Province.WESSEX, + ], + ProvinceType.HISTORICAL: [Province.NORTHUMBRIA], + ProvinceType.POTENTIAL: [Province.WALES], + ProvinceType.CONTESTED: [ + Province.ILE_DE_FRANCE, + Province.BRETAGNE, + Province.AQUITAINE, + Province.ORLEANS, + Province.CHAMPAGNE, + Province.FLANDERS, + Province.NORMANDY, + Province.PICARDY, + Province.SCOTLAND, + Province.THE_ISLES, + Province.IRELAND, + ], + }, + Civ.PORTUGAL: { + ProvinceType.CORE: [Province.LUSITANIA], + ProvinceType.HISTORICAL: [Province.AZORES], + ProvinceType.POTENTIAL: [ + Province.MADEIRA, + Province.CANARIES, + Province.ANDALUSIA, + ], + ProvinceType.CONTESTED: [ + Province.MOROCCO, + Province.TETOUAN, + Province.LEON, + Province.GALICIA, + ], + }, + Civ.ARAGON: { + ProvinceType.CORE: [ + Province.ARAGON, + Province.CATALONIA, + Province.BALEARS, + Province.VALENCIA, + ], + ProvinceType.HISTORICAL: [], + ProvinceType.POTENTIAL: [ + Province.NAVARRE, + Province.ANDALUSIA, + Province.LA_MANCHA, + Province.SARDINIA, + Province.SICILY, + Province.APULIA, + Province.CALABRIA, + Province.MALTA, + ], + ProvinceType.CONTESTED: [ + Province.CASTILE, + Province.PROVENCE, + Province.CORSICA, + Province.THESSALY, + ], + }, + Civ.SWEDEN: { + ProvinceType.CORE: [ + Province.NORRLAND, + Province.SVEALAND, + ], + ProvinceType.HISTORICAL: [ + Province.GOTALAND, + Province.GOTLAND, + ], + ProvinceType.POTENTIAL: [ + Province.JAMTLAND, + Province.OSTERLAND, + Province.KARELIA, + Province.ESTONIA, + ], + ProvinceType.CONTESTED: [ + Province.SKANELAND, + Province.VESTFOLD, + Province.POMERANIA, + Province.LIVONIA, + Province.PRUSSIA, + Province.NOVGOROD, + ], + }, + Civ.PRUSSIA: { + ProvinceType.CORE: [Province.PRUSSIA], + ProvinceType.HISTORICAL: [], + ProvinceType.POTENTIAL: [ + Province.POMERANIA, + Province.LIVONIA, + ], + ProvinceType.CONTESTED: [ + Province.BRANDENBURG, + Province.ESTONIA, + Province.GOTLAND, + Province.LITHUANIA, + Province.SUVALKIJA, + ], + }, + Civ.LITHUANIA: { + ProvinceType.CORE: [Province.LITHUANIA], + ProvinceType.HISTORICAL: [ + Province.SUVALKIJA, + Province.MINSK, + Province.POLOTSK, + ], + ProvinceType.POTENTIAL: [ + Province.BREST, + Province.PODOLIA, + Province.VOLHYNIA, + Province.KIEV, + ], + ProvinceType.CONTESTED: [ + Province.GREATER_POLAND, + Province.LESSER_POLAND, + Province.MASOVIA, + Province.GALICJA, + Province.SLOBODA, + Province.PEREYASLAVL, + Province.LIVONIA, + Province.ESTONIA, + Province.NOVGOROD, + Province.SMOLENSK, + Province.CHERNIGOV, + ], + }, + Civ.AUSTRIA: { + ProvinceType.CORE: [ + Province.AUSTRIA, + Province.CARINTHIA, + ], + ProvinceType.HISTORICAL: [ + Province.BOHEMIA, + Province.MORAVIA, + ], + ProvinceType.POTENTIAL: [ + Province.BAVARIA, + Province.SILESIA, + Province.PANNONIA, + Province.UPPER_HUNGARY, + ], + ProvinceType.CONTESTED: [ + Province.VERONA, + Province.HUNGARY, + Province.TRANSYLVANIA, + Province.SLAVONIA, + Province.DALMATIA, + Province.LESSER_POLAND, + Province.GALICJA, + Province.NETHERLANDS, + Province.FLANDERS, + ], + }, + Civ.OTTOMAN: { + ProvinceType.CORE: [ + Province.OPSIKION, + Province.THRAKESION, + Province.PAPHLAGONIA, + Province.ANATOLIKON, + Province.CONSTANTINOPLE, + ], + ProvinceType.HISTORICAL: [ + Province.THRACE, + Province.ARMENIAKON, + Province.CHARSIANON, + Province.CILICIA, + ], + ProvinceType.POTENTIAL: [ + Province.COLONEA, + Province.ANTIOCHIA, + Province.SYRIA, + Province.LEBANON, + Province.JERUSALEM, + Province.EGYPT, + Province.ARABIA, + Province.MACEDONIA, + Province.THESSALONIKI, + Province.MOESIA, + Province.CYPRUS, + Province.RHODES, + ], + ProvinceType.CONTESTED: [ + Province.THESSALY, + Province.EPIRUS, + Province.MOREA, + Province.ARBERIA, + Province.WALLACHIA, + Province.SERBIA, + Province.BOSNIA, + Province.BANAT, + Province.SLAVONIA, + Province.PANNONIA, + Province.HUNGARY, + Province.TRANSYLVANIA, + Province.MOLDOVA, + Province.CRIMEA, + Province.CRETE, + Province.CYRENAICA, + Province.TRIPOLITANIA, + Province.KUBAN, + ], + }, + Civ.MOSCOW: { + ProvinceType.CORE: [ + Province.MOSCOW, + Province.MUROM, + Province.ROSTOV, + Province.SMOLENSK, + ], + ProvinceType.HISTORICAL: [ + Province.NIZHNYNOVGOROD, + Province.SIMBIRSK, + Province.PEREYASLAVL, + Province.CHERNIGOV, + ], + ProvinceType.POTENTIAL: [ + Province.NOVGOROD, + Province.VOLOGDA, + Province.KIEV, + Province.MINSK, + Province.POLOTSK, + Province.VOLHYNIA, + Province.PODOLIA, + Province.DONETS, + Province.SLOBODA, + Province.ZAPORIZHIA, + ], + ProvinceType.CONTESTED: [ + Province.CRIMEA, + Province.MOLDOVA, + Province.GALICJA, + Province.KUBAN, + Province.BREST, + Province.LITHUANIA, + Province.LIVONIA, + Province.ESTONIA, + Province.KARELIA, + Province.OSTERLAND, + Province.PRUSSIA, + Province.SUVALKIJA, + ], + }, + Civ.DUTCH: { + ProvinceType.CORE: [Province.NETHERLANDS], + ProvinceType.HISTORICAL: [Province.FLANDERS], + ProvinceType.POTENTIAL: [], + ProvinceType.CONTESTED: [], + }, + }, ) CIV_EVENT_DRIVE_PROVINCES = CivDataMapper( { - Civ.ARABIA: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BYZANTIUM, Province.CYRENAICA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.TRIPOLITANIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.IFRIQIYA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.EGYPT, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.ARABIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.SYRIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.LEBANON, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.JERUSALEM, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.ANTIOCHIA, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.CILICIA, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.CHARSIANON, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.COLONEA, ProvinceType.HISTORICAL), - ] - }, - do_not_cast=True, - ), - Civ.BULGARIA: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BYZANTIUM, Province.SERBIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.MOESIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.THRACE, ProvinceType.HISTORICAL), - ] - }, - do_not_cast=True, - ), - Civ.CORDOBA: IntEnumDataMapper( - { - Event.ON_RESPAWN: [(province, ProvinceType.NONE) for province in Province] - + [ - (Province.IFRIQIYA, ProvinceType.CORE), - (Province.ALGIERS, ProvinceType.HISTORICAL), - (Province.ORAN, ProvinceType.CONTESTED), - (Province.TRIPOLITANIA, ProvinceType.CONTESTED), - (Province.TETOUAN, ProvinceType.CONTESTED), - (Province.MOROCCO, ProvinceType.CONTESTED), - (Province.FEZ, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.VENECIA: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BYZANTIUM, Province.DALMATIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.BOSNIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.SLAVONIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.VERONA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.TUSCANY, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.LOMBARDY, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.LIGURIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.CORSICA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.SARDINIA, ProvinceType.NONE), - (Civ.BYZANTIUM, Province.LATIUM, ProvinceType.NONE), - ] - }, - do_not_cast=True, - ), - Civ.BURGUNDY: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.FRANCE, Province.PROVENCE, ProvinceType.POTENTIAL), - (Civ.FRANCE, Province.BURGUNDY, ProvinceType.POTENTIAL), - ] - }, - do_not_cast=True, - ), - Civ.GERMANY: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.FRANCE, Province.LORRAINE, ProvinceType.CONTESTED), - (Civ.FRANCE, Province.BAVARIA, ProvinceType.NONE), - (Civ.FRANCE, Province.FRANCONIA, ProvinceType.NONE), - (Civ.FRANCE, Province.SAXONY, ProvinceType.NONE), - (Civ.FRANCE, Province.NETHERLANDS, ProvinceType.NONE), + Civ.ARABIA: { + Event.ON_SPAWN: [ + (Civ.BYZANTIUM, Province.CYRENAICA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.TRIPOLITANIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.IFRIQIYA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.EGYPT, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.ARABIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.SYRIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.LEBANON, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.JERUSALEM, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.ANTIOCHIA, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.CILICIA, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.CHARSIANON, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.COLONEA, ProvinceType.HISTORICAL), + ] + }, + Civ.BULGARIA: { + Event.ON_SPAWN: [ + (Civ.BYZANTIUM, Province.SERBIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.MOESIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.THRACE, ProvinceType.HISTORICAL), + ] + }, + Civ.CORDOBA: { + Event.ON_RESPAWN: [(province, ProvinceType.NONE) for province in Province] + + [ + (Province.IFRIQIYA, ProvinceType.CORE), + (Province.ALGIERS, ProvinceType.HISTORICAL), + (Province.ORAN, ProvinceType.CONTESTED), + (Province.TRIPOLITANIA, ProvinceType.CONTESTED), + (Province.TETOUAN, ProvinceType.CONTESTED), + (Province.MOROCCO, ProvinceType.CONTESTED), + (Province.FEZ, ProvinceType.CONTESTED), + ] + }, + Civ.VENECIA: { + Event.ON_SPAWN: [ + (Civ.BYZANTIUM, Province.DALMATIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.BOSNIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.SLAVONIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.VERONA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.TUSCANY, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.LOMBARDY, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.LIGURIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.CORSICA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.SARDINIA, ProvinceType.NONE), + (Civ.BYZANTIUM, Province.LATIUM, ProvinceType.NONE), + ] + }, + Civ.BURGUNDY: { + Event.ON_SPAWN: [ + (Civ.FRANCE, Province.PROVENCE, ProvinceType.POTENTIAL), + (Civ.FRANCE, Province.BURGUNDY, ProvinceType.POTENTIAL), + ] + }, + Civ.GERMANY: { + Event.ON_SPAWN: [ + (Civ.FRANCE, Province.LORRAINE, ProvinceType.CONTESTED), + (Civ.FRANCE, Province.BAVARIA, ProvinceType.NONE), + (Civ.FRANCE, Province.FRANCONIA, ProvinceType.NONE), + (Civ.FRANCE, Province.SAXONY, ProvinceType.NONE), + (Civ.FRANCE, Province.NETHERLANDS, ProvinceType.NONE), + ] + }, + Civ.NORWAY: { + Event.ON_DATETURN: { + # Provinces switch back to unstable after the fall of the Norman Kingdom of Sicily + 1194 + + 1: [ + (Province.APULIA, ProvinceType.NONE), + (Province.CALABRIA, ProvinceType.NONE), + (Province.SICILY, ProvinceType.NONE), + (Province.MALTA, ProvinceType.NONE), ] - }, - do_not_cast=True, - ), - Civ.NORWAY: IntEnumDataMapper( - { - Event.ON_DATETURN: { - # Provinces switch back to unstable after the fall of the Norman Kingdom of Sicily - 1194 - + 1: [ - (Province.APULIA, ProvinceType.NONE), - (Province.CALABRIA, ProvinceType.NONE), - (Province.SICILY, ProvinceType.NONE), - (Province.MALTA, ProvinceType.NONE), - ] - } - }, - do_not_cast=True, - ), - Civ.HUNGARY: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BULGARIA, Province.BANAT, ProvinceType.NONE), - (Civ.BULGARIA, Province.WALLACHIA, ProvinceType.CONTESTED), + } + }, + Civ.HUNGARY: { + Event.ON_SPAWN: [ + (Civ.BULGARIA, Province.BANAT, ProvinceType.NONE), + (Civ.BULGARIA, Province.WALLACHIA, ProvinceType.CONTESTED), + ] + }, + Civ.CASTILE: { + Event.ON_SPAWN: [(Civ.CORDOBA, Province.LA_MANCHA, ProvinceType.HISTORICAL)] + }, + Civ.DENMARK: { + Event.ON_DATETURN: { + # Provinces switch back to unstable after the fall of the Norman Kingdom of Sicily + 1194 + + 1: [ + (Province.APULIA, ProvinceType.NONE), + (Province.CALABRIA, ProvinceType.NONE), + (Province.SICILY, ProvinceType.NONE), + (Province.MALTA, ProvinceType.NONE), ] - }, - do_not_cast=True, - ), - Civ.CASTILE: IntEnumDataMapper( - {Event.ON_SPAWN: [(Civ.CORDOBA, Province.LA_MANCHA, ProvinceType.HISTORICAL)]}, - do_not_cast=True, - ), - Civ.DENMARK: IntEnumDataMapper( - { - Event.ON_DATETURN: { - # Provinces switch back to unstable after the fall of the Norman Kingdom of Sicily - 1194 - + 1: [ - (Province.APULIA, ProvinceType.NONE), - (Province.CALABRIA, ProvinceType.NONE), - (Province.SICILY, ProvinceType.NONE), - (Province.MALTA, ProvinceType.NONE), + } + }, + Civ.MOROCCO: { + Event.ON_SPAWN: [ + (Civ.CORDOBA, Province.MOROCCO, ProvinceType.NONE), + (Civ.CORDOBA, Province.MARRAKESH, ProvinceType.NONE), + (Civ.CORDOBA, Province.FEZ, ProvinceType.CONTESTED), + (Civ.CORDOBA, Province.TETOUAN, ProvinceType.CONTESTED), + ] + }, + Civ.ENGLAND: { + Event.ON_SPAWN: [ + (Civ.FRANCE, Province.NORMANDY, ProvinceType.POTENTIAL), + (Civ.SCOTLAND, Province.NORTHUMBRIA, ProvinceType.CONTESTED), + (Civ.SCOTLAND, Province.MERCIA, ProvinceType.NONE), + (Civ.DENMARK, Province.NORTHUMBRIA, ProvinceType.NONE), + (Civ.DENMARK, Province.MERCIA, ProvinceType.NONE), + (Civ.DENMARK, Province.EAST_ANGLIA, ProvinceType.NONE), + (Civ.DENMARK, Province.LONDON, ProvinceType.NONE), + ] + }, + Civ.ARAGON: { + Event.ON_SPAWN: [ + (Civ.BYZANTIUM, Province.APULIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.CALABRIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.SICILY, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.MALTA, ProvinceType.CONTESTED), + (Civ.CORDOBA, Province.ARAGON, ProvinceType.CONTESTED), + (Civ.CORDOBA, Province.CATALONIA, ProvinceType.CONTESTED), + (Civ.CORDOBA, Province.VALENCIA, ProvinceType.HISTORICAL), + (Civ.CORDOBA, Province.BALEARS, ProvinceType.CONTESTED), + ] + }, + Civ.SWEDEN: { + Event.ON_SPAWN: [ + (Civ.NORWAY, Province.SVEALAND, ProvinceType.NONE), + (Civ.DENMARK, Province.GOTALAND, ProvinceType.NONE), + (Civ.DENMARK, Province.SVEALAND, ProvinceType.NONE), + (Civ.NOVGOROD, Province.OSTERLAND, ProvinceType.CONTESTED), + ] + }, + Civ.PRUSSIA: { + Event.ON_DATETURN: DataMapper( + { + 1618: [ + (Province.ESTONIA, ProvinceType.NONE), + (Province.LITHUANIA, ProvinceType.NONE), + (Province.SUVALKIJA, ProvinceType.NONE), + (Province.LIVONIA, ProvinceType.CONTESTED), + (Province.POMERANIA, ProvinceType.HISTORICAL), + (Province.BRANDENBURG, ProvinceType.HISTORICAL), + (Province.SILESIA, ProvinceType.POTENTIAL), + (Province.GREATER_POLAND, ProvinceType.CONTESTED), ] } - }, - do_not_cast=True, - ), - Civ.MOROCCO: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.CORDOBA, Province.MOROCCO, ProvinceType.NONE), - (Civ.CORDOBA, Province.MARRAKESH, ProvinceType.NONE), - (Civ.CORDOBA, Province.FEZ, ProvinceType.CONTESTED), - (Civ.CORDOBA, Province.TETOUAN, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.ENGLAND: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.FRANCE, Province.NORMANDY, ProvinceType.POTENTIAL), - (Civ.SCOTLAND, Province.NORTHUMBRIA, ProvinceType.CONTESTED), - (Civ.SCOTLAND, Province.MERCIA, ProvinceType.NONE), - (Civ.DENMARK, Province.NORTHUMBRIA, ProvinceType.NONE), - (Civ.DENMARK, Province.MERCIA, ProvinceType.NONE), - (Civ.DENMARK, Province.EAST_ANGLIA, ProvinceType.NONE), - (Civ.DENMARK, Province.LONDON, ProvinceType.NONE), - ] - }, - do_not_cast=True, - ), - Civ.ARAGON: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BYZANTIUM, Province.APULIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.CALABRIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.SICILY, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.MALTA, ProvinceType.CONTESTED), - (Civ.CORDOBA, Province.ARAGON, ProvinceType.CONTESTED), - (Civ.CORDOBA, Province.CATALONIA, ProvinceType.CONTESTED), - (Civ.CORDOBA, Province.VALENCIA, ProvinceType.HISTORICAL), - (Civ.CORDOBA, Province.BALEARS, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.SWEDEN: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.NORWAY, Province.SVEALAND, ProvinceType.NONE), - (Civ.DENMARK, Province.GOTALAND, ProvinceType.NONE), - (Civ.DENMARK, Province.SVEALAND, ProvinceType.NONE), - (Civ.NOVGOROD, Province.OSTERLAND, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.PRUSSIA: IntEnumDataMapper( - { - Event.ON_DATETURN: DataMapper( - { - 1618: [ - (Province.ESTONIA, ProvinceType.NONE), - (Province.LITHUANIA, ProvinceType.NONE), - (Province.SUVALKIJA, ProvinceType.NONE), - (Province.LIVONIA, ProvinceType.CONTESTED), - (Province.POMERANIA, ProvinceType.HISTORICAL), - (Province.BRANDENBURG, ProvinceType.HISTORICAL), - (Province.SILESIA, ProvinceType.POTENTIAL), - (Province.GREATER_POLAND, ProvinceType.CONTESTED), - ] - } - ) - }, - do_not_cast=True, - ), - Civ.AUSTRIA: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.HUNGARY, Province.CARINTHIA, ProvinceType.CONTESTED), - (Civ.HUNGARY, Province.AUSTRIA, ProvinceType.CONTESTED), - (Civ.HUNGARY, Province.MORAVIA, ProvinceType.CONTESTED), - (Civ.HUNGARY, Province.BAVARIA, ProvinceType.NONE), - (Civ.GERMANY, Province.BAVARIA, ProvinceType.CONTESTED), - (Civ.GERMANY, Province.BOHEMIA, ProvinceType.CONTESTED), - (Civ.CASTILE, Province.NETHERLANDS, ProvinceType.CONTESTED), - (Civ.CASTILE, Province.FLANDERS, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.OTTOMAN: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.BYZANTIUM, Province.ANTIOCHIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.CILICIA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.CHARSIANON, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.COLONEA, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.ARMENIAKON, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.CYPRUS, ProvinceType.CONTESTED), - (Civ.BYZANTIUM, Province.ANATOLIKON, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.OPSIKION, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.THRAKESION, ProvinceType.HISTORICAL), - (Civ.BYZANTIUM, Province.PAPHLAGONIA, ProvinceType.HISTORICAL), - (Civ.HUNGARY, Province.DALMATIA, ProvinceType.CONTESTED), - (Civ.HUNGARY, Province.BOSNIA, ProvinceType.CONTESTED), - (Civ.HUNGARY, Province.BANAT, ProvinceType.CONTESTED), - ] - }, - do_not_cast=True, - ), - Civ.MOSCOW: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.NOVGOROD, Province.ROSTOV, ProvinceType.CONTESTED), - (Civ.NOVGOROD, Province.SMOLENSK, ProvinceType.NONE), - ] - }, - do_not_cast=True, - ), - Civ.DUTCH: IntEnumDataMapper( - { - Event.ON_SPAWN: [ - (Civ.CASTILE, Province.NETHERLANDS, ProvinceType.NONE), - (Civ.CASTILE, Province.FLANDERS, ProvinceType.NONE), - (Civ.AUSTRIA, Province.NETHERLANDS, ProvinceType.NONE), - (Civ.AUSTRIA, Province.FLANDERS, ProvinceType.NONE), - ] - }, - do_not_cast=True, - ), - } -).fill_missing_members(IntEnumDataMapper({})) + ) + }, + Civ.AUSTRIA: { + Event.ON_SPAWN: [ + (Civ.HUNGARY, Province.CARINTHIA, ProvinceType.CONTESTED), + (Civ.HUNGARY, Province.AUSTRIA, ProvinceType.CONTESTED), + (Civ.HUNGARY, Province.MORAVIA, ProvinceType.CONTESTED), + (Civ.HUNGARY, Province.BAVARIA, ProvinceType.NONE), + (Civ.GERMANY, Province.BAVARIA, ProvinceType.CONTESTED), + (Civ.GERMANY, Province.BOHEMIA, ProvinceType.CONTESTED), + (Civ.CASTILE, Province.NETHERLANDS, ProvinceType.CONTESTED), + (Civ.CASTILE, Province.FLANDERS, ProvinceType.CONTESTED), + ] + }, + Civ.OTTOMAN: { + Event.ON_SPAWN: [ + (Civ.BYZANTIUM, Province.ANTIOCHIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.CILICIA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.CHARSIANON, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.COLONEA, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.ARMENIAKON, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.CYPRUS, ProvinceType.CONTESTED), + (Civ.BYZANTIUM, Province.ANATOLIKON, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.OPSIKION, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.THRAKESION, ProvinceType.HISTORICAL), + (Civ.BYZANTIUM, Province.PAPHLAGONIA, ProvinceType.HISTORICAL), + (Civ.HUNGARY, Province.DALMATIA, ProvinceType.CONTESTED), + (Civ.HUNGARY, Province.BOSNIA, ProvinceType.CONTESTED), + (Civ.HUNGARY, Province.BANAT, ProvinceType.CONTESTED), + ] + }, + Civ.MOSCOW: { + Event.ON_SPAWN: [ + (Civ.NOVGOROD, Province.ROSTOV, ProvinceType.CONTESTED), + (Civ.NOVGOROD, Province.SMOLENSK, ProvinceType.NONE), + ] + }, + Civ.DUTCH: { + Event.ON_SPAWN: [ + (Civ.CASTILE, Province.NETHERLANDS, ProvinceType.NONE), + (Civ.CASTILE, Province.FLANDERS, ProvinceType.NONE), + (Civ.AUSTRIA, Province.NETHERLANDS, ProvinceType.NONE), + (Civ.AUSTRIA, Province.FLANDERS, ProvinceType.NONE), + ] + }, + }, +).fill_missing_members({}) CIV_VISIBLE_AREA_500AD = CivDataMapper( { @@ -2493,7 +2462,7 @@ {Area.TILE_MIN: (46, 39), Area.TILE_MAX: (63, 44)}, ], Civ.POPE: [{Area.TILE_MIN: (39, 12), Area.TILE_MAX: (73, 44)}], - } + }, ).applymap(lambda d: parse_area_dict(d)) CIV_VISIBLE_AREA_1200AD = CivDataMapper( @@ -2611,15 +2580,18 @@ {Area.TILE_MIN: (46, 39), Area.TILE_MAX: (63, 44)}, ], Civ.POPE: [{Area.TILE_MIN: (39, 12), Area.TILE_MAX: (73, 44)}], - } + }, ).applymap(lambda d: parse_area_dict(d)) -CIV_VISIBLE_AREA = ScenarioDataMapper( - {Scenario.i500AD: CIV_VISIBLE_AREA_500AD, Scenario.i1200AD: CIV_VISIBLE_AREA_1200AD} +CIV_VISIBLE_AREA = EnumDataMapper( + { + Scenario.i500AD: CIV_VISIBLE_AREA_500AD, + Scenario.i1200AD: CIV_VISIBLE_AREA_1200AD, + }, ) # Used for Congresses and Victory -CIV_GROUPS = IntEnumDataMapper( +CIV_GROUPS = EnumDataMapper( { CivGroup.EASTERN: [ Civ.BYZANTIUM, @@ -2649,5 +2621,5 @@ CivGroup.ISLAMIC: [Civ.ARABIA, Civ.CORDOBA, Civ.MOROCCO, Civ.OTTOMAN], CivGroup.ITALIAN: [Civ.GENOA, Civ.VENECIA, Civ.POPE], CivGroup.SCANDINAVIAN: [Civ.NORWAY, Civ.DENMARK, Civ.SWEDEN], - } + }, ) diff --git a/Assets/Python/data/ReligionData.py b/Assets/Python/data/ReligionData.py index e746274fd..2f78f811a 100644 --- a/Assets/Python/data/ReligionData.py +++ b/Assets/Python/data/ReligionData.py @@ -1,8 +1,8 @@ -from BaseStructures import IntEnumDataMapper +from BaseStructures import EnumDataMapper from CoreTypes import Building, Religion, Wonder -RELIGION_PERSECUTION_ORDER = IntEnumDataMapper( +RELIGION_PERSECUTION_ORDER = EnumDataMapper( { Religion.PROTESTANTISM: [ Religion.CATHOLICISM, @@ -34,9 +34,9 @@ Religion.ORTHODOXY, Religion.CATHOLICISM, ], - } + }, ) -RELIGIOUS_BUILDINGS = IntEnumDataMapper( +RELIGIOUS_BUILDINGS = EnumDataMapper( { Religion.PROTESTANTISM: [ Building.PROTESTANT_TEMPLE, @@ -62,7 +62,7 @@ Building.JEWISH_QUARTER, Wonder.KAZIMIERZ, ], - } + }, ) RELIGIOUS_WONDERS = [ Wonder.MONASTERY_OF_CLUNY, diff --git a/Assets/Python/data/TimelineData.py b/Assets/Python/data/TimelineData.py index cdde44743..68e8be4a2 100644 --- a/Assets/Python/data/TimelineData.py +++ b/Assets/Python/data/TimelineData.py @@ -335,7 +335,6 @@ class DateTurn: } ).fill_missing_members(1800) -# Used by GameBalance TIMELINE_TECH_MODIFIER = [ (Technology.CALENDAR, 500), (Technology.ARCHITECTURE, 620), diff --git a/Assets/Python/models/BaseStructures.py b/Assets/Python/models/BaseStructures.py index 3a081dc97..562b15c7e 100644 --- a/Assets/Python/models/BaseStructures.py +++ b/Assets/Python/models/BaseStructures.py @@ -109,11 +109,11 @@ def filter(self, func): class EnumDataMapper(DataMapper): """Class to map data to Enum.""" - BASE_CLASS = Enum + BASE_CLASS = (IntEnum, int) - def __init__(self, elements, default=None, do_not_cast=False): + def __init__(self, elements, default=None, do_cast=False): super(EnumDataMapper, self).__init__(elements, default) - self.do_not_cast = do_not_cast + self.do_cast = do_cast def _check_condition(self, key): return issubclass(type(key), self.BASE_CLASS) @@ -138,41 +138,6 @@ def sort(self): return obj -class IntEnumDataMapper(EnumDataMapper): - """Class to map data to Enum.""" - - BASE_CLASS = (IntEnum, int) - - -class Attributes(dict): - """A class to handle attibutes from a DataMapper.""" - - def __init__(self, *args, **kwargs): - super(Attributes, self).__init__(*args, **kwargs) - self.__dict__ = self - - @classmethod - def from_nested_dicts(cls, data): - """Construct nested Attributes from nested dictionaries.""" - if isinstance(data, list): - return [cls.from_nested_dicts(d) for d in data] - - if issubclass(data.__class__, EnumDataMapper): - if data.do_not_cast: - return data - data = dict((key.name.lower(), cls.from_nested_dicts(data[key])) for key in data) - return cls(data) - - if isinstance(data, dict): - if all(isinstance(member, Enum) for member in data.keys()): - data = dict((key.name.lower(), cls.from_nested_dicts(data[key])) for key in data) - else: - data = dict((key, cls.from_nested_dicts(data[key])) for key in data) - return cls(data) - - return data - - class Item(object): """A base class to handle a game item backed with enum.""" @@ -474,7 +439,7 @@ class EnumCollection(Collection): def __init__(self, *items): for item in items: - if not isinstance(item, self.BASE_CLASS): + if not isinstance(item, self.BASE_CLASS): # type: ignore raise NotTypeExpectedError(self.BASE_CLASS, type(item)) self.append(item) @@ -491,6 +456,32 @@ def ids(self): return self.apply(lambda c: c.id) +class Attributes(dict): + """A class to handle attibutes from a EnumDataMapper.""" + + def __init__(self, *args, **kwargs): + super(Attributes, self).__init__(*args, **kwargs) + self.__dict__ = self + + @classmethod + def from_nested_dicts(cls, data): + """Construct nested Attributes from nested dictionaries.""" + if isinstance(data, list): + return [cls.from_nested_dicts(d) for d in data] + + if issubclass(data.__class__, EnumDataMapper): + if not data.do_cast: + return data + data = dict((key.name.lower(), cls.from_nested_dicts(data[key])) for key in data) + return cls(data) + + if isinstance(data, dict): + data = dict((key, cls.from_nested_dicts(data[key])) for key in data) + return cls(data) + + return data + + class EnumCollectionFactory(object): """A base for factories.""" @@ -509,7 +500,7 @@ def add_key(self, *keys): return self def attach(self, name, data, key=None): - if isinstance(name, str) and isinstance(data, self.DATA_CLASS): + if isinstance(name, str) and isinstance(data, self.DATA_CLASS): # type: ignore if key is not None: self._keys_attachments[key][name] = data else: @@ -542,18 +533,6 @@ def collect(self): return self.ITEM_COLLECTION_CLASS(*items) -class ScenarioDataMapper(EnumDataMapper): - """Class to map data to Scenario enum.""" - - BASE_CLASS = CoreTypes.Scenario - - -class ReligionDataMapper(EnumDataMapper): - """Class to map Religion to Company enum.""" - - BASE_CLASS = CoreTypes.Religion - - class CompanyDataMapper(EnumDataMapper): """Class to map data to Company enum.""" diff --git a/Assets/Python/utils/MapUtils.py b/Assets/Python/utils/MapUtils.py index 7356d71e8..bdcd7cb99 100644 --- a/Assets/Python/utils/MapUtils.py +++ b/Assets/Python/utils/MapUtils.py @@ -5,6 +5,7 @@ from CoreData import civilizations from CoreFunctions import get_civ_by_id, text from Consts import WORLD_HEIGHT, WORLD_WIDTH +from CoreTypes import Area, AreaType import CvScreenEnums from ProvinceMapData import PROVINCES_MAP from SettlerMapData import SETTLERS_MAP @@ -87,19 +88,25 @@ def initMaps(self): self.settler_map = deepcopy(SETTLERS_MAP) self.city_map = deepcopy(CITIES_MAP) self.war_map = deepcopy(WARS_MAP) - self.core_tile_min = [c.location.area.core.tile_min for c in civilizations().majors()] - self.core_tile_max = [c.location.area.core.tile_max for c in civilizations().majors()] + self.core_tile_min = [ + c.location.area[AreaType.CORE][Area.TILE_MIN] for c in civilizations().majors() + ] + self.core_tile_max = [ + c.location.area[AreaType.CORE][Area.TILE_MAX] for c in civilizations().majors() + ] self.core_additional_tiles = [ - c.location.area.core.additional_tiles for c in civilizations().majors() + c.location.area[AreaType.CORE][Area.ADDITIONAL_TILES] + for c in civilizations().majors() ] self.normal_tile_min = [ - c.location.area.normal.tile_min for c in civilizations().majors() + c.location.area[AreaType.NORMAL][Area.TILE_MIN] for c in civilizations().majors() ] self.normal_tile_max = [ - c.location.area.normal.tile_max for c in civilizations().majors() + c.location.area[AreaType.NORMAL][Area.TILE_MAX] for c in civilizations().majors() ] self.normal_exception_tiles = [ - c.location.area.normal.exception_tiles for c in civilizations().majors() + c.location.area[AreaType.NORMAL][Area.EXCEPTION_TILES] + for c in civilizations().majors() ] self.mapsInitiated = True diff --git a/Tests/test_base_structures.py b/Tests/test_base_structures.py index 7570c9ee9..45d7ae082 100644 --- a/Tests/test_base_structures.py +++ b/Tests/test_base_structures.py @@ -251,7 +251,8 @@ def _wrong_callable(): self.assertRaises(OutputTypeError, _wrong_applymap) self.assertRaises(NotACallableError, _wrong_callable) self.assertEqual( - self.data_multiple.applymap(lambda x: int(x)), EnumDataMapper({_TestEnum.A: [0, 1]}) + self.data_multiple.applymap(lambda x: int(x)), + EnumDataMapper({_TestEnum.A: [0, 1]}), ) def test_filter(self):