D'Tesh and Fort Commanders

The D'teshi Commander is done. It may have to be tweaked, of course, but that needs playtesting...

It DOES contain some python, but it does not reference anything in the module itself... All it does is allow Commanders to gain appropriate races, and allows the addition of new Commanders without hardcoding in the python. No commander modules should have python in the future, unless the Race code needs to change.


Download Post said:
D'teshiCommander.zip

  • Adds the D'teshi Commander, a Fort Commander UU.
  • For full details, go to this post.
  • Installation:
    • Quote:
      Originally Posted by Installation Directions
      To install, copy the 'Dteshi Commander Module' into your FFPlus/Assets/Modules/NormalModules directory.
      Then, copy the CvSpellInterface.py file into your FFPlus/Assets/Python/entrypoints directory, and overwrite.
    • A copy of these instructions is included with the download.

Stats said:
D'teshi Commander


  • Stats
    • 2 :strength:
    • 1 death :strength:
    • 1 death affinity
    • 0 range
    • 0 Air :strength:
    • No Free Experience
    • Does not gain experience from combat

  • Spells
    • Gift Essence
      • Allows you to sacrifice a unit to grant the Commander a set amount of xp, equal to the unit's level. This is the ONLY way a Commander can gain xp.
      • Only castable by units on the same tile as a D'teshi Commander.

    • Flay Flesh
      • AoE Death damage spell.
      • Does 15% damage.
      • NO damage limit. It will deal damage slightly slower than the normal commanders, but will eventually be able to outright kill the enemy.
      • This sounds strong, but remember, units killed in this manner cannot become slaves... Which the D'tesh need for pop growth.


 
Just downloaded the new fort commanders for The Legion, gonna give it a test run.

-Moosh
 
Well you might wanna check your script, cause right now you can't claim it at all. Doesn't give the option. Will install your newer update and test that to see if the problem basically fixed itself.

-Moosh
 
It works now, I can claim the forts just fine with the lastest update. I think when I tried to download all 4 of your optional updates it might have gotten screwed up that way. One thing I did notice when I sacrificed a level 1 warrior, it gave the commander 0.01 xp, so he was literally 0.01/2 xp. Gonna be a while before he gets upgrades that way. Flay Flesh works just fine. It doesn't show you the range it works in (no stripped yellow box) but I assume cause its an AoE its working in every box, though the plague spell with Mary gives you the yellow box to show how far her AoE goes. Pretty much all I noticed. Oh an um... isn't the "t" in D'Tesh supposed to be capitalized? =P

-Moosh
 
Well, that's good to hear... I suppose it could have been an issue in the order you installed the Vitalize tweak and the Commander in. They both have to modify the same python file... The vitalize python is included with the commander module though, so the two are compatible so long as the Commander is installed last. Should mention that in the instructions... You DO need to install the Vitalize tweak first, in order to get the XML for it's companion spell.

I know what's causing the xp issue, easy fix to make in the morning. Forgot to account for the way the 'decimal' xp works... Need (level*100) rather than just level.

I don't think any purely XML AoE spells show the range. That takes python effects.

Technically yes... I tend to forget though. :lol:
 
Well, that's good to hear... I suppose it could have been an issue in the order you installed the Vitalize tweak and the Commander in. They both have to modify the same python file... The vitalize python is included with the commander module though, so the two are compatible so long as the Commander is installed last. Should mention that in the instructions... You DO need to install the Vitalize tweak first, in order to get the XML for it's companion spell.

I know what's causing the xp issue, easy fix to make in the morning. Forgot to account for the way the 'decimal' xp works... Need (level*100) rather than just level.

I don't think any purely XML AoE spells show the range. That takes python effects.

Technically yes... I tend to forget though. :lol:

If I come across as nit-picking I apologize. I just happen to really like the way you have moded this particular mod and I just keep playing and posting stuff I noticed. I'll probably play a few other Civs once I actually finish a game with D'Tesh. Any suggestions?

-Moosh
 
Not nitpicking at all, bug reports are always useful. :goodjob:

As for a civ after the D'tesh... We've completely changed the Malakim, Doviello, and Jotnar, added a tweaked version of Ahwaric's Mechanos, and added some very nice improvements to the Khazad.

