Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix void monolith float menu causing desync with CompProximityLetter #499

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

SokyranTheDragon
Copy link
Member

CompProximityLetter (void monolith, ancient mechanitor exostrider) sends a letter when a player pawn gets close to it. This is disabled (CompProximityLetter.letterSent is set to true) when the void monolith is automatically activated, or when a pawn is ordered to interact with it.

When a pawn interacts with the monolith by using the gizmo, the method disabling the letter is synced. However, when using float menu to do it the letter is only disabled for the player who ordered it, as the method is not synced (instead, the interaction is synced by Pawn_JobTracker.TryTakeOrderedJob call). It then displays the letter for everyone besides the player who ordered the interaction, causing desync (new ID assigned, causing desync trace mismatch).

The fix was rather simple and required syncing the method the float menu calls when clicked. Investigating what caused the desync took much longer.

I've also moved the void monolith sync methods from SyncMethods file to SyncDelegates to keep them categorized, specifically by keeping them together with the newly added sync delegate.

`CompProximityLetter` (void monolith, ancient mechanitor exostrider) sends a letter when a player pawn gets close to it. This is disabled (`CompProximityLetter.letterSent` is set to true) when the void monolith is automatically activated, or when a pawn is ordered to interact with it.

When a pawn interacts with the monolith by using the gizmo, the method disabling the letter is synced. However, when using float menu to do it the letter is only disabled for the player who ordered it, as the method is not synced (instead, the interaction is synced by `Pawn_JobTracker.TryTakeOrderedJob` call). It then displays the letter for everyone besides the player who ordered the interaction, causing desync (new ID assigned, causing desync trace mismatch).

The fix was rather simple and required syncing the method the float menu calls when clicked. Investigating what caused the desync took much longer.

I've also moved the void monolith sync methods from `SyncMethods` file to `SyncDelegates` to keep them categorized, specifically by keeping them together with the newly added sync delegate.
@SokyranTheDragon SokyranTheDragon added fix Fixes for a bug or desync. 1.5 Fixes or bugs relating to 1.5 (Not Anomaly). labels Aug 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
1.5 Fixes or bugs relating to 1.5 (Not Anomaly). fix Fixes for a bug or desync.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant