Hell terrain

WCH

Prince
Joined
Mar 26, 2008
Messages
491
If the Armageddon counter is kept very low and the Infernals are wiped off the map, will hell terrain recede or just continue to spread through evil lands?
 
That depends.

The plot counter is what matters. I'm not on my computer so I cannot check the code, but I'll see if I remember well enough to explain it. Every plot has a hidden plot counter that can range from 0 to 100. At the beginning all tiles are at a plot counter of 0. Each turn all Infernal controlled tiles have their plot counters changed to 100. Any tile with an AC of 10 or more become hell. Based on the AC and the alignment of who owns the tile, hell terrain may or may not be able to spread. If the hell can validly spread to a tile (iirc AC < 25 requires AV state religion, <50 requires evil alignment, it never spreads to good lands) and the tile is adjacent to a tile with a plot counter of 10 or more, then the tile's plot counter will be increased by 1. If those conditions are not met, then the plot counter will be reduced by 1.

If the AC is low and the Infernals are destroyed, then hell could probably only spread though lands owned by Ashen Veil civs adjacent to existing hell terrain while receding elsewhere.
 
That depends.

The plot counter is what matters. I'm not on my computer so I cannot check the code, but I'll see if I remember well enough to explain it. Every plot has a hidden plot counter that can range from 0 to 100. At the beginning all tiles are at a plot counter of 0. Each turn all Infernal controlled tiles have their plot counters changed to 100. Any tile with an AC of 10 or more become hell. Based on the AC and the alignment of who owns the tile, hell terrain may or may not be able to spread. If the hell can validly spread to a tile (iirc AC < 25 requires AV state religion, <50 requires evil alignment, it never spreads to good lands) and the tile is adjacent to a tile with a plot counter of 10 or more, then the tile's plot counter will be increased by 1. If those conditions are not met, then the plot counter will be reduced by 1.

If the AC is low and the Infernals are destroyed, then hell could probably only spread though lands owned by Ashen Veil civs adjacent to existing hell terrain while receding elsewhere.

I didn't realize AV civs were treated differently from normal Evil civs.
 
So is it not possible to be Veil but not end up covered in Hell terrain? Currently playing as Calabim; summoned Hyborem and then tried to wipe him out as quickly as possible so I could keep my health bonuses. AC is something like 5, attributable entirely to the religion in my cities.

Guess I'm stuck with all my land turning to hell?
 
As Calbrenar says, use the Life I spell if you don't want hell terrain. Sanctify reduced the plot counters of the caster's tile and the 8 adjacent tiles to 0. Generally you'd only have to worry about casting it regularly near your border with some other hell terrain to stop it from spreading.

Note that hell high plot counters spread through water tiles and can make hell spread overseas even though there is no aquatic hell terrain.
 
As Calbrenar says, use the Life I spell if you don't want hell terrain. Sanctify reduced the plot counters of the caster's tile and the 8 adjacent tiles to 0. Generally you'd only have to worry about casting it regularly near your border with some other hell terrain to stop it from spreading.

Note that hell high plot counters spread through water tiles and can make hell spread overseas even though there is no aquatic hell terrain.
Will that get it to recede, or just stop the spread?
 
Mostly stop the spread, but since a plot counter always goes down whenever it does not go up it will help it recede too.
 
Note that hell high plot counters spread through water tiles and can make hell spread overseas even though there is no aquatic hell terrain.

But, if uncontrolled land is considered neutral, that would happen only when AC is bigger than 50, right?
 
