1. We have added a Gift Upgrades feature that allows you to gift an account upgrade to another member, just in time for the holiday season. You can see the gift option when going to the Account Upgrades screen, or on any user profile screen.
    Dismiss Notice

Advanced Civ

Discussion in 'Civ4 - Modpacks' started by f1rpo, Apr 16, 2017.

  1. f1rpo

    f1rpo plastics

    May 22, 2014
    That's as in BtS. Everlasting. Could be interesting to let it fade over time. I think it's important that the warmongers don't usually end up fighting inconclusive wars amongst each other while the other leaders cooperate and pull ahead, but perhaps it's enough to nudge inter-AI relationships in that direction for the first half of the game, and during the second half the modifiers could gradually decrease. Such a change would be in line with the decay of the memory-based modifiers. Hm. It seems that "lasting" could be understood to mean permanent, so one might have to come up with a different explanation text. Civ 6 has a modifier that says just "First impressions of you" and decays.

    Defensive pacts and map trade also work as in BtS. Same as open borders and tech trading. Otherwise you wouldn't have anyone to trade with if you're the first to discover Paper etc.
    If it's mainly about that city site, a screenshot in Debug mode would also help. Generally, the best tiles are more decisive than the worst. (The 7th best tile won't matter until the city grows to size 7 – to state the obvious.) That's not to say, of course, that you can't be right about this particular city of Gandhi.
    Surely, :c5faith:Gandhi:c5faith: isn't supposed to wipe anyone out if he's winning anyway(?).
    None of that should be stored in savegames. Are those changes of yours on GitHub? I don't think I've seen them. It could be that there's some more fundamental issue with AI naval wars that I'll have to address in the DLL. Still planning to look into it.
    It's Epic speed, but that doesn't make it much better. Early 19th century ...
  2. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    6 hours of multiplayer game.

    cool, i would like a decay of that sort, more realistic or, vice versa, some new good impression after maybe certain actions?

    yes, realized as i went.

    ill upload you all the saves i took during the game , i marked them with the situation at hand so you can take a look.

    i guess that is aligned with his traits,
    if he would attack it would be end game for me...im closer to him.
    i just say 10 cargo ships moving near me ....

    ok so only around trun 420 things, became a bit more alive...i counted 3 war declarations ai to ai,
    usually point leader to lower.
    not sure of the out come yet, some wars still going.
    im pretty sure naval movement of ai is somewhat lacking, i remember seeing in re imagined civ mod 1.2 i think, very cool ai landing units from afar or near, small attacks big attacks,
    challenging, on archipelago of course. i would have liked to see that, the ai, do send out attack parties sometimes for some quick annoying war.
    the long peace time is somewhat boring , the challange comes from my or my friends war declarations.
    its still really hard to conquer, my friend stated some, off the odds losses. very hard to attack - are you sure there isnt some modifier that changes stuff?
    not that i dont like that challenge, but really hard to push, need tons of troops and siege.

    no , we are using my 103 version, might be my master on git - i can link you the file anyway (merged with the hotfix branch).

    like i said, i would have liked to see action before, but i guess thats due to the bad start that you described to me before along with the basic 096 version.

    my main enjoyment is seeing the ai fight each other and the human players, i hope ill see more of it. i did some tweaks on (xml) my next 104, but not that much.

    also -
    maybe give some more negative bonus to health and happiness, these were never an issue in our game.
    maybe doto related though.

    multiplayer double pop up - its gone but once in a million turns, a re pop up and close comes up after some choice - but its rare, so no worries.

    my friend also told me he had a catapult that had movement but coudlnt attack, weird, i made a save.

    siege and ranged,
    im thinking of adding a land unit that can range attack,
    with air range (similar to that modern unit, modile artillery maybe)
    the one down side is that it cant miss, always hit.
    i used it once in old doto, better imo than regular siege units.

    i hope im helping out with this report and coming saves :)

    good night,
    im tired, those Japanese are one hard cookie.
  3. f1rpo

    f1rpo plastics

    May 22, 2014
    Pretty sure. Let's consult the combat logs in your savegames. (I can see that, while playing a game with simultaneous turns, there is no time for such investigations.)
    I'd feel the same way.
    Once the AI has Galleons though, at least when using more aggressive UWAI weights than normal, there should be some warfare. Gandhi (winning peacefully) and Tokugawa and Genghis Khan (on the ropes) are excused. That still leaves 3 or 4 AI civs as far as I remember.
    Could be. Or too many city sites per player.
    Damage limit reached perhaps.
    If you don't need the range to be greater than 1, then a combination of a strict damage limit and first strikes could have a similar effect (with, in theory, full AI/UI support). I mean, if the goal is mainly to avoid suicide attacks.
  4. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    here we are,
    the saves - i added in some a situation key word description:

    and the version we used:

    well, we started to see more action there, but not that much i think.

    regarding the UWAI,
    after the game, i went through all of them and boosted up some,
    what do you think ?

    Spoiler UWAI :









    for 104,
    i added -1 to health and happiness in gunpowder and rifling maybe.

    ah yeah might be.

    interesting -
    what will the first strike will change? what is it role be to imitate?
    i will do some range 1 some range 2.
    the ai is using this feature well, its like the air range.
    the one thing that had a drawback is that this attack type, with Damage limit or not, is always successful.
    edit: oh and what would you recommend should be the unit_ai be?

    maybe you can add/or direct me to some small code for this air range attack to check for -
    if domain land , then apply some random accuracy thing, or attack it to the bombard mechanism , maybe allow promotion for it and such.
    just a thought.

    the goal is indeed to prevent sucide attacks of siege,
    cause, feels silly for me, to use the siege units to lower city defs and then, attack the city, to gain the collateral damage, and die off :)
    Last edited: Oct 4, 2019
  5. f1rpo

    f1rpo plastics

    May 22, 2014
    For more aggressiveness overall, I expect that you'd have to change one or several of the bread-and-butter weights: GREED_FOR_ASSETS, EFFORT, AFFECTION.
    It would be another means of reducing the damage taken by the Siege unit. Could also make Mounted units a bit better at defending against Siege units as some Mounted units ignore first strikes. Well, the effect is probably small. A low damage limit would be much more important I think, and maybe some attack bonus and a rather low base strength to avoid creating a strong and lethal defender. Unfortunately, there is no UnitCombatAttackMod XML tag; just UnitClassAttackMod, TerrainAttacks, FeatureAttacks.
    That's true; with a damage limit, only the damage to the attacker is randomized (unless the defender kills it before reaching the damage limit, but that's what we want to avoid).
    For ranged strike? I've no experience with that ability. I remember that vincentz had written some ranged strike AI code for VIP. I'm not too interested in getting my hands dirty with that because, for my own purposes, attacking adjacent tiles, maybe along with changes to Guided Missile, should be enough. Of course, if you have a specific question that I happen to know the answer to, I'm happy to help.
  6. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005

    There is, also for defense.
    I had it once in my Doto. LOPEZ created such a mod.
    Do you think that can help?
    What should be in these?
    Ilmerge it in.

    Greed, effort, affection you say?
    Humm, raise them all?

    Yup, i got Vincentz mod,
    Maybe ill check it out.

    No worries, i enjoy consulting with you and raise ideas.

    I made changes to all siege units now,
    You can see tge git if you wish.
    Added ranged plus limits plus no city capture to siege.
    One thing i wonder is what combat value olays part when air ranged atrack is done on a land unit.

    Gnite :)
  7. f1rpo

    f1rpo plastics

    May 22, 2014
    I didn't know that range strikes are piggybacked on the air strike stats; in the DLL they're mostly separate abilities. The damage is computed in CvUnit::rangeCombatDamage:
    int iOurStrength = airCurrCombatStr(pDefender);
    int iTheirStrength = pDefender->maxCombatStr(pPlot, this);
    I.e. air combat strength is used for the attacker and regular combat strength for the defender. I've given it a quick try. The damage announcement is incorrect (said "0 damage" in my test); apart from that, it seems to work. Would be interesting for devolution (should he return); he said he wanted range-2 attacks.
    The modified code could be hard to find. :( I remember trying to assist him with the AI code a bit but didn't really know what I was doing either.
    With the 25% damage limits that you have now (not to mention the range strike ability), I think there's no need for an attack modifier. My tentative plan for a Cannon unit at Chemistry:
    100 production; req. Iron; str. 6; Siege unit; 2 first strikes; damage limit 30%;
    coll. damage to 1 [2?] target, limit 30%; +50% attack vs. Gunpowder, Melee and Archery;
    +25% city defense [and can receive def. bonuses]; bombard rate 16; upgr. to Artillery, Machine Gun
    It's not even a plan really, just something I'd like to test.
    Greed is a pro-war aspect, effort and affection are anti-war. So higher greed, lower effort and affection.
  8. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    Ahh oppsi,
    I raised all three... :)
    Ill re change.

    where? i guess its a bug on the textmanager?

    well - depends if his source was directly to civ4 core files or some other ai mod, comparing can help, but, i guess from what you say, he didnt add comments...? i havnt looked at his code yet.

    Thats what i thought, cause they probably planned it mostly for air to land.

    Can you add a line for me here,
    Before the our strength,
    That will check, if domain land, then use combat strength. Should be easy no?

    I can use the combatdefensive to boost, mounted units, the defense vs siege.

    Vip- im interested on the new tag that forcess enemy siege, with ranged, to defend, thats nice,, ill try to extract it.

    Also another idea:
    maybe, have this our strength, to pull a random number, from say, an array of [0,1,1,1,1],
    That will multiply the our strength value.
    So theres a 1/5 chances that combat strength, will be 0, thus, no damage.
    This can give an accuracy thing, not always a hit.

    on a different note,
    while i was going to work, i thought of a possible existing bug:
    in all the turns i played so far,
    i never saw a "forest grew near xxx" or jungle.
    despite having a growth factor to these.
    possible bug? or possible im talking nonsense...?
    Last edited: Oct 6, 2019
  9. f1rpo

    f1rpo plastics

    May 22, 2014
    Sure, but I don't see why you want that. Isn't it nice that the combat strength and range strike strength can be set independently? It seems that you can just set air combat strength to the same value as combat strength in XML if you want them to be the same.
    I've added a coin flip function (named "bernoulliSuccess" after the Bernoulli trial in probability theory) in the global namespace. You can just do
    if(bernoulliSuccess(0.2)) { return ; }
    at the start of CvUnit::rangeStrike. Ideally, you'd show a message before returning. And perhaps do the same for CvUnit::airStrike for consistency. Randomized damage might be less frustrating and not necessarily unrealistic if one assumes that a range strike represents prolonged shelling by a whole battery of guns. Would have to use GC.getGame().getSorenRandNum(...) for that, somewhere in CvUnit::rangeCombatDamage.
    Usually, that only happens in the early game. It's working for me. I've just set a debugger breakpoint after the line with GC.getGame().getSorenRandNum(iOdds, "Feature Growth") in CvPlot.cpp, loaded some old savegame on turn 30, ended the turn and reached the breakpoint once, i.e. one feature was created (on an unrevealed tile).
    Would that work when Mounted units can't receive defensive bonuses? At least it would be confusing. That's in general a bit of a problem with my idea of making Mounted units more effective defenders against Siege units (even if it's disguised through first strike immunity and combat class attack bonuses): Mounted units are normally supposed to be bad at defending. The attack bonuses for my proposed Cannon unit are also intended to make the unit weaker when defending (except against other siege units). It would be strange if Siege units were effective at killing when attacked while having a low damage limit when attacking.
    CvUnit::rangeStrike. The messages seem to be generated in just the same way as those in CvUnit::airStrike (which is working correctly). Perhaps there was some problem with my test. If it's working correctly for you, then I wouldn't worry.
    I found the code that I had worked on (apparently I only contributed a line or two) on my harddisk. These two tags were used: "Vincentz Rangeattack" "Vincentz Rangestrike"
    And possibly some unmarked changes too (CvUnitAI::AI_rangeAttack). Or perhaps, in his latest code, it's all properly commented.
  10. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    aye, i gave it more thought, and i realized, why, its a nice touch to have it separated.

    huh nice,
    thats a cool elegant way.
    ok so where have you defined this one :bernoulliSuccess?
    and this one - GC.getGame().getSorenRandNum(...) gets us a random number?

    ok lovely, thanks. i once used feature growth , appear and disappear as a means for some "natural disaster" like storms.

    well, give out mounted units bonus vs siege, while defending.IMO, i think siege units should not be string while defending, vs most units, as realistic.
    i can play with the various tags,
    which it seems are unused in bts (?) target defense , combat defend and another one. combined with the tags ill merge in from lopez - combat att and def.
    i can set a nice rock paper scissors of vs siege units
    siege units will have a low combat value, but higher air combat.
    theyle be getting good bonus vs types of units, melee, gunpowder other siege, and such. vs mounted and others low attack value.
    they should be only getting defense vs ranged units such as archers and gunpowder footman's.
    perhaps, i can give the land units, an air combat value actually,
    use the same "bird" , and say, knight unit have combat 10, and air combat , 14, while a Trebuchet have combat 6 , but aircombat of 12.
    making the air to air combat be the factor of the combat, which in this case will make the knight more resilient to ranged attacks masked as airstrike.
    maybe a check should be added -
    (im probabaly way off in the syntax, so im improvising):

    int iOurStrength = airCurrCombatStr(pDefender);
    int iTheirStrength
    if (pDefender->maxairCurrCombatStr(pPlot, this) > 0 ) {
    iTheirStrength = pDefender->maxairCurrCombatStr(pPlot, this)
    else {
    iTheirStrength = pDefender->maxCombatStr(pPlot, this)

    maybe this could be a neat way to control the cat and mouse play of this ranged attacks.
    what do you think?

    i get the since that combat mechanics interests you :)

    ill give him a ping, i just saw he had a post there so the man is still here :)
  11. Leoreth

    Leoreth 心の怪盗団 Moderator

    Aug 23, 2009
    Sorry for the late reply. You're right, the current implementation just takes the minimum of the city defense reduced collateral damage and the inherent unit collateral limit. I admit that I designed this mostly with late game interactions in mind, where (culture based) city defenses are high and collateral damage limits are low. This leaves the rule with a low impact on the early game where it is probably even more historically intuitive that seeking shelter in fortified cities provides protection against collateral damage.

    You're right that the collateral damage rules are not very transparent to the player (if I'm not mistaken, the vanilla civilopedia does not even document collateral damage limits). Part of my reasoning for implementing the rule as it is was that "if your city is at 70% no unit can be damaged below 70%" seemed like a straightforward rule. A subtractive rule may scale better across ages, but make this even more complicated, and may be too powerful overall.

    When reading this code snippet I also realised that Forts should probably be covered by this rule as well.

    Still, I would really like to emphasise the importance of city battles because there is little incentive for large stacks to clash out on the open map (unless an inferior army is caught by a larger force). If I have superior units, I want to push for a city attack. I have inferior units, I should be able to withdraw to a city to improve my chances.
  12. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    continued my mp game,

    things have picked up,
    ghandi attacked me with a bunch of ships along with japan.
    but, after initial attack from ghandi,
    he just continued to bombard with ships and refused me most of the time.
    i wonder how committed is the ai to a war after it started, it seems that for now, around 50-100 turns after war was declared, i had not seen any new invasions . just the one.
    ghandi leads the score board by far, and he could have sent another wave and wipe me out.

    i saw an interesting observation,
    japan took my city, held it,
    i came back after a while with stack, much stronger, japan left the city with the few units he had there. that was nice . seems he saved his troops after i destroyed most of the defenders in the city.
  13. f1rpo

    f1rpo plastics

    May 22, 2014
    Well, I'm not as responsive as I'd like to be myself. Will have to get back to you on this ... tomorrow probably.
    CvGameCoreUtils. By the way, the Visual Studio context menu can take you to the declaration and definition once you've typed in a function call.
    Yes. That uses the synchronized RNG – normally the one to use for non-UI purposes. First parameter (iNum) is the upper bound. The random number is in the half-open interval [0, iNum), i.e. >= 0 and < iNum. The second param is a message for the MPLog to help with OOS debugging; NULL can be used. Just for future reference – I see that you've already merged randomization code from VIP.
    That looks close enough to being correct. :) airCurrCombatStr doesn't take a plot as parameter though, so no defensive modifiers will apply; nor promotions for that matter. The air combat strength of a land unit probably also isn't shown anywhere on the UI.

    Cuirassier defending well against Cannon would, to me, mean that the Cuirassier charges the Cannon in response to being attacked. I don't think taking less damage from a range strike gets that picture across. It'll look like the Cuirassier isn't damaged as much because of its armor or because it dodges the rounds.
    Many ways to skin that cat. I'll have to leave it to you (or others) to experiment with this as it's not on my agenda currently. In the end, it would imo be good to settle on a few abilities to keep the complexity in check.
    That's not very gandhy of him to tread on a weaker civ like that. I doubt that he did it to help Japan (no one usually likes Tokugawa). Well, I guess with the war weight changes in your mod, it's OK.
    The AI needs to gather a sufficient number of land units (iTargetInvasionSize in CvUnitAI::AI_assaultSeaMove) in a coastal city and, in the same city, enough cargo ships to carry those land units. It sounds like most of Gandhi's ships survived the initial invasion. So either he's struggling to get all the units and ships in one place (bad tactics), or it's taking him a long time to rebuild his army (questionable strategy). The tactical side shouldn't be that difficult in this case; I remember that most of Gandhi's cities are on one continent. There could be a bit of a problem if units that survived the war were teleported to a remote island. Slow military build-up could be the result of Gandhi's low BuildUnitProb (the lowest in the game) and, as you say, the war not being prioritized highly. There are, essentially, two possible war plan types, "total" and "limited", and, for each landmass with AI cities, two possible Area AI types for an offensive naval war: "assault" and "assault-massing". The latter results in more build-up.
    That's probably the work of the city evacuation AI code.
  14. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    me bugging you allot add to it..:)

    yup i learnt.

    i did the merge and all , before i got to try what i wrote here earlier.

    humm, funny, better tell Vincetntz...
    ill check the regular air-combat and try to see which one takes in all the modifiers - that will be good since i can get air related promotion to the siege units.

    i tend to agree, for now, the xml implementation from VIP , seems sufficient.

    the air range appears though, probably some change in the textmanager.
    for now im gonna keep air==combat.
    as for my mp,

    so yeah, japan and me fought quite allot, but , i liked that i got attacked like this, it was fun and stressful. (i came out victor after loosing two cities, me and my friend now pressing two front attacks on japan...so that will be the last of him...)

    ghandi, well yes, i guess theres allot that depends on ghandi peaceful settings.
    just to note, that he came in with 16 troops, took my capital. i reconquered it. killed off the last of him.
    he has cities on an island near me and his continent solo.
    he has a few ships that keep on bombarding me. none of his units are stuck or anything.
    i would expect another invasion, soon maybe, but unclear, he is Superior to me .

    maybe some of the memory decay should be faster, i dunno, like i wrote before, the first impression that last the whole game is silly i think. is it from the leaderxml?
    i think most is adjustable from leader config.

    very cool code, me like.
    Last edited: Oct 9, 2019
  15. f1rpo

    f1rpo plastics

    May 22, 2014
    Reminds me of Gort's experiments with the Civ 6 AI:
    Jokes aside – sounds like Gandhi doesn't have enough units then. I guess you can't get a ship through to see what he has in his major coastal cities.

    Speaking of turn numbers: As the tech progression in the mod is a bit slower than in BtS (more so on the higher difficulty levels) and with multiplayer adding some waiting time, it could make sense to go down to Normal speed if you're used to playing on Epic in singleplayer. Not to pin the lack of action on the game speed, but slower speed presumably amplifies the problem.
    For what it's worth, the mod slightly adjusts memory decay to game speed (Golden Age factor, i.e. 1.25 slower on Epic speed).
    You'd have to do it for every leader there. In the DLL, the decay roll is
    getSorenRandNum(iDecayRand, "Memory Decay" ...
    in CvPlayerAI::AI_doCounter. The first impression modifiers don't use the MemoryAttitude/ MemoryDecay system. As you're probably aware, the explanation text "A first impression ..." isn't anything offical. I suppose DaveMcW came up with it for the Show Hidden Attitude mod. In the original code, there are just the names from LeaderHead XML – peace weight, warmonger respect, base attitude (the first two apply only to relations between AI civs).
  16. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    cant, he got destroyers, and i got frigates.............and he wont talk to me.
    ill ask my friend to do so, he aint on bad terms with the nuke guy.
    (but anyhow, we are on turn 530, ill check the world builder after game end or sooner, after we pass a bit this turn status so i wont cheat game.

    i like epic game,
    i dont mind the long progression, my old doto had triple tech length i think, or 2.5.
    i changed cause i like the feel that techs, come by after a while, not every few turns, less meaning full i feel.
    but, in the future, i might add some buildings and stuff to existing techs, cause sometimes , theres no much to build plus, ai leaves us with no wonders, so ill add some.
    all that will need more balance.
    on that note, you once mentioned electricity mechanism, i might do something with the current.
    all of these plans...are far...to much to do.

    oh, interesting.

    did that, once :(

    cool, ill have a look.

    updated the ranged. 3 days of civ (we are at holiday season, thats why i got more time to mod and range bombard you with questions and posts ...:)
    basically i guess now its 95% done, need to test final code and some last input from ya on what ive written.
  17. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    hey f1rpo,

    iv been working my *** off on the ranged...

    i think theres a bug in this function in plot.cpp:

    CvUnit* CvPlot::getBestDefender.

    after a ranged attack is carried, it does not get the best defender, ig gets the same one.
    how to test:

    use my last sdk folder - 238 from my 104 git.
    start game
    via world builder - add 10+ catapults
    add 4 warriros barbarians

    attack range with al catapults -
    the combat limit of the catapult of 50% will apply for the whole stack once one warrior has reach the 50% mark.

    i tested both in vip and more, im pretty sure its the this function, since in vip it is vanilla civ,

    BINGO -
    now i know im right -
    when left from behind is on,
    there is a bug for air range strike,
    does not get the best defender.....

    well to be exact:
    without this , it works well.
    seems left from behind, does not consider air combat limit or air units .
    im trying to find a fix in int CvUnit::LFBgetDefenderCombatOdds...hard so far.
    Last edited: Oct 11, 2019
  18. f1rpo

    f1rpo plastics

    May 22, 2014
    :lol: I'm a bit relieved to hear that. Maybe I'll be able to catch up with some of your posts and messages in the next days weeks. Didn't get much of anything done today.
    I've responded briefly in the Doto thread. General talk about range strikes doesn't seem out of place in the AdvCiv thread as it connects with the combat system discussions, but the technical details ... well, will have to go someplace else. :)
  19. Bestban

    Bestban Chieftain

    Oct 13, 2019
    Thank you, f1rpo, for sharing this great mod :goodjob:. I'm a new Civ4 player and have tried BAT for a few games so far. I only have my very first AdvCiv game. Although not yet finishing it, I like AdvCiv a lot because of the non-passive AI. For example, multiple wars are being declared, and wars even between the Apostolic Palace members with a good pre-war relation.

    Two things I have noticed in my current game:
    1. War Weariness does not show up somehow, at the Scoreboard or Foreign Adviser. I can't find it anywhere else. My capital does show a +1 anger with "War ... What is it good for? ..."
    2. Rifleman has "+25% vs. Mounted Units" on Civilopedia. It is shown instead to be "-25%" vs an enemy Knight, while holding Alt + Mouse hover. The final odd is correct though. This appears to be display issue only.
  20. keldath

    keldath LivE LonG AnD PrOsPeR

    Dec 20, 2005
    posting here, since, its advc bug...

    airplanes, cannot bombard cities.
    when you carry out an air bomb mission, on a city with x deference, no damage is deducted from the city.
    the message that is given is like a successful hit, only with the current unchanged city defense.

    in addition, when just choosing an airplane, the defense modifier , on the city, the white colored font,
    dis appears .

    it came up from my ranged testings,
    i checked it on regular advc version to verify that this is a bug from advc code.

    second issue is with multiplayer -
    diplomatic screens become pretty slow when they pop, they gets stuck a bit. seems that its not be like this i think.
    edit : maybe because of this line -
    "pCity->changeDefenseModifier(std::min(0, (int)::floor(chg)));"
    maybe it should be:
    pCity->changeDefenseModifier(std::max(0, (int)::floor(chg)));

    ok i got it,
    your ignore building defense check, renders the airbomb not to reduce damage.
    /*  <advc.004c> Same as in CvUnit::bombard except that IgnoreBuildingDefense
                doesn't have to be checked here b/c all air units have that */
            int iDefWithBuildings = pCity->getDefenseModifier(false);
            int iDefSansBuildings = pCity->getDefenseModifier(true);
            FAssertMsg(iDefSansBuildings > 0 || isHuman(),
                    "The AI shoudn't bombard cities whose def is already 0");
            double chg = -airBombCurrRate() * (iDefWithBuildings / (double)iDefSansBuildings);
            pCity->changeDefenseModifier(std::min(0, (int)::floor(chg)));
    i saw the same issue with bombard units that have ignore building defense.
    i remove the whole section of check that you made for ignore.
    i think , that a cannon should bother with ignore defense if its inside the action mission of, bombard. bombard is executed to reduce damage, see ignoring it, causes the bombard to be irrelevant.
    the ignore - will allow the ranged units, to perform ranged, while ignoring city defense.

    hope you can fix it soon..
    me and my friend are not far from air planes on our mp session :)
    Last edited: Oct 14, 2019

Share This Page