Fall Further 051 Bug Report Thread

Here's a python bug from the pedia:
 

Attachments

  • Civ4ScreenShot0099.JPG
    Civ4ScreenShot0099.JPG
    117.8 KB · Views: 93
in FF 51 C I have the Problem that All Leader show the same Worldspell (Call Mother) and the same Hero for me (Mother) in the Civopledia. (Removed my FF Directory first and then Installed FF 51 afterwards Patch C)
 
Just to expand on that bug, it occurs in the Civilopediait's Leader section. It's present no matter what display setting there is. ( i.e. list alphabetically, by XML, by gender, etc)

It does not occur in-game in the "Civilization overview" by mousing over on the flag, nor does it display incorrectly when selecting a leader in the leader selection thing, before the map initializes.


--

Also, and this might not be fixable, but the Civilopedia seems to take longer to load things in certain areas - such as the units area.
 
@UNIT_666 - The speed issue is probably not fixable... And personally, I'd much rather have an easier to use pedia than a fast one. You'll save more time getting what you need out of it faster anyway.

The delay only seems to happen the first time I accessed that area in the civilopedia. The civilopedia is really awesome, now, though. It is well worth such a minor annoyance.


--

As the Clan, a Spirit Guide went from my Goblin with 5 exp who had an unfortunate encounter with a Giant Spider to a Gretchin. The Grechin, with 2.5 exp was able to get some weird "fake" promotion - empty level up or somesuch. I do not think that Gretchins should be valid targets for a Spirit Guide. Someone might want to check and see if this can happen with Engineer Corps, too.
 
The 'Fake' promotion is actually available for any units once they have no other valid promotion... Gives you the healing benefit, and increases your level, but that's about it.

Oh, I see. That's actually very clever.

--

In the Civilopedia, Ogres are listed as "Unbuildable by any civilization," and yet they are listed as one of the things enabled by the Training Yard civilopedia entry. It's confusing. :l
 
For the Horde style hidden nationality makes you hostile to barbarians. Weird and unthematical.
 
The Join Commander ability can be miscast... Seems to be related to the Undisciplined promotion (the 20% chance to miscast). I never checked, but it can probably happen to other non-spell abilities, too.
 
The pedia slowdown on first visit has always happened before, the data is cached so that all future visits to that page (till you reload the entire game) are quicker. You notice it more now because you get a completely unfiltered set of all units/promotions when you first visit the page.

Pretty sure that the fake promotion is also only valid for living units, but can't recall for absolute certain.
 
Undisciplined units that go Barbarian while being commanded seem to retain their command promotions even though they aren't under command anymore.

Also, and this is probably unavoidable, but if two commanders are in a stack at the same time there seems to be no way to choose between the commander you assign the unit to, unless I'm missing something.
 
Also, and this is probably unavoidable, but if two commanders are in a stack at the same time there seems to be no way to choose between the commander you assign the unit to, unless I'm missing something.

Units will prefer to join commanders in the same selection group as they are. Select the unit to join, hold shift, select the commander, join.
 
Here's a python bug from the pedia:

In the new 0.51c Civilopedia, can anyone access promotion links in the Special Abilities section of a unit's Civilopedia entry? Because, I can't.

For example, opening the Civilopedia and going to Units >>> Priest of Winter >>> Channeling 1. The Channeling 1 link doesn't work for me, nor does any other promotion link in that area. The Race and Spell links do, though, and I can access the promotions section from the Civilopedia just fine.

This issue is also present in the Traits section. i.e. Traits >>> Aggressive >>> Combat 1.

Fixing this is actually quite simple. It's a holdover from when promotions were split into Promotions, Equipment, Races, and Effects. (Bolded the problem part below.)

Line 645 in CvPediaMain is currently this...

Code:
for i in range(gc.getNumPromotionInfos()):
	if (gc.getPromotionInfo(i).isMatchForLink(szLink, False)):
		iType = self.pediaPromotionScreen.[B]getPromotionType[/B](i)
		Dest = CvScreenEnums.PEDIA_PROMOTION
		return self.pediaJump(Dest, i, True)

Changing it to this will remove the issue.

Code:
for i in range(gc.getNumPromotionInfos()):
	if (gc.getPromotionInfo(i).isMatchForLink(szLink, False)):
		return self.pediaJump(CvScreenEnums.PEDIA_PROMOTION, i, True)
 
Found a CTD bug, well actually it found me :crazyeye:.
Apparently the bug had nothing to do with my own civilization.

