Great! Right now, it's amost impossbile to capture a unit after the medival era. I won 200+ battles in one turn against a city, had Slavery Worldview, run Banditry... But only got 2 Slaves!
I'd say that's just a side effect of the capture mechanism not being fully developed yet. We need to review units and promotions for modifiers on that mechanism and there's a couple of promotion lines that need developed for the structure. Additionally, Civics can play a role and aren't fully evaluated for that role yet. So there's less chance to capture right now than there ultimately will be.
Could you give an example please?
Code:
<UnitCombatRepelAgainstModifiers>
<UnitCombatRepelAgainstModifier>
<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
<iUnitCombatDefenseAgainstModifier>20</iUnitCombatDefenseAgainstModifier>
</UnitCombatRepelAgainstModifier>
<UnitCombatRepelAgainstModifier>
<UnitCombatType>UNITCOMBAT_ARCHERY</UnitCombatType>
<iUnitCombatDefenseAgainstModifier>20</iUnitCombatDefenseAgainstModifier>
</UnitCombatRepelAgainstModifier>
</UnitCombatRepelAgainstModifiers>
For the order:
*eyes glaze over* Wait what? Debug what? *hands it over* You fix, I am confused.
Let me go over this again because this is VERY important for ALL XML modders to know.
We used to get errors when we'd run the game and the xml was screwed up somewhere. This NO LONGER HAPPENS by default. AIAndy changed the way the game loads data.
However, we still recognize a need to be able to easily find these errors.
So we now make and include in the mod, in the Assets file, two dlls, not just one.
Now, if a dll file is not named absolutely what it should be:
CvGameCoreDLL.dll it will not be the core coding system that will run for the game. If there is no dll file in the assets folder, there's no programming for the game.
So all we must do to disable a dll file without actually harming this core code file in any way is to simply rename it so that the game doesn't find it and run it. Of course there can only ever be ONE dll file in the Assets folder.
So to TEST your XML you MUST load the game under the debug dll rather than the standard one that normally runs.
To do this, we rename the dll. To rename a file, right click on that file name and select 'rename' from the list that pops up. This is standard Windows behavior.
I rename the normal dll, the one in the assets folder named
CvGameCoreDLL.dll, to:
CvGameCoreDLL.dll.core
Doing this disables that dll since its now not exactly the same name as the core civ execution file is looking for when it goes to run the game. Once renamed, you don't have any game code basically.
Now we take the OTHER dll that's located in the Assets folder and make that the dll the game will run with. This other dll is by default named
CvGameCoreDLL.dll.debug. It doesn't do anything when it's named this. It's only named specifically this way (ending in .debug) so y'all will know what its for.
To activate that dll so that the game will find and use THAT set of code, simply rename the debug dll to what the game expects to find:
CvGameCoreDLL.dll
This dll (now missing the simple added extension of .debug) is now found as the valid dll when the game goes to run. And it works a little differently.
THIS dll will send you any error reports you may be used to seeing if your xml is flawed. This is because it loads the game under the original set of rules that the old dlls would load by. Without performing this check, you will have potentially a lot of defunct xml code and not even know it, assuming that simply loading the game would've told you if you had a problem as it always used to.
THIS dll is also a LOT slower as it enables a ton of diagnostic checks. That part is where the coders have some insight you don't need to have. You're not running it for that reason anyhow. You're running it so you can get the usual error messages if your xml is flawed so you can find and fix those flaws without assuming everything's been done without any issues.
Therefore, since the debug dll runs VERY slowly, you don't want to commit that dll as the standard dll to be in use - ever. So after you've run your check and resolved any issues in the xml, you must rename it back to
CvGameCoreDLL.dll.debug.
Then return the core dll to its standard service for the mod by renaming the core dll back to
CvGameCoreDLL.dll (without the '
.core' at the end that you put there to disable it.)
Does this make sense why this would be SO very important for anyone doing any XML programming in this mod to understand? I'll be happy to run a check here but making this a standard 'final check' before committing any new XML will avoid a lot of problems!
NOTE: When renaming sometimes it gives a warning message about how this might cause the dll to become instable yada yada. Ignore that and plow through it. We know what we're doing in the renaming of this thing.