Advanced Civ

Oh hey, one other thing. When I download the newest version it still downloads 0.92. Not sure why, but I don't think it's on my end. Am I missing something dumb?
Thanks for letting me know. Probably, my upload timed out and I ended up not attaching any file. :blush:
Pretty sure it's fixed now. v0.93 download
 
Promise I'll go away soon. One last thing. Using the 48 civ dll and rise and fall, when someone declares war other civs seem to form defensive pacts automatically (we're talking classical era). Or maybe the pacts are already formed but they become visible then. Not sure.
Only happens when more than 18 civs in the game.
 
Last edited:
Promise I'll go away soon. One last thing. Using the 48 civ dll and rise and fall, when someone declares war other civs seem to form defensive pacts automatically (we're talking classical era). Or maybe the pacts are already formed but they become visible then. Not sure.
Only happens when more than 18 civs in the game.
Thanks once more. That must've been a memory corruption, and I think I've found the cause. Looks like the error didn't have any effect for MAX_CIV_PLAYERS=18, but it was still an error. Here's the updated DLL: link
The defensive pacts were probably present since the start of your game, and some civs may have been at war from the beginning. So that game is probably not really salvageable. :undecide:
 
Hello, I had a game recently crash. I'm not sure if this is the correct information, but I pulled this from text files named ThemeParseLog.txt and PythonErr2.log. I'm using a mod-mod, but only xml stuff.

[Sep 10, 2018 - 14:20:34] Messages while processing 'Mods/AdvCiv/Resource/Civ4.thm'

Error : Decl - ('Civ4Theme_Common.thm', Ln:415, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size3_Italic' not found
Error : Decl - ('Civ4Theme_Common.thm', Ln:416, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size3_BoldItalic' not found
Error : Decl - ('Civ4Theme_Common.thm', Ln:422, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size1_Bold' not found
Error : File - ('Civ4Theme_Menu.thm', Ln:219, Col:61) Could not load bitmap '../../../../Resources/Civ4/Menu_Checkbox.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:220, Col:61) Could not load bitmap '../../../../Resources/Civ4/Menu_Checkbox.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:224, Col:61) Could not load bitmap '../../../../Resources/Civ4/Menu_Radiobutton.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:225, Col:61) Could not load bitmap '../../../../Resources/Civ4/Menu_Radiobutton.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:299, Col:45) Could not load bitmap '../../../../Resources/Civ4/menu_bg_TB.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:311, Col:45) Could not load bitmap '../../../../Resources/Civ4/menu_bg_LR.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:320, Col:45) Could not load bitmap '../../../../Resources/Civ4/menu.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:327, Col:45) Could not load bitmap '../../../../Resources/Civ4/menu.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:334, Col:45) Could not load bitmap '../../../../Resources/Civ4/menu.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:387, Col:49) Could not load bitmap '../../../../Resources/Civ4/menu_bg_inner.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:404, Col:49) Could not load bitmap '../../../../Resources/Civ4/menu_arrow.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:414, Col:49) Could not load bitmap '../../../../Resources/Civ4/menu_arrow.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:425, Col:49) Could not load bitmap '../../../../Resources/Civ4/menu_arrow.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:451, Col:63) Could not load bitmap '../../../../Resources/Civ4/menu_selection.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:464, Col:63) Could not load bitmap '../../../../Resources/Civ4/menu_selection.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:480, Col:47) Could not load bitmap '../../../../Resources/Civ4/separator_h.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:738, Col:63) Could not load bitmap '../../../../Resources/Civ4/menubar_selection.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:749, Col:63) Could not load bitmap '../../../../Resources/Civ4/menubar_selection.tga'
Error : File - ('Civ4Theme_Menu.thm', Ln:760, Col:63) Could not load bitmap '../../../../Resources/Civ4/menubar_selection.tga'
Error : Decl - ('Civ4Theme_Window.thm', Ln:3052, Col:9) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size1_Bold' not found
Error : Syntax - ('Civ4Theme_HUD.thm', Ln:892, Col:13) Unexpected '.' in the identifier assignment statement
Error : Syntax - ('Civ4Theme_HUD.thm', Ln:932, Col:13) Unexpected '.' in the identifier assignment statement

