From d60cdbe5f2d5c30e46e49cf1335b75bfe6be3510 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 22 Dec 2019 05:51:09 +0100 Subject: [PATCH] Fix #10420: Money effect causing false positive desync --- src/openrct2/world/Sprite.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/openrct2/world/Sprite.cpp b/src/openrct2/world/Sprite.cpp index 7d43e2e235..1d6a663e13 100644 --- a/src/openrct2/world/Sprite.cpp +++ b/src/openrct2/world/Sprite.cpp @@ -260,6 +260,15 @@ rct_sprite_checksum sprite_checksum() copy.generic.sprite_left = copy.generic.sprite_right = copy.generic.sprite_top = copy.generic.sprite_bottom = 0; copy.generic.sprite_width = copy.generic.sprite_height_negative = copy.generic.sprite_height_positive = 0; + // Next in quadrant might be a misc sprite, set first non-misc sprite in quadrant. + while (auto* nextSprite = get_sprite(copy.generic.next_in_quadrant)) + { + if (nextSprite->generic.sprite_identifier == SPRITE_IDENTIFIER_MISC) + copy.generic.next_in_quadrant = nextSprite->generic.next_in_quadrant; + else + break; + } + if (copy.generic.sprite_identifier == SPRITE_IDENTIFIER_PEEP) { // Name is pointer and will not be the same across clients