Open devolution79 opened 1 year ago
I suspect that
cpp GC.getGameINLINE().getActivePlayer() != getID()
Will yield different results in MP since each human player will be different active players
The check will work in SP but in MP there will be multiple human players and thus we cannot safely use getActivePlayer() in this manner IMHO
The code is refactored into CvPlayer::buyEuropeSettlerIfLandlockedAI() meaning it's now in line 8197.
I think this is ok because the full check is:
(GC.getGameINLINE().getAIAutoPlay() == 0 || GC.getGameINLINE().getActivePlayer() != getID())
This means if autoplay is not active or active player is not getID. In multiplayer autoplay is always off, hence first part is always true.
I will say that this check could be written in a more human readable manner. getAIAutoPlay could be bool isAutoplayActive or something like that.
Looks like an easy fix. In compareUnitValue, if value A and B are equal, use getID instead. This way there shouldn't be any randomness to the order.
False alarm, so I deleted the post (for some reason I thought we compared pointer addresses but this turned out to be a bit of a brainfart!)
CvCity::setProductionAutomated // if automated and not network game and all 3 modifiers down, clear the queue and choose again
The function then proceeds to clear the queue without checking for either modifiers to network status.
@Nightinggale Is this ticket still valid or can it be closed?
CvPlayer:8454