Code:
	def doHellTerrain(self):
		iAshenVeil = gc.getInfoTypeForString('RELIGION_THE_ASHEN_VEIL')
		iBurningSands = gc.getInfoTypeForString('TERRAIN_BURNING_SANDS')
		iBanana = gc.getInfoTypeForString('BONUS_BANANA')
		iCotton = gc.getInfoTypeForString('BONUS_COTTON')
		iCorn = gc.getInfoTypeForString('BONUS_CORN')
		iCow = gc.getInfoTypeForString('BONUS_COW')
		iEvil = gc.getInfoTypeForString('ALIGNMENT_EVIL')
		iFarm = gc.getInfoTypeForString('IMPROVEMENT_FARM')
		iFlames = gc.getInfoTypeForString('FEATURE_FLAMES')
		iFlamesSpreadChance = gc.getDefineINT('FLAMES_SPREAD_CHANCE')
		iGulagarm = gc.getInfoTypeForString('BONUS_GULAGARM')
		iHorse = gc.getInfoTypeForString('BONUS_HORSE')
		iInfernal = gc.getInfoTypeForString('CIVILIZATION_INFERNAL')
		iMarble = gc.getInfoTypeForString('BONUS_MARBLE')
		iNeutral = gc.getInfoTypeForString('ALIGNMENT_NEUTRAL')
		iNightmare = gc.getInfoTypeForString('BONUS_NIGHTMARE')
		iPig = gc.getInfoTypeForString('BONUS_PIG')
		iRazorweed = gc.getInfoTypeForString('BONUS_RAZORWEED')
		iRice = gc.getInfoTypeForString('BONUS_RICE')
		iSheep = gc.getInfoTypeForString('BONUS_SHEEP')
		iSheutStone = gc.getInfoTypeForString('BONUS_SHEUT_STONE')
		iSilk = gc.getInfoTypeForString('BONUS_SILK')
		iSnakePillar = gc.getInfoTypeForString('IMPROVEMENT_SNAKE_PILLAR')
		iSugar = gc.getInfoTypeForString('BONUS_SUGAR')
		iToad = gc.getInfoTypeForString('BONUS_TOAD')
		iWheat = gc.getInfoTypeForString('BONUS_WHEAT')
		iCount = CyGame().getGlobalCounter()
		for i in range (CyMap().numPlots()):
			pPlot = CyMap().plotByIndex(i)
			iFeature = pPlot.getFeatureType()
			iTerrain = pPlot.getTerrainType()
			iBonus = pPlot.getBonusType(-1)
			iImprovement = pPlot.getImprovementType()
			bUntouched = True
			if pPlot.isOwned():
				pPlayer = gc.getPlayer(pPlot.getOwner())
				iAlignment = pPlayer.getAlignment()
				if pPlayer.getCivilizationType() == iInfernal:
					pPlot.changePlotCounter(100)
					bUntouched = false
				if (bUntouched and pPlayer.getStateReligion() == iAshenVeil or (iCount >= 50 and iAlignment == iEvil) or (iCount >= 75 and iAlignment == iNeutral)):
					iX = pPlot.getX()
					iY = pPlot.getY()
					for iiX in range(iX-1, iX+2, 1):
						for iiY in range(iY-1, iY+2, 1):
							pAdjacentPlot = CyMap().plot(iiX,iiY)
							if pAdjacentPlot.isNone() == False:
								if pAdjacentPlot.getPlotCounter() > 10:
									pPlot.changePlotCounter(1)
									bUntouched = False
			if (bUntouched and pPlot.isOwned() == false and iCount > 25):
				iX = pPlot.getX()
				iY = pPlot.getY()
				for iiX in range(iX-1, iX+2, 1):
					for iiY in range(iY-1, iY+2, 1):
						pAdjacentPlot = CyMap().plot(iiX,iiY)
						if pAdjacentPlot.isNone() == False:
							if pAdjacentPlot.getPlotCounter() > 10:
								pPlot.changePlotCounter(1)
								bUntouched = False
			iPlotCount = pPlot.getPlotCounter()
			if (bUntouched and iPlotCount > 0):
				pPlot.changePlotCounter(-1)
			if iPlotCount > 9:
				if (iBonus == iSheep or iBonus == iPig):
					pPlot.setBonusType(iToad)
				if (iBonus == iHorse or iBonus == iCow):
					pPlot.setBonusType(iNightmare)
				if (iBonus == iCotton or iBonus == iSilk):
					pPlot.setBonusType(iRazorweed)
				if (iBonus == iBanana or iBonus == iSugar):
					pPlot.setBonusType(iGulagarm)
				if (iBonus == iMarble):
					pPlot.setBonusType(iSheutStone)
				if (iBonus == iCorn or iBonus == iRice or iBonus == iWheat):
					pPlot.setBonusType(-1)
					pPlot.setImprovementType(iSnakePillar)
			if iPlotCount < 10:
				if iBonus == iToad:
					if CyGame().getSorenRandNum(100, "Hell Convert") < 50:
						pPlot.setBonusType(iSheep)
					else:
						pPlot.setBonusType(iPig)
				if iBonus == iNightmare:
					if CyGame().getSorenRandNum(100, "Hell Convert") < 50:
						pPlot.setBonusType(iHorse)
					else:
						pPlot.setBonusType(iCow)
				if iBonus == iRazorweed:
					if CyGame().getSorenRandNum(100, "Hell Convert") < 50:
						pPlot.setBonusType(iCotton)
					else:
						pPlot.setBonusType(iSilk)
				if iBonus == iGulagarm:
					if CyGame().getSorenRandNum(100, "Hell Convert") < 50:
						pPlot.setBonusType(iBanana)
					else:
						pPlot.setBonusType(iSugar)
				if (iBonus == iSheutStone):
					pPlot.setBonusType(iMarble)
				if iImprovement == iSnakePillar:
					pPlot.setImprovementType(iFarm)
					iCount = CyGame().getSorenRandNum(100, "Hell Convert")
					if  iCount < 33:
						pPlot.setBonusType(iCorn)
					else:
						if iCount < 66:
							pPlot.setBonusType(iRice)
						else:
							pPlot.setBonusType(iWheat)
			if iTerrain == iBurningSands:
				if pPlot.isCity() == False:
					if pPlot.isPeak() == False:
						if CyGame().getSorenRandNum(100, "Flames") <= iFlamesSpreadChance:
							pPlot.setFeatureType(iFlames, 0)


