RifE 1.20 Bug Thread

Sorry i don't have a screenshot or save file, but i had an imperial roads project in progress and encountered a bug. the project had 10 turns left, and it freed the worker. it might have had something to do with me researching engineering, but im not sure. the game worked fine anyway, but a bug is a bug. it still says the imperial roads project is in progress, and it won't let me start another one. :sad:
 
Sorry i don't have a screenshot or save file, but i had an imperial roads project in progress and encountered a bug. the project had 10 turns left, and it freed the worker. it might have had something to do with me researching engineering, but im not sure. the game worked fine anyway, but a bug is a bug. it still says the imperial roads project is in progress, and it won't let me start another one. :sad:

To be completely blunt: That has absolutely nothing to do with RifE. It has everything to do with the Mana Flares addon, which you have installed; Unmodified RifE does not have imperial roads.
 
i dont know if this is a bug and/or has been posted yet:
if i have a recon unit with subdue animal and werewolf promotion and attack an animal, it is possible, that i get the attacked unit twice. the one as a normal animal and the other as a werewolf animal.

the same thing may also happen, if i have the promotion (or item) which gives me the 10% possibility to own a defeated living unit.


the second thing happend to a friend of mine:
he had war with another civ and made peace. after that made war again and defeated the civ.
the message "civ has been destroyed" appeared but the civ remained in the bottom right civ-list.
at the end of the game having one ally and one vassal, he did not win the game (conquest victory).
he played with all victories enabled and did not alter anything in the world editor.
if wanted, i can post the savegame here.
 
