The Legion of D'Tesh (Civilization Module)

Mailbox

King
Joined
Oct 6, 2007
Messages
888
FOR FALL FURTHER

This modular civilization mod for Fall from Heaven 2 adds a new civilization to the game, The Legion of D'Tesh.

The Legion of D'Tesh is composed of the undead minions and human mages that serve the powerful necromancer D'Tesh. Skeletons and zombies roam the lands of the D'Teshi Empire and the very ground is poisoned with foul necromantic energies. In stark contrast to Hyborem, who seeks to pull all the souls on Erebus into hell, D'Tesh merely seeks to enslave the entire world’s physical bodies. He regards souls as unnecessary for his plans, and only uses the spiritual manifestations of the dead as his eyes and ears.

The Legion uses no food and most of its work is done by the soulless slaves captured in combat with other nations. From these pitiful and worthless corpses, the dread necromancer and his mages select the best preserved and most intact in order to fill the ranks of his vast and nightmarish armies. His terrible obsidian spire pierces the skies of Erebus and the vast majority of his armies and plans are constructed and executed within its fell shadow. Other cities in the empire serve mainly as vessels from which to drain bodies to reanimate, fueling the great undead war machine.

Capturing and building cities is difficult for the Legion as all cities must be bound to D’Tesh’s will and the Legion is unable to build cities. Cities that are captured by the legions are often drained of all population and those unfortunate enough to live there are transported back to the core cities, which can build more powerful undead. These drained cities are then abandoned by the D’Teshi armies and often retaken by their former owners, who hope they can prevent the city from falling again.

Download here: http://forums.civfanatics.com/downloads.php?do=file&id=9555

All bug, balance, and idea feedback is more than appreciated in this thread. I hope you enjoy this module. :)
 
Changelog:

BETA release .2

- Removed Fear resource
- Added "Infused Ash" resource
- + 1 % research per instance
- + 1 commerce
- Added "Pyre" improvement
- Can only be built on resources the D'Tesh cannot normally obtain (Organic Health/Happiness resources)
- Converts those resources into Infused Ash
- + 2 hammers
- + 2 commerce
- The Tower of D'Tesh now gives + 1 % production per instance of Infused Ash (Unimplemented)
- Added "Desecrate" spell (Creates a wasteland, can only be cast within borders, requires Knowledge of the Ether)
- Added "Wasteland" terrain (+ 1 hammers)
- Razing cities gives a Binder
- Razing cities gives Enslaved (Pop/4 +1)
- Reclassed the buildings (this has been giving me the most trouble)
- Palace and Cathedral of War give +1000 food (to help the AI)


Version .1

- Beta version
- Added the Legion of D'Tesh civilization
 
Known Issues and Bugs:

The python needing parts are partially completed but will be added to the main mod as the XML portions are tested and balanced.

- Pedia entries are sparse and need to be elaborated
- Wasteland code is not implemented (Needs python)
- The granting of Enslaved on city raze is not implemented (Needs python)
 
Hmm, at least to me, they seem very similar to 'Scions'. What are your unique differences vs Scions when it comes to functions, design and flavor?

Have not game-tested it yet.

I am interested in your code for granting Enslaved on city raze, if you fix this before I do. Please send me a PM with the solution?
 
Bodies without souls? Some time ago i have produced anidea like this...
 
Hmm, at least to me, they seem very similar to 'Scions'. What are your unique differences vs Scions when it comes to functions, design and flavor?

Have not game-tested it yet.

I am interested in your code for granting Enslaved on city raze, if you fix this before I do. Please send me a PM with the solution?

One of the major differences between the Scions and the Legion is that the Legion gets everything except the starting enslaved by conquest. I realized that I needed to make the Legion the most war based civilization thus far in FfH 2, since they have to conquer all their cities and all their population. As for the python granting enslaved on city raze:

Spoiler :
Code:
	def onCityRazed(self, argsList):
		'City Razed'
		city, iPlayer = argsList
		iOwner = city.findHighestCulture()

		# Partisans!
