Dancing Hoskuld
Deity
From what I have read it is essential. The sendNodeMessage is about multiplayer. When we did not have it in that function there were OOS when added there weren't. (from that function).
I haven't had to use the ModNetMessage stuff in python BUT I have had to understand a lot about OOS errors. I can tell you that generally speaking, any time you have a player interacting with the game in a manner than can change or alter the game state, such as destroying a building or city, and doing it in a way that takes place through a UI screen (such as a popup or even the city screen itself) the activity must be indicated to all computers on the network to insert that action at EXACTLY the same place in the processing or it can and will throw off sequences such that it then creates an OOS. It's probably a very important consideration with a button like this.Question: @AIAndy, @alberts2, @Koshling
If a piece of python is set up like this:
I understand that sendModNetMessage can help avoid OOS errors... But I'm unsure of when it actually is needed for that purpose.Spoiler python :Code:def aGenericFunction(self): ... CyCity = CyInterface().getHeadSelectedCity() ... CyMessageControl().sendModNetMessage(900, iPlayer, iCity, 0, 0) .... .... def onModNetMessage(self, argsList): ID, iPlayer, iCity, iData4, iData5 = argsList CyPlayer = GC.getPlayer(iPlayer) if ID == 900: CyCity = CyPlayer.getCity(iCity) CyCity.kill() elif ID == 901: etc.....:
Would it be possible to just change:
CyMessageControl().sendModNetMessage(900, iPlayer, iCity, 0, 0)To:
CyCity.kill()
Without getting OOS errors.
Asked in another way, will CyCity.kill(), a function from the SDK when triggered report on it's own to all players in a MP game that a city was just razed, or do I have to invoke the sendModNetMessage to get the game for all players to raze that city.
This is related to a demolish building/city button that will be available in the city screen.
The aGenericFunction will only be processed on the computer of the player that interacts with the demolish button.
Is it then correct that the onModNetMessage will be processed on the computer of all players in a multiplayer game?
Is it necessary for the CyCity.kill() function to be called from python on all the computers in the MP game?
So this piece of dll code will cause an OOS if only called from one of the computers in the MP game:I haven't had to use the ModNetMessage stuff in python BUT I have had to understand a lot about OOS errors. I can tell you that generally speaking, any time you have a player interacting with the game in a manner than can change or alter the game state, such as destroying a building or city, and doing it in a way that takes place through a UI screen (such as a popup or even the city screen itself) the activity must be indicated to all computers on the network to insert that action at EXACTLY the same place in the processing or it can and will throw off sequences such that it then creates an OOS. It's probably a very important consideration with a button like this.
This is handled a little differently in the dll. Missions and such have it all built into the system in most cases. And where you are doing something a little more unique, you have to build it into something akin to the modnetmessage system - just a bit differently than you would in python is all.
Ok, thanks for helping me understand this stuff better, I was pretty blank on the topic earlier today.It's not the function so much as that it's taking place in the context of a popup.
There's probably things that could be done to improve not having to worry about that stuff in python but it would cause super slow processing and would take a hell of a long time to setup as a more generic process. Already the message system is a miracle to enable OOS debugging in python.
Please report this in the BUG thread. It will get lost here.So on discovering Irrigation the Rice Gatherer goes obsolete.
The replacment buildings (to get grain- Donkey Mill, Watermill) cannot be built if Slavery is active so all my bakeries are now out of order
What's the logic here? Can it be changed? Just doesn't ring true to me
I just put this on my item list. High priority. Should be fixed fairly soon.So on discovering Irrigation the Rice Gatherer goes obsolete.
The replacment buildings (to get grain- Donkey Mill, Watermill) cannot be built if Slavery is active so all my bakeries are now out of order
What's the logic here? Can it be changed? Just doesn't ring true to me
Shouldn't the Rice Gatherer be replaced by the Rice Paddy (requires Agriculture)?So on discovering Irrigation the Rice Gatherer goes obsolete.
The replacment buildings (to get grain- Donkey Mill, Watermill) cannot be built if Slavery is active so all my bakeries are now out of order
Should require fresh water instead I'd think...Yes seems you're right but Rice Paddy requires river access which my city with rice doesn't have
I just reviewed this in the code. 3xp would be correct if it says 7 because drafted units indeed start with half XP by game rule. I've tweaked the display to show an accurate XP readout on the draft tooltip but it can't adjust the amount it shows each source gives. So I've added a note to the total XP displayed that explains it to the player.View attachment 476562
Requires certain civics to be active.
Also: note that the unit starts with 3 xp although the breakdown says 7 xp
Does anyone have a save from a game where a population rush (better known as 'whipping') can be made? I need to confirm the bug that it doesn't cost population as stated. The code looks like it would so I'm going to have to evaluate the code in progress to see 'outside the box' of my thinking on how this can be broken.Unlike BTS, the amount of hammers you get from sacrificing population is pathetic (at least on deity/nightmare.Not sure about other difficulty levels).
The only reason you'd want to do that if you really want to lower your pop to keep crime etc. in check (a useful necessity on nightmare, with -6 crime and -6 edu/pop).
The fact that there is a blatantly obvious bug in whipping (if you press the whip button, the number of population units in the city screen doesn't change) and I'm the only one who ever reported it (AFAIK), shows that probably nobody ever uses the whip button.
This is by design and is based on history. It is part of balancing slavery but I only got as far as the early industrial era in its implementation.So on discovering Irrigation the Rice Gatherer goes obsolete.
The replacment buildings (to get grain- Donkey Mill, Watermill) cannot be built if Slavery is active so all my bakeries are now out of order
What's the logic here? Can it be changed? Just doesn't ring true to me
I now have glasses that let me read the computer screen! Yay! Only took 2 weeks!
Yes to the second part.Does that mean you want to have swardsmanship I, II and III as techs? What about Obsidian Swordsmen, will they require this tech? Will those techs be semi-skippable, meaning you can leave out a bunch of military techs if you want to have a peaceful game?