diff --git a/src/network/network.cpp b/src/network/network.cpp index cc9df35ad4..7cad35da23 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -1228,7 +1228,7 @@ void Network::RemoveClient(std::unique_ptr& connection) rct_peep* pickup_peep = network_get_pickup_peep(connection_player->id); if(pickup_peep) { game_command_playerid = connection_player->id; - game_do_command(0, GAME_COMMAND_FLAG_APPLY, 1, 0, pickup_peep->type == PEEP_TYPE_GUEST ? GAME_COMMAND_PICKUP_GUEST : GAME_COMMAND_PICKUP_STAFF, network_get_pickup_peep_old_x(connection_player->id), 0); + game_do_command(pickup_peep->sprite_index, GAME_COMMAND_FLAG_APPLY, 1, 0, pickup_peep->type == PEEP_TYPE_GUEST ? GAME_COMMAND_PICKUP_GUEST : GAME_COMMAND_PICKUP_STAFF, network_get_pickup_peep_old_x(connection_player->id), 0); } gNetwork.Server_Send_EVENT_PLAYER_DISCONNECTED((char*)connection_player->name.c_str(), connection->GetLastDisconnectReason()); } diff --git a/src/peep/peep.c b/src/peep/peep.c index 62e1d01d3c..6d667d4af5 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -1993,11 +1993,11 @@ bool peep_pickup_place(rct_peep* peep, int x, int y, int z, bool apply) bool peep_pickup_command(int peepnum, int x, int y, int z, int action, bool apply) { rct_peep* peep = GET_PEEP(peepnum); + if (!peep || peep->sprite_identifier != SPRITE_IDENTIFIER_PEEP) { + return false; + } switch (action) { case 0: // pickup - if (!peep) { - return false; - } if (!peep_can_be_picked_up(peep)) { return false; }