Buffy 005 Announcement

Noble Zarkon

Elite Quattromaster - Immortal (BTS)
Super Moderator
Hall of Fame Staff
GOTM Staff
Supporter
Joined
Sep 6, 2012
Messages
7,427
Location
Gibraltar
We have a new version of Buffy available for testing - 005 which can be downloaded from here.

This version is based on the stable versions of BUG (4.4) and BULL (1.2) and incorporates the HOF code including the check for Espionage victories. This is intended to be the last major release of Buffy.

If all goes well with the testing this new version will be recommended from 10th January and compulsory from the 10th March 2018 (after the current Challenge finishes).
 
Last edited:
Here is the change log for the new version:-

Spoiler BUG 4.3 & 4.4 Changes :

Code:
BUG 4.4 released May 17th, 2010

CHANGES

New Features:

- BUG Plot List (Unit Icons)
    Completely rewritten code significantly speeds up drawing icons of large unit stacks
- Resource Deals
    Resource icons in active import/export columns on the RESOURCES tab of the Foreign Advisor
    show the full deal they belong to and can be clicked to cancel the deal [BULL]

Improvements:

- Production Queue
    Items that have hammers invested already are drawn in cyan (projects only work with BULL)
- Customizable Domestic Advisor
    Added Draft Anger column
- Great Person Tech Prefs
    Added headings and limited Current and Future techs to those that can be researched
- Unit Naming
    Can use multiple counters for a single naming code
- Civ4lerts
    Worst Enemy alerts show the old enemy along with the new one
- BUG Button
    Added option to hide the button and moved it slightly left
- Translations
    Added several improved Spanish translations by Gerard

Bug Fixes:

- Random Events
    Fixed culture-level checking in Partisans random event; event is now possible on 3.19 and above
- Unit Naming
    Civilization name code uses adjective as described in hover help as opposed to noun form (English vs. England)
- Worst Enemy
    Fixed check in games with multiple players on a team
    Alert ignores human teams instead of AIs
- Civ4lerts
    City-related, Worst Enemy, and Refuses to Talk alerts work for each player in Hot Seat games
    Worst Enemy and Refuses to Talk alerts work with AI AutoPlay
    Worst Enemy alert not shown when team is killed (was showing no-name team)
- Combat Log
    Actual owner of hidden nationality units is not exposed
- Options Screen
    Fixed options that were not being saved and/or could only turn off
- Foreign Advisor
    INFO tab shows correct modifier total, including visible values from Show Hidden Attitude mod when active

Merged Mods:

- Unofficial Patch
    Updated to release version 1.50


MODDING

    *** Important: See "Removed EntryPoints Modules" below ***

New Features:

- BugUtil
    Added export(), exportFunction(), extend(), and extendFunction() for injecting functions into EntryPoints modules
- Configuration
    Added <export> and <extend> XML elements that call exportFunction() and extendFunction() respectively
- BugData
    New API for storing data in CyGame's script data that is 100% compatible with SdToolKit

Improvements:

- Simplified Initialization
    BugInit.init() alone guards against being called twice
    CyGame.isFinalInitialized() used to check if Civ4 is ready
- Removed EntryPoints Modules
    CvAppInterface, CvDiplomacyInterface, CvOptionsScreenCallbackInterface, and CvRandomEventInterface
    If your mod needs to add code to any of these modules, use <export> and <extend> or use the original BTS modules as a base
- PlayerUtil
    players() and teams() now accept active parameter that restrict to players/teams that can become active

Bug Fixes:

- Better Espionage
    Removed unused EspionageEventManager
- AttitudeUtil
    Limits Worst Enemy checks to teams that are alive
- BugUtil Logging
    Unicode encoding errors are caught and ignored in log()
- Options
    Unsaved options use TYPE_MAP to convert to correct real type (bool/int/etc) when setting
    <option> key defaults to id if inside <options> so they are saved to the INI file
- Initialization
    BUG now tells BULL that it has been initialized so BULL can query for options


