From dfdd4fbf2f7db583c88f648712dacd77bbe24579 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Sat, 31 Oct 2026 03:22:35 +0000 Subject: [PATCH] Decompile 6 functions in Source/Contents/Configuration/ServiceOptions.cpp, Source/Contents/Effects/MonsterSkillEffects.cpp, ... Batch #7031 by Lumen: 2 byte-identical, 4 confirmed by peer review. - fn_45463 RequestModeAction48: logic confirmed by peer review - fn_45464 RequestModeAction61: logic confirmed by peer review - fn_45465 NotifyGameModeOptionFirst: logic confirmed by peer review - fn_45462 RequestPlayerAction31: logic confirmed by peer review - fn_07176 CCurseOfCubeEffect::Restart: byte-identical - fn_07177 CCurseOfCubeEffect::Slot01: byte-identical Peer-reviewed-by: ragnarok-clanker, alisonrag, KWDev Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- .../Contents/Configuration/ServiceOptions.cpp | 33 +++++++++++++++++++ .../Contents/Effects/MonsterSkillEffects.cpp | 18 ++++++++++ Source/Contents/Effects/MonsterSkillEffects.h | 2 ++ 3 files changed, 53 insertions(+) diff --git a/Source/Contents/Configuration/ServiceOptions.cpp b/Source/Contents/Configuration/ServiceOptions.cpp index 3b357065..74f9903e 100644 --- a/Source/Contents/Configuration/ServiceOptions.cpp +++ b/Source/Contents/Configuration/ServiceOptions.cpp @@ -955,3 +955,36 @@ void ApplyServiceOptionJitterScale(int id, unsigned char value, bool notify, int g_serviceOptionJitterScale = g_jitterDistanceScale; } } + +// OFFSET: 0x006C45D0 +// FUNCTION: fn_45463 +void RequestModeAction48() { + if (CMode* mode = g_modeMgr.GetGameMode()) { + mode->SendMsg(0x30, 0, 0, 0, 0); + } +} + +// OFFSET: 0x006C5A60 +// FUNCTION: fn_45464 +void RequestModeAction61() { + if (CMode* mode = g_modeMgr.GetGameMode()) { + mode->SendMsg(0x3D, 0, 0, 0, 0); + } +} + +// OFFSET: 0x006C6020 +// FUNCTION: fn_45465 +void NotifyGameModeOptionFirst() { + if (CMode* mode = g_modeMgr.GetGameMode()) { + mode->SendMsg(0x11F, 1, 0, 0, 0); + } +} + +// OFFSET: 0x006C62C0 +// FUNCTION: fn_45462 +void RequestPlayerAction31() { + CGameMode* mode = static_cast(g_modeMgr.GetGameMode()); + if (CPlayer* player = mode->scene->player) { + player->SendMsg(nullptr, 0x1F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); + } +} diff --git a/Source/Contents/Effects/MonsterSkillEffects.cpp b/Source/Contents/Effects/MonsterSkillEffects.cpp index 4568c19b..50acafcc 100644 --- a/Source/Contents/Effects/MonsterSkillEffects.cpp +++ b/Source/Contents/Effects/MonsterSkillEffects.cpp @@ -543,6 +543,24 @@ CCurseOfCubeEffect::CCurseOfCubeEffect() : CEffect(-1), unknown_00D8(0), unknown_00DC(0), unknown_00E0(-10.0f), unknown_00E4(0) { } +// OFFSET: 0x0070EB10 +// FUNCTION: fn_07176 +void CCurseOfCubeEffect::Restart() { + this->Close(); + this->SpawnShock(); + this->unknown_00D8 = 3; +} + +// OFFSET: 0x0070EB30 +// FUNCTION: fn_07177 +void CCurseOfCubeEffect::Slot01() { + this->retained = 1; + this->SpawnStart(); + if (!this->emitters.empty()) { + this->unknown_00D8 = 1; + } +} + // OFFSET: 0x0070EB60 // FUNCTION: fn_07178 bool CCurseOfCubeEffect::Slot06() { diff --git a/Source/Contents/Effects/MonsterSkillEffects.h b/Source/Contents/Effects/MonsterSkillEffects.h index 4d512e1a..26239b3f 100644 --- a/Source/Contents/Effects/MonsterSkillEffects.h +++ b/Source/Contents/Effects/MonsterSkillEffects.h @@ -87,6 +87,7 @@ public: class CCurseOfCubeEffect : public CEffect { public: CCurseOfCubeEffect(); + void Slot01() override; void Slot03() override; void Slot04() override; bool Slot06() override; @@ -94,6 +95,7 @@ public: virtual void SpawnStart(); virtual void SpawnLoop(); virtual void SpawnShock(); + void Restart(); /* 00CC */ std::vector emitters; /* 00D8 */ int unknown_00D8;