FfH2 0.25 Bug Thread

The event that causes you to spend 10 gold, tie up one unit, or lose five food came up for my capital city and I could only choose the first choice, even though I wanted to lose five food instead. It then happened the next turn and I still couldn't choose any option besides the first one.
 
So, about how long will it be before patch b is released, and how big will it be?
(I'm going home for a long weekend in a few hours, and we are still stuck with dial-up there)
 
Just a brief note: Goblins don't seem to upgrade to Wolf Riders on victory so I checked the Python (CvModEvents.py) and the "def onCombatResult(self, argsList):" entry is not in. Any idea when this will be available? (my ModMod is based around it...). Thanks!

I tried copying the old python but with no luck.

btw, I keep thinking that I'll get tired of FfH sooner or later and every time my attention drifts you pull it back with an update like this! Thank you!!!!!
 
Hello Kael,

there is a slight problem with the german version of FFH2 (I am in the german translation team with Kontrollator). It is in the german civilipedia text entry from melee unit 'Balor'. Kontrollator informed me just recently that this problem is with all units having elemental damage. Please see this two pictures, the first is the english original (see '+4 Unholy combat'), and the second one german version (see '+4 (-1 Verderbtheit) im Kampf'). 'Verderbtheit' means Unholy.

There seems to be something wrong with elemental damage...
 
Patch "b" is uploaded and linked in the first post. It will break save games and makes the following changes.

1. Fixed broken graphics on the Pit Beast, Manticore, Sand Lion, Lifespark and Earth Elemental.
2. Really fixed the Arena CtD.
3. Fixed the Stable event error.
4. Fixed the error on religious conversion.
5. Fixed the Lifespark spell.
6. Acolytes and Crusaders are now spawned on Order spread.
7. Added a Debug option to disable Hidden Nationality (for OOS testing).
8. Enslavement chance won't carry over between players/games.
9. Trait application rewritten (causing all sorts of issues, traits carrying over between players/game, etc).
10. Fixed the display of commerce modifiers on buildings.

@BlackArchon: it should also fix the damage type weirdness you were seeing, though it needs translated)
 
Just a brief note: Goblins don't seem to upgrade to Wolf Riders on victory so I checked the Python (CvModEvents.py) and the "def onCombatResult(self, argsList):" entry is not in. Any idea when this will be available? (my ModMod is based around it...). Thanks!

I had assumed that this stuff had been moved out of python into C++ for performance. This upset me too, because I couldn't figure out how to make one of my favorite minor modifications: make the barbarians lose the traits when Orthus dies just like the Infernal lose their on Hyborem's death or the Mercurians on Basium's. Of course, I first give the barbs some traits to lose, or this would be meaningless. I want Orthus's death to really mean something, so I was thinking Aggressive, Charismatic, Magic Resistant, Protective, Raiders, and Summoning. A raging Barbs/Labruscum game would them be suicide, especially if AC events kick in before Orthus perishes. (Hm, I wonder if I could make the barbs not gain the traits until Orthus spawns.)
 
I had assumed that this stuff had been moved out of python into C++ for performance. This upset me too, because I couldn't figure out how to make one of my favorite minor modifications: make the barbarians lose the traits when Orthus dies just like the Infernal lose their on Hyborem's death or the Mercurians on Basium's. Of course, I first give the barbs some traits to lose, or this would be meaningless. I want Orthus's death to really mean something, so I was thinking Aggressive, Charismatic, Magic Resistant, Protective, Raiders, and Summoning. A raging Barbs/Labruscum game would them be suicide, especially if AC events kick in before Orthus perishes. (Hm, I wonder if I could make the barbs not gain the traits until Orthus spawns.)

:confused: FfH doesn't have any functions in CombatResult but that doesn't keep anyone else from creating some.
 
The event that causes you to spend 10 gold, tie up one unit, or lose five food came up for my capital city and I could only choose the first choice, even though I wanted to lose five food instead. It then happened the next turn and I still couldn't choose any option besides the first one.

I've had that one in normal BTS, so its a bug there, not just here. Hopefully it can be fixed. There is a similar one (in BTS)with loosing population or structures and it never lets me loose the population.
 
My first game on .25b and the following python error pops up 8 times on every turn end.

File "CvGameInterface", line 146, in cannotTrain
File "CvGameUtils", line, 211, in cannotTrain
RuntimeError: unidentifiable C++ exception