Code:
Traceback (most recent call last):
  File "CvSpellInterface", line 59, in postDeath
  File "<string>", line 0, in ?
  File "CvSpellInterface", line 6839, in onDeathForestCreeper
RuntimeError: unidentifiable C++ exception
ERR: Python function postDeath failed, module CvSpellInterface

In CvSpellInterface.py the problem turned out to be using pPlot both without and within the for loop.
Code:
6800 pPlot = pCaster.plot()
 :
6822   for iiX in range(iX-2, iX+3, 1):
6823      for iiY in range(iY-2, iY+3, 1):
6824         pPlot = CyMap().plot(iiX,iiY)
6825         if pPlot.isNone() == False:
6826            if pPlot.getImprovementType() == iFallenForest:
6827               iImprovementCount += 1
6828   if iImprovementCount == 0:
6829      pPlot = pCaster.plot()
6830      pPlayer = gc.getPlayer(pCaster.getOwner())
6831      pPlot.setImprovementType(iFallenForest)
6832      newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6833      if CyGame().getSorenRandNum(5, "Chance to Spawn Malignant Flora from Fallen Forest Creation") < 3:
6834         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_MALIGNANT_FLORA'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6835         return
6836   if iImprovementCount > 0:
6837      if CyGame().getSorenRandNum(3, "Chance to Spawn Extra Forest Creeper from Forest when Lair fails") == 1:
6838         pPlayer = gc.getPlayer(pCaster.getOwner())
6839         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)

The easy way out is to switch 6828 and 6829:
Code:
6822   for iiX in range(iX-2, iX+3, 1):
6823      for iiY in range(iY-2, iY+3, 1):
6824         pPlot = CyMap().plot(iiX,iiY)
6825         if pPlot.isNone() == False:
6826            if pPlot.getImprovementType() == iFallenForest:
6827               iImprovementCount += 1
6828   pPlot = pCaster.plot()
6829   if iImprovementCount == 0:
6830      pPlayer = gc.getPlayer(pCaster.getOwner())
6831      pPlot.setImprovementType(iFallenForest)
6832      newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6833      if CyGame().getSorenRandNum(5, "Chance to Spawn Malignant Flora from Fallen Forest Creation") < 3:
6834         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_MALIGNANT_FLORA'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6835         return
6836   if iImprovementCount > 0:
6837      if CyGame().getSorenRandNum(3, "Chance to Spawn Extra Forest Creeper from Forest when Lair fails") == 1:
6838         pPlayer = gc.getPlayer(pCaster.getOwner())
6839         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)

A more elegant (and readable) solution would be renaming pPlot within the loop and while we're at it, make the 2nd if an elif and remove lines 6829, 6835:

Code:
6822   for iiX in range(iX-2, iX+3, 1):
6823      for iiY in range(iY-2, iY+3, 1):
6824         pl = CyMap().plot(iiX,iiY)
6825         if pl.isNone() == False:
6826            if pl.getImprovementType() == iFallenForest:
6827               iImprovementCount += 1
6828   if iImprovementCount == 0:
6829#      pPlot = pCaster.plot()
6830      pPlayer = gc.getPlayer(pCaster.getOwner())
6831      pPlot.setImprovementType(iFallenForest)
6832      newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6833      if CyGame().getSorenRandNum(5, "Chance to Spawn Malignant Flora from Fallen Forest Creation") < 3:
6834         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_MALIGNANT_FLORA'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
6835#         return
6836   elif iImprovementCount > 0:
6837      if CyGame().getSorenRandNum(3, "Chance to Spawn Extra Forest Creeper from Forest when Lair fails") == 1:
6838         pPlayer = gc.getPlayer(pCaster.getOwner())
6839         newUnit = pPlayer.initUnit(gc.getInfoTypeForString('UNIT_FOREST_CREEPER'), pPlot.getX(), pPlot.getY(), UnitAITypes.NO_UNITAI, DirectionTypes.DIRECTION_SOUTH)
 
A more elegant (and readable) solution would be renaming pPlot within the loop and while we're at it, make the 2nd if an elif and remove lines 6829, 6835:

Thanks.
 
Not direct a Bug but probably a balancing Problem from NPC Illeans:
The Illeans love the wonder to summon the Frostlings to much in early game. At last in my 2 Epic Speed Game they are summoned the Frostlings very early, turn 67 the curent and around 80 the other.

Edit: Have placed this text to the Balance Discusion
 
Back
Top Bottom