[MOD] More Naval AI

I also have a few questions regarding Puppet States and Revolutions.

Would it be possible to split them in different options? I like Puppet States a lot, but Revolutions is a bit bulky and I'll probably won't play with it in every game.

What will happen if you create a new Infernal or Mercurial civilization via Puppet States or via Revolutions? Getting the souls of the deceased is vital to the mechanics of both civilizations and I wonder if they would be splitted or if something bad (TM) would happen. IMO neither of these two civilizations should become splitted, even if the Infernals have a nice bunch of minor leaders to use for this.
 
Revolutions that are a result of a New Leader demand should spawn splinter civs rather than new civs
I will try to code that today
Check the way Revolutions choose to spawn rebel troops - maybe add weight for the leader's favorite troop types
I looked over the code; I think it has something to do with the way FfH is handling Unique Units (Sometimes UUs have an own units class that is blocked for all the other civs) and Building requirements for units (The Game searches for units that can be build in the revolting city)
New civs that are spawned should start as Minor civs?
Need a solid concept for what it means to be a Minor civ in FFH
I don't think minor civs like they exist in RevDCM etc. (No diplomacy, war with everyone) don't fit into the concept of revolutions, because they can also be non-violent. Maybe just for violent revolutions? But I think it is an interesting part of the mod that your enemies can help out rebels in your empire...
Find way to incorporate the non-standard leaders (some work already done by lfgr)
I will try to code a seperated module with all things about choice of civs and leaders, considering religion, terrain and the concept of splinter civs. That could also used for e.g. puppet states.
Revolutions can allow defeated civs to come back into the game? - make sure this is working
Doesn't it works already? I conquered Keelyn (and formed a puppet state), and later some civs switched back to her reviving her empire.

Something about vassals in general: I think they are not able to declare war on rebels (So they free their cities in any case). Maybe their master should be asked about that.
Rebel units should be based on type of rebellion (for example, only give rebel religion-specific units when it's a religious rebellion)
Exactly the idea I had. I think also race promotions and maybe terrain should be considered.

Another bug: The revolution factors display in the revolution advisor does not work correctly (but I think it was already problematic in revDCM). I played as Amurites, and it showed me "Balseraph Palace" in the empire stability (I think first on bad and later on good side :))
 
Would it be possible to split them in different options? I like Puppet States a lot, but Revolutions is a bit bulky and I'll probably won't play with it in every game.

I'll consider it.

What will happen if you create a new Infernal or Mercurial civilization via Puppet States or via Revolutions? Getting the souls of the deceased is vital to the mechanics of both civilizations and I wonder if they would be splitted or if something bad (TM) would happen. IMO neither of these two civilizations should become splitted, even if the Infernals have a nice bunch of minor leaders to use for this.

Good points. I already exempted the Infernals and Mercurians from being spawned as Rebels, but they should probably also be blocked from becoming Puppet States and having Revolutions.
 
The first one shows up when you try to start a scenario. It is just a python exception (I did not notice any problems). You can check it at the first screenshot.

Anyone know how to load scenarios if the game isn't installed in the default directory?

The second one happens ingame, with the GP toolbar. At one time it displayed a 7% possibility of getting a Great Spy. I attached a screenshot too.

I'm using the Spy symbol for Great Commanders. I cant figure out how to make it display a Great Commander icon.

The third one is the Sevopedia. Some things (such as Traits) have an empty description page. Others (such as Units) have a description page that is only filled partially and they throw a python exception. The third screenshot shows an example of this.

Fixed issue with Unit info display in Sevopedia. Uploaded as r759

Not sure what's up with the Trait display. It's not throwing any errors that I can see, which makes it difficult to track down.

Thanks for the bug reports!
 
Decided to fix the OOS that happens when you change civilizations while I was at it.

Snarko's OOS fix appears to be causing some issues with Revolutions. If you reject terms after getting the event that asks you to cede power, you will be switched to controlling whatever civ has their turn after you.
 
Downloaded Beta Patch 2 and the Illians are still getting +1:commerce: from both rivers and the Temple of the Hand. Also the Sevopedia still shows the Temple getting the bonus commerce.

While I'm here, how come the power ratings were removed from the scoreboard? It's one of the reasons why I like the BUG mod, at a glance you can tell if you need to build more troops or not.

I guess that you probably just disabled it temporarily while sorting out bugs with BUG :lol:

Edit:
I disabled it and I think this is an option that I will end up removing entirely. The player doesn't know the other player's specific power scores (just some general info they can glean from the demographics and charts), so giving out this info is a bit of a cheat. This option makes more sense in a game that includes espionage and such, which FFH does not.

Found the answer :)
--