Save game attached

Sigh. Back to WoW.

WinXP SP2
Standard Install Directory on C:
No Warlords
Retail CD
 

Attachments

The game ran fine for me under patch a, but under patch b, I get a a total computer freeze up every time I try to begin a new game, when it is initializing.
 
:confused: FfH doesn't have any functions in CombatResult but that doesn't keep anyone else from creating some.

Here is the code from the old 0.22h "CvEventManager.py" file:
Spoiler :
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())
pPlayer = gc.getPlayer(pWinner.getOwner())
bUncaptured = True

if pPlayer.isHuman():
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_ACHERON'):
Trophies.addTrophy("TROPHY_DEFEATED_ACHERON")
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_BASIUM'):
Trophies.addTrophy("TROPHY_DEFEATED_BASIUM")
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_HYBOREM'):
Trophies.addTrophy("TROPHY_DEFEATED_HYBOREM")
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_ORTHUS'):
Trophies.addTrophy("TROPHY_DEFEATED_ORTHUS")

if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_LOKI'):
pPlot = cf.FFHFindClearPlot(pLoser, -1)
if pPlot != -1:
pPlayer2 = gc.getPlayer(pLoser.getOwner())
newUnit = pPlayer2.initUnit(gc.getInfoTypeForString('UNIT_LOKI'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI)
newUnit.setDamage(50, -1)
CyInterface().addMessage(pWinner.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_LOKI_RUNS",()),'AS2D_RUN_AWAY',1,'Art/Interface/Buttons/Units/Loki.dds',ColorTypes(7),pLoser.getX(),pLoser.getY(),True,True)
CyInterface().addMessage(pLoser.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_LOKI_RUNS",()),'AS2D_RUN_AWAY',1,'Art/Interface/Buttons/Units/Loki.dds',ColorTypes(7),pLoser.getX(),pLoser.getY(),True,True)
bUncaptured = False

if pWinner.isNoCapture():
bUncaptured = False

if pLoser.getCaptureUnitType(pPlayer.getCivilizationType()) != -1:
bUncaptured = False

if (pLoser.isAlive() and pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GIANT_SPIDER')):
bUncaptured = False
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_BABY_SPIDER'), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI)
newUnit.setMadeAttack(True)
newUnit.finishMoves()
newUnit.setDamage(50, -1)
CyInterface().addMessage(pWinner.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_BABY_SPIDER",()),'AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/GiantSpider.dds',ColorTypes(8),pWinner.getX(),pWinner.getY(),True,True)
if pPlayer.getCivilizationType() == gc.getInfoTypeForString('CIVILIZATION_SVARTALFAR'):
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_BABY_SPIDER'), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI)
newUnit.setMadeAttack(True)
newUnit.finishMoves()

if (pPlayer.getCivics(gc.getInfoTypeForString('CIVICOPTION_LABOR')) == gc.getInfoTypeForString('CIVIC_SLAVERY') or pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_TASKMASTER'))):
if (bUncaptured and pLoser.isAlive() and pLoser.getUnitCombatType() != gc.getInfoTypeForString('UNITCOMBAT_ANIMAL') and pWinner.getSpecialUnitType() != gc.getInfoTypeForString('SPECIALUNIT_SPELL')):
if CyGame().getSorenRandNum(100, "Bob") <= gc.getDefineINT('SLAVERY_CHANCE'):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Slave captured.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Slave.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
unitType = gc.getInfoTypeForString('UNIT_SLAVE')
if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_DWARF')):
unitType = gc.getInfoTypeForString('UNIT_SLAVE_DWARF')
if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ELF')):
unitType = gc.getInfoTypeForString('UNIT_SLAVE_ELF')
if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_ORC')):
unitType = gc.getInfoTypeForString('UNIT_SLAVE_ORC')
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, unitType, False)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_COMMAND')) and bUncaptured):
if pLoser.isAlive():
if CyGame().getSorenRandNum(100, "Bob") <= 50:
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, pLoser.getUnitType(), True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN') and bUncaptured):
if (pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF') or pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF_PACK')):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_WORG_RIDER'), True)
pWinner.setDamage(100, True)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUBDUE_ANIMAL')) and bUncaptured):
if pLoser.isAnimal() and pLoser.getUnitCombatType() == gc.getInfoTypeForString('UNITCOMBAT_ANIMAL'):
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, pLoser.getUnitType(), True)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUBDUE_ORC')) and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_ORC_WARRIOR')and bUncaptured):
if CyGame().getSorenRandNum(100, "Bob") <= gc.getDefineINT('SLAVERY_CHANCE'):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Goblins liberated.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Goblin.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
unitType = gc.getInfoTypeForString('UNIT_GOBLIN_RENEGADE')
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, unitType, False)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUBDUE_ORC')) and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN')and bUncaptured):
if CyGame().getSorenRandNum(100, "Bob") <= gc.getDefineINT('SLAVERY_CHANCE'):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Goblins liberated.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Goblin.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
unitType = gc.getInfoTypeForString('UNIT_GOBLIN_RENEGADE')
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, unitType, False)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_SUBDUE_GIANT')) and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_HILL_GIANT')and bUncaptured):
if CyGame().getSorenRandNum(100, "Bob") <= gc.getDefineINT('SLAVERY_CHANCE'):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Hill Giant pursuaded.','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Goblin.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
unitType = gc.getInfoTypeForString('UNIT_HILL_GIANT')
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, unitType, False)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_SCOUT') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_GOBLIN_TRACKER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_SCOUT') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF_PACK') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_WOLF_RIDER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_TRACKER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_WOLFMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_TRACKER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF_PACK') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_WOLFMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_SCOUT') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_BABY_SPIDER') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_GOBLIN_TRAPPER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_HUNTER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_HUNTMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_HUNTER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_WOLF_PACK') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_HUNTMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_HUNTER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_BABY_SPIDER') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_SPIDERMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_GOBLIN_HUNTER') and pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_GIANT_SPIDER') and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pWinner, gc.getInfoTypeForString('UNIT_SPIDERMASTER'), True)
pWinner.setDamage(100, True)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_WEREWOLF')) and pLoser.isAlive() and pLoser.getUnitCombatType() != gc.getInfoTypeForString('UNITCOMBAT_ANIMAL') and pLoser.getUnitCombatType() != gc.getInfoTypeForString('UNITCOMBAT_BEAST') and bUncaptured):
iNumWW = pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_RAVENOUS_WEREWOLF')) + pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_WEREWOLF')) + pPlayer.getUnitClassCount(gc.getInfoTypeForString('UNITCLASS_GREATER_WEREWOLF'))
iRand = CyGame().getSorenRandNum(100, "Bob")
if (iRand <= gc.getDefineINT('WEREWOLF_BASE_CHANCE') - (gc.getDefineINT('WEREWOLF_MINUS_PER_WEREWOLF') * iNumWW)):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Lycanthropy has spread.','AS2D_WOLF',1,'Art/Interface/Buttons/Units/Ravenouswerewolf.dds',ColorTypes(8),pWinner.getX(),pWinner.getY(),True,True)
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF'), False)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_RAVENOUS_WEREWOLF') and pLoser.isAlive()):
CyInterface().addMessage(pWinner.getOwner(),True,25,'A Werewolf has become stronger.','AS2D_WOLF',1,'Art/Interface/Buttons/Units/Werewolf.dds',ColorTypes(8),pWinner.getX(),pWinner.getY(),True,True)
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_WEREWOLF'), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI)
newUnit.finishMoves()
newUnit.setExperience(pWinner.getExperience(), -1)
newUnit.setLevel(pWinner.getLevel())
newUnit.setDamage(pWinner.getDamage(), False)
for iCount in range(gc.getNumPromotionInfos()):
if (pWinner.isHasPromotion(iCount)):
newUnit.setHasPromotion(iCount, True)
newUnit.setHasPromotion(gc.getInfoTypeForString('PROMOTION_ENRAGED'), False)
pWinner.setDamage(100, True)

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_WEREWOLF') and pLoser.isAlive()):
iRand = CyGame().getSorenRandNum(100, "Bob")
if (iRand <= 5):
CyInterface().addMessage(pWinner.getOwner(),True,25,'A Werewolf has become stronger.','AS2D_WOLF',1,'Art/Interface/Buttons/Units/Greaterwerewolf.dds',ColorTypes(8),pWinner.getX(),pWinner.getY(),True,True)
newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_GREATER_WEREWOLF'), pWinner.getX(), pWinner.getY(), UnitAITypes.NO_UNITAI)
newUnit.finishMoves()
newUnit.setExperience(pWinner.getExperience(), -1)
newUnit.setLevel(pWinner.getLevel())
newUnit.setDamage(pWinner.getDamage(), False)
for iCount in range(gc.getNumPromotionInfos()):
if (pWinner.isHasPromotion(iCount)):
newUnit.setHasPromotion(iCount, True)
pWinner.setDamage(100, True)

