RFC Classical World

the new map is too big to be useable in google docs. the easiest thing to do is just cut and paste from CityNameManger.py into a blank spreadsheet.

nerfed the food in Mesopotamia, moved the Nile and it's delta slightly for appearance

moved Antioch's olives to Edessa

resources are balanced to 4 for a prime site (capital or big city) and 3 for lesser good sites. there are roughly 20 each of copper, iron and timber on the map and about 12 stone. cinnamon is more rare than before and found exclusively in south India (this is gameplay, not realism).

moved the Kushan spawn to Begram to avoid the city ruins bug

the reason the autoplay is taking so long on civ spawn turns is that most civs still have the generic settler map covering all the city sites on the map, so they take forever evaluating all those tiles. I have made custom settler maps for all the civs up to Bactria, so for example that huge pause at 224AD was the Sassanid spawn. I will get the other settler maps together asap, at least for the civs up to the Kushans
 
Well up till then the game was quite smooth, it took about 20, maybe 25 to get there, but after about 8 minutes of 224AD I simply closed the window. Nevertheless, I overestimated the time it would take to get that far, so I consider it a good job you did on the map. So far the AI isn't doing weird things, which is a good sign as well.
 
the first couple of versions since the new map ommitted the war on spawn between Parthia and the Seleucids for some reason. its back now and in the case of AI vs AI its a WARPLAN_TOTAL
 
The SoI engine conversion of RC CW is abandoned right now ?
And will the small civs be playable one day ? :) Like visigothic kingdom.

I played an entire bactrian game last night. Wow... it was very difficult (monarch) and somewhat random because I had to roam every barbarian, civ or indy city to get enough slaves to build palace and the wonder in Taxila. I like this. But small bug : an indian civ spawn in Inda (maybe Songa), but I had all cities up to Pataliputra. They did'nt flip to this civ and they accepted peace immediatly, so they did not have any city throughout the game.

Another annoying thing : some AI civs set new cities very close each other. It's weird sometimes, because the map is bigger. Maybe change the condition of 3-tiles between two city ? Upgrade it to 6 ?

What are the possibilities to modify the AI of civilizations ? Maybe I have some ideas.

What are the roman civil wars ? I red it on the civilopedia, is this setting available or it's coming up to the next version ? (great idea, by the way ! you could add other unique settings like this one, for example the hellenistic civs which were in war each other to claim the basileus title)
 
In my Bactrian game on the old map I got a Great Engineer to build the Royal Mint, I'll give it another go soon. Unfortunately my time is limited these weeks so I don't exactly know when.
 
the bactrian strategy is to switch to slavery before you settle your first city, and then when Merv flips to you assign it your UB to be built. You will have a great engineer about 20-30 turns before 100 BC so you can hurry either the palace or the royal mint !
 
ok I know some people are probably going to be skeptical about this but.... I rewrote stability from the ground up.

reasons:

I had been putting off trying to figure out what was happening in the mod stability-wise for a very long time. I had tried a few times to get the idea of it but it always remained something that was just a little bit too complicated. when I had tried to tweak the system to create the flow I wanted from civ to civ it didn't really respond.

I don't like the fact that the system is too complex for many players to understand. I never liked the feeling of watching your stability slowly die, knowing you will probably lose the UHV because of it, and not having any clear idea of how to fix it. I know there are many great players who have made an art of running Rhye's system, but to me it was always a great idea that almost always ended up making me enjoy my game less rather than more.

the existing stability system slows the game down quite a bit. I turned off the Stability.checkTurn() call and the Satavahanas loaded in 6 minutes rather than 10. I just don't think its necessary to scroll the map that much and gather that much tile-by-tile and turn-by-turn information to determine whether or not a civ should be considered stable.

so one day last week I wrote up a simple system and I've been using it since then and so far I like it so I'm going to include it in the mod. as far as how you play with it goes, there are not really any surprises: some civic combos are good, some bad, stay healthy and happy, keep the gold flowing.

the biggest difference from the existing system is that it is entirely event-driven. there are no regular checks. checks only occur when something else happens (lose a city, revolution etc). the other main difference is that there are three basic levels of stability and that is all that is saved by the civ as the game progress, all other information is snapshot-in-time only.

I will probably add more to this. of course feel free to suggest and request. below is a detailed guide to the new system. the new system can print reports of its stability checks. you need to enable logging in your civ.ini file to make that happen.

Guide to the new stability system:
Spoiler :


The system works on three concepts: Stablility Levels, Stability Checks and Crises.

There are three stability levels, Stable, Unstable and Collapsing, indicated by the usual symbols next to the civs name and score in the main screen. All playable civs start at stable. There is no stability score associated with these levels, all the game knows is whether you are stable, unstable or collapsing.