Started tracking down a crash in a save where I'm Infernal, started as Sheaim. This post will expand as I find problems in the C++ code and elsewhere.

  • A massive bunch of failed assertions about broken XML. These should really be fixed before release, since they can be tracked down just by starting the game with debug dll in use.
    • All the MLF_CIV4ModularLoadingControls.xml files that use "<DefaultConfiguration/>", should be "<DefaultConfiguration>NONE</DefaultConfiguration>".
      Alternatively, it should not be an error for CvXMLLoadUtility::GetChildXmlVal to not find child values. This might be more sensible as what is that default value parameter otherwise for?
    • CIV4TechInfos.xml
      • TECH_LEGION. Contains "<BonusPrereq>0</BonusPrereq>", but 0 is not a valid value there as far as I can tell, should instead be one of the BONUS_* names?
    • CIV4PromotionInfos.xml
      • PROMOTION_MASTERWORK_TOOLS. BonusPrereq of BONUS_ENCHANTMENT_MANA, should be BONUS_MANA_ENCHANTMENT.
      • PROMOTION_JOT_SEASONED_GIANT. PromotionPrereqOr2 of PROMOTION_WARBEAST, but that promotion does not exist.
    • CIV4ImprovementInfos.xml
      • IMPROVEMENT_DRAGON_BONES_EXPLORED. BonusConvert of MANA_ENCHANTMENT, should be BONUS_MANA_ENCHANTMENT.
    • CIV4LeaderHeadInfos.xml
      • A number of references to FlavorType value FLAVOR_MAGIC, but it hasn't been defined.
      • LEADER_DUIN2. FlavorType FLAVOR_RELIGON, should be FLAVOR_RELIGION.
    • CIV4CivilizationInfos.xml
      • CIVILIZATION_FROZEN. ArtStyleType of ARTSTYLE_ILLIANS, but no such artstyle has been defined. The Illian civ itself uses ARTSTYLE_WILDERNESS.
    • CIV4BuildingClassInfos.xml
      • TXT_KEY_BUILDING_SEWERS, should be TXT_KEY_BUILDING_SEWER.
    • CIV4UnitClassInfos.xml
      • UNITCLASS_HIGH_SPEAKER has DefaultUnit value of JOT_HIGH_SPEAKER, which isn't defined, should be UNIT_JOT_HIGH_SPEAKER. This causes a crash.
  • A bunch of index out of bounds assertion failures. These pretty much indicate logic bugs.
    • CvInfos.cpp
      • CvTraitInfo::copyNonDefaults. The specialist yield and commerce change part.
        It looks like the index variables i and j are being used the wrong way around. This causes the indexing to go out of bounds.
      • CvUnitInfo::getRouteIgnore. Does not handle the parameter being NO_ROUTE, which can happen when called from CvPlot::isValidRoute.
        Solution: alter CvPlot::isValidRoute initial check to ensure that getRevealedRouteType return value is also not NO_ROUTE?
      • CvLeaderRelationInfo::getLeaderAttitudeChange. In this case, it seems that size of the m_paiLeaderAttitudeChange array is number of leader head infos, instead of number of leader relation infos. Use "GC.getNumLeaderHeadInfos()" instead of "GC.getNumLeaderRelationInfos()" in the upper bound check.
    • CvPlot.cpp
      • CvPlot::setImprovementType. The crash bug itself.
        In the armageddon counter handling part, the plot's terrain type's terrainUp value is -1, which is passed to GC.getTerrainInfo() which in turn returns an invalid pointer. Using that pointer does not immediately crash since it happens to point at reserved memory. But another pointer read and stored from that random memory location end up causing the crash later on when it's used.
      • CvPlot::getWantedClimate(). Assumes that "GET_PLAYER(getOwnerINLINE()).getStateReligion()" would always return other than NO_RELIGION.
    • CvUnit.cpp
      • CvUnit::setImmobileTimer. Invalid pointer access (didn't crash in my save, but that was just luck).
        If a CvUnit::getDelayedSpell() returns other than NO_SPELL, CvUnit::cast() is called with that spell as parameter. cast() then sets delayed spell to NO_SPELL. After the cast call, setImmobileTimer() calls getDelayedSpell() again, getting the NO_SPELL value, passes that to GC.getSpellInfo() and calls a function off the resulting invalid pointer.
  • Python errors.
    • CvGameUtils.py
      • References to BUILDING_MONEY_CHANGER, should be BUILDING_MONEYCHANGER.
      • References to BUILDING_SEWER, should be BUILDING_SEWERS.
      • Reference to UNIT_PRIEST_OF_KILLMORPH, should be UNIT_PRIEST_OF_KILMORPH.
      • Reference to LEADER_THESSOLONICA, should be LEADER_THESSALONICA.
      • Reference to TECH_TECH_STIRRUPS, should be TECH_STIRRUPS.
      • Many "gc.getInfoTypeForString('CIVILIZATION_BARBARIAN')" calls, however there is no CIVILIZATION_BARBARIAN. These checks should probably be replaced with a check whether the civ is one of CIVILIZATION_ORC, CIVILIZATION_ANIMAL or CIVILIZATION_DEMON.
      • AI_chooseProduction may pass invalid value to getNumBuilding in cases where the building info number is gotten via civ specific lookup and the civ does not have access to that particular buildingclass.
        Solution: Make sure the building info number is correct before use.
      • getBuildingClassCountPlusMaking is called in several places with value from "gc.getInfoTypeForString('BUILDING_FOO')", should use the BUILDINGCLASS value instead.
      • "pPlayer.hasHolyCity(pPlayer.getStateReligion())" when the player has no state religion is problematic as CvPlayer::hasHolyCity shouldn't be called with NO_RELIGION.
  • PROMOTION_OBSCURED_LOS and PROMOTION_GOLIATH_SIEGE give a negative value to iFirstStrikesChange. This, however, means that they can force a unit to have a negative number of first strike chances. The only place this might cause problems is in CvUnitAI::AI_promotionValue where it seems to evaluate additional first strike chance value based on how many it already has. Probably safe to just remove the assertion from CvUnit::changeExtraFirstStrikes.
  • Something's broken in the AI handling of immobile units (I assume having DomainType of DOMAIN_IMMOBILE means that).
  • I presume state of war should always be mutual? However, the assertion in atWar() gets tripped - team 12 is at war with team 50, but not the other way around.
  • Possibly related to previous, in CvTeamAI::AI_declareWarTrade, whatever team it was that called it was already at war with team 50.
  • The Sheaim seem to have gotten a city with negative science from buildings. This probably shouldn't happen?
  • CvGame::isUnitClassMaxedOut trips the more units created than is allowed assertion for unitclasstype 119. How does one do a reverse lookup from that number to a symbolic name? Would help in finding out how this error condition came to occur.
  • Something causes a unit to have negative extra move discount value.
  • COLOR_GOLD referred to, but it's not defined. Should be RGB #D4AF37.
  • CvUnitAI::AI_update
    • Expects the unit to be able to move, that is for canMove() to return true. A glaring example of where this isn't true is when it's called for the newly created unit in CvUnit::castCreateUnit.
    • Encountered unit where "getGroup()->isAutomated()" is true and "getGroup()->getAutomateType()" is NO_AUTOMATE.
  • A civ possessed a unit whose unittype is different than that civ's unittype for the same unitclass. That is, fails to pass the check:
    GC.getCivilizationInfo(getCivilizationType()).getCivilizationUnits(eUnitClass) == eUnit
    This is probably the wrong fort commander bug.
  • Is it Austrin or Austerin? Half the code uses one name, rest the other and not consistently either, so for example references to both CIVILIZATION_AUSTRIN and CIVILIZATION_AUSTERIN. This naturally bugs out everything.
  • The Python AI code gave a city an order to construct a building of type 13, when the civ specific (civ 16) building is 351 (building class 139).


Edit the final: Attached patches for the bugs that I've fixed. Separate files for C++, Python and XML changes. All patches are relative to the "Rise from Erebus" mod base directory.
Also the Austrin vs Austerin changes in a separate file.
 

Attachments

With Naxus as Amurites, Govannon can't teach his spells to the whole arcane line as undead arent affected.
 
yes he does. 15 % chance per turn or something like that.

but this mechanic is nice. just add implacable for arcane units pls pls and make spell teachings work on undead
 
This may not be a bug, but is anyone else noticing certain trends with the ErebusContinent map that seem arbitrary? For example, In the past eight games, the Amurites and the Dural are CONSISTENTLY neighbors on the eastern coast of the map. The Sidar always seem to be on a peninsula of some sort. The Calabim always tend to start in the south west corner of the map. And that's just from what I've seen. Is there something in the map code that is causing this or is this just strange coincidence?
 
some things:

-kahd autobuild builds library and alchemy lab
-the kahd immortal has a worker icon
- the kahd archmage is much too expensive (had to pay 900 gold to upgrade gaelan to archmage while only 245 with amurites the game before)
- the domination spell is regained after some rounds (happened to me with a satyr)
- tree of life and avenger cant be summoned at the same time but avenger and vyrkul can
-the protector promo is treated as blood of the phoenix (removed on activition). i dont think this is intended. the same should apply to destroyer promo then.
-kahd vault gate isnt listed on the build popup menu
 
some things:

-kahd autobuild builds library and alchemy lab
-the kahd immortal has a worker icon
- the kahd archmage is much too expensive (had to pay 900 gold to upgrade gaelan to archmage while only 245 with amurites the game before)
- the domination spell is regained after some rounds (happened to me with a satyr)
- tree of life and avenger cant be summoned at the same time but avenger and vyrkul can
-the protector promo is treated as blood of the phoenix (removed on activition). i dont think this is intended. the same should apply to destroyer promo then.
-kahd vault gate isnt listed on the build popup menu

Domination is intended to be returned; It's not lost anymore.

That's rather odd with the summons, all of them are permanent; Should only be getting one.

I'll have to check on protector/destroyer.


And no, I'm not really ignoring the Kahd stuff... It's just that that civ is being condensed down to an Amurite-specific event. ;)
 
