Resource icon

C3X: EXE Mod including Bug Fixes, Stack Bombard, and Much More Release 22

That wouldn't be hard as it's mostly the same logic as the existing building prereqs. I really wish I had Lua for this sort of thing. However, I don't see why using upgrades for this wouldn't work as AA mentioned. You'd have an expensive unit that upgrades to a cheap alternative that requires a building and has the same stats. Having the upgrade available would remove the expensive unit as a build option, like how connecting iron for swordsmen annoyingly makes warriors unbuildable. Even with building anti-prereqs, you'd want the cheap & expensive variations to be on the same upgrade chain anyway, no?
Yeah, but I thought it's not that important, there are more important suggestions here at the moment (I found a way to do almost the same without additional functions). Entities must not be multiplied beyond necessity :old: My apologies for disturbing you.

Let me summarise my requests and the results of our discussion over the last month (just in case they don't get lost in the forum history and because I asked for a lot of things, but not all suggestions were important and necessary):
1) Correction of the "disallow trespassing":
a) Helicopter or any other air transport should not be able to airdrop across the border (as well as paratroopers)
b) All visible units that somehow entered in foreign territory should be bouncing out in case of peace and the absence of the right of passage agreement (either at the start of the turn right after changing borders or right after player completes his turn but before other players take their turns). Bouncing should not extend to invisible units, cause they must have an opportunity to attack even if they were revealed.
c) To tie the "disallow trespassing" to a government type.
d) (Prohibition of the air recon on foreign territory in case of peace and the absence of the right of passage agreement is not necessary).
2) Auto-recon function (activated at the start of the turn).
3) Allowing rebase missions to be intercepted.
4) To restrict units to loading once per turn.
5) To prohibit the construction of some improvements or wonders for specific governments.

A List "if time and desire will be":
1) To make precision bombing truly precise so that if you know what buildings are in the city, a window opens with a choice of a specific target (just like with a stealth attack against units) or at least, prioritizing buildings for precision bombing targets by flags (for example: first "both flags", then Mil-flag, then Ind-flag and then others).
2) To allow loading transport helicopters onto the carrier.

:worship:
 
... and don't bury my proposals either:
- take into account the context of the terrain for the hill base (as must exist for forests) ;
- create a routine for the AI that allows it to correctly manage units that have 0 in attack and defense, that have movement capability, and that don't have the “king” flag, so that the AI dissolves these units in a city to speed up production.
 
Alright, here's the short list for Preview 3:
  • Clear trespassers from foreign territory at least once per turn. I'm thinking I'll clear foreign units out of each player's territory at the start of their movement phase, so they can move without being obstructed, and also clear out former enemy units after a peace treaty is signed. The game has a make_peace method that's called whenever a war ends, so it's easy to attach some logic to that event, but I don't believe there's any easy way to know when a right of passage agreement expires.
  • Temporary negative perfume for AI settlers after each city founding to throttle AI expansion
  • Fix mod movement rules not applying to empty armies
  • Limit units to loading once per turn
That'll also be the last stuff for R23. If I keep adding things, it'll never get done, so I have to call it somewhere and that somewhere is here.


Also, R23 Preview 2 is done. Here' s the link: https://github.com/maxpetul/C3X/releases/tag/Release_23_Preview_2
Changes since the first preview version:
  • AMB editor improvements
    • Show overall duration of loaded file
    • When playing preview, don't complain that empty WAV file names are missing
    • Create a new temp folder for each preview played and dispose of sound core objects when previews are stopped
      • These changes should fix issues where previews can't be played due to conflicts with leftover files
  • Prevent airdrops from violating the trespassing restriction
  • Fix possible crash when unit performing stack bombard is destroyed
  • Fix division by zero in AI logic to evaluate proposed alliances
I realize now I never posted the changes for the first preview version. Here are the changes in R23 Preview 1 from R22:
  • Include AMB editor
  • Adjustable rebase range as multiple of operational range, setting named rebase_range_multiplier
  • Option not to draw capital cities larger than they really are, named do_not_make_capital_cities_appear_larger
  • Fix city screen zooming out for adjacent tiles that aren't actually workable due to maximum work radius


Should I have that turned on normally?
I usually play with it turned on, but it doesn't really matter. I only mentioned it because it's often useful for reproducing bugs, and the fact that the crash you found wasn't avoided by going back a few turns indicates it was caused by something scheduled as opposed to a random AI decision.

So, speaking of ruined trade reputation: is there any chance to add a feature where you get a pop-up telling you that your trade rep got trashed by something that just happened? A lot of times I think there is a sizable gap in turns between the event and my noticing of it. So I think it would help me learn better from my mistakes if there was immediate feedback.
Yes but I'd first have to find how trade reputation is tracked internally and where in the game logic it gets marked as broken (and hopefully that's only one place). After that inserting a popup would probably be simple. What I'd really like to do is add the option to repair trade rep as a purchasable thing in diplomacy. The way it'd work is when you break a deal ruining your reputation, the game would calculate the value of the remaining deal to the AI in gold, increase it by some penalty amount, then put a "Repair Trade Reputation" option up for sale from that AI player for that amount. If purchased, the mark against you would be erased. Not sure when I'd ever do this, though, maybe one of these years.