if (pWinner.isHasPromotion(gc.getInfoTypeForString('PROMOTION_BOARDING')) and pLoser.getUnitCombatType() == gc.getInfoTypeForString('UNITCOMBAT_NAVAL') and bUncaptured):
CyInterface().addMessage(pWinner.getOwner(),True,25,'Ship Captured.','AS2D_GOODY_GOLD',1,'Art/Interface/Buttons/Promotions/Boarding.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, pLoser.getUnitType(), True)

if (pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_BASIUM') or pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_HYBOREM')):
if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IMMORTAL')) == False:
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_BASIUM'):
CyInterface().addMessage(pLoser.getOwner(),True,25,'Basium has Died!','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Basium.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
if pLoser.getUnitType() == gc.getInfoTypeForString('UNIT_HYBOREM'):
CyInterface().addMessage(pLoser.getOwner(),True,25,'Hyborem has Died!','AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Hyborem.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)
p2Player = gc.getPlayer(pLoser.getOwner())
for iTrait in range(gc.getNumTraitInfos()):
if iTrait != gc.getInfoTypeForString('TRAIT_FALLOW'):
CyMessageControl().sendApplyEvent(5012, EventContextTypes.EVENTCONTEXT_ALL, (pLoser.getOwner(),iTrait,False))

if (pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_MAGNADINE') and bUncaptured):
if (pLoser.isAlive() and pLoser.getOwner() == gc.getBARBARIAN_PLAYER() and pLoser.getUnitCombatType() != gc.getInfoTypeForString('UNITCOMBAT_ANIMAL')):
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, pLoser.getUnitType(), True)

if pWinner.getUnitType() == gc.getInfoTypeForString('UNIT_ARS'):
if (pLoser.isAlive() and bUncaptured):
bUncaptured = False
cf.FFHConvert(pWinner, pLoser, gc.getInfoTypeForString('UNIT_WRAITH'), False)

if (pLoser.getUnitClassType() == gc.getInfoTypeForString('UNITCLASS_TAR_DEMON') and bUncaptured):
bUncaptured = False
iStr = pLoser.baseCombatStr(false) - 2
if iStr > 1:
pPlayer2 = gc.getPlayer(pLoser.getOwner())
newUnit = pPlayer2.initUnit(gc.getInfoTypeForString('UNIT_TAR_DEMON'), pLoser.getX(), pLoser.getY(), UnitAITypes.NO_UNITAI)
newUnit.setDamage(50, -1)
newUnit.setMadeAttack(True)
newUnit.changeExtraCombatDefense(iStr - newUnit.baseCombatStr(false))
newUnit = pPlayer2.initUnit(gc.getInfoTypeForString('UNIT_TAR_DEMON'), pLoser.getX(), pLoser.getY(), UnitAITypes.NO_UNITAI)
newUnit.changeExtraCombatDefense(iStr - newUnit.baseCombatStr(false))
newUnit.setDamage(50, -1)
newUnit.setMadeAttack(True)
CyInterface().addMessage(pWinner.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_TAR_DEMON_SPLIT",()),'AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Tar Demon.dds',ColorTypes(7),pLoser.getX(),pLoser.getY(),True,True)
CyInterface().addMessage(pLoser.getOwner(),True,25,CyTranslator().getText("TXT_KEY_MESSAGE_TAR_DEMON_SPLIT",()),'AS2D_DISCOVERBONUS',1,'Art/Interface/Buttons/Units/Tar Demon.dds',ColorTypes(8),pLoser.getX(),pLoser.getY(),True,True)

if pLoser.isHasPromotion(gc.getInfoTypeForString('PROMOTION_IMMORTAL')):
if bUncaptured == False:
pLoser.setHasPromotion(gc.getInfoTypeForString('PROMOTION_IMMORTAL'), False)

if (not self.__LOG_COMBAT):
return
if playerX and playerX and unitX and playerY:
CvUtil.pyPrint('Player %d Civilization %s Unit %s has defeated Player %d Civilization %s Unit %s'
%(playerX.getID(), playerX.getCivilizationName(), unitX.getDescription(),
playerY.getID(), playerY.getCivilizationName(), unitY.getDescription()))



I am not sure how to re-add this? or if I need to? or what?
 
I attacked Hyborem in his capital with Sphener. This fight just ended with Hyborem taking about 5 hits and Sphener 2, but there was no message that Hyborem retreated (he doesn't have the withdrawal promotion AND he couldn't really since he stayed in the same tile). Still both units are alive and no clue why it happened.

Conquering the city in the next turn (with Sphener) it remained of Ashen Veil religion, so the Evangelist promotion either doesn't work or can't replace AV with the Order.
 
When playing as Perpentach, when I'm given the Financial trait via Insane I don't get the +1 :commerce: on squares with 2 :commerce:. BtS 3.13 FFH2 .25b
 
Patch "c" is linked in the first post. It fixes the cannotTrain error.
 
Starting a game with Advanced Start doesn't give me the option to regenerate the map.
 
First Vampires
A) They gain experience much like a hero now, without having to feast (somehow I don't this is intended)
B) The text for the feed (on the vampire) button is missing
C) When I rebase a bird I get to patrol the same turn
D) Golden age timer is gone
E) Harvesting Fruit of Ygradsill is impossible


