I second the motion for an improved diplomacy. Howsoever, I'm not volunteering since I lack any programming skills. I'd - nonetheless - very much appreciate if someone would be so kind to step forward to put some work into that. 

Since the Citadel of Light was basically just a copy of the Citadel improvement, it had the <bOutsideBorders>1 tag. This is what lets forts be built outside of cultural borders in vanilla civ, and Kael reused it to allow improvements to upgrade without needing to be worked by a city (which I think would probably have been better as a separate tag).Looks like there might be a spot in doImprovementUpgrade() where PrereqCiv is not being checked. I'll fix it for the next release and you'll have to let me know if that solves the problem.
By issues do you just mean those units spawning, or something more serious?In CivilizationInfos I see that you have all of the disciples listed as possible units for the Barbarian civ. I think this might be causing some issues.
def onUnitKilled(self, pUnit, iAttacker):
if gc.getGame().isOption(GameOptionTypes.GAMEOPTION_WB_LORD_OF_THE_BALORS):
if pUnit.isAvatarOfCivLeader():
if not pUnit.isImmortal():
if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_INFERNAL'):
bPlayer = gc.getPlayer(gc.getBARBARIAN_PLAYER())
pPlayer = gc.getPlayer(pUnit.getOwner())
py = PyPlayer(pUnit.getOwner())
for pLoopUnit in py.getUnitList():
newUnit = bPlayer.initUnit(pLoopUnit.getUnitType(), pLoopUnit.getX(), pLoopUnit.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
newUnit.convert(pLoopUnit)
for pyCity in py.getCityList():
pLoopCity = pyCity.GetCy()
bPlayer.acquireCity(pLoopCity,False,False)
pPlayer.setAlive(False)
def onCombatResult(self, argsList):
'Combat Result'
pWinner,pLoser = argsList
playerX = PyPlayer(pWinner.getOwner())
unitX = PyInfo.UnitInfo(pWinner.getUnitType())
playerY = PyPlayer(pLoser.getOwner())
unitY = PyInfo.UnitInfo(pLoser.getUnitType())
iGodslayer = gc.getInfoTypeForString('PROMOTION_GODSLAYER')
iAvatar = gc.getInfoTypeForString('PROMOTION_AVATAR')
iMalleus = gc.getInfoTypeForString('PROMOTION_MALLEUS_VINDEX')
iVBind = gc.getInfoTypeForString('PROMOTION_VINDEXBIND')
iNetherblade = gc.getInfoTypeForString('PROMOTION_NETHER_BLADE')
iNBind = gc.getInfoTypeForString('PROMOTION_NETHERBIND')
iImmortal = gc.getInfoTypeForString('PROMOTION_IMMORTAL')
iLife = gc.getInfoTypeForString('PROMOTION_LIFE3')
if pWinner.isHasPromotion(iGodslayer):
pLoser.setHasPromotion(iImmortal, False)
pLoser.setHasPromotion(iLife, False)
while pLoser.isImmortal():
pLoser.changeImmortal(-1)
elif pLoser.isHasPromotion(iGodslayer):
pWinner.setHasPromotion(iImmortal, False)
pWinner.setHasPromotion(iLife, False)
while pWinner.isImmortal():
pWinner.changeImmortal(-1)
if pWinner.isHasPromotion(iAvatar):
pWinner.kill(False, pLoser.getOwner())
if pWinner.isHasPromotion(iNetherblade):
pLoser.setHasPromotion(iNBind, True)
pLoser.setHasPromotion(iImmortal, False)
pLoser.setHasPromotion(iLife, False)
while pLoser.isImmortal():
pLoser.changeImmortal(-1)
[B] elif pWinner.isHasPromotion(iMalleus):
if (pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_UNDEAD')) or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON')) or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_UNHOLY_TAINT')) or pLoser.getReligion() == gc.getInfoTypeForString('RELIGION_WHITE_HAND') or pLoser.getReligion() == gc.getInfoTypeForString('RELIGION_COUNCIL_OF_ESUS') or pLoser.getReligion() == gc.getInfoTypeForString('RELIGION_THE_ASHEN_VEIL') or pLoser.getReligion() == gc.getInfoTypeForString('RELIGION_OCTOPUS_OVERLORDS') or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEATH1')) or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DIMENSIONAL1')) or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENTROPY1')) or pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED'))):
pLoser.setHasPromotion(iVBind, True)
pLoser.setHasPromotion(iImmortal, False)
pLoser.setHasPromotion(iLife, False)
while pLoser.isImmortal():
pLoser.changeImmortal(-1)[/B]
elif pLoser.isHasPromotion(iNetherblade):
pWinner.setHasPromotion(iImmortal, False)
pWinner.setHasPromotion(iLife, False)
while pWinner.isImmortal():
pWinner.changeImmortal(-1)
if isWorldUnitClass(pWinner.getUnitClassType()):
pWinner.setHasPromotion(iNBind, True)
pWinner.kill(False, pLoser.getOwner())
gc.getPlayer(pWinner.getOwner()).AI_changeAttitudeExtra(pLoser.getOwner(),-1)
elif pLoser.isHasPromotion(iMalleus):
if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_UNDEAD')) or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON')) or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_UNHOLY_TAINT')) or pWinner.getReligion() == gc.getInfoTypeForString('RELIGION_WHITE_HAND') or pWinner.getReligion() == gc.getInfoTypeForString('RELIGION_COUNCIL_OF_ESUS') or pWinner.getReligion() == gc.getInfoTypeForString('RELIGION_THE_ASHEN_VEIL') or pWinner.getReligion() == gc.getInfoTypeForString('RELIGION_OCTOPUS_OVERLORDS') or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEATH1')) or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DIMENSIONAL1')) or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ENTROPY1')) or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DEMON_POSSESSED'))):
# pWinner.setHasPromotion(iVBind, True)
pWinner.setHasPromotion(iImmortal, False)
pWinner.setHasPromotion(iLife, False)
while pWinner.isImmortal():
pWinner.changeImmortal(-1)
Remember, as hyborem those burning sands can be really helpful too..![]()
Original FFH2 scenarios don't work with Naval AI mod installed? This is the only mod I've installed over vanilla FFH2 and before that, I could start scenarios, now I get an error message.
If that's the case, do I have to reinstall the whole thing from scratch if I want to play the scenarios? :/
I realize that this post is pretty specific to my modmod, so it may be better to reply to it in that thread.
The exception is Lord of the Balors, in which you are immediately defeated before the game even starts. The problem seems to be caused by BUG no understanding how to deal with the empty player/team 3 slot.
(In my modmod I fixed it by adding Einion Logos to the game.)
Hi.
Is it possible that the Puppet State feature doesn't work sometimes? In my first Game with more naval AI, I have no option to make a puppet state (I have feudalism!) when conquering an enemy city (which he himself founded).
Ethne the White dies by the Netherblade, so she could not go to the Fane.
The peace treaty also resulted in Ethne's wife's brutal death
Traceback (most recent call last):
File "CvScreensInterface", line 962, in handleInput
File "CvBUGMilitaryAdvisor", line 1195, in handleInput
File "CvBUGMilitaryAdvisor", line 618, in showStrategicAdvantages
File "CvBUGMilitaryAdvisor", line 707, in fillStratAdvGrid
File "CvBUGMilitaryAdvisor", line 750, in addStratAdvUnits
File "UnitUtil", line 377, in getKnownTrainableUnits
File "UnitUtil", line 413, in canAnyCityBuildUnit
File "UnitUtil", line 451, in canCityBuildUnit
ArgumentError: Python argument types in
CyCity.isHolyCity(CyCity, int)
did not match C++ signature:
isHolyCity(class CyCity {lvalue})
ERR: Python function handleInput failed, module CvScreensInterface