sys.path = ['..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\email', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\encodings', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\build', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\py', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\tools', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\colourchooser', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\editor', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\floatcanvas', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\masked', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\mixins', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\lib\\ogl', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\af', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ca', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\cs', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\da', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\de', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\el', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\es', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\eu', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\fi', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\fr', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\hi', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\hu', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\id', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\it', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ja', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\lv', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\nb', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\nl', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\pl', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\pt_BR', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ru', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\sl', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\sv', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\tr', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\uk', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\zh_CN', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\zh_TW', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\af\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ca\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\cs\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\da\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\de\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\el\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\es\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\eu\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\fi\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\fr\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\hi\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\hu\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\id\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\it\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ja\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\lv\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\nb\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\nl\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\pl\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\pt_BR\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\ru\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\sl\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\sv\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\tr\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\uk\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\zh_CN\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\locale\\zh_TW\\LC_MESSAGES', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\py\\tests', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\tools\\XRCed', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM\\wx\\tools\\XRCed\\src-images', '..\\WARLORDS\\ASSETS\\PYTHON\\SYSTEM']

sys.modules = {'zipimport': <module 'zipimport' (built-in)>, 'signal': <module 'signal' (built-in)>, '__builtin__': <module '__builtin__' (built-in)>, 'sys': <module 'sys' (built-in)>, '__main__': <module '__main__' (built-in)>, 'exceptions': <module 'exceptions' (built-in)>, 'CvPythonExtensions': <module 'CvPythonExtensions' (built-in)>}

sys.builtin_module_names = ('CvPythonExtensions', '__builtin__', '__main__', '_bisect', '_codecs', '_codecs_cn', '_codecs_hk', '_codecs_iso2022', '_codecs_jp', '_codecs_kr', '_codecs_tw', '_csv', '_heapq', '_hotshot', '_locale', '_multibytecodec', '_random', '_sre', '_subprocess', '_symtable', '_weakref', '_winreg', 'array', 'audioop', 'binascii', 'cPickle', 'cStringIO', 'cmath', 'collections', 'datetime', 'errno', 'exceptions', 'gc', 'imageop', 'imp', 'itertools', 'marshal', 'math', 'md5', 'mmap', 'msvcrt', 'nt', 'operator', 'parser', 'regex', 'rgbimg', 'sha', 'signal', 'strop', 'struct', 'sys', 'thread', 'time', 'xxsubtype', 'zipimport')
load_module CvEventInterface
load_module BugEventManager
load_module CvEventManager
load_module CvUtil
load_module traceback
load_module CvScreensInterface
load_module CvMainInterface
load_module ScreenInput
load_module CvScreenEnums
load_module time
load_module BugDll
load_module BugOptions
load_module BugConfig
load_module BugCore
load_module BugUtil
load_module ColorUtil
load_module BugInit
load_module BugPath
load_module BugConfigTracker
load_module shutil
load_module BugTypes
load_module xmllib
..\WARLORDS\ASSETS\PYTHON\SYSTEM\xmllib.py:9: DeprecationWarning: The xmllib module is obsolete. Use xml.sax instead.
14:20:31 DEBUG: BugConfig - registering xml handler BugConfig.RootHandler
14:20:31 DEBUG: BugConfig - registering bug handler BugConfig.BugHandler
14:20:31 DEBUG: BugConfig - registering load handler BugConfig.LoadHandler
14:20:31 DEBUG: BugConfig - registering config handler BugConfig.ConfigHandler
14:20:31 DEBUG: BugConfig - registering arg handler BugConfig.ArgHandler
load_module configobj
load_module __future__
load_module codecs
load_module validate
validate import failed
load_module BugOptionsScreen
load_module BugErrorOptionsTab
load_module BugOptionsTab
load_module BugHelp
load_module Popup
14:20:31 INFO : BugCore - creating uninitialized mod Core
14:20:31 INFO : BugCore - creating uninitialized mod MainInterface
load_module CityUtil
14:20:31 INFO : BugCore - creating uninitialized mod NJAGC
14:20:31 INFO : BugCore - creating uninitialized mod Scores
14:20:31 INFO : BugCore - creating uninitialized mod CityScreen
load_module ReligionUtil
load_module FontUtil
14:20:31 INFO : BugCore - creating uninitialized mod PLE
load_module Scoreboard
load_module DealUtil
load_module PlayerUtil
load_module TradeUtil
load_module DiplomacyUtil
load_module AttitudeUtil
load_module GameUtil
load_module BugUnitPlot
load_module MonkeyTools
load_module PyHelpers
load_module UnitUtil
load_module ReminderEventManager
load_module SdToolKit
load_module BugData
load_module cPickle
load_module autolog
load_module CvModName
14:20:31 INFO : BugCore - creating uninitialized mod Autolog
14:20:31 INFO : BugCore - creating uninitialized mod Reminder
load_module CvAppInterface
load_module GGUtil
load_module GPUtil
load_module ProgressBarUtil
load_module PLE
load_module AStarTools
load_module RawYields
load_module CvTechChooser
load_module TechPrefs
14:20:31 INFO : BugCore - creating uninitialized mod Advisors
load_module CvForeignAdvisor
load_module math
load_module CvExoticForeignAdvisor
load_module IconGrid_BUG
load_module DomPyHelpers
load_module TechTree
load_module FavoriteCivicDetector
load_module CvReligionScreen
load_module CvCorporationScreen
load_module CvCivicsScreen
load_module CvVictoryScreen
load_module TechUtil
load_module CvEspionageAdvisor
load_module CvOptionsScreen
load_module CvReplayScreen
load_module CvHallOfFameScreen
load_module CvDanQuayle
load_module CvGameUtils
load_module CvUnVictoryScreen
load_module CvDawnOfMan
load_module CvTechSplashScreen
load_module CvTopCivs
load_module random
load_module CvInfoScreen
load_module CvIntroMovieScreen
load_module CvVictoryMovieScreen
load_module CvWonderMovieScreen
load_module CvEraMovieScreen
load_module CvSpaceShipScreen
load_module SevoScreenEnums
load_module CvWorldBuilderScreen
load_module CvWorldBuilderDiplomacyScreen
load_module CvDebugTools
load_module CvDebugInfoScreen
load_module CvMapGeneratorUtil
load_module CvGFCScreen
load_module CvPopupInterface
load_module CvScreenUtilsInterface
load_module CvOverlayScreenUtils
load_module CvDotMapOverlayScreen
load_module CvStrategyOverlay
14:20:31 INFO : BugCore - creating uninitialized mod StrategyOverlay
14:20:31 INFO : BugCore - creating uninitialized mod CustDomAdv
14:20:31 INFO : BugCore - creating uninitialized mod TechWindow
init-ing world builder screen
load_module CvWBPopups
load_module CvCameraControls
load_module CvAdvisorUtils
load_module InputUtil
load_module AIAutoPlay
load_module ChangePlayer
load_module Tester
14:20:31 DEBUG: BugUtil - extending BugEventManager.preGameStart instead CvAppInterface
14:20:31 DEBUG: BugEventManager - adding event 'PreGameStart'
14:20:31 DEBUG: BugEventManager - adding event 'BeginActivePlayerTurn'
14:20:31 DEBUG: BugEventManager - adding event 'SwitchHotSeatPlayer'
14:20:31 DEBUG: BugEventManager - adding event 'LanguageChanged'
14:20:31 DEBUG: BugEventManager - adding event 'ResolutionChanged'
14:20:31 DEBUG: BugEventManager - adding event 'PythonReloaded'
14:20:31 DEBUG: BugEventManager - adding event 'unitUpgraded'
14:20:31 DEBUG: BugEventManager - adding event 'unitCaptured'
14:20:31 DEBUG: BugEventManager - adding event 'combatWithdrawal'
14:20:31 DEBUG: BugEventManager - adding event 'combatRetreat'
14:20:31 DEBUG: BugEventManager - adding event 'combatLogCollateral'
14:20:31 DEBUG: BugEventManager - adding event 'combatLogFlanking'
14:20:31 DEBUG: BugEventManager - adding event 'playerRevolution'
14:20:31 DEBUG: BugInit - game not fully initialized
load_module encodings.utf_8
PY:OnInit
 
Hello, I had a game recently crash. I'm not sure if this is the correct information, but I pulled this from text files named ThemeParseLog.txt and PythonErr2.log. I'm using a mod-mod, but only xml stuff. [...]
The PythonErr2.log looks normal. I'm attaching corrected versions of the three thm files mentioned in the ThemeParseLog; to be placed in AdvCiv\Resource. I can't verify that the errors no longer occur because I'm not getting that log file in the first place (don't remember ever seeing it before). It seems to be created only when a (critical) error occurs. I wonder if the listed errors are really the cause of the crash. In this old post, it sounds like the game keeps crashing despite the corrections. In fact, the "propertyId not found" errors have been reported for various mods and without mods, though I think not for unmodded BtS 3.19 (Google results). It's worth a try though. If this doesn't do it, it would be interesting to know if the ThemeParseLog has changed and what is on the screen right before the crash. The next step could be to disable the AdvCiv font size changes (by renaming AdvCiv\Assets\XML\Art\CIV4ArtDefines_Misc.xml) to see if they're really the problem.
 