running a Duel size map with D'tesh. Started the game with "high" graphics settings. was getting several crashes around turns 150-170, so i tried to reduce the graphics settings to "low".

a strange thing happened. all, (or nearly all) of the unit art changed. champions turned into swordsmen, gryphons turned into panthers. The cyclops turned into some other vanilla civ unit with a shield - only giant sized. It didn't change how the game played, but i thought it was odd that most of the unit art got swapped out for other units. the game still identified the units as they were originally, but they just looked different.

maybe there's no low-res models for those units?
 
Oh, and i keep forgetting to mention this. sometimes units stop earning XP at all regardless of how much battle they do. a unit might have only a small amount of XP, (2.50) or something and they simply cannot advance. it's often many units that are in the same boat when this happens, (it's never just one unit). the only exception would be fort commanders which seem to earn non-stop XP for breathing.
 
running a Duel size map with D'tesh. Started the game with "high" graphics settings. was getting several crashes around turns 150-170, so i tried to reduce the graphics settings to "low".

a strange thing happened. all, (or nearly all) of the unit art changed. champions turned into swordsmen, gryphons turned into panthers. The cyclops turned into some other vanilla civ unit with a shield - only giant sized. It didn't change how the game played, but i thought it was odd that most of the unit art got swapped out for other units. the game still identified the units as they were originally, but they just looked different.

maybe there's no low-res models for those units?

sounds like you enabled, Freeze Animations in the graphics options. That will cause the units to revert to Vanilla graphics. I had this myself. In fact, I took it as a trade off for being able to play the game.
 
hey im really curious about exploring your mod! however, every time i start up a game (ive tried it like 5 times) i get a crash at the end of the first turn.

here's the savefile. hopefully someone can figure it out. (also, yes i did mod the start position a little bit :lol:)
 

Attachments

hey im really curious about exploring your mod! however, every time i start up a game (ive tried it like 5 times) i get a crash at the end of the first turn.

here's the savefile. hopefully someone can figure it out. (also, yes i did mod the start position a little bit :lol:)

From the download thread:

To install, follow these simple steps:
  1. Install the Rise from Erebus version and patch (if any) from the links below.
  2. Extract the Hot Fix (if any) to your RifE folder.
  3. Extract any Addons you wish to use to your RifE folder.
Sorry if I come across wrong, it's just a question I'm tired of answering at this point (flavor patch will be released in the next few days, nothing major; But it will include the hotfix DLL, so hopefully will settle this finally.) :p

You can get the Hot Fix from either the first post of the Download thread (clearly marked, with installation instructions) or from my sig, again with installation instructions. It's only one file, very easy to apply. ;)
 
that was foolish of me! my apologies for not checking the main download thread :P DUH! but thanks again for such a quick response. im glad you could help me out without delving into code or anything arcane. (looks great btw! im excited!)
 
Back
Top Bottom