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).
This commit is contained in:
ragnarok-clanker 2026-10-31 03:22:35 +00:00
commit dfdd4fbf2f
3 changed files with 53 additions and 0 deletions

View file

@ -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<CGameMode*>(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);
}
}

View file

@ -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() {

View file

@ -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<EZ2STREmitter*> emitters;
/* 00D8 */ int unknown_00D8;