devilution icon indicating copy to clipboard operation
devilution copied to clipboard

objects: add BUGFIX for SyncLever

Open mewmew opened this issue 1 year ago • 1 comments

When syncing object delta information, special care has to be taken for Skull Levers on dlvl=16, since all levers in a group must be pulled before opening the trigger area (refer to the _oVar8 check of OperateLever). This check is not performed when object delta information is synced, and as such, if a player walks down to dlvl=16 when another player is already on dlvl=16 and has opened one Skull Lever (but not all Skull Levers) of a group, then for the new player entering dlvl=16 (and thus receiving object delta information from the player already present on the level) would have the lever group trigger activated and the map changed, even though all Skull Levers of the given group have not yet been pulled. As such, the map state of these two players will differ considerably.

Edit: furthermore, the _oVar8 check is done for other object delta information sync functions (e.g. SyncCrux).

mewmew avatar Dec 04 '24 22:12 mewmew

I've known this bug works for a single player where you pull one of the last set as a speedrun strat. You pull one of the final set using telekenesis, town portal back to town, then immediately come back down (or do any shopping if you need something then go back down) and Diablo's cage would be open without having to hit the other one in the set. Never thought about how this would behave with multiple players. I kind of want to check it out in game and see how that looks when the level desyncs like that now. 😆

NiteKat avatar Dec 25 '24 16:12 NiteKat