To be perfectly honest, my favorite civ is the Khazad, under Veinhunter. I just love the Dwarven Forts, and all those wonderful hammers. :lol:

If you want to play a new civ though, I'd say Jotnar, Malakim, or Mechanos. Two of those aren't really new, but have had so much added to them they might as well be.
 
im just wondering but why not make the d'tesh come into the middle of the game when people have a chance to get a running start i think that would be better because as far as power lvl goes on them there quite powerful starting them like infernal or mercurians would be nice and you can make it go on the Armageddon counter at around 50 so they will be like an actual plague on erebus...just a suggestion since this is a d'tesh thread
 
Note that the Field Fortification spell also needs changing, as in the current release, it spawned normal fort commanders for D'Tesh. Found a Dullahan from Bradeline's Well that was right next to my starting location (, whee) and noticed that while claimed forts do spawn the correct commander, the Field Fortification-spawned ones don't.

Fixed Python (probably, what's the difference between UNIT_FORT_COMMANDER and UNITCLASS_FORT_COMMANDER?):

Code:
def spellPioneer(caster):
	pPlot = caster.plot()
	iPlayer = caster.getOwner()
	iPlayer2 = pPlot.getOwner()
	iImprovement = pPlot.getImprovementType()
	pPlayer = gc.getPlayer(iPlayer)
	iUnit = gc.getInfoTypeForString('UNITCLASS_FORT_COMMANDER')
	infoCiv = gc.getCivilizationInfo(pPlayer.getCivilizationType())
	iUnit = infoCiv.getCivilizationUnits(iUnit)
	newUnit = pPlayer.initUnit(iUnit, caster.getX(), caster.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
	if (pPlayer.getCivilizationType() != gc.getInfoTypeForString('CIVILIZATION_LJOSALFAR') and pPlayer.getCivilizationType() != gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR')):
		pPlot.setFeatureType(FeatureTypes.NO_FEATURE, -1)
	pPlot.clearCultureControl(iPlayer2, iImprovement, 1)
	pPlot.setImprovementOwner(iPlayer)
	pPlot.addCultureControl(iPlayer, iImprovement, 1)
 
that is known issue it can be worked around until fixed. Just disband the fort commander and claim the fort next turn again. This will spawn the proper fort commander.
 
that is known issue it can be worked around until fixed. Just disband the fort commander and claim the fort next turn again. This will spawn the proper fort commander.
Or I could just fix it myself, removing the need for stupid workarounds. Oh, hey, I did and posted my fix, even.

It's already been fixed in the unreleased version. ;)
Cheers :)
How far off was I from a fully correct fix (I hadn't looked at Civ coding before)?
 
Cheers :)
How far off was I from a fully correct fix (I hadn't looked at Civ coding before)?

That would work, looks like you cloned the 'ClaimFort' code. Our version (rather, Odalrick's version) allows elves to preserve forest, allows lizards/clan to preserve jungle, etc, and rather than duplicating ClaimFort just calls that function so it runs.;)

Code:
def spellPioneer(caster):
	pPlot = caster.plot()
	iFeature = pPlot.getFeatureType()
	iCivType = gc.getPlayer(caster.getOwner()).getCivilizationType()
	if iFeature in ( gc.getInfoTypeForString(forest) for forest in ('FEATURE_FOREST', 'FEATURE_FOREST_BURNT', 'FEATURE_FOREST_NEW', 'FEATURE_FOREST_ANCIENT', ) ):
		if iCivType not in ( gc.getInfoTypeForString(elf) for elf in ('CIVILIZATION_LJOSALFAR', 'CIVILIZATION_SVARTALFAR', ) ):
			pPlot.setFeatureType(FeatureTypes.NO_FEATURE, -1)
	if iFeature in ( gc.getInfoTypeForString(jungle) for jungle in ('FEATURE_JUNGLE', ) ):
		if iCivType not in ( gc.getInfoTypeForString(lizard) for lizard in ('CIVILIZATION_CUALLI', 'CIVILIZATION_MAZATL', 'CIVILIZATION_CLAN_OF_EMBERS', ) ):
			pPlot.setFeatureType(FeatureTypes.NO_FEATURE, -1)
	if reqClaimFort(caster):
		spellClaimFort(caster)
 
Back
Top Bottom