In certain circumstances as the game prgresses, Stability Checks can occur. A Stability Check takes a snapshot of your empire, observes various qualities and calculates a stability score. Depending on this score, your Stbility Level may go up or down and you may experience a Crisis.

There are 2 kinds of Stability Checks, neutral ones and positive ones. Neutral ones can raise or your stability level and cause a crisis, positive ones can only increase your stablilty level or have no effect.

Neutral checks occur:
when you lose a city to conquest (not flips or trades)
when you found a new city
when you discover a new tech
when you become a vassal
when war is declared (by you or against you)
when you start a revolution


Positive checks occur:
when you build a wonder or national wonder
when you start a golden age
when you gain a vassal
when a great person is born

there are no stability checks for a civ in the first 40 turns after its birth

The following factors influence the Stablility Check: civics, religion, economy, health and happiness, and the population of your empire's core vs it's periphery, mitigated by certain factors.

The civics section is roughly the same as before, there are good combinations and bad ones. There are also penalties for running Caste System while not Hindu or running Slavery while Christian.

The religion calculation counts the number of non-state religions in your cities and, if you have a state religion, the number of your cities that do not have it. If you are running Caste System Hinduism does not count as a foreign religion. You also get bonuses and penalties from high or low piety*.

The health and happiness calcualtion counts all the happy, unhappy, healthy and unhealthy faces in your empire, divided by the number of cities. The effect on stability is minor compred to the other factors.

The empire core vs periphery works as follows: all the cities population in your core provinces is multiplied by 4 to get the core population number, the population of any cities in your normal regions is left as is if you are running the empire civic (or the theocracy civic with the state religion present) and the bureaucracy civic and have a courthouse in the city, but multiplied by 1 + 1 for each of the preceding conditions that does not apply. So for example if you were running empire but not bureaucracy and had no courthouses the periphery population would be multiplied by 3. Cities outside of your normal regions recieve additional penalties. If the core population number is higher, stability is affected positively and if the periphery is higher stablility is affected negatively. So the rule of thumb is that without favorable civics or buildings you can carry an empire population equal to the population of your core with no ill effects. There is also a heavy penalty for losing control of any of your core provinces.

The economy calcualtion is very simple and only looks at 1 factor: can you save gold and progress in research at the same time ie if you are not earning gold at zero tech you are in trouble.

Two things can result from a stability check: your Stability Level can be adjusted and you may experience a crisis. If the check is positive then your stability can only go up and you will not experience a crisis.

There are four levels of crisis: minor, moderate, severe and terminal. Their effects range from anarchy and revolts in cities to complete collapse. All crises cause at least a couple of turns of anarchy and once you are in anarchy you are immune to further Stability Checks until it is over.

When a Stability Check occurs, the game prints a report to the PythonDbg.log file in your My Games/Beyond the Sword/Logs folder. here is an example:

Spoiler :
STABILITY CHECK

Nubia

('iPlayer=', 8, 'iCiv=', 8)

CIV

('bad combo', 'despotism', 'dynastic cult, state religion or syncreatism')

('good combo', 'tribalism', 'decentralization')

('bad combo', 'tribalism', 'dynastic cult')

H & H

('total happy', 8, 'total unhappy', 4, 'cities', 1)

('total health', 4, 'total unhealth', 4, 'cities', 1)

('iHappiness=', 4, 'iHealth=', 0)

ECON

('gold=', 0, 'research=', 12, 'costs=', 0, 'iRate', 12)

EMP

core province not controlled

('iCorePop=', 0, 'iEmpirePop=', 16)

REL

('iNumForeignReligions', 0, 'iNumNonbelievingCities', 0, 'iNumCities', 1)

TOTALS

('Civics:', -1, 'Health & Happiness:', 1, 'Economy:', 1, 'Empire:', -4, 'Religion:', -1)

('Total:', -4)

('iAdjustment=', 0)

RESULT

('downgrade from stable to unstable, moderate crisis, iCiv=', 8)


iAdjustment is a factor used to tweak the whole system to a more or less stable state.

By comparing this report to the Stability Check code:

Spoiler :
Code:
		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"

you should be able to answer any questions you may have about a specific check



*the piety system needs to be revamped to properly account for the pre-state religion era


in my recent games as the Parthians vs the Seleucids and Satavahanas vs Sungas the stability effects were reasonable. I don't think you will see anything crazy or game-wrecking.

tweaked egypt again. Alexandria is now 1 tile north and Pelusion 1 tile east, making it a canal city. Jerusalem gets sheep (on grass) but loses the copper to Pelusion, giving it back to Ptolemy for his Galatians. Diospolis is now 1 tile west, Berenice 1 north and gets the stone Diospolid used to have.