Unowned tiles and neutral tiles are not treated alike.

You actually have to have an AC of 50 for hell to spread to non-AV evil lands and of 75 to spread to Neutral lands, but 25 is enough to make it spread to unowned lands.
 
Unowned tiles and neutral tiles are not treated alike.

You actually have to have an AC of 50 for hell to spread to non-AV evil lands and of 75 to spread to Neutral lands, but 25 is enough to make it spread to unowned lands.

Oh, thanks. This means, we must all be afraid of the evil, evil sea. And not only because of the octoplushies.

This means than an evil, earth-loving society will have to embark priests with life I on ships and keep blessing the sea, forever. Charming.

Does it also means that flying demons get the hell terrain bonus while flying over the evil, evil sea? If so, then the apocalypse units enjoying healing breaks on the sea are doing a reaaally clever thing.
 
Priests don't have Life I, unless you are talking about Elohim priests upgraded from Devouts.

Edit: or if you are using a really old version of FfH2 that predates the streamlining of the magic system, back when good priests had life as it was a prereq for their healing spells. I don't think that could actually cast sanctify then either though, as they lacked Channeling I. I think hell terrain may have worked differently then too.

Demons don't get a bonus based on plot counter, only actual hell terrains. Ocean, Coast, Tundra, and Snow don't have hell terrain equivalents, so demons get no bonus there even with a plot counter of 100.

Not having seperate terrains also makes it really hard to know where you need to sanctify.
 
Priests don't have Life I, unless you are talking about Elohim priests upgraded from Devouts.

That's precisely my guys. Devouts are a bit underwhelming in themselves, but they rock thank to the large upgrade path. Getting some Recon only promotions on disciple units can yeld some nice sinergies, like mobility II medic II march paladins.
 
Back
Top Bottom