diff --git a/Source/Client/Mode/GameModePackets.cpp b/Source/Client/Mode/GameModePackets.cpp index f262e51a..9eeddbac 100644 --- a/Source/Client/Mode/GameModePackets.cpp +++ b/Source/Client/Mode/GameModePackets.cpp @@ -6035,3 +6035,27 @@ struct ItemFallEntry { }; // OFFSET: 0x00D2DB80 +// FUNCTION: fn_21724 +void CGameMode::ReceiveItemFallEntry(const unsigned char* packet) { + ItemFallEntry entry = {}; + entry.count = *reinterpret_cast(packet + 0x0F); + entry.aid = *reinterpret_cast(packet + 2); + entry.column = *reinterpret_cast(packet + 0x0B); + entry.row = *reinterpret_cast(packet + 0x0D); + entry.subColumn = packet[0x11]; + entry.subRow = packet[0x12]; + entry.falling = 0; + _itoa(*reinterpret_cast(packet + 6), entry.itemId, 10); + entry.falling = 0; + entry.identified = packet[0x0A]; + + CItem* item = this->scene->GetItemByAID(*reinterpret_cast(packet + 2)); + if (!item) { + item = new CItem; + this->scene->objects.push_back(item); + this->scene->unknown_0018.push_back(item); + } + + const int entryAddress = reinterpret_cast(&entry); + item->SendMsg(nullptr, 4, 0, entryAddress, entryAddress >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); +}