the following cities (or multiples), and only these, will get 5 resources each: Rome, Byzantion, Alexandria, Antioch-Damascus-Tyre cluster, Ctesiphon-Babylon, Pataliputra, Varanasi, Luoyang, Wu(Shanghai) and 1 more Chinese city TBD.

added the Provinces of Andhra and Numidia

added non-playable Numidians spawning at Cirta in 200BC
 
That sounds pretty good, it makes much more sense then doing the calculations every turn and the system sounds overall much more simple and accessible.
 
Very interesting. I'm going to look forward to my game this weekend, new map and news system. So far I've done Kalinga, Kushans, Selucids on the old map, any recommendations for an interesting civ for the new?
 
Seems like a good call to me. The speed difference is pretty remarkable I must say, and this system may be easier to tweak. A few questions:

- Does a strong economy mean you have to tech fast and accumulate wealth? Does it mean that civs that have a gold goal have a hard time because of 0% research? How about building wealth in cities, does that greatly enhance stability?
- About crises and war declaration: I have the feeling that this system may become manipulative after some games. There may be good times to declare war and bad times. Also, being declared war may cause serious trouble sometimes. Anarchy may be a pretty devastating thing to a civ that already has a hard time. However that's only from a theoretical point of view, I can't say whether this will be the case or not.
- Is there a limit on being Stable? For example, if you time your positive checks well, is it possible to get a large margin, that can be used to prevent stability to drop to unstable.
 
I'm adjusting the system as I go quite a bit so update often. I'm also editing the big post to reflect the changes.
 
I loaded a Kushan game. They don't start with any techs and don't flip any cities and with their large army are losing money at a fast rate.

Also saw some strange things. Selucids collapsed but the Parthians have only two cities, Perseopolis and some other one in the north. Mesopatamia is a mishmash of indpenendents and this weird green thing. I thought it was Sungas, but I realized its a slightly different shade of green so I'm not sure what it is. That weird green thing controlled random cities like Pella, Cyprus, most of the Levant.

Ptolemy still alive but lost Disoplis. Roman Empire didn't achieve much have just Italy and the city of Byzantion, Gauls are strongest power in Europe and control not just France but Spain too, and even part of North Africa having apparently beaten Carthage which has just its namesake (and still exists). Judea is still around too and Pontus which has just three cities all size 1. Armenia appears to have been barb killed. China looks interesting, it's split along the river with the Song (or whatever that southern state is) in the south, the Han control the north while Goguryeo controls Manchuria and Korea.

Funan has a city name error for what looks like Da Nang or Hue.

Satavanha are doing very well as always. Kalinga and Pandya both restricted to just one city. The Sakas control western India with their capital at Dwarka. The Sungas basically have the Bengal-Pataliputra area.
 
I loaded a Kushan game. They don't start with any techs and don't flip any cities and with their large army are losing money at a fast rate.

Also saw some strange things. Selucids collapsed but the Parthians have only two cities, Perseopolis and some other one in the north. Mesopatamia is a mishmash of indpenendents and this weird green thing. I thought it was Sungas, but I realized its a slightly different shade of green so I'm not sure what it is. That weird green thing controlled random cities like Pella, Cyprus, most of the Levant. [...]

The Antigonids?
 
the off-green colored civ picking up random cities was Numidia. I had reduced the number of independent minor civs from 4 to 3 and didn't account for it in civ collapses. its fixed now.

the Kushans spawning with no techs is probably a python thing. if the Parthians also spawned with no techs it would explain their poor performance in that game. do you have python exceptions enabled?

edit: just fixed a couple of bugs that could have caused those problems
 
So, I just played a little bit as Pontus. Even though my stability was never below stable, I went through anarchy every time I captured a city. Then I went to war with the Antigonids, and went through anarchy. Then I made peace with them, and went through MORE anarchy!

But overall I do like the concept. Bad stability never meant anything before except the risk of the sudden death of your empire. Now bad stability sucks. :)
 
I will improve that. you shouldn't get all that anarchy if you are stable.

made some changes. should be more forgiving now.
 
I tried the Pandyans out just now, too. It was going good til I got a great priest and I went into anarchy for 2 turns.

*edit* I think I may have triggered the anarchy by using the great priest to research Organized Religion. I just finished researching Alphabet as Saba and got anarchy again.

btw. I just need to say that I really love everything so far. The mod's looking awesome.

*edit 2* I just collapsed as the Seleucids by attacking a rebel Jerusalem. 6 turns of anarchy for declaring on an indie!
 
I got a repeatable crash as Pontus in 146BC but when I rolled a Parthian start (140BC) no crash.

In the Pontus game I had Sinope, Trapezus, Byzantion, Ancyra and Tarsos and was stable.

In the Parthian start the Seleucids had lost Parsa but thats it.
 
Back
Top Bottom