Aside from that very nice :)
 
I've been playing a game with Hippus/Tasuke that is just weird. I'm playing with prince, epic speed, aggressive AI, raging barbs, more events, more unique features, more animals and barb cities from the beginning. Things that I've noticed so far:

1. I didn't notice any impact due to more animals.

2. I've been at war with barbs since the beginning, but as best I can tell, none of the civs are at war with the barbs.

3. I spent the first 200-300 turns bottled up in my section of the continent because the barb dragon and the lich blocked a choke point. The lich would send 2-3 earth elementals and/or wraiths at any of my units that came near. Most annoyingly, he didn't seem to automatically detect any of my units that came too close.

4. I finally got a good force of horsemen and chariots and planned to rush past the lich and dragon and try to make progress in the rest of the continent (this was around turn 300). I got past the lich and noticed the dragon was gone, and his city was just guarded by 2 barb warriors. As his city was just outside wraith range I took it. For this I got the dragons horde, yggrdrisil and a size 14 city.

5. All my chariots immediately upgraded to mithrial (no building requirement). This seems really unbalanced, but given the wraiths I wasn't too upset about it.

6. Around 350 I founded runes... this was the first religion founded in the game. Trees and Oct didn't get founded until turn 500 or so.

7. So, not with my strength 9 chariotts I rolled the shediem civ. About 10 cities all with populations between 9 and 17 and fully developed contry sides... each city guarded by 1-2 warriors. No archers, no axemen, nothing. This is around turn 400 to 450. Also weird, almost all cities were founded right on top of resources.

