Decompile fn_22015 (CGameMode::ReceiveDeferredReset)

Batch #5242 by eAthena: 0 byte-identical, 1 confirmed by peer review.

- fn_22015 CGameMode::ReceiveDeferredReset: logic confirmed by peer review

Peer-reviewed-by: eAthena, meitogi, superintelligence
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-10-30 09:52:38 +00:00
commit 3f308ea123
3 changed files with 48 additions and 2 deletions

View file

@ -49,7 +49,9 @@ public:
/* 0078 */ unsigned char unknown_0078[0x54];
/* 00CC */ CWorld* scene;
/* 00D0 */ CView* camera;
/* 00D4 */ unsigned char unknown_00D4[0x44];
/* 00D4 */ unsigned char unknown_00D4[0x28];
/* 00FC */ int unknown_00FC;
/* 0100 */ unsigned char unknown_0100[0x18];
/* 0118 */ std::string unknown_0118;
/* 0130 */ unsigned char unknown_0130[0x30];
/* 0160 */ CActorNameCardHolder nameCard;
@ -171,6 +173,13 @@ public:
void ReceiveEnchantSimulation(const unsigned char* packet);
void ReceivePackageSimulation(const unsigned char* packet);
void ReceiveWindow154Result(std::int16_t value);
void ReceivePlayerDuration(const unsigned char* packet);
void ReceiveFailureNotice(const unsigned char* packet);
void ReceiveServerRateNotice(const unsigned char* packet);
void ReceiveRequestResult(const unsigned char* packet);
void ReceivePackageItemTest(const unsigned char* packet);
void ReceiveDeferredReset(const unsigned char* packet);
void ReceiveGradeEnchantResult(const unsigned char* packet);
void UpdateUnknown0628(int id, bool add);
void IgnoreRemovedPacket3(const unsigned char* packet);
void IgnoreRemovedPacket4(const unsigned char* packet);

View file

@ -1,4 +1,5 @@
#include "Client/Mode/CGameMode.h"
#include "Client/Application/Launcher.h"
#include "Client/Session.h"
#include "Contents/CashEmotionMgr.h"
#include "Contents/ClanInfo.h"
@ -6,11 +7,16 @@
#include "Contents/Actors/RenderObject.h"
#include "Contents/Configuration/ServiceConfiguration.h"
#include "Contents/Configuration/ServiceOptions.h"
#include "Contents/Effects/EffectLists.h"
#include "Contents/GuildMgr.h"
#include "Contents/Items/ItemDescription.h"
#include "Contents/Items/ItemInfo.h"
#include "Contents/Items/RuneSystem.h"
#include "Contents/MessageTable.h"
#include "Contents/Sound/SoundMgr.h"
#include "Contents/World/World.h"
#include "Network/Connection/Connection.h"
#include "UI/UIGradeEnchantWnd.h"
#include "UI/Window/UIWindow.h"
#include "UI/Window/UIWindowMgr.h"
#include "UI/Window/WindowDialogs.h"
@ -22,6 +28,9 @@
#include <ctime>
#include <string>
#include <utility>
#include <direct.h>
#include <io.h>
#include <windows.h>
#pragma pack(push, 1)
struct ClanInfoPacket {
@ -79,6 +88,11 @@ struct RuneSetGradesPacket : RuneListPacket {
struct RuneRewardStepsPacket : RuneListPacket {
/* 0009 */ RuneRewardStepEntry entries[1];
};
struct PackageItemTestEntry {
/* 0000 */ int itemId;
/* 0004 */ std::uint16_t unknown_0004;
/* 0006 */ int count;
};
#pragma pack(pop)
struct GameOptionEntry {
@ -235,6 +249,10 @@ void CGameMode::ReceiveNpcBgm(const unsigned char* packet) {
void CGameMode::IgnoreRemovedPacket1(const unsigned char*) {
}
// OFFSET: 0x00D3D2F0
// OFFSET: 0x00D3DF40
// OFFSET: 0x00D3E0B0
// FUNCTION: fn_21808
void CGameMode::IgnoreRemovedPacket2(const unsigned char*) {
@ -354,6 +372,8 @@ struct ActorMessage32 {
/* 003C */ int unknown_003C;
};
// OFFSET: 0x00D3E8B0
// OFFSET: 0x00D3F130
// FUNCTION: fn_21811
void CGameMode::ReceiveActorMessage32(const unsigned char* packet) {
@ -377,6 +397,8 @@ void CGameMode::ReceiveActorMessage32(const unsigned char* packet) {
actor->SendMsg(nullptr, 32, 0, static_cast<int>(argument), static_cast<int>(argument >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
}
// OFFSET: 0x00D3F3E0
// OFFSET: 0x00D3F760
// FUNCTION: fn_21813
void CGameMode::ReceiveStatusNotice(const unsigned char* packet) {
@ -496,6 +518,8 @@ void CGameMode::ReceiveResultNotice0118(const unsigned char* packet) {
}
}
// OFFSET: 0x00D652E0
// OFFSET: 0x00D65730
// FUNCTION: fn_22001
void CGameMode::ReceiveClanLeave(const unsigned char* packet) {
@ -568,6 +592,13 @@ void CGameMode::ReceiveActorClanName(const unsigned char* data) {
this->nameCard.SetValue3(packet->aid, std::string(packet->name, packet->name + (packet->length - 8)));
}
// OFFSET: 0x00D66840
// FUNCTION: fn_22015
void CGameMode::ReceiveDeferredReset(const unsigned char*) {
g_session.m_options.Set(5, 0);
GetRagConnection().ResetDeferred();
}
// OFFSET: 0x00D66A00
// FUNCTION: fn_22017
void CGameMode::ReceiveClanMemberCount(const unsigned char* data) {
@ -705,6 +736,8 @@ void CGameMode::ReceiveRuneRewardSteps(const unsigned char* data) {
// OFFSET: 0x00D677C0
// OFFSET: 0x00D679E0
// OFFSET: 0x00D686F0
// FUNCTION: fn_22042
void CGameMode::ReceiveGuildEmblemVersion(std::uint32_t aid, int guildId, int emblemVersion) {

View file

@ -238,7 +238,11 @@ public:
/* 5450 */ int unknown_5450;
/* 5454 */ unsigned char unknown_5454[0x14];
/* 5468 */ int unknown_5468;
/* 546C */ unsigned char unknown_546C[0xD0];
/* 546C */ unsigned char unknown_546C[0x34];
/* 54A0 */ int unknown_54A0;
/* 54A4 */ int unknown_54A4;
/* 54A8 */ int unknown_54A8;
/* 54AC */ unsigned char unknown_54AC[0x90];
/* 553C */ std::string m_serverName;
/* 5554 */ unsigned char unknown_5554[4];
/* 5558 */ int unknown_5558;