Edit 2:
Snarko's OOS fix appears to be causing some issues with Revolutions. If you reject terms after getting the event that asks you to cede power, you will be switched to controlling whatever civ has their turn after you.

Yep, can confirm this. Playing as the Illians and one of my cities wanted to switch to the Sheaim. I rejected it and lo and behold I am now Decius of the Malakim :(
 
One problem with the revolutions code. When the Illians cast Stasis, your cities can still increase / decrease their revolt status. So if it is rapidly worsening, chances are that the city will revolt and you won't be able to do anything about it unless you can bribe it.

Should Stasis change all revolt statuses to "Flat" globally (except for the Illians)?
 
Here's my work. It chooses a revolting civ considering race and religion (And splits the civ when New Leader demand is cause of the revolution).
Minor leaders are also preferred.

All the values are subjective, it would be great when somebody with a deeper lore familiarity could look over it.
 

Attachments

Downloaded Beta Patch 2 and the Illians are still getting +1:commerce: from both rivers and the Temple of the Hand. Also the Sevopedia still shows the Temple getting the bonus commerce.

Whoops. Forgot to include that updated file with the release. Will be in next release.


One problem with the revolutions code. When the Illians cast Stasis, your cities can still increase / decrease their revolt status. So if it is rapidly worsening, chances are that the city will revolt and you won't be able to do anything about it unless you can bribe it.

Should Stasis change all revolt statuses to "Flat" globally (except for the Illians)?

Good catch. I'll see what I can do to make the revolt status lock in place during Stasis (except for Illians).

Thanks for the bug reports!
 
Snarko's OOS fix appears to be causing some issues with Revolutions. If you reject terms after getting the event that asks you to cede power, you will be switched to controlling whatever civ has their turn after you.

My fix was rather quick and dirty. The one I made for RifE looks much better :P
So, a more proper change:
In CvEventManager, onModNetMessage replace the else with an elif (iData1 == CvUtil.ChangeCiv).

In CvUtil.py under Somnium = 0 add ChangeCiv = 1

In CvScreensInterface.py change it to CyMessageControl().sendModNetMessage(CvUtil.ChangeCiv, iOldPlayer, iNewPlayer, 0, 0)

That should be enough. It appears revolutions uses modnetmessage, but in another file. It's using numbers 100 and above so it shouldn't conflict with this change.
 
When you scorch a marsh, it turns into plains. I think a marsh used to turn into grassland. Either way, marsh to grassland makes more sense to me.
 
When you scorch a marsh, it turns into plains. I think a marsh used to turn into grassland. Either way, marsh to grassland makes more sense to me.

Marshes cant be Scorched in base FFH. Not sure how it works in other FFH mods. I made it change the terrain to Plains because turning Marsh into Grasslands seemed a bit overbalanced for what was just intended to be just a minor game tweak.
 
Here's my work. It chooses a revolting civ considering race and religion (And splits the civ when New Leader demand is cause of the revolution).
Minor leaders are also preferred.

Things were looking pretty good in a couple of test games I ran. Saw lots of Minor leaders rebelling against their mother empires. Thanks for the code update!
 
Things were looking pretty good in a couple of test games I ran. Saw lots of Minor leaders rebelling against their mother empires. Thanks for the code update!

Thank you, I'm glad you like it!

I did the terrain thing today, i'm not ready with all the civ preferences but here is a first screenshot (desert -> Malakim ;))
 

Attachments

  • Civ4ScreenShot0029.JPG
    Civ4ScreenShot0029.JPG
    277.2 KB · Views: 106
Good points. I already exempted the Infernals and Mercurians from being spawned as Rebels, but they should probably also be blocked from becoming Puppet States and having Revolutions.

Maybe, as a special case, Infernal puppet states / revolutions could use the Sheaim instead. Mercurians could use Bannor in the same way. It is not an ideal solution, though.

Right now I'm playing with r767. Sometimes (when you lose a unit or when you summon one, sometimes without apparent reason), the list of units in a tile will show glitches, as shown in the screenshot.

EDIT: I spotted another small GUI bug. The Great Commander icon does not appear for me at the GP bar, and its % text uses a different font than the others. Check the second screenshot for an example. Maybe I'm missing the icon file?
 

Attachments

  • glitch.JPG
    glitch.JPG
    172 KB · Views: 71
  • glitch2.JPG
    glitch2.JPG
    234.3 KB · Views: 94
More Naval AI breaks the Mulcarn Reborn scenario. The error I get is that at ScenarioFunctions.py, line 495: CustomFunctions instance has no attribute getOpenPlayer.

I checked my More Naval AI diff file to find that the getOpenPlayer was deleted from CustomFunctions. Adding this function again makes the scenario work. After a search through all Python files, this seems to be the last place where CustomFunctions.getOpenPlayer is used.
 
Back
Top Bottom