____________________________________________________________________________________________________
BUG 4.3 released February 16th, 2010

CHANGES

New Features:

- Main Interface
    Can choose from three sizes for the build/action buttons
    Added a button to bring up the BUG Options Screen (top left)
- Espionage Advisor
    New layout shows EPs spent against you and icons for passive missions
    Can swap cities and missions lists to see cost in each city for a single mission
    New GLANCE-style tab shows EPs spending on and by each rival you've met
- Technology Chooser
    Added color-coded shadow denoting each technology's era
- BUFFY
    Barbarian Uprising events require Priesthood

Improvements:

- Main Interface
    Unit Plot drawing improvements (pre-work only at the moment)
- Great Person Bar
    Added city's total GP/Turn to hover.
- City Screen
    Can select which tiles to count in Raw Yields when Civ starts
- Foreign Advisor
    Can select how to display attitudes: numbers, smilies, or both
    Shows technologies that you cannot trade to rivals
- Technology Chooser
    Added hover to GP Research icons showing the preferred order
- Unit Naming
    Unnamed initial units are named when you found your capital
    Units from tribal villages (goody huts) are named
    Random names can now be mixed with other naming codes or static text
- Reminders
    Saved for all players in multiplayer games [BULL]

Bug Fixes:

- Strategy Layer
    Fixed random crash on Windows Vista/7
- City Screen
    Happiness and unhappiness are shown for foreign cities
    Whip/Draft Anger is shown for teammates' cities
    Raw Yields now adds Trade Routes to commerce total when Fractional Trade is off, hides fractions when on
- Team Games
    WHEOOH works correctly and won't check if a rival will DoW on your teammates or theirs
    Worst Enemy no longer shown for humans' teammates
- Multiplayer OOS Errors
    Changed random "polling error" on F8:MEMBERS tab to use asynchronous RNG
    Changed random unit name generator to use asynchronous RNG
- Scoreboard
    You can always see how many cities your teammates have
- Unit Naming
    Phonetic and Greek naming codes now start at first element (alpha)
    Domain code (^dm^) uses translated description (Water) instead of XML key (DOMAIN_WATER)

MODDING

New Features:

- BUFFY
    Merged BUFFY code into BUG so there's one code repository

Improvements:

- Translation
    Split CIV4GameText XML files for Options into individual files matching the Config folder
- BugEventManager
    Added addPopupHandlers() that takes the name and functions as parameters instead of a single tuple
- Configuration
    Added a warning when you specify a key for an <option> or <list> that is outside an <options> or <section> element
- DllUtil
    widget() now accepts an existing WidgetType as the first parameter when you only need the data values to vary

Bug Fixes:

- BugPath
    Added safeDebugPath() and safeInfoPath() to safely log paths that might contain non-Latin characters


Spoiler BULL 1.2 Changes :

BULL 1.2 released May 17th, 2010

CHANGES

New Features:

- Ignore Harmless Barbarians
No warnings for nearby barbarians that cannot enter your lands
- Starting Experience
Added starting experience and number of promotions a unit will receive
Added list of the present and missing sources of experience and their amounts similar to resource modifiers for buildings
- Draft Unit and Limit
Added full unit description: strength, moves, XP, promotions, abilities, etc.
Added number of units you can draft this turn
Added messages to Draft button hover when you have reached the player or city limits
- Cancel Deal Info
Can click an import/export bonus on the Foreign Advisor to cancel the deal and hover shows full deal [BUG]

Improvements:

- Building Actual Effects
Added Global Happiness and Health [Fuyu]
Added Building Class Happiness (unused in original game) [Fuyu]
Added Global War Weariness Modifier [Fuyu]
Added Angry Population affected by Happiness
Added Spoiled Food affected by Health
- Show Hidden Attitudes
Debug mode exposes all modifiers

Bug Fixes:

- Leaderheads
Worst Enemies you haven't met are no longer shown
- Show Hidden Attitudes
First Impression modifier resets to zero for each leader
- Production Decay
Scales correctly with game speed
- Options
Starting a new game no longer breaks BULL's access to BUG's options