#		if city.getPopulation > 1 and iOwner != -1 and iPlayer != -1:
#			owner = gc.getPlayer(iOwner)
#			if not owner.isBarbarian() and owner.getNumCities() > 0:
#				if gc.getTeam(owner.getTeam()).isAtWar(gc.getPlayer(iPlayer).getTeam()):
#					if gc.getNumEventTriggerInfos() > 0: # prevents mods that don't have events from getting an error
#						iEvent = CvUtil.findInfoTypeNum(gc.getEventTriggerInfo, gc.getNumEventTriggerInfos(),'EVENTTRIGGER_PARTISANS')
#						if iEvent != -1 and gc.getGame().isEventActive(iEvent) and owner.getEventTriggerWeight(iEvent) >= 0:
#							triggerData = owner.initTriggeredData(iEvent, true, -1, city.getX(), city.getY(), iPlayer, city.getID(), -1, -1, -1, -1)

		pPlayer = gc.getPlayer(iPlayer)
		if gc.getPlayer(city.getOriginalOwner()).getAlignment() == gc.getInfoTypeForString('ALIGNMENT_EVIL'):
			for i in range(city.getPopulation()):
				cf.giftUnit(gc.getInfoTypeForString('UNIT_MANES'), gc.getInfoTypeForString('CIVILIZATION_INFERNAL'), 0, city.plot(), city.getOwner())

		if gc.getPlayer(city.getOriginalOwner()).getAlignment() == gc.getInfoTypeForString('ALIGNMENT_NEUTRAL'):
			for i in range((city.getPopulation() / 4) + 1):
				cf.giftUnit(gc.getInfoTypeForString('UNIT_MANES'), gc.getInfoTypeForString('CIVILIZATION_INFERNAL'), 0, city.plot(), city.getOwner())
				cf.giftUnit(gc.getInfoTypeForString('UNIT_MANES'), gc.getInfoTypeForString('CIVILIZATION_INFERNAL'), 0, city.plot(), city.getOwner())
				cf.giftUnit(gc.getInfoTypeForString('UNIT_ANGEL'), gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'), 0, city.plot(), city.getOwner())

		if gc.getPlayer(city.getOriginalOwner()).getAlignment() == gc.getInfoTypeForString('ALIGNMENT_GOOD'):
			for i in range((city.getPopulation() / 2) + 1):
				cf.giftUnit(gc.getInfoTypeForString('UNIT_ANGEL'), gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'), 0, city.plot(), city.getOwner())

		if city.getPopulation > 1 and iOwner != -1 and iPlayer != -1:
			if CyGame().getSorenRandNum(100, "Brotherhood of Wardens") <= 25:
				owner = gc.getPlayer(iOwner)
				iEvent = CvUtil.findInfoTypeNum(gc.getEventTriggerInfo, gc.getNumEventTriggerInfos(),'EVENTTRIGGER_BROTHERHOOD_OF_WARDENS_SPREAD')
				triggerData = owner.initTriggeredData(iEvent, true, -1, city.getX(), city.getY(), iPlayer, city.getID(), -1, -1, -1, -1)

		CvUtil.pyPrint("City Razed Event: %s" %(city.getName(),))

That's the code I'm planning on modifying, it's located within CvEventManager.py. I'll just have to put a check for when the razing player is Legion and then generate Enslaved based on the size of the city (probably a gaussian curve based on two random numbers added together).


Bodies without souls? Some time ago i have produced anidea like this...

Bodies without souls is a pretty common theme for the undead, and I'm trying to tap into the "Dark Wizard in a tower" stereotype for D'Tesh. Reading that thread, you do mention one thing I had originally wanted and that was for the player to have D'Tesh from turn one. Unfortunately, I didn't really see an easy way to solve the problem of the player just giving him mobility promotions at Horseback riding, at least not without using python.

I might however add him back in the early game if I can fix him in a way that I think isn't overpowered.
 
You could make D'Tesh be DOMAIN_IMMOBILE, but then he would be permanently stuck in his starting position (which might not be a good location to actually settle).
 
One of the major differences between the Scions and the Legion is that the Legion gets everything except the starting enslaved by conquest.

The other is that the Scions still appreciate a good laugh.
;)

Does the legion make some of it's units directly from captured units and/or slave units?

That's the code I'm planning on modifying, it's located within CvEventManager.py. I'll just have to put a check for when the razing player is Legion and then generate Enslaved based on the size of the city (probably a gaussian curve based on two random numbers added together).

Cool - I want a way to drop the population of a city an extra notch or two (ala "Conquest") when the Scions capture it. Now I know who to ask for help. :)

I might however add him back in the early game if I can fix him in a way that I think isn't overpowered.

I made the first version of Alexi a "Siege" unit - no Mobility allowed. She can upgrade at KotEther though - she doesn't spend very long - or do much - as the inappropriate unit type.
 
You could make D'Tesh be DOMAIN_IMMOBILE, but then he would be permanently stuck in his starting position (which might not be a good location to actually settle).

When I switch to adding python as well, I suppose I could make him DOMAIN_IMMOBILE before the "upgrade" at Strength of Will and just have him spawn in the first city that the Legion founds.

Does the legion make some of it's units directly from captured units and/or slave units?

Not yet, I was thinking of adding a lunatic UU (maybe even a whole line of UUs) that is usable without the OO religion or asylums.


I made the first version of Alexi a "Siege" unit - no Mobility allowed. She can upgrade at KotEther though - she doesn't spend very long - or do much - as the inappropriate unit type.