7. I noticed that the Army (without loaded units) moves along the railways without restrictions. If you load at least one unit into the army, everything works fine, with restrictions.
Can this be fixed?
It's so weird how empty armies have special movement rules. Even with the standard game rules, they're the only units that move 2 tiles along roads for whatever reason. I'll have to look into this to figure out what's up with them.

- create a routine for the AI that allows it to correctly manage units that have 0 in attack and defense, that have movement capability, and that don't have the “king” flag, so that the AI dissolves these units in a city to speed up production.
I've wanted to add this sort of thing for a couple of years now. The mod already adds a routine for "pop units", whose only purpose is to be joined into cities to increase population, and it makes sense to extend that to shield-adding units as well. I'll try to get around to this for R24.
 
I tried the thing about a negative perfume on settlers to make AI expansion less aggressive and it worked, so I thought I would share my findings.

How I tested > Chieftain + Accelerated production + Tiny Map + 3 AI Civs
For each test I built scouts and ships to explore while I ended the turns very quickly until I hit Industrial revolution. I did not build a settle or take up any land other than my staring city.

Tests in order they occurred.
@ 100% negative perfume:
Each civ built a single settler at some point in the ancient era resulting in two adjacent cites per civ, it is possible they got free cities from villages since this happened to me this round, but since they were each perfectly adjacent to their starting city I doubt it. They also appeared to complete a lot more world wonders, I think thanks in part to c3x in general but also maybe because they focused on them instead of settlers it was quite fun having a dual city state competition.

@ 50% negative perfume:
Each civ expanded quickly and the map was mostly filled by the industrial revolution. Maybe a bit less then vanilla but still rather aggressive but with a few corners of the map remaining. Some even rushed right up to my borders during the ancient era.

@ 90% negative perfume:
Two civs expanded to about three cities each in the ancient era as did America to about 3-4 cities, then some time in the middle ages America had an expansion boom and spread to about 8 cities while the others around the end of that spread a little. By the time I hit the industrial revolution most of the map had been claimed but not all of it and a few small islands were untouched.

@ 95% negative perfume:
Acted much like at -100% only a few cities near the beginning about 2 each, this one took place on islands so it was harder to tell but definitely happened in the ancient era. By the industrial revolution basically no spread at all.

Conclusion: negative 90% perfume on settlers appeared to have a more dynamic growth from ai with expansions booms when they ran out of other stuff to build. With much of the map settled by the industrial age but not all of it. I think this is a good spot to allow players who don't like settler rushing to have some breathing room.
 
Last edited:
Also another request.

Could you make a way to lower the required population to be able to draft.

In my brief amount of research there is no way to do this in the editor.
Also I didn't see but do you have a "buy me a coffee" or kofi account to accept donations, just curious.
 
Conclusion: negative 90% perfume on settlers appeared to have a more dynamic growth from ai with expansions booms when they ran out of other stuff to build. With much of the map settled by the industrial age but not all of it. I think this is a good spot to allow players who don't like settler rushing to have some breathing room.
Interesting, do you think there's any point in making the negative perfume vary with AI city founding or is it enough to slap a flat -90% perfume? My plan was to apply a negative perfume amount from the config and have it decay linearly over a number of turns, also determined by the config. Sounds like that's not a good idea if -50% perfume has little effect. It would probably be better to block settler production (effectively -100% perfume) for a set number of turns after each city that's founded.

Could you make a way to lower the required population to be able to draft.
In my brief amount of research there is no way to do this in the editor.
Also I didn't see but do you have a "buy me a coffee" or kofi account to accept donations, just curious.
It's programmed so that cities must be at least of level 2 size in order to draft. That would be easy to change, though. I don't have a kofi account or anything equivalent set up at the moment, but I think I'll set up one soon. I've gotten several offers to donate now, and I do appreciate them, thank you.
 
Interesting, do you think there's any point in making the negative perfume vary with AI city founding or is it enough to slap a flat -90% perfume? My plan was to apply a negative perfume amount from the config and have it decay linearly over a number of turns, also determined by the config. Sounds like that's not a good idea if -50% perfume has little effect. It would probably be better to block settler production (effectively -100% perfume) for a set number of turns after each city that's founded.


It's programmed so that cities must be at least of level 2 size in order to draft. That would be easy to change, though. I don't have a kofi account or anything equivalent set up at the moment, but I think I'll set up one soon. I've gotten several offers to donate now, and I do appreciate them, thank you.
It could be interesting to have it decay over time maybe, because as far as I can tell the AI might not care about hitting maximum population it only cares if it has something it would rather build than settlers. So by having it set negative upon city founding and slowly decay it might better reflect how humans are more likely to build a settler as the cities grow larger. Of course I could be wrong, ngl I'm not nearly as experienced with Civ 3 AI as your most likely are.

As for the drafting thing, I thought it required 7 population.
 