Merged Mods:

- Unofficial Patch
Updated to release version 1.50


MODDING

New Features:

- API
Added calculateExperience() in CvGameCoreUtils
Added calculateLevel() in CvGameCoreUtils
Added CvUnitInfo::canAcquireExperience()
Added CvGameTextMgr::setBasicUnitHelpWithCity()
Added CvGameTextMgr::setUnitExperienceHelp()
- Python API
Exposed calculateExperience()
Exposed calculateLevel()
Exposed CvUnitInfo::canAcquireExperience()

Improvements:

- API
Added iAngryPop to CvCity::getAdditionalHappinessByBuilding()
Added iSpoiledFood to CvCity::getAdditionalHealthByBuilding()
Added CvCity::getAdditionalHappinessByBuilding() form that doesn't take any reference arguments
Added CvCity::getAdditionalHealthByBuilding() form that doesn't take any reference arguments
- Python API
Exposed CvCity::get/set/changeProjectProduction()
Exposed CvCity::getAdditionalHappinessByBuilding(BuildingTypes eBuilding) [four forms]
Exposed CvCity::getAdditionalHealthByBuilding(BuildingTypes eBuilding) [four forms]

Bug Fixes:

- Initialization
Added setIsBug() that is called by BUG once all options have been read
The XML values or defaults are used until BUG has been initialized
- Building Additional Effects
Only buildings that your civilization can build are checked so asserts aren't triggered
- Production Decay
CvCity::isBuilding/UnitProductionDecay() and getBuilding/UnitProductionDecayTurns() scale with game speed
 
Here are the known bugs in this version.

  1. Mapfinder message not shown in colour when interrupting run. - Open

  2. Python errors when Mapfinder unable to regenerate map. - Open

  3. Incorrect text shown when limit of 3 missionaries reached - says "Requires Monastery". - Open

  4. Button for "Sea sentry" is missing. - Fixed

  5. In certain circumstances you can attack a unit and capture a worker in the same turn without the Blitz promotion. - Fixed

  6. Discrepancies with city defence totals between action log and city screen e.g. Log says "you reduced city X's defences to 45%" but city screen shows 58% defence. - Seems to be related to different units having different odds e.g. ignoring walls

  7. Being asked to join a war when you've just agreed to join the other side. - Likely to be a timing issue, not been able to replicate
 
Last edited:
Sounds like #5 is the only real showstopper. Has anyone narrowed it down to BUG, BULL, or BUFFY? should be easy to know which of the 3 caused the problem. I'll have a look at the code if you want.
 
How in the world can #5 crop up? That's scary. Who knows what else is out there like that?
This was the bug I found. It's very easy. In fact, I think it ALWAYS happens. Worker capture just does not count as your one military attack. Kinda like how you can pillage and attack.
 
Discrepancies with city defence totals between action log and city screen e.g. Log says "you reduced city X's defences to 45%" but city screen shows 58% defence.
This happens in BUG 4.4 aswell and I'm not sure it is a bug. It is because Gunpowder-based and non-gunpowder-based units don't see the same defense bonus in enemy cities, because the former ignore bonuses from walls and castles. However, bombarding with Cannons/Artillery/MobileArtillery still takes walls/castles into account.

For example, let's say a city has 60% cultural defenses, walls and castle.

When you bombard with a cannon (-12%), the log (in BUG) will display "you have reduced the defenses of Bombay to 88%", even though the Cannon sees 0.88*60=52% (or 53, not sure about the rounding). When you select - say - a maceman, it will show the "correct" 88% defense bonus.

This "issue" stops happening when the AI reaches Rifling, which obsoletes walls&castles.

Looks like in BUFFY 005 it's happening the reverse way, though I can't say for sure becaue I haven't tried it.
 
Just added another showstopper bug :sad:.

Was testing SGOTM26 and was asked to join a war against an AI, I accepted and then that AI asked me to join the war on their side! Never seem that in 003, presumably both requests were generated but the second one should have been cancelled when I accepted the first?
 
