Announcement

Collapse
No announcement yet.

BtS unofficial patch

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • BtS unofficial patch

    Here's a minor update to the BtS AI, and some minorish fixes.

    Changes:

    * Fixing a possible infinite loop problem with unit movement.
    * Poison Water and Foment Unhappiness missions now have the same effect, duration and cost on all game speeds, to mirror the official patch.
    * AI now more likely to promote siege units with Accuracy to better handle the changes to bombardment in BtS
    * AI understanding of what is an "early Wonder" now correct for non-Normal game speeds.
    * AI civs that are close to reaching a Domination victory recognize that and are more likely to declare war, in particular with Aggressive AI.
    * "Dead unitgroup walking" crash fix as per Dale
    * No-conscript colony crash fix as per Gyathaar
    * Another colony crash fix as per myself
    * Fixed the bug allowing Forts in foreign territory, which would result in Forts overrunning useful rival improvements.
    * AIs close to domination population will have a high priority for health buildings in cities that are unhealthy.
    * AIs close to domination population will put a high priority on researching Genetics and will like other health techs better.
    * The AI will be less reluctant to raze cities that have its state religion if it doesn't have the shrine for that religion.
    * Corporation maintenance is now exempt from inflation, so the costs don't blow up so much.
    * Added possible workaround for a crash bug.
    * Fixed an infinite loop problem with city attackers (thanks Gyathaar)
    * Blockade code rewritten so that blockading is now much faster, as per Gyathaar
    * Fixed Quick-speed crash (whoops)
    * Auto-explore change per Bhruic.
    * Auto-explorers will heal when wounded.
    * Advanced start population selling fixed per Gyathaar
    * Fixed the AP-conversion hammer bug
    * AI will use espionage to destroy non-resource terrain improvements - such as Towns.
    * AI may destroy improvements through espionage just because it hates you, with no war plan
    * Increased likelihood of the AI stealing techs - hopefully it will do so now
    * Fixed AI airstrike bug
    * AI now only capitulates to the team which has done them a majority of the damage.
    * On non-aggressive AI, the AI's are more aggressive early in the game.
    * AI trains more units early in the game.
    * AI SHOULD do a better job of bribing other AI's (this may or may not work)
    * The cost to Bribe AI's into war now uses a new algorithm, it better reflects the impact of the bribe (ie a large AI charges a lot more to be ordered around). Generally bribing will be more expensive, especially cases where it used to be excessively cheap.
    * AI's tell you to sod off if you try to bribe them onto a victim with an intact nuclear arsenal.
    * AI brags about it's nukes more.
    * Always Peace now suppresses AI militarism (with some barb awareness).
    * AI spends less on Espionage.
    * AI trains spies with lower priority.
    * AI better aware of Free Market / Environmentalism corporation impact.
    * Exploring units should now heal.
    * Possibly fixed exploring "YoYo" issue.
    * Fixed a puppet strings exploit related to naval invasions.
    * Fixed some issues which hampered or stalled AI early game expansion.
    * Tweaks to Governor, particularly "Emphasize Food"
    * Fixed an undefended cities issues.
    * Destroying Towns through espionage will turn them into Villages, etc.
    * Slight tweak to the AI selection of HQ city when founding a corp
    * Splitting off a colony no longer tends to create the same civilization
    * Governor fills the food bar better.
    * Governor should work hamlets over cottages.
    * AI offers larger bribes to other AI's, and doesn't care how much it "overpays" to bring another party into war.
    * The vassalizing thing should work now.
    * Fixed bug where defensive units idle.
    * Hamlets WILL be preferred over cottages.
    * Fixed independence-loving colonies
    * AI will prefer to run Foment Unhappiness in cities that have been hit with Poison Water and vice-versa
    * Fixed possible negative inflation situation (thanks Esper23)
    * AI prefers to poison water supply of cities with a low food bar to ensure population loss.
    * Fixed bug causing the new capitulation behavior to malfunction.
    * Fixed bug causing units to sit around outside cities.
    * AI now knows how to use Steal Tech and Incite Revolt
    * AI's may choose to not be espionage "petty terrorist" and instead only use large espionage missions (like steal tech and sabotage project).
    * AI uses spies more smartly (camps them in cities to get the discount)
    * AI values espionage buildings more
    * Another couple of minor changes to governors

    Last update: Aug 29

    Download

    To install, just put the DLL file from the zip file into the Assets folder of your BtS installation (by default something like c:\program files\firaxis games\civilization iv\beyond the sword\assets). Putting the file into CustomAssets will not work!

    You do not need to put the .cpp files anywhere unless you're a programmer! If you don't know what those files are and what they do, you don't need them.

    If you want a fix to the Military Academy bug, download the next file and place it into Assets\XML\Units (again, preferably back up the original).

    Download Mil. Academy Fix
    Last edited by Solver; August 29, 2007, 11:37.
    Solver, WePlayCiv Co-Administrator
    Contact: solver-at-weplayciv-dot-com
    I can kill you whenever I please... but not today. - The Cigarette Smoking Man

  • #2
    Re: BtS AI - minor update

    Originally posted by Solver
    Here's a minor update to the BtS AI, just download the DLL file and put it where appropriate.

    Changes:

    * Fixing a possible infinite loop problem with unit movement.
    * AI now more likely to promote siege units with Accuracy to better handle the changes to bombardment in BtS
    * AI understanding of what is an "early Wonder" now correct for non-Normal game speeds.
    * AI civs that are close to reaching a Domination victory recognize that and are more likely to declare war, in particular with Aggressive AI.

    Download
    Interesting.
    What does 'AI understanding of what an early Wonder' actually mean? Also, you say 'in particular with Aggressive AI' for the last point. Will it still happen to a certain extent when Aggressive AI isn't selected?

    Comment


    • #3
      Please excuse my ignorance but is this a 'custom' update or is it official in some way? If the former, could it possibly interfere with future patchings?
      "Can we get a patch that puts Palin under Quayle?" - Theben

      Comment


      • #4
        Well, sometimes the AI decides to build an early wonder, actually setting it as a priority to get one early. Its understanding of when that "early" period is was quite good for Normal speed, but inadequate for slower speeds, for example.

        And yes, being close to Domination will make the AI more aggressive on the default AI as well. It's just that Aggressive AI will increase the effect even further.
        Solver, WePlayCiv Co-Administrator
        Contact: solver-at-weplayciv-dot-com
        I can kill you whenever I please... but not today. - The Cigarette Smoking Man

        Comment


        • #5
          Originally posted by guermantes
          Please excuse my ignorance but is this a 'custom' update or is it official in some way? If the former, could it possibly interfere with future patchings?
          It's created by me, not "official" in that sense. Any future patches will just overwrite the DLL and thus essentially eliminate this.
          Solver, WePlayCiv Co-Administrator
          Contact: solver-at-weplayciv-dot-com
          I can kill you whenever I please... but not today. - The Cigarette Smoking Man

          Comment


          • #6
            Does this include the fix to AI_update(..) where sometimes a NULL selectionGroup is passed?

            Comment


            • #7
              Nope, I'm not aware of that bug.
              Solver, WePlayCiv Co-Administrator
              Contact: solver-at-weplayciv-dot-com
              I can kill you whenever I please... but not today. - The Cigarette Smoking Man

              Comment


              • #8
                Thanks, maybe I'll add this one

                Is the loop movement the one that someone has complained about when it comes to exploring?

                Comment


                • #9
                  It's the issue where the game would get completely stuck in certain, though rare, circumstances.
                  Solver, WePlayCiv Co-Administrator
                  Contact: solver-at-weplayciv-dot-com
                  I can kill you whenever I please... but not today. - The Cigarette Smoking Man

                  Comment


                  • #10
                    Ok, haven't had time to play that much yet so haven't expirenced any problems either.

                    Btw, as it's a dll-update, I assume it will affect current savegames as well?

                    Comment


                    • #11
                      Yes, but you'll still be able to load them.
                      Solver, WePlayCiv Co-Administrator
                      Contact: solver-at-weplayciv-dot-com
                      I can kill you whenever I please... but not today. - The Cigarette Smoking Man

                      Comment


                      • #12
                        That's what I also meant by affect, was a bit short there Thanks

                        Comment


                        • #13
                          Sorry, not AI_update, but AI_unitUpdate.

                          Code:
                          void CvPlayerAI::AI_unitUpdate()
                          {
                          ..
                          ..
                          
                          			pCurrUnitNode = finalGroupCycle.head();
                          
                          			while (pCurrUnitNode != NULL)
                          			{
                          				// Dale - RtW: START
                          				if (this->isAlive() && getSelectionGroup(pCurrUnitNode->m_data) != NULL)
                          				{
                          					if (getSelectionGroup(pCurrUnitNode->m_data)->AI_update())
                          					{
                          						break; // pointers could become invalid...
                          					}
                          
                          					pCurrUnitNode = finalGroupCycle.next(pCurrUnitNode);
                          				} else {
                          					break;
                          				}
                          				// Dale - RtW: END
                          			}
                          		}
                          	}
                          }

                          Comment


                          • #14
                            Thanks, Solver, I'll have to try this when I get home from work.

                            Comment


                            • #15
                              Originally posted by Dale
                              Sorry, not AI_update, but AI_unitUpdate.

                              Code:
                              void CvPlayerAI::AI_unitUpdate()
                              {
                              ..
                              ..
                              
                              			pCurrUnitNode = finalGroupCycle.head();
                              
                              			while (pCurrUnitNode != NULL)
                              			{
                              				// Dale - RtW: START
                              				if (this->isAlive() && getSelectionGroup(pCurrUnitNode->m_data) != NULL)
                              				{
                              					if (getSelectionGroup(pCurrUnitNode->m_data)->AI_update())
                              					{
                              						break; // pointers could become invalid...
                              					}
                              
                              					pCurrUnitNode = finalGroupCycle.next(pCurrUnitNode);
                              				} else {
                              					break;
                              				}
                              				// Dale - RtW: END
                              			}
                              		}
                              	}
                              }
                              Color me confused, Dale, is this the problem or the fix you've made to a problem? Furthermore is this just something in RtW or the main game as well?

                              Comment

                              Working...
                              X