Attachments

  • Resource.zip
    14.8 KB · Views: 166
Last edited:
Hello again. I replaced the files and the game crashed again. Here is the new ThemeParseLog.txt

[Sep 11, 2018 - 07:26:57] Messages while processing 'Resource/Civ4.thm'

Error : Decl - ('Civ4Theme_Common.thm', Ln:401, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size3_Italic' not found
Error : Decl - ('Civ4Theme_Common.thm', Ln:402, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size3_BoldItalic' not found
Error : Decl - ('Civ4Theme_Common.thm', Ln:408, Col:13) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size1_Bold' not found
Error : Decl - ('Civ4Theme_Window.thm', Ln:3048, Col:9) Assignment source propertyId 'SF_CtrlTheme_Civ4_Control_Font_Size1_Bold' not found
Error : Syntax - ('Civ4Theme_HUD.thm', Ln:887, Col:13) Unexpected '.' in the identifier assignment statement
Error : Syntax - ('Civ4Theme_HUD.thm', Ln:927, Col:13) Unexpected '.' in the identifier assignment statement
 
Hello again. I replaced the files and the game crashed again. Here is the new ThemeParseLog.txt [...]
These line numbers refer to the BtS versions of the thm files (in the previous log it said Mods/AdvCiv/Resource/Civ4.thm, now Resource/Civ4.thm). Hypothesis: When a critical error occurs while displaying the HUD (or just any nonrecoverable error?), before exiting, the game parses all themes, starting with the default theme (AdvCiv), then the BtS theme, Warlords, Vanilla until it finds a theme with an error. These errors are written to ThemeParseLog in order to help diagnose the crash. In this case, I don't think the logged errors are responsible for the crash. You could correct the errors in the original files (BtS, Warlords and Vanilla) based on the post by hagnat that I've linked to before, but permanently changing the original files is not really an acceptable solution, and I expect that the result would be a crash without any ThemeParseLog as was reported here.

If you disable the custom theme (move/rename AdvCiv\ResourceAdvCiv\XML\Art\Civ4ArtDefines_Misc.xml), we might see if the crash is related to that at all. Is it only a particular savegame that crashes? If your modmod is savegame-compatible with AdvCiv, I could run it in the debugger.
 
I've noticed that every now and then a game will hang up when I hit end turn and crash. I think I remember this happening with standard BTS too. Sometimes I can reload, do things different, and it won't persist. This one was very persistent no matter what I did, so I thought I would check with you to see if it was anything with your mod.

I just ran through a complete test game and never hit a bug, so I'm not sure what it is. It is not every game, but it is annoying when it happens. Thanks for your help, I may just have to chalk it up to random chance.

On a different note, I like your addition of the extra happiness with luxuries for civics. I used it in my mod-mod, but wanted to caution that with a very large empire it makes happiness too trivial. A large empire has so much access to luxury resources (compounded with the double bonus of markets) that the happiness limit gets too high.
 
Last edited:
I've noticed that every now and then a game will hang up when I hit end turn and crash. I think I remember this happening with standard BTS too. Sometimes I can reload, do things different, and it won't persist. This one was very persistent no matter what I did, so I thought I would check with you to see if it was anything with your mod.
I've had non-reproducible crashes caused by AI code before. These specific bugs are fixed by now (through the debugger), but there could always be more. If it's graphics- or hardware-related, then it's a bit strange that it only happens during AI turns, though probably not unheard of. Well, perhaps another lead will turn up eventually.
On a different note, I like your addition of the extra happiness with luxuries for civics. I used it in my mod-mod, but wanted to caution that with a very large empire it makes happiness too trivial. A large empire has so much access to luxury resources (compounded with the double bonus of markets) that the happiness limit gets too high.
I figure that, without further balance changes, Hereditary Rule isn't a useful civic for a large empire because it only grants happiness, which these empires don't really need more of. Originally, I had hoped that the luxury ability would sometimes make HR a consideration in the late game, but I don't think it's working. In the first half of the game, the ability seems to do it's job though – to provide 1 or maybe 2 extra happiness regardless of stationed units.

Large empires having so many resources is a problem in any case, and a pretty common problem as winning often involves growing large. DoC and Civ 4 Reimagined (and probably other mods too) have addressed this by having large empires require more resources, but I'd rather avoid having to change the AI code for evaluating resource trades (again). Hopefully, some smaller changes could alleviate the problem, like more resource obsoletions (Dye, Silk) and a limit of +2 happiness or health from resources per building.
 
v0.93 ---- 4 goody huts all gave me scout units
Three wouldn't be too odd, but, even in the very early game, when XP and Warrior aren't possible, and using a healthy Scout to enter (Barbarians and heal impossible), the probability of four Scouts should only be about 1 in 1000. (Edit: 1 in 10000, come to think of it.) Anything special about the settings or game state? If you enter more huts (in a new game and/or through WorldBuilder), do you keep getting Scouts?
 
Last edited:
thanks for the reply - i think all is ok, it was only 3 scouts from huts (i counted my starting scout for my original post), have played some more and had XP and money

cheers
 
thanks for the reply - i think all is ok, it was only 3 scouts from huts (i counted my starting scout for my original post), have played some more and had XP and money
OK, great. Perhaps, for the next version, I'm going to lower the probability of a Scout generating another Scout. Getting several Scouts in a row isn't really fun.
 
Is there an easy way to mod the game so that a declaration of war ends the player's turn? I'm so sick of the cheap naval invasion strategy. I admit, I use it too against the AI. There is no good way to defend coastline, even if you have plenty of ships. The invasion fleet sails right by.
 
Is there an easy way to mod the game so that a declaration of war ends the player's turn? I'm so sick of the cheap naval invasion strategy. I admit, I use it too against the AI. There is no good way to defend coastline, even if you have plenty of ships. The invasion fleet sails right by.
I was considering to do pretty much just that: Have declarations of war take effect only at the end of a turn. This would also solve problems with attacks on Workers. The AI would have to declare war one turn before its units reach the border, which shouldn't be so hard to do. However, wars can also be started through trades, defensive pacts, votes, vassal agreements and random events, and working out those details could be difficult. So I've been thinking about more low-key alternatives, and, so far, the best I've come up with is that units (with some exceptions; e.g. submarines) have all their movement points spent when they cross into enemy territory on the same turn that war is declared (or always?). Combine that with easier access to the Blitz promotion for ships: require Drill I instead of Combat III.

Pretty contrived. :undecide: But I guess a realistic solution would involve zones of control, and that would be a major change. Several other mods also slow naval units down somehow, e.g. Civ 4 Reimagined:
Naval invasions are less annoying than before: Sea units can see further away, depending on their movement speed. This allows you to spot naval invasions without moving your sentry water units back-and-forth every turn. More importantly, naval unit movement in enemy territory is limited to 2 tiles/turn. Cities with a high cultural influence - which now also expands over the ocean - buy themselves a turn of preparation before the fleet reaches the shore.
My idea with the spent movement points should be easy enough to implement, so I think I'll give that a try and upload an experimental version. First I want to release v0.94 though, some time next week hopefully. That version will by the way have a separate XML tag for feature defense that only helps the tile owner, so you'll be able to restore the BtS defense ability through Civ4FeatureInfos.xml. That was much easier to change than I had thought.
 
Yeah, those are all good ideas. I liked ZOC in Civ 2, but I understand it would cause lots of problems with the AI. The movement penalty when entering foreign culture sounds perfect.
 
I'm hoping to upload v0.95 sometime in February. For the time being, I'm attaching a beta version (v0.94e) to this post. I haven't played a test game beyond the the first two eras with this, and only a few games on AI Auto Play.

Draft of the release notes:
Spoiler :
TENTATIVE:
Changes that make naval invasions easier to intercept.

On the turn that war is declared, units that enter enemy borders have all their movement points spent. (Except air units and units that can explore rival territory.) This change is optional through GlobalDefines_advc.xml; I'm leaning toward disabling it by default, but currently it's enabled for evaluation. [advc.162]

Drill I enables the Blitz promotion for ships, but Blitz allows only one extra attack per turn (was previously limited only by the unit's movement points). Both can be reverted through AdvCiv\Assets\XML\Units\Civ4PromotionInfos.xml. I might change the requirement to Drill II in the end. [advc.164]

Somewhat related, but not tentative:
Units that get "bumped" out of foreign territory have all their movement points spent. [advc.163]


DIFFICULTY CHANGES (mostly Emperor and above)

In an effort to reduce the number of units on the map and to improve the balance of the various yields, I've added modifiers to the highest three difficulty settings that increase the production costs, worker turns, food needed for growth and Great Person (GP) thresholds of human players, and reduce the GP thresholds of the AI. In return, the AI production bonuses and worker speed bonuses have been reduced. [advc.251]

The AI bonuses no longer increase with each era because this mechanism is self-reinforcing: Those AI civs that are ahead in tech are the first to benefit from the increased bonuses. Instead, the bonuses now increase based on the game turn number. And, for simplicity, the AI modifiers for expenses and war weariness don't increase progressively anymore; instead, AI research costs decrease over the course of the game. [advc.251]

(All in all, the magnitude of the AI bonuses should be as before. The changes above are only supposed to reduce distortions resulting from the bonuses.)

On Deity, the AI no longer starts with an extra Settler. Due to various changes in AdvCiv, the Deity AI had been so quick to expand that a human player usually didn't stand a chance to found more than three cities on a Standard map with the default player count. I've only played one test game on Deity after these changes (which I lost resoundingly, but surviving the early game wasn't so hard), so I'm not sure how difficult this setting is now and whether Immortal is difficult enough for everyone.

Fewer free Archers: On Immortal and Deity, the number of free Archers that the AI receives at game start has been reduced by 1, and, on Immortal, the number of free Archers placed in Barbarian cities has also been reduced by 1. [advc.250e]


TECH COSTS

To pace technological progress, earlier AdvCiv versions had already increased the tech costs for both human and AI players. v0.95 tweaks these increases, [advc.251] and changes the game year computation on Normal speed so that the years pass a bit faster during Renaissance and a bit more slowly in later eras. Moreover, tech costs are now adjusted to the sea level (+20% for low sea level, -15% for high sea level). However, cost modifiers from map size and sea level don't apply to Ancient tech. [advc.910]

For greater transparency, various research modifiers (those based on the tech era and those compensating for the "No Tech Trading" and "Raging Barbarians" options) are applied to the tech cost instead of the research rate, and the research bonus for knowing a single prerequisite tech (see e.g. this thread) has been replaced by a 20% cost decrease for all techs (through the era modifiers). [advc.910]


MAP SIZES

The default grid dimensions have been reduced a little for all map sizes, mostly by just four columns or rows. (This change can be undone through AdvCiv\Assets\XML\GameInfo\Civ4WorldInfos.xml.) Previous versions had already raised the default player counts, e.g. from 7 to 8 players for Standard-size maps, but, in my estimation, most maps were still a bit too spacious.
For some particular map scripts, a custom grid size has been set. Notably, Pangaea is now a little larger than in BtS (88x52 instead of 84x52). [advc.137]


AI

Worked around a BtS bug that had prevented the AI from contacting human players with peace offers. The AI-initiated offers can be more generous than the ones resulting from "What is the price for peace/ Let's stop this fighting." And I've tweaked the timing (ContactRand, ContactDelay). [advc.134a]

Fixed two serious problems with the (BBAI/AdvCiv) naval AI:
* Ships that were supposed to transport Settlers had often been filled up with Workers and, as a result, never set sail. [advc.040]
* The AI had sometimes trained far too many Galleys for exploration or colonization because of an inconsistency between the AI code for choosing city production and AI code for assigning unit roles (UnitAIType). [advc.017b]

AI city placement on small islands has been tweaked. [advc.031]


UI (lots of changes, intended to bring AdvCiv closer to being on par with BULL/BUFFY)

The tile hover text that lists the units in the tile now uses the available space more efficiently, sorts the units more sensibly and shows the total number of military land units and ships. All this can be disabled on the "Map" tab of the BUG menu. [advc.061]

If the Ctrl key is held down while issuing a command to a Worker, the job is stopped one turn before completion. Also, if Ctrl is held down while hovering over a tile, the current progress on all unfinished Worker jobs is shown. [advc.011]
(Rationale: See this open K-Mod issue.)
Unfinished Worker jobs still decay, but the decay only starts once a tile has been unattended by Workers for 8 consecutive turns (in previous versions of AdvCiv, the time limit was 5 turns). [advc.011]

Units on Sentry (or healing outside a city) are not woken up by enemy units that start their move already within visibility range. [advc.004l]
(This should make separate Sentry missions like "Land Sentry" in BULL unnecessary.)

Replaced the BUG option "Gold Rate Warning" ("General" tab), which shows a negative gold rate in yellow instead of red, with dropdown menus for customizing the gold rate text colors. [advc.070]

New option on the "Alerts" tab for showing an on-screen message upon meeting a rival. That message will also indicate the location of the encounter on the map. By default, the message is shown, and rivals still introduce themselves through a diplo popup. Either the message or the popup can be disabled. [advc.071]

Merged from BULL and enabled by default: Info about production overflow is shown in the tooltip of the hurry-production button. [advc.064]

Civilopedia categories for keyboard shortcuts and leader traits restored from the original BUG code (I think K-Mod had disabled these). Shortcut info updated. [advc.004y]

AdvCiv options moved from XML (GlobalDefines) to the BUG menu:
General tab: "Open Event Log if more than x messages" [advc.106b]
Map tab: "Show Resources at Game Start" [advc.004m]
Score tab: "Color-Code Teams" [advc.155]
Unit Icons tab: "Promotion Glow" [advc.002e]
Time tab: "Year Notation" - AD (Anno Domini) before or after the year, or (new) CE/BCE. [advc.002k]

The "Show Era" and "Era Color" options of the "Just Another Game Clock" mod can now be enabled without activating the clock. [advc.067]

Tidied up the BUG menu by rearranging and renaming some options, rewriting most of the help texts (some of which were nearly incomprehensible to me) in English and German, changing default settings and removing a few options (list of removed options and changed defaults here, at the end of the commit message). ini files with BUG settings from v0.94 and earlier should continue to work; if you want to use the AdvCiv default settings instead, you'd have to clear My Games\Beyond The Sword\AdvCiv\Settings.


The GitHub commit history since early December documents all changes in this update, including some refactoring of DLL code (removed DLLExports, Cppcheck) that isn't worth detailing here because it shouldn't affect the behavior of the mod.

Credits: Small changes adopted from code by DarkLunaPhantom (Kek-Mod), Leoreth (Dawn of Civilization), devolution (We The People), alberts2 (K-Mod-Extended).
If needed:
CvGameCoreDLL.dll (48 civs)
edit: link to manual removed
 

Attachments

  • AdvCiv_0.94e.zip
    10.1 MB · Views: 219
Last edited:
@f1rpo

It's about time we resume our discussion concerning combat systems ;)

Here are some additional ( and hopefully novel) ideas that I'd like us to consider:

Adaptive Limited Combat Rounds

The purpose is to allow skirmisher \ harassment \ gang-up tactics in which several weaker units collaborate to take down a much stronger unit. The simplest implementation of this is to think of this as an initiative mechanics in which the attacker, if weaker than the defender, will choose the terms of the engagement and thus engage in fewer than normal combat rounds. After all, an attacker is unlikely to want to commit to the full number of combat rounds if it is likely to loose a "full fight", thus I propose that the weaker the attacker is relative to the defender, the fewer combat rounds will take place.

ZOC-xUPT

Enforces a cap on the number of units that can move into an enemy unit's ZOC. This is a relaxed variant of the more general xUPT scheme that avoids most of the downsides.The problem with xUPT is that it is enforced everywhere, even when not needed. We really only want this rule to apply when we're actually staring into the face of the enemy, thus avoiding the civ5\6 carpet of doom \ logistical issues.
Think of it as an inherent limit in the number of units that can face an opposing stack. It is essentially a limit on the attacker's ability to position and maneuver their troops versus an opponent. It should go well with the limited defender set.

Also, I've been experimenting with the Civ4: Reimagined collateral damage scheme and I have to say that I like it quite a bit. It neatly solves the issues of not having an early siege unit to do collateral damage when facing\countering an early rush. The range mechanic \ low damage limit also ensures that weaker units like archers do not commit to too many rounds versus much stronger units and also gives them odds on them (only when attacking ofc)
 
Last edited:
I´ve found about this mod today, what would be the recomended difficulty for a vanilla emperor difficulty player?

Also i find really interesting the topic of combat reworking. I do think that combat , while adequate, it is one of the aspects that could be improved by a lot for the base game.I would think that currently the main problem is how one sided it can be: there is a world apart from getting your unit killed than to get it gravely injured. To try to make things balanced, defensive units get an advantage by selecting their best unit for defense, otherwise attack will always be the best option. However once you factor collateral damage, a mechanic made to nerf SoD,we get this weird state were suicidal catapults are normal and , more importantly, were the vast amount of casualties tend to be on one side (if playing SP, the one of the player).

Before doing my best to try t oexplain my solution, i want to speak about three others that have been use: Ranged combat, XUPT, and Limited combat rounds
-Ranged problems imho doesn't really solve the problems with the combat system (and can even make ranged units have almost no losses on combat), while it breaks the scale of the game, having catapults firing hundreds of kilometers. Also the ai tends to don't know how to aim , giving the player an edge
- As for XUPT, the main problem comes once again from the AI, in that it often doesn't use it as well as the player. Other problems are Traffic Jams and that once again, it hardly makes sense from an inmersion point. I don't like the idea of @devolution mainly because it seems hard to integrate and would probably hurt the ai more than the player
-Limited combat rounds is something that can either work really well, or very bad. In situations where the forces are more or less even, it works really well, making the results even better than those of unlimited rounds. However for cases where there is a strong force superiority it makes combat even more one sided. As again, due to the unbalance between surviving with one hp and dying is massive, it makes a lot of units survive attacking, which makes production disparity even more important

So my solution would go on an opposite direction to what it has been proposed on this thread. Instead of making combat more complex with more rules, it needs to focus on making it as depth as possible without affecting AI. It also needs to be fair on losses for both sides, taking into account that a unit with one hp should take almost same amount of production as to replace a dead unit. Finally I don't think that puntual randomness is bad for the game, and losing a 99% figth, while frustrating, shouldn't be removed. After all most of the times you will win those figths, and the other side of the coin is when you get that result (winning a 5% chance figth with the last defender and holding the city one more time feels truly epic). So after this intro , i moved to my suggestion(s): SoD as armies and production for replacements.

- The first idea is my answer to the problems mention above. SoD, while hated by some players, are actually one of the most AI-friendly design choices. So instead of replacing it, why not make it better? Instead of a stack being form of individual units attacking individually, combat should make each stack face each other. When combat is initiated, units will attack in a semi-random manner thougth weigths (so for example injured units would try to not engage, medics will have lower priority etc) while defenders will also be mostly randomized. I really liked the suggestion to make defenders choose units randonmly and then choosing the best counter, maybe the same could be use so that each side picks n combatants and then it follow conventional unit picking rules. Also limited combat rounds should be added. On this point, i would consider using the model of C2C in which each side attacks and defends each round. Regardless, limited combat rounds would leave each side damaged while reducing the amounts of casualties. Finally there should be a max amount of combats that can happen at a turn between the two sides. This should be done to make combat more even and make limietd combat rounds work better. This combat limiter ( let's call it width like in pdx games ), while not making SoD worse, it would nerf then significally and make force distribution more important. Also width should probably be a combination of a fixed and a variable number ( ex: Biggest amount between : 20 or 4/3 the defending force side) to make min maxing less obvious (not that is a bad thing, just that the AI doesn't do it). In case of multiple engagments from different directions, I could think of two solutions: Either that if attacking from different positions that there is an extra amount of width added if expended or that if attacking a force that has expend all the width, there are far less combat rounds.

-If this idea where to be implemented it should be accompany on with some changes to combat. Collateral damage should be either removed or redone in a different way, defensive terrain modifiers should count less, promotions in general should be nerfed ( something i would do anyways as I think that they are a bit tad high) and some other changes ( naval warfare could use the system as well, but what about air warfare?). Also if on the mood it could be greatly expanded: For example each army could be led by a general that is the one earning choosable promotions while the troops earn promotions based where they figth, each side could use tactics that affect the result, maybe get a nice pop up with info about the battle casualties , making blocks of units get sticked into combat so that if attacked and survived, you can either add reinfocements and keep figthing or try to widthdraw and suffer casualties etc...

The second suggestion would be to use hammers to reinforce units. In the VIP mod gold is used for repalcements, so why not use hammers instead? The game already tracks the total amount of hammers your economy produce. This could be use as a sort of national production pool from where to extract resources for unit replacements. The hammers used for unit reinforcement will then be sustracted from the economy in form of -% productions modifiers. I feel that an example will make things clearer: Suppose that we have 3 rifleman units (110 hammer cost). Two of then are injured , one at 70/100 hp and the other at 20/100 Hp, that tranformed into hammer cost would be 77/110 H and 22/110 H respectively. The economy produces 50 H and the cost for replacing each hammer lost is 1/2 their cost. If each unit heals 20 HP per turn due to then being in a city, the economy would need 44 H to replace the losses( 20% of 110= 22hammers). This hammer are then sustracted from the economy in the form of a % that is apply to each city ( so (44/50)*100=88%). To allow the calculation, the modifier should end at the start of the next turn, then production is calculated, then healing is done. IF the third rifleman is hurt but there are no hammers left to heal it will need to wait for the others units to heal ( so a queue it's created in the order of healing needs). Of course the system can be make much more complexs, with a base free repair production , population being need to miantain units, different max healing rates depending on where the unit is etc.. It wil also carry the significant benefit of reducing unit spam as well as to make even offensive losses painful. I would consider this the most important suggestion, but to implement it properly some rebalance of the economy would be needed
 
Top Bottom