From da05180c034ae7dcae3ef5945e88cb3045e73023 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 29 Oct 2026 23:41:51 +0000 Subject: [PATCH] Decompile 2 functions in Source/Contents/Effects/MonsterSkillEffects.cpp, Source/Contents/Effects/MonsterSkillEffects.h, ... Batch #3855 by superintelligence: 1 byte-identical, 1 confirmed by peer review. - fn_07130 CRootTwistEffect::Slot12: logic confirmed by peer review - fn_07137 CSprArrowEffect::Slot06: byte-identical Peer-reviewed-by: meitogi, alisonrag, superintelligence Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- .../Contents/Effects/MonsterSkillEffects.cpp | 35 +++++++++++++------ Source/Contents/Effects/MonsterSkillEffects.h | 1 + Source/Contents/Effects/SkillEffects.h | 2 +- 3 files changed, 27 insertions(+), 11 deletions(-) diff --git a/Source/Contents/Effects/MonsterSkillEffects.cpp b/Source/Contents/Effects/MonsterSkillEffects.cpp index f9a31cc6..f147747e 100644 --- a/Source/Contents/Effects/MonsterSkillEffects.cpp +++ b/Source/Contents/Effects/MonsterSkillEffects.cpp @@ -5,6 +5,7 @@ #include "Contents/Camera/Camera.h" #include "Contents/Configuration/ServiceOptions.h" #include "Contents/Effects/EffectActor.h" +#include "Contents/Effects/GravityControlEffect.h" #include "Contents/Effects/Particle.h" #include "Contents/Effects/SkillEffects.h" #include "Contents/Effects/SpriteParticle.h" @@ -69,6 +70,12 @@ void CCrimsonArrowEffect::Slot04() { } // OFFSET: 0x0070C3B0 +// FUNCTION: fn_07130 +void CRootTwistEffect::Slot12() { + if (this->id == 1110) { + this->AddEvent(0, "effect\\su_roottwist.wav", 0, 0); + } +} // OFFSET: 0x0070C3D0 // FUNCTION: fn_07131 @@ -87,6 +94,10 @@ void CRootTwistEffect::Slot04() { } // OFFSET: 0x0070C7F0 +// FUNCTION: fn_07137 +bool CSprArrowEffect::Slot06() { + return this->unknown_00FD; +} // OFFSET: 0x0070CB80 // FUNCTION: fn_07139 @@ -107,6 +118,8 @@ bool CSpriteMableEffect::Slot06() { return this->ActorExists(); } +// OFFSET: 0x0070D2C0 + // OFFSET: 0x0070D300 // FUNCTION: fn_07148 CStemSpearEffect::CStemSpearEffect() : CEffect(1100) { @@ -126,7 +139,7 @@ bool CStemSpearEffect::Slot06() { // OFFSET: 0x0070D850 // FUNCTION: fn_07156 -CSvgSpiritEffect::CSvgSpiritEffect() : CEffect(1128) { +CSvgSpiritEffect::CSvgSpiritEffect() : CEffect(1128), emitter(nullptr) { } // OFFSET: 0x0070D690 @@ -240,8 +253,8 @@ void CCylinderEffect::Slot04() { } const int texPart = particle->unknown_000C; - const ParticleQuad quad = {false, 0.0f, static_cast(texPart + 1) / 21.0, 1.0f, - static_cast(texPart) / 21.0, false, true}; + const ParticleQuad quad = {false, 0.0f, 1.0f, static_cast(texPart / 21.0), + static_cast((texPart + 1) / 21.0), false, true}; particle->Render(quad); } } @@ -384,11 +397,11 @@ void CFallenAngelEffect::Slot03() { const float dz = this->unknown_00D8 - this->position[2]; const float speed = 1.0f / SquareRoot(dx * dx + dz * dz); - AsParticle(emitter)->Process(0.0f, -80.0f, 0.0f); - - emitter->position.x = start.x + dx * speed * 0.9f; + emitter->position.x = start.x + dx * speed * 0.09f; emitter->position.y = start.y; - emitter->position.z = start.z + dz * speed * 0.9f; + emitter->position.z = start.z + dz * speed * 0.09f; + + AsParticle(emitter)->Process(0.0f, -80.0f, 0.0f); emitter->elapsed++; } @@ -598,6 +611,8 @@ void CGaleStorm::Slot04() { } } +// OFFSET: 0x007183F0 + // OFFSET: 0x007184D0 CHawkVumerangEffect::CHawkVumerangEffect() : CEffect(1968), @@ -696,7 +711,7 @@ void CJupitelThunderHit::Slot04() { // OFFSET: 0x0071CCB0 // FUNCTION: fn_07327 -CNewCloudKillEffect::CNewCloudKillEffect() : CEffect(1196) { +CNewCloudKillEffect::CNewCloudKillEffect() : CEffect(1196), unknown_00F4(0), unknown_00F8(0) { } // OFFSET: 0x0071DEC0 @@ -832,8 +847,8 @@ void CRandomOptEffect::Slot04() { continue; } - const ParticleQuad quad = {false, 0.0f, static_cast(texPart) / 21.0f, 1.0f, - static_cast(texPart - 1) / 21.0f, false, true}; + const ParticleQuad quad = {false, 0.0f, 1.0f, static_cast(texPart - 1) / 21.0f, + static_cast(texPart) / 21.0f, false, true}; particle->Render(quad); } } diff --git a/Source/Contents/Effects/MonsterSkillEffects.h b/Source/Contents/Effects/MonsterSkillEffects.h index 499c992e..efa9f84c 100644 --- a/Source/Contents/Effects/MonsterSkillEffects.h +++ b/Source/Contents/Effects/MonsterSkillEffects.h @@ -32,6 +32,7 @@ public: class CSpriteMableEffect : public CEffect { public: CSpriteMableEffect(); + void Slot04() override; bool Slot06() override; /* 00CC */ std::vector emitters; diff --git a/Source/Contents/Effects/SkillEffects.h b/Source/Contents/Effects/SkillEffects.h index de10d582..3e6c825c 100644 --- a/Source/Contents/Effects/SkillEffects.h +++ b/Source/Contents/Effects/SkillEffects.h @@ -66,7 +66,7 @@ public: /* 00F4 */ int unknown_00F4; /* 00F8 */ int unknown_00F8; /* 00FC */ unsigned char unknown_00FC; - /* 00FD */ unsigned char unknown_00FD; + /* 00FD */ bool unknown_00FD; }; #if defined(_WIN32) && !defined(_WIN64)