8. Its now around turn 500 (I've spent the last 50 turns or so digesting the shediem cities and trying to restore my economey. I'm getting ready to try to rush the lich with a mass of str 9 chariots and finally finish the bastard. However...

9. Lunan has founded a city right next to him (being at peace with barbs) so to get to him I have to go through Lunan. Also, right next by is another barb city... guarded by Orthus. A str 11 highly promoted Orthus (seems he got a mithrial upgrade from the dragon).

10. I'm now finally starting to see advanced barb units (lizardmen, chariots, warg riders). However, the other AI civs still seem to be stuck with scouts and warriors only.

I'll finish off the barbs tonight because I'm so annoyed with them, but after that I won't bother to finish... the game is just too messed up.

Pel
 
10. Fixed the display of commerce modifiers on buildings.

With patch b, the obelisk's mouse-over description in the build list now only says can turn 1 citizen into a bard. It makes no mention of +3 culture or -1 gold.

edit:

Playing with perpentech on warlords, huge, normal speed, permanent alliances, more events, bonuses, animals, and advanced start with win xp
 
10. Fixed the display of commerce modifiers on buildings.

With patch b, the obelisk's mouse-over description in the build list now only says can turn 1 citizen into a bard. It makes no mention of +3 culture or -1 gold.

It looks correct in my version, maybe you need to clear cache?
 
Back
Top Bottom