Was testing SGOTM26 and was asked to join a war against an AI, I accepted and then that AI asked me to join the war on their side! Never seem that in 003, presumably both requests were generated but the second one should have been cancelled when I accepted the first?
I believe that that's just how Civ 4 works. Each AI will get their turn and generate requests, then before the start of your turn, you have to answer all of those requests.

That's just how the game works in a turn-based style. It's not that, say, AI 1 plays their turn, you get to handle AI 1's requests, and then AI 2 plays their turn. Instead, all of the AIs play their respective turns, and they make their requests based on your status at the end of your previous turn. Sometimes, otherwise-impossible situations will arise, such as AI 2 making a request of you after you've already accepted AI 1's request to declare war on AI 2, even though you should technically no longer be able to talk with AI 2, but the request still gets made because it was made at a time in the past; it's simply the design decision that was made to avoid you holding up the other AIs from playing through their respective turns if one of the AIs were to make a request of you--imagine how frustrating the game could be if you had to keep waiting multiple times for the AIs to finish their respective turns due to having to handle a few AIs' requests every turn, especially on a large map or on computer hardware that was much slower than what you can play on today.

It shouldn't be too hard to set up... launch a BUFFY 003 game with a lot of opponents, with Lock Modified Assets turned off, and with New Random Seed on Reload turned on. Let the AIs settle their initial Cities, and then go into the WorldBuilder and force them into wars with each other. Set up some other situations, such as you having Alphabet (so that some AIs can Demand/Request it from you), you having Writing (so that some AIs can ask to Open Borders with you), and you having some duplicate Resources connected (say, two Gold Resources and you having Mining and The Wheel, so that AIs can Demand/Request the extra Gold Resource from you). Save your game, end your turn, watch to see whether an AI requests your help in a war, and then hope to see a request from the AI upon whom you declared war--the first turn after a war is declared is when the AIs have the highest chance of asking for help in the war. If you didn't see the desired requests, load your game and try again.

Since player order matters, put the following players at the top of the player list on the Custom Game screen, as they are more likely to ask you to join in on their war:
Catherine, Elizabeth, Kublai Khan, Saladin, and Suryavarman.

You are just trying to prove that ANY request/demand can appear from an AI upon whom you have already declared war due to the request/demand of a different AI who is earlier in the player order.
 
Okay #5 is really weird. This one was reported already for .004, but I was never able to replicate it. I set up tests to try to replicate it, and I played a ton of games for HoF using .004, but not once did I notice that a unit that already attacked would have been able to capture a worker. When .005 came out I tried it there as well, could not replicate the bug.

Today I tried again. For some reason I'm now always able to capture a worker after attacking. This works in .005_beta2, .005_beta and even in .004. What could possibly have changed to make it work now when it didn't work earlier?
 
To elaborate on my response above, all games I played in .004 were played last year, as were the tests where I couldn't replicate bug #5. Since then I had to reinstall Windows and BTS. After the reinstall, I have not been able to open any of my .004 saves from last fall. I get a crash to desktop every time I try to load one (starting a new game in .004 is fine). So there is definitely something different in my current install. I can't open games played with my last install, and I now get the attack+worker capture bug, which did not appear in my previous install.
 
are any of the games on the HoF? maybe someone else can open them. You might be on to something.
Yes. All my games submitted in .004 were played with my previous install. As I couldn't open my old .004 saves anymore after reinstalling Civ, I've been playing only in .003 this spring.

For example these games:
http://hof.civfanatics.net/civ4/game_info.php?entryID=29357
http://hof.civfanatics.net/civ4/game_info.php?entryID=29360

I get a CTD when I download those saves and try to open them, or if I try to load any of the saves I have on my computer from those games.

The one thing that comes to mind is the way you can install 3.19 or both 3.13 and 3.19. Which way did you install the patches?
I've been trying to think of what I could have done differently. Both installs were through Steam, using the original release beta install. I don't recall installing patches.. It comes fully patched when installing through Steam?
 
Top Bottom