The arrogator trait is really he same as the tolerant trait in basic Civ4, but beloning to different leaders.
The civilization type of a city for the purposes of Kael's the tolerant trait assilimation mechanic is determined by who built the city, not who owned it most recently. The exception to this is that cities originally built by the barbarians and later captured by another civ are changed to use that civilization type instead.
---
Personally, I think I would rather the mechanic be based on what civilization currently has the highest culture. I was about to say that that is not possible the without dll changes, but then I realized it would probably only require a simple piece of code like this under CvEventManager.py's def onCityDoTurn:
Code:
if not CyGame().getWBMapScript():
if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_TOLERANT')):
pPlayer2 = pCity.findHighestCulture()
iCiv = pPlayer2.getCivilizationType())
if iCiv == gc.getInfoTypeForString('CIVILIZATION_INFERNAL') pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'):
iCiv = gc.getInfoTypeForString('CIVILIZATION_MERCURIANS')
pCity.setCivilizationType(iCiv)
(The first conditional is there because if this mechanic would pretty much ruin the Black Tower Scenario, negating most of the benefits gained from decisions in the previous scenarios. I think it is self explanatory why I don't want Basium training demons.)
It would probably be better to add together the cultures of players of the same civilization type though. A city with 28% Bannor culture and 72% Ljosalfar culture evenly divided between 3 different Ljosalfar leaders should be considered Ljosalfar instead of Bannor. Maybe this code would work:
Code:
if not CyGame().getWBMapScript():
if pPlayer.hasTrait(gc.getInfoTypeForString('TRAIT_TOLERANT')):
iDominantCiv = -1
iMostCivCulture = 0
for iCiv in range(gc.getNumCivilizationInfos()):
iCivCult = 0
for jPlayer in range(gc.getMAX_CIV_PLAYERS()):
if gc.getPlayer(jPlayer).getCivilizationType() == iCiv:
iCivCult += pPlot.getCulture(jPlayer)
if iCivCult > iMostCivCulture:
iMostCivCulture = iCivCult
iDominantCiv = iCiv
if iDominantCiv != -1 and iDominantCiv != pCity.getCivilizationType():
if iDominantCiv == gc.getInfoTypeForString('CIVILIZATION_INFERNAL') and pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_MERCURIANS'):
iDominantCiv = gc.getInfoTypeForString('CIVILIZATION_MERCURIANS')
pCity.setCivilizationType(iDominantCiv)
-------
When you say "unlimited experience," you you actually mean that their xp is limitless, or that you are getting so many free promotions picks that you do not actually need to spend xp to get all of the promotions?
The Desert Shrine building should be granting 1 free promotion pick for each unimproved desert tile without an oasis or flood plain that is near the city. I just noticed that I forgot to include the check for improvements, so it is granting more free promotions than intended. I'm also thinking I'll simplify the code and make any feature prevent the plot from granting a free promotion. I forgot that peaks generated by most mapscripts have deserts under them, so I'll make it ignore peaks too. Right now I count every tile within a 7x7 square if it is is the culture range. Maybe I should scale that back to only the tiles that the city is capable of working.
-----
National units limits (and world unit limits too) are based on the unit
class type, not the unit type. Stoneskin Ogres and Phalanxes are share the same unitclass, so they count towards the same limit. The Arrogator trait in my modmod, like the Tolerant trait in basic FH2, does not let you get around national unit limits. If you have one Phalanx, one Verdandi, one Nullstone Golem, and one Stoneskin Ogre, you would not be able to train or upgrade any more of any of those units until one of them is killed.
In response to your previous post, the limits on how many of a unitclass you may train are set in CIV4UnitClassInfos.xml
Code:
<UnitClassInfo>
<Type>UNITCLASS_CROSSBOWMAN</Type>
<Description>TXT_KEY_UNIT_CROSSBOWMAN</Description>
<iMaxGlobalInstances>-1</iMaxGlobalInstances>
<iMaxTeamInstances>-1</iMaxTeamInstances>
<iMaxPlayerInstances>-1</iMaxPlayerInstances>
<iInstanceCostModifier>0</iInstanceCostModifier>
<DefaultUnit>UNIT_CROSSBOWMAN</DefaultUnit>
</UnitClassInfo>
If <iMaxGlobalInstances> is greater than -1, then the units in that unitclass are world units. Currently heroes have 1 here and all other units have -1, but there is no reason you could not allow 4 units of a unitclass before forbidding more from being built. Note that a world unit dying does not automatically open up a slot for more to be built.
<iMaxPlayerInstances> is what makes a the units in a unitclass National units. In base FfH2, this is -1 for all normal units and 4 (or 3 in much older versions) for all national units, but in my modmod I also made Liches national units of which each player may only have 1.
<iMaxTeamInstances> is not actually used for any unitclasses (the tag by that name under CIV4ProjectInfos.xml is used, because their is no <iMaxPlayerInstances> tag for rituals) in my modmod or basic FfH2, but there is no reason why it couldn't be. If you do not have a permanent ally, then this is functionally identical to <iMaxPlayerInstances>, but if you do then their units count towards your limit too.
------
You cannot actually build the palaces of other civs in order to get the free mana, buildings, or yield bonuses, specialist commerse bonuses, etc. When Kael first added the mechanic it was not only possible to build another civ's palace, but to have two of them at the same time. (The code that removes the palace from your previous capital city only looked for your civ's version.) Kael did not like this unbalancing exploit, and so changed it so that any palace you build will be changed to your civ's version. For some reason he never made it so that the information shown in your build queue reflects this though.
-----
The Malakim really shouldn't inherently have worse health problems than the average civ. I suppose they are more likely to start far away from Forests (which provide a health bonus) and close to Flood Plains (which provide a health penalty) though. You didn't happen to notice these health problems right after Blight, the Armageddon event that happens at AC 30, hit, did you?