This would be hard to do for D'Tesh though, as I'd want him to start out with Arcane, channeling I-III, and hero so he could gain promotions in order to defend the Spire. Maybe just give him channeling I and II so he couldn't access the third level spells. That's all just idle speculation for now though, I want to get player feedback on how the civilization plays before I continue with development.
 
You could make D'Tesh be DOMAIN_IMMOBILE, but then he would be permanently stuck in his starting position (which might not be a good location to actually settle).

Thanks! That's what I needed to know about.
 
In order to emphasize warmongering with the Legion, I've done several things:

1) Removed the ability to found cities.

This makes the Legion completely dependent on conquest in order to expand its cultural borders.

2) The only way to gain population is through battle.

The combination of Fallow and most units having a small chance to capture slaves makes the Legion further dependent on conquest and battle, because otherwise the capital and captured cities simply cannot grow.

Another strength I've given them is the great and powerful capital in the form of the Tower of D'Tesh. It gives a plot radius of 3 and removes all unhappiness and unhealth. This means that the capital city of the Legion can grow to terrible proportions, churning out a unit every single turn. The Cathedral of Unending War unique building also gives the city it is built in no unhappiness, thus allowing bigger and better cities in the end game for the Legion.
 
So the Scions are builders and the Legion are rushers/warmongers. Interesting. :)

Then my question would be, what could be done do emphazise those traits?

One of the possible ways to balance out the Awakened creation-rate is to allow more Reborn to be captured - I'll avoid that, though, since the Legion is already giving the Undead a bad name. :p

I saw your post re. promotion naming in the Modding thread btw, Mailbox. Wooo...! That might allow the modular version of Scions to include more. Sometime I might try wholesale "ZZZZ" renaming and see if that doesn't fix some other issues with modular mods.
 
Nice change Mailbox :)

A question.

How about giving all 1 and 2 tier units of the Scion's a promotion that halves their combat power when outside their own cultural boundaries? That would increase their 'builder' status.

Also giving them a defensive UB wonder or an additional building that gives city defence?
 
Your modmod broke a saved game.
 
That's very little information. Could you give me a few details about the nature of the game breaking?
 
I played til it CTDed. Then I reloaded and it keeps sayin that there was a runtime error. Started a new game and it CTDed again. Didn't bother loadin the autosave on that one.

It might be cuz I recently upgraded from FfH .031 to .032. Is your modmod compatible with .032? If not, please make it so it is. Cuz we have bout a year til they upgrade it more.

But a few critiques.
One, why can't I seem to be able to build a Binder? I should be able to when I've built Binding Stones. But I can't.
Two, why is it that the Recon units are so weak? Wat's the reasonin for it? I don't really unnerstand it at all.
 
I'll run it some more (probably in a couple days, going to the beach for a couple days), I thought it was running with .32 to see what's wrong.

1) For now, I've removed Binders from the game for the modular version. Since the Legion has such incredible military strength, I figure they have a good chance of successfully capturing most of their cities. In the future, I'm going to give them Binders for the razing of cities, so that cities in terrible positions can be moved.

2) All the recon units are so weak because they have invisibility (INVISIBLE_LAND) AND can travel through rival territory. I thought I had mentioned that in the introduction but I could have missed it. I don't like that the unit data doesn't show the invisibility.
 
In response...
1) Ok, so, when can we expect the binders to be back in? Maybe a patch soon? (Please? :) )

2) Maybe you should have an automatic promo attached to D'Teshi recon units called "Invisible Land" then to show that they can travel through rival territory and are invisible.

I'd like to say tho that when it seems to work and for the time it does, I really love your modmod. The Legion of D'Tesh is really cool. I love the idea of a dark undead civ. It really balances out the Scions of Patria, who I also enjoy. But since I'm mainly a warmonger, the idea of civs made for warmomgerin really appeals to me.
 
- The granting of Enslaved on city raze is not implemented (Needs python)

Did you do that yet? I'm glad someone brought up the subject of the Evil Undead on the main forum, because I keep forgetting to post this:

Here's what I used to have the Scions get a few Reborn from city razing once they get Sorcery. Some other python, btw, would have already reduced the city's population to around 1/3.

Code:
# scions start
		iReborn = gc.getInfoTypeForString('UNIT_REBORN')
		eTeam = gc.getTeam(pPlayer.getTeam())
		if gc.getPlayer(city.getOwner()).getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SCIONS'):
			if eTeam.isHasTech(gc.getInfoTypeForString('TECH_SORCERY')):
				for i in range((city.getPopulation() / 1) - 1):
					spawnUnit = pPlayer.initUnit(iReborn, city.getX(), city.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)

# scions end
 
Top Bottom