Yes but I'd first have to find how trade reputation is tracked internally and where in the game logic it gets marked as broken (and hopefully that's only one place). After that inserting a popup would probably be simple. What I'd really like to do is add the option to repair trade rep as a purchasable thing in diplomacy. The way it'd work is when you break a deal ruining your reputation, the game would calculate the value of the remaining deal to the AI in gold, increase it by some penalty amount, then put a "Repair Trade Reputation" option up for sale from that AI player for that amount. If purchased, the mark against you would be erased. Not sure when I'd ever do this, though, maybe one of these years.
That would be awesome! That is a great idea! But for now I'd be very happy with just a pop-up that tells me that my trade rep just took a big hit.

Thank you,
DJ
 
I finally had a chance to load the game to see if it could be salvaged. I think I found the reason for the divide by zero city distance problem. Do you see anything strange in this screenshot ?
 

Attachments

  • Hammurabi.jpg
    Hammurabi.jpg
    64.6 KB · Views: 28
As for the drafting thing, I thought it required 7 population.
It does under the standard game rules where cities with 1 - 6 pop are level 1 size, 7 - 12 pop are level 2, and 13+ are level 3. Those levels can be changed in the editor. I was just remarking that the game isn't programmed to check for a population of at least 7 exactly, it's actually checking that the city is at least size level 2. It doesn't really matter.

I finally had a chance to load the game to see if it could be salvaged. I think I found the reason for the divide by zero city distance problem. Do you see anything strange in this screenshot ?
So you agreed with Babylon to attack the Portuguese in exchange for Babylon attacking... you, and you're paying them 26 GPT for their trouble. It must be that when the agreement came up for renewal, the AI tried to compute the value of it for itself and for you, and the value for you depends on the distance from your capital to the nearest city belonging to the target of the alliance, except the target is you, so the distance was of course zero. I don't suppose you have any idea how this happened?
 
An illustration of the terrain problem I mentioned earlier:
- if you create a Hills LM (LM Hills.pcx) dedicated to desert hills, the game ignores the context of the surrounding terrain and automatically places a Grassland base.
- whereas a context-testing routine should exist, since the game correctly places mountains or wooded hills when you place a standard hill / mountain in a forest environment.

1749530293859.png




As you can see wooded hills are correctly inserted in the center of the view there:
1749531355354.png
 
Last edited:
In addition to my previous post on the problem of the land, I would specify:
- that the grassland base bug comes from the game editor (I've used the standard editor, I haven't yet tested with the Quintilius and Stef editors, which may solve this point) ;
- I was wondering, though, if, as part of a future evolution of C3X, it would be possible to extend the terrain generation possibilities, by adding mountain desert.pcx, hills desert.pcx, mountain tundra.pcx, hills tundra.pcx, oasis.pcx files (making oases a type of terrain rather than a resource)?
 
I'm also thinking of another possible improvement concerning the game's invisible units.
I'm proposing to make this type of unit visible during combat (in attack and defense) and to make them invisible again at the end of combat if they are victorious.
I find it sometimes frustrating not to be able to see which type of unit has defeated you.
 
It does under the standard game rules where cities with 1 - 6 pop are level 1 size, 7 - 12 pop are level 2, and 13+ are level 3. Those levels can be changed in the editor. I was just remarking that the game isn't programmed to check for a population of at least 7 exactly, it's actually checking that the city is at least size level 2. It doesn't really matter.


So you agreed with Babylon to attack the Portuguese in exchange for Babylon attacking... you, and you're paying them 26 GPT for their trouble. It must be that when the agreement came up for renewal, the AI tried to compute the value of it for itself and for you, and the value for you depends on the distance from your capital to the nearest city belonging to the target of the alliance, except the target is you, so the distance was of course zero. I don't suppose you have any idea how this happened?
Ah ok, I must not have seen where to do this.
 
- I was wondering, though, if, as part of a future evolution of C3X, it would be possible to extend the terrain generation possibilities, by adding mountain desert.pcx, hills desert.pcx, mountain tundra.pcx, hills tundra.pcx, oasis.pcx files (making oases a type of terrain rather than a resource)?
It would be easy to add special appearances for desert hills and so on by swapping out the PCX images that hill tiles may draw from. Adding wholly new terrain types would be hard, but that could be faked by changing only the appearance, terrain name, and yields of certain tiles.

I don't know about changing the terrain underneath hill tiles because I don't understand how the game tracks terrain base type versus overlay type. Antal decoded some methods on terrain objects that he named Set_Square_Real_Type, Set_Square_Base_Type, and Set_Square_Type. However when I tried calling them, none of them worked properly to change the terrain type ("square type" in Antal's words) of a tile. They either didn't change the graphic properly or did nothing at all.

I'm also thinking of another possible improvement concerning the game's invisible units.
I'm proposing to make this type of unit visible during combat (in attack and defense) and to make them invisible again at the end of combat if they are victorious.
This has been requested before and I've looked into it briefly but did not see an obvious way to make it happen. There's quite a bit of combat and animation related code I'd have to chew through to figure out how to reveal invisible units while they're in combat.
 
Back
Top Bottom