From 3950dda92f67d135e8387776351dc5d27dbbe5c9 Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 31 Aug 2020 22:36:07 -0700 Subject: [PATCH] Force players who are held by an entity to own that entity --- src/pc/network/packets/packet_object.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/pc/network/packets/packet_object.c b/src/pc/network/packets/packet_object.c index f70d4dbf1..1917db084 100644 --- a/src/pc/network/packets/packet_object.c +++ b/src/pc/network/packets/packet_object.c @@ -327,6 +327,7 @@ void network_receive_object(struct Packet* p) { if (so == NULL) { return; } struct Object* o = so->o; if (!network_sync_object_initialized(o)) { return; } + if (gMarioStates[0].heldByObj == o) { return; } // make sure no one can update an object we're holding if (gMarioStates[0].heldObj == o) { return; } @@ -344,6 +345,11 @@ void network_receive_object(struct Packet* p) { } bool should_own_object(struct SyncObject* so) { + if (gMarioStates[0].heldByObj == so->o) { return true; } + for (int i = 0; i < MAX_PLAYERS; i++) { + if (gMarioStates[i].heldByObj == so->o) { return false; } + } + if (so->o->oHeldState == HELD_HELD && so->o->heldByPlayerIndex == 0) { return true; } if (player_distance(&gMarioStates[0], so->o) > player_distance(&gMarioStates[1], so->o)) { return false; } if (so->o->oHeldState == HELD_HELD && so->o->heldByPlayerIndex != 0) { return false; }