Armageddon Victory

Iceciro

Special Ability: Decimate
Joined
Jul 12, 2006
Messages
1,944
Location
in ur empire, takin ur cities
So.. now that Fall Further is in a playable state, I feel like I can once again start harassing the devteam about things which will add more code and chances of exploding. :crazyeye:

Why do the Sheiam/Infernals not have a win condition for AC100? It just seems like it should belong there. No other civ seems to have such a clear and defined final goal like "ending the world" or "bringing hell to earth" like these two, yet that doesn't count as a victory for them?
 
Agreed here, also.
If both are in game, in single player, the player should win. In MP, the player with the higher score at the time, should win.
If the victory is disabled, though, I think AC 100 should be nastier than it is now...
 
Maybe the changes to the AC above 90 should be halved. 90 = Avatar of Wrath, 95 = Apocalypse (=hellish terrain everywhere, 2 units out of 3 are killed, 1 city out of 3 is razed, with an appropriate music), 100 = The world explodes, the Infernal and the Sheaim win.
 
FF has come a lot closer to this than FFH, ith all the demons spawning everywhere.

At any reasonable difficulty leel, the AC pretty much IS a victory condityion, because the swarms of demons will annihilate your opponents.

Except the good ones...

I'm thinking, there should be a ritual available ay AC 100, that removes good civs' protecton from hell terrain, and basically changes the conquest victory into an Armageddon Victory. I don't like the idea of just "winning" from building such a thing. I'd rather see the win come from the demonic horde it causes, to destroy your enemies.
 
Why do the Sheiam/Infernals not have a win condition for AC100? It just seems like it should belong there. No other civ seems to have such a clear and defined final goal like "ending the world" or "bringing hell to earth" like these two, yet that doesn't count as a victory for them?

This is actually the main reason for the Demon spawning being related to Hell terrain and the AC. If the AC gets high enough, it becomes increasingly difficult for anyone other than the Demon-Friendly civs to survive, especially when both the Infernals and the Sheaim get stronger that way too... The AC makes domination/conquest easier for those civs.

I don't think a simple AC100 or Ritual is interesting enough, and neither would require large scale war... I'm open to ideas, but they'd need to be compelling and detailed...
 
I think it's too easy to have an AC100. It shouldn't be a common event. "Oh, I razed a city and accidentally triggered Apocalypse... " And 20 turns later, it's like nothing happened.

I got several ideas:

- It should be hard to increase the AC >90. Any change should be halved, or even divided by 10.
- Hellish terrain should start spreading on Good lands.
- A very severe blight should strike everyone, and this blight shouldn't wear off while the AC remains above 90. So everyone's population would slowly be decreased, everyone's units would slowly die.
- AC 95: The event called 'Apocalypse' (even though it doesn't look like Apocalypse) in vanilla Ffh would occur (60% of the living units killed, population halved), but it would be only the beginning.
- AC 100 the REAL Apocalypse: Hellish terrain everywhere, with appropriate music in order to make it more terrifying.
Also, each turn with AC 100 would kill 3 units out of 4 (no matter if they are living or not), raze 1 city out of 3, destroy 1 improvement out of 2. Each turn of Apocalypse would add +5% chance of victory for the Sheaim.
 
I don't think a simple AC100 or Ritual is interesting enough, and neither would require large scale war... I'm open to ideas, but they'd need to be compelling and detailed...

Awhile back I wrote some code that does kind of a "reverse-genesis" on the world. It made Armageddon more... devastating.

Changes are:

Grasslands-->Plains(forest/jungle become burnt forest or flames)
Plains-->Desert (forest/jungle become scrubs or flames)
Desert-->Burning Sands (instant flames or obsidian)
Marsh-->Shallows(with possible fallout)
Snow-->Tundra
Tundra-->Fields of Perdition

http://forums.civfanatics.com/showthread.php?t=308550
 
I think a ritual to remove good races protection from Hell terrain only castable at 100AC would be neat. If the good races wanted to prevent that they should not have let the AC get that high.

I figure at 100AC you are no longer in a handbasket headed to hell, You are there. All passengers prepare for deboarding.

Personally I RARELY play evil races. Even when I do evil, my AC never breaks 100.
 
And AC should be locked in 100 once the armageddon hits. Prevent it, or live with it. And run from the stigmata units.

Permanent, severe penalties. Massive unhealthiness, no natural healing for living units, hell terrain spreads everywhere (very quickly).
 
It's very slightly related to the topic but I imagine it would be quite surreal to live in a good nation while apocalypse is raging: everywhere outside, hell terrain, demons at the gates; inside? Pink butterflies and beautiful sunsets. Well, pandemic-spreading butterflies, but still, it would be something.
 
That's only if you are playing with FfH's illogical hell spreading rules. In my version I instead have this:

Spoiler :

CustomFuctions.py
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')
		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')
		iMercurians = gc.getInfoTypeForString('CIVILIZATION_MERCURIANS')
		
		iMarble = gc.getInfoTypeForString('BONUS_MARBLE')
		iEvil = gc.getInfoTypeForString('ALIGNMENT_EVIL')
		iNeutral = gc.getInfoTypeForString('ALIGNMENT_NEUTRAL')
		iGood = gc.getInfoTypeForString('ALIGNMENT_GOOD')
		
		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')
		
		
		iFlood = gc.getInfoTypeForString('FEATURE_FLOOD_PLAINS')
		iObsidianPlains = gc.getInfoTypeForString('FEATURE_OBSIDIAN_PLAINS')
		iScrub = gc.getInfoTypeForString('FEATURE_SCRUB')
		
		
		iCount = CyGame().getGlobalCounter()
		
		iRnd = CyGame().getSorenRandNum(100, "Hell Spread")
		
		
		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 iCount > iRnd:
				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 pPlot.isOwned():
				
				pPlayer = gc.getPlayer(pPlot.getOwner())
				iAlignment = pPlayer.getAlignment()
				
				if pPlayer.getCivilizationType() == iInfernal:
					pPlot.changePlotCounter(1)
					bUntouched = false
				if iAlignment == iGood:
					bUntouched = True
					pPlot.changePlotCounter(-1)
			
			iPlotCount = pPlot.getPlotCounter()
			if (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 iFeature == iFlood:
					pPlot.setFeatureType(iObsidianPlains, 0)
				if iFeature == iScrub:
					pPlot.setFeatureType(iObsidianPlains, 0)
					
			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 iFeature == iObsidianPlains:
					if pPlot.isRiver():
						pPlot.setFeatureType(iFlood, 0)
					else:
						pPlot.setFeatureType(iScrub, 0)
						
				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 iFeature == -1:
							if CyGame().getSorenRandNum(100, "Flames") <= iFlamesSpreadChance:
								pPlot.setFeatureType(iFlames, 0)
CvSpellInterface.py, as PyPerTurn effect of the Unholy Taint, Demon, Gela, and Stigmata promotions
Code:
def effectTaint(caster):
	if not gc.getGame().isOption(GameOptionTypes.GAMEOPTION_NO_PLOT_COUNTER):
		pPlot = caster.plot()
		pPlot.changePlotCounter((CyGame().getGlobalCounter()/10))

I think that makes things more interesting. Seeing a path of destruction wherever evil army's have marched seems so appropriate.
 
What's illogical about the FFH rules?

Can you explain what your code does?

The interesting part allows certain demonic-based promotions to spread hell terrain as the unit moves - which I believe would even allow those units to spread it into good-player's territory. It should slowly recede from that territory though once the units have left.

Interesting idea - though the spread is pretty quick with higher ACs and multiple units.
 
The interesting part allows certain demonic-based promotions to spread hell terrain as the unit moves - which I believe would even allow those units to spread it into good-player's territory. It should slowly recede from that territory though once the units have left.

Interesting idea - though the spread is pretty quick with higher ACs and multiple units.

MC has already stated in another post, that he has Hyborem confined within hell terrain..So, this type of spread makes paths for Hyborem, also.
 
The interesting part allows certain demonic-based promotions to spread hell terrain as the unit moves - which I believe would even allow those units to spread it into good-player's territory. It should slowly recede from that territory though once the units have left.

Interesting idea - though the spread is pretty quick with higher ACs and multiple units.

That would be a neat effect really
 
In my post above, the link also goes to the fix for Obsidian Plains. It was a real easy change:

Code:
if iTerrain == iBurningSands:
		if pPlot.isCity() == False:
			if pPlot.isPeak() == False:
				if CyGame().getSorenRandNum(100, "Flames") <= iFlamesSpreadChance:
					if pPlot.isRiverSide() == True and pPlot.isHills() == False:
						pPlot.setFeatureType(iObsidian, 0)
					else:
						pPlot.setFeatureType(iFlames, 0)
 
I see people often clamoring for units to up and die and cities to be razed automatically once the AC hits 100 and Armageddon occurs. The problem with this is that Armageddon, at least the traditional definition of it, is not simply a single event. I suppose in the actual traditional definition it defines a specific location, but generally it is used to describe the war between good and evil, not simply that people keel over dead and things (read: cities) up and get themselves obliterated.

To me this means that it really should not affect units specifically (beyond making them crazed/enraged/barbarian, as the Avatar of Wrath does or used to), but that with the agreement between gods being broken, all bets are off. The gods take direct influence, and armies of powerful heroes spawn to face off against each other (which might be difficult to manage without adding several different barb factions for the sole purpose of armageddon). Most of these units should be angels and demons on par with the horseman, while the actual heroes of these forces would be on par with the Avatar of Wrath, the Mithril Golem, and Meshamber. The mortal civilizations would be quickly wiped out, but it is not automatic as Armageddon currently is, and you have a fighting chance if you are prepared.

Or am I getting ahead of myself and Armageddon isn't the breaking of the Compact?

Unrelated to all that, I like the idea of demons spreading hell terrain where they go, and it fading back to normal after they pass if the AC is not high enough to sustain hell terrain in neutral/good lands.
 
Back
Top Bottom