print "STABILITY CHECK"
if bPositive: print "positive"
print gc.getPlayer(iPlayer).getCivilizationShortDescription(0)
print ("iPlayer=", iPlayer, "iCiv=", iCiv)
if not bPositive and pTeam.isHasTech(iStabilityCollapsing):
if iGameTurn > getTurnForYear(tFall[iCiv]):
print ("quick terminal crisis, iCiv=", iCiv)
self.terminalCrisis(iPlayer, iCiv)
return
else:
print ("quick severe crisis, iCiv=", iCiv)
self.severeCrisis(iPlayer, iCiv)
return
iCivicGovernment = pPlayer.getCivics(0)
iCivicLegal = pPlayer.getCivics(1)
iCivicLabor = pPlayer.getCivics(2)
iCivicEconomy = pPlayer.getCivics(3)
iCivicReligion = pPlayer.getCivics(4)
iStateReligion = pPlayer.getStateReligion()
iNumCities = pPlayer.getNumCities()
if iNumCities < 1: iNumCities =1
## CIVICS ##
# combinations of civics and state religions
iCivicsRating = 0
# Civics
print "CIV"
if iCivicGovernment == iDespotismCivic:
if iCivicLegal in [iVassalageCivic, iReligiousLawCivic, iBureaucracyCivic]:
iCivicsRating -= 1
print ("bad combo", "despotism", "vassalage, religious law or bureaucracy")
if iCivicLabor in [iCasteSystemCivic, iWageLaborCivic]:
iCivicsRating -= 1
print ("bad combo", "despotism", "caste system or wage labor")
if iCivicEconomy == iPatronageCivic:
iCivicsRating -= 1
print ("bad combo", "despotism", "patroange")
if iCivicReligion in [iDynasticCultCivic, iStateReligionCivic, iSyncretismCivic]:
iCivicsRating -= 1
print ("bad combo", "despotism", "dynastic cult, state religion or syncretism")
if iCivicGovernment == iMonarchyCivic:
if iCivicLegal == iBarbarismCivic:
iCivicsRating -= 1
print ("bad combo", "monarchy", "barbarism")
if iCivicLegal in [iVassalageCivic, iReligiousLawCivic, iBureaucracyCivic]:
iCivicsRating += 1
print ("good combo", "monarchy", "vassalage, religious law or bureaucracy")
if iCivicLabor == iSerfdomCivic:
iCivicsRating += 1
print ("good combo", "monarchy", "serfdom")
if iCivicLabor == iWageLaborCivic:
iCivicsRating -= 1
print ("bad combo", "monarchy", "wage labor")
if iCivicEconomy == iPatronageCivic:
iCivicsRating += 1
print ("good combo", "monarchy", "patronage")
if iCivicReligion in [iDynasticCultCivic, iStateReligionCivic]:
iCivicsRating += 1
print ("good combo", "monarchy", "dynastic cult or state religion")
if iCivicGovernment == iOligarchyCivic:
if iCivicLegal in [iBarbarismCivic, iTyrannyCivic]:
iCivicsRating -= 1
print ("bad combo", "oligrachy", "barbarism or tyranny")
if iCivicLegal == iBureaucracyCivic:
iCivicsRating += 1
print ("good combo", "oligrachy", "bureaucracy")
if iCivicLabor in [iTribalismCivic, iWageLaborCivic]:
iCivicsRating -= 1
print ("bad combo", "oligrachy", "tribalism or wage labor")
if iCivicReligion in [iDynasticCultCivic, iMilitancyCivic]:
iCivicsRating -= 1
print ("bad combo", "oligrachy", "dynastic cult or militancy")
if iCivicEconomy in [iAgrarianismCivic, iPatronageCivic]:
iCivicsRating += 1
print ("good combo", "oligrachy", "agrarianism or patronage")
if iCivicGovernment == iEmpireCivic:
if iCivicLegal == iBureaucracyCivic:
iCivicsRating += 1
print ("good combo", "empire", "bureaucracy")
if iCivicLegal in [iBarbarismCivic, iTyrannyCivic]:
iCivicsRating -= 1
print ("bad combo", "empire", "tyranny")
if iCivicLabor in [iTribalismCivic, iSerfdomCivic]:
iCivicsRating -= 1
print ("bad combo", "empire", "serfdom or tribalism")
if iCivicEconomy == iDecentralizationCivic:
iCivicsRating -= 1
print ("bad combo", "empire", "decentralization")
if iCivicEconomy == iAgrarianismCivic:
iCivicsRating += 1
print ("good combo", "empire", "agrarianism")
if iCivicReligion == iSyncretismCivic:
iCivicsRating -= 1
print ("bad combo", "empire", "syncretism")
if iCivicLegal == iBarbarismCivic:
if iCivicLabor == iWageLaborCivic:
iCivicsRating -= 1
print ("bad combo", "barbarism", "wage labor")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating -= 1
print ("bad combo", "barbarism", "trade economt")
if iCivicLegal == iTyrannyCivic:
if iCivicLabor in [iTribalismCivic, iCasteSystemCivic, iWageLaborCivic]:
iCivicsRating -= 1
print ("bad combo", "tyranny", "tribalism, caste system or wage labor")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating -= 1
print ("bad combo", "tyranny", "trade economy")
if iCivicReligion == iDynasticCultCivic:
iCivicsRating += 1
print ("good combo", "tyranny", "dynastic cult")
if iCivicReligion in [iStateReligionCivic, iMilitancyCivic, iSyncretismCivic]:
iCivicsRating -= 1
print ("bad combo", "tyranny", "state religion, militancy or syncretism")
if iCivicLegal == iVassalageCivic:
if iCivicLabor in [iCasteSystemCivic, iSerfdomCivic]:
iCivicsRating += 1
print ("good combo", "vassalge", "caste system or serfdom")
if iCivicLabor == iWageLaborCivic:
iCivicsRating -= 1
print ("bad combo", "vassalge", "wage labor")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating -= 1
print ("bad combo", "vassalge", "trade economy")
if iCivicEconomy == iPatronageCivic:
iCivicsRating += 1
print ("good combo", "vassalge", "patronage")
if iCivicReligion == iDynasticCultCivic: iCivicsRating -= 1
if iCivicLegal == iReligiousLawCivic:
if iCivicLabor in [iCasteSystemCivic, iSerfdomCivic]:
iCivicsRating += 1
print ("good combo", "religious law", "caste system or serfdom")
if iCivicLabor == iWageLaborCivic:
iCivicsRating -= 1
print ("bad combo", "religious law", "wage labor")
if iCivicEconomy in [iTradeEconomyCivic, iMilitaryEconomyCivic]:
iCivicsRating -= 1
print ("bad combo", "religious law", "trade economy or military economy")
if iCivicReligion in [iPaganismCivic, iDynasticCultCivic, iSyncretismCivic]:
iCivicsRating -= 1
print ("bad combo", "religious law", "paganism, dynastic cult or syncretism")
if iCivicLegal == iBureaucracyCivic:
if iCivicLabor in [iTribalismCivic, iCasteSystemCivic]:
iCivicsRating -= 1
print ("bad combo", "bureaucracy", "tribalism or caste system")
if iCivicLabor == iSlaveryCivic:
iCivicsRating += 1
print ("good combo", "bureaucracy", "slavery")
if iCivicEconomy == iDecentralizationCivic:
iCivicsRating -= 1
print ("bad combo", "bureaucracy", "decentralization")
if iCivicLabor == iTribalismCivic:
if iCivicEconomy == iDecentralizationCivic:
iCivicsRating += 1
print ("good combo", "tribalism", "decentralization")
if iCivicEconomy in [iTradeEconomyCivic, iMilitaryEconomyCivic]:
iCivicsRating -= 1
print ("bad combo", "tribalism", "trade economy or military economy")
if iCivicReligion == iDynasticCultCivic:
iCivicsRating -= 1
print ("bad combo", "tribalism", "dynastic cult")
if iCivicLabor == iSlaveryCivic:
if iCivicEconomy == iAgrarianismCivic:
iCivicsRating += 1
print ("good combo", "slavery", "agrarianism")
if iCivicReligion == iSyncretismCivic:
iCivicsRating -= 1
print ("bad combo", "slavery", "syncretism")
if iCivicLabor == iCasteSystemCivic:
if iCivicEconomy == iAgrarianismCivic:
iCivicsRating += 1
print ("good combo", "caste system", "agrarianism")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating -= 1
print ("bad combo", "caste system", "trade economy")
if iCivicReligion in [iDynasticCultCivic, iSyncretismCivic]:
iCivicsRating -= 1
print ("bad combo", "caste system", "dynastic cult or syncretism")
if iCivicLabor == iSerfdomCivic:
if iCivicEconomy == iAgrarianismCivic:
iCivicsRating += 1
print ("good combo", "serfdom", "agrarianism")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating -= 1
print ("bad combo", "serfdom", "trade economy")
if iCivicReligion == iSyncretismCivic:
iCivicsRating -= 1
print ("bad combo", "serfdom", "syncretism")
if iCivicReligion == iStateReligionCivic:
iCivicsRating += 1
print ("good combo", "serfdom", "state religion")
if iCivicLabor == iWageLaborCivic:
if iCivicEconomy in [iDecentralizationCivic, iAgrarianismCivic]:
iCivicsRating -= 1
print ("bad combo", "wage labor", "decentralization or agrarianism")
if iCivicEconomy == iTradeEconomyCivic:
iCivicsRating += 1
print ("good combo", "wage labor", "trade economy")
if iCivicReligion == iMilitancyCivic:
iCivicsRating -= 1
print ("bad combo", "wage labor", "militancy")
if iCivicEconomy == iTradeEconomyCivic:
if iCivicReligion in [iDynasticCultCivic, iMilitancyCivic]:
iCivicsRating -= 1
print ("bad combo", "trade economy", "dynastic ult or militancy")
# Civics + State Religion
if iCivicLabor == iCasteSystemCivic and iStateReligion != iHinduism:
iCivicsRating -= 1
print "caste wo hindu"
if iCivicLabor == iSlaveryCivic and iStateReligion == iChristianity:
iCivicsRating -= 1
print "christian slaves"
## HAPPINESS AND HEALTH ##
print "H & H"
# balance of health and happiness per city, with extra penalty for angry citizens
iHappinessAndHealthRating = 0
print ("total happy", pPlayer.calculateTotalCityHappiness(), "total unhappy", pPlayer.calculateTotalCityUnhappiness(), "cities", iNumCities)
print ("total health", pPlayer.calculateTotalCityHealthiness(), "total unhealth", pPlayer.calculateTotalCityUnhealthiness(), "cities", iNumCities)
iHappiness = ((pPlayer.calculateTotalCityHappiness()) - (pPlayer.calculateTotalCityUnhappiness())) / (iNumCities)
iHealth = ((pPlayer.calculateTotalCityHealthiness()) - (pPlayer.calculateTotalCityUnhealthiness())) / (iNumCities)
print ("iHappiness=", iHappiness, "iHealth=", iHealth)
if iHappiness < 0: iHappinessAndHealthRating -= 1
elif iHappiness > 3: iHappinessAndHealthRating += 1
if iHealth < 0: iHappinessAndHealthRating -= 1
elif iHealth > 3: iHappinessAndHealthRating += 1
for pLoopCity in apCityList:
if (pLoopCity.GetCy().angryPopulation(0) > 0):
iHappinessAndHealthRating -= 1
print "angry city"
## ECONOMY ##
print "ECON"
# balance of income and costs
iEconomyRating = 0
if pPlayer.getGold() < 300:
iRate = (pPlayer.calculateGoldRate() + pPlayer.calculateBaseNetResearch()) - (pPlayer.calculateInflatedCosts())
print ("gold=", pPlayer.calculateGoldRate(), "research=", pPlayer.calculateBaseNetResearch(), "costs=", pPlayer.calculateInflatedCosts(), "iRate", iRate)
if iRate < -20: iEconomyRating -= 2
elif iRate < -7: iEconomyRating -= 1
elif iRate > +7: iEconomyRating += 1
elif iRate > +20: iEconomyRating += 2
else:
print "pass on savings"
## EMPIRE ##
print "EMP"
# balance of core and empire populations, mitigated by courthouses and civics
iEmpireRating = 0
for regionID in utils.getCoreRegions(iCiv):
if not (utils.checkRegionControl(iPlayer, regionID)):
iEmpireRating -= 3
print "core province not controlled"
iCorePop = 0
iEmpirePop = 0
for pLoopCity in apCityList:
regionID = gc.getMap().plot(pLoopCity.GetCy().getX(),pLoopCity.GetCy().getY()).getRegionID()
if regionID in utils.getCoreRegions(iCiv):
iCorePop += pLoopCity.getPopulation() * 2
elif regionID in utils.getNormalRegions(iCiv):
iFactor = 1
if not ((iCivicGovernment == iTheocracyCivic) and (pLoopCity.GetCy().isHasReligion(iStateReligion))):
if iCivicGovernment != iEmpireCivic: iFactor += 1
if not (iCivicLegal == iBureaucracyCivic):
iFactor += 1
if not (pLoopCity.GetCy().getNumRealBuilding(iCourthouse) > 0):
iFactor += 1
iEmpirePop += pLoopCity.getPopulation() * iFactor
else:
iFactor = 2
if not ((iCivicGovernment == iTheocracyCivic) and (pLoopCity.GetCy().isHasReligion(iStateReligion))):
if iCivicGovernment != iEmpireCivic: iFactor += 1
if not (iCivicLegal == iBureaucracyCivic):
iFactor += 1
if not (pLoopCity.GetCy().getNumRealBuilding(iCourthouse) > 0):
iFactor += 1
iEmpirePop += pLoopCity.getPopulation() * iFactor
print ("iCorePop=", iCorePop, "iEmpirePop=", iEmpirePop)
if iCorePop > iEmpirePop *2: iEmpireRating += 2
elif iCorePop > iEmpirePop: iEmpireRating += 1
elif iCorePop < iEmpirePop: iEmpireRating -= 1
elif iCorePop *2 < iEmpirePop: iEmpireRating -= 2
## RELIGION ##
print "REL"
iReligionRating = 0
iNumForeignReligions = 0
iNumNonbelievingCities = 0
if (iCivicReligion == iDynasticCultCivic) or (iCivicReligion == iPaganismCivic):
for pLoopCity in apCityList:
for iLoopReligion in range(iNumReligions):
if pLoopCity.GetCy().isHasReligion(iLoopReligion):
if iLoopReligion != iHinduism and iCivicLabor != iCasteSystemCivic:
iNumForeignReligions += 1
elif iCivicReligion == iStateReligionCivic:
for pLoopCity in apCityList:
if not pLoopCity.GetCy().isHasReligion(iStateReligion):
iNumNonbelievingCities += 2
for iLoopReligion in range(iNumReligions):
if pLoopCity.GetCy().isHasReligion(iLoopReligion) and iLoopReligion != iStateReligion:
iNumForeignReligions += 1
elif (iCivicReligion == iMilitancyCivic) or (iCivicGovernment == iTheocracyCivic):
for pLoopCity in apCityList:
if not pLoopCity.GetCy().isHasReligion(iStateReligion):
iNumNonbelievingCities += 2
for iLoopReligion in range(iNumReligions):
if pLoopCity.GetCy().isHasReligion(iLoopReligion) and iLoopReligion != iStateReligion:
iNumForeignReligions += 2
print ("iNumForeignReligions", iNumForeignReligions, "iNumNonbelievingCities", iNumNonbelievingCities, "iNumCities", iNumCities)
if iNumNonbelievingCities *2 > iNumCities: iReligionRating -= 2
elif iNumNonbelievingCities *4 > iNumCities: iReligionRating -= 1
if iNumForeignReligions > iNumCities *2: iReligionRating -= 2
elif iNumForeignReligions > iNumCities: iReligionRating -= 1
if sd.getPiety(iPlayer) > 70: iReligionRating += 2
elif sd.getPiety(iPlayer) > 40: iReligionRating += 1
elif sd.getPiety(iPlayer) < 30: iReligionRating -= 1
print "TOTALS"
print ("Civics:", iCivicsRating, "Health & Happiness:", iHappinessAndHealthRating, "Economy:", iEconomyRating, "Empire:", iEmpireRating, "Religion:", iReligionRating)
print ("Total:", iCivicsRating + iHappinessAndHealthRating + iEconomyRating + iEmpireRating + iReligionRating)
iAdjustment = 0
print ("iAdjustment=", iAdjustment)
iStability = iCivicsRating + iHappinessAndHealthRating + iEconomyRating + iEmpireRating + iReligionRating + iAdjustment
if bPositive:
if pTeam.isHasTech(iStabilityCollapsing):
if iStability > 3:
print "RESULT"
print ("upgrade from collapsing to unstable, iCiv=", iCiv)
pTeam.setHasTech(iStabilityCollapsing, False, iPlayer, False, False)
pTeam.setHasTech(iStabilityUnstable, True, iPlayer, False, False)
return
if pTeam.isHasTech(iStabilityUnstable):
if iStability > 3:
print "RESULT"
print ("upgrade from unstable to stable, iCiv=", iCiv)
pTeam.setHasTech(iStabilityUnstable, False, iPlayer, False, False)
pTeam.setHasTech(iStabilityStable, True, iPlayer, False, False)
return
else:
if pTeam.isHasTech(iStabilityUnstable):
if iStability < -3:
if iGameTurn > getTurnForYear(tFall[iCiv]):
print "RESULT"
print ("downgrade from unstable to collapsing, terminal crisis, iCiv=", iCiv)
pTeam.setHasTech(iStabilityUnstable, False, iPlayer, False, False)
pTeam.setHasTech(iStabilityCollapsing, True, iPlayer, False, False)
self.terminalCrisis(iPlayer, iCiv)
return
else:
print "RESULT"
print ("downgrade from unstable to collapsing, severe crisis, iCiv=", iCiv)
pTeam.setHasTech(iStabilityUnstable, False, iPlayer, False, False)
pTeam.setHasTech(iStabilityCollapsing, True, iPlayer, False, False)
self.severeCrisis(iPlayer, iCiv)
return
elif iStability < 3:
print "RESULT"
print ("stability flat at unstable, moderate crisis, iCiv=", iCiv)
self.moderateCrisis(iPlayer, iCiv)
else:
if iStability < -3:
print "RESULT"
print ("downgrade from stable to unstable, moderate crisis, iCiv=", iCiv)
pTeam.setHasTech(iStabilityStable, False, iPlayer, False, False)
pTeam.setHasTech(iStabilityUnstable, True, iPlayer, False, False)
self.moderateCrisis(iPlayer, iCiv)
return
elif iStability < 3:
print "RESULT"
print ("stability flat at stable, minor crisis, iCiv=", iCiv)
self.minorCrisis(iPlayer, iCiv)
elif iStability >= 3: print "stable, pass"