Decompile fn_19039 (CEZ2STRScreenEffect::Slot01)

Batch #7182 by Landruca: 0 byte-identical, 1 confirmed by peer review.

- fn_19039 CEZ2STRScreenEffect::Slot01: logic confirmed by peer review

Peer-reviewed-by: eAthena, Lumen
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 04:40:34 +00:00
commit ede428a515
2 changed files with 178 additions and 0 deletions

View file

@ -5,7 +5,9 @@
#include "Contents/Actors/GameActor.h"
#include "Contents/Actors/RenderObject.h"
#include "Contents/Camera/Camera.h"
#include "Contents/Effects/EffectLists.h"
#include "Contents/Effects/EffectMemoryMgr.h"
#include "Contents/Effects/EffectTypes.h"
#include "Contents/Skills/ClientSkills.h"
#include "Contents/Sound/SoundMgr.h"
#include "Contents/World/World.h"
@ -13,6 +15,7 @@
#include "Render/ScreenRectangle.h"
#include "Render/TextureQuad.h"
#include "Script/LuaScript.h"
#include "Utility/Text/FormatString.h"
#include <string>
@ -1811,3 +1814,177 @@ int CEZ2STRScreenEffect::Slot28() {
}
// OFFSET: 0x00B52980
// FUNCTION: fn_19039
void CEZ2STRScreenEffect::Slot01() {
CEZ2STRParticle* particle = static_cast<CEZ2STRParticle*>(
CreateEZ2STRParticle(reinterpret_cast<const vector3d*>(this->position), 5)
);
if (!particle) {
return;
}
particle->m_actorId = this->actor;
if (this->unknown_00C8 == 1) {
this->retained = 1;
particle->m_loop = true;
bool adjustSize = false;
g_luaScript->Call("IsAdjustSizeWhenShrinkState", "d>b", this->id - 0x9B5, &adjustSize);
particle->m_followActor = adjustSize;
bool adjustPosition = false;
g_luaScript->Call("IsAdjustPositionWhenShrinkState", "d>b", this->id - 0x9B5, &adjustPosition);
this->fadePulse = adjustPosition;
}
switch (this->id) {
case 0x3E6:
case 0x442:
case 0x45F:
case 0x470:
case 0x473:
case 0x4C5:
case 0x4DC:
case 0x4DD:
case 0x4DE:
case 0x4DF:
case 0x4E0:
case 0x4E1:
case 0x4E2:
case 0x4E3:
case 0x4E4:
case 0x4E5:
case 0x4EE:
case 0x4EF:
case 0x4F0:
case 0x4F1:
particle->m_loop = true;
break;
case 0x552:
case 0x584:
case 0x5A6:
case 0x607:
case 0x63F:
case 0x64B:
case 0x64C:
case 0x64D:
case 0x64E:
case 0x64F:
case 0x650:
case 0x676:
case 0x6AE:
case 0x6BE:
case 0x6BF:
case 0x6CD:
case 0x6D7:
case 0x6EB:
case 0x6F1:
case 0x701:
case 0x702:
case 0x703:
case 0x712:
case 0x719:
case 0x72F:
case 0x73C:
case 0x73D:
case 0x752:
case 0x756:
case 0x75A:
case 0x765:
case 0x766:
case 0x76C:
case 0x77F:
case 0x7AA:
case 0x7B7:
case 0x7BA:
case 0x7BD:
case 0x7BE:
case 0x7C1:
case 0x7C7:
case 0x7D2:
case 0x7EF:
case 0x7F9:
case 0x7FA:
case 0x803:
case 0x804:
case 0x807:
case 0x808:
case 0x80C:
case 0x81E:
case 0x81F:
case 0x84E:
case 0x851:
case 0x852:
case 0x876:
case 0x881:
case 0x886:
case 0x8A2:
case 0x8A3:
case 0x8AA:
case 0x8AB:
case 0x8B2:
case 0x8B3:
case 0x8BA:
case 0x8BB:
case 0x8DC:
case 0x8DD:
case 0x8DE:
case 0x8E1:
case 0x8E8:
case 0x8FE:
case 0x948:
case 0x949:
case 0x94A:
case 0x94B:
case 0x94C:
case 0x94D:
case 0x94F:
case 0x950:
case 0x951:
case 0x952:
case 0x953:
case 0x954:
case 0x955:
case 0x963:
this->retained = 1;
particle->m_loop = true;
break;
case 0x6EC:
this->AddEvent(0, "effect\\AG_MYSTERY_ILLUSION.wav", 0, 0);
this->retained = 1;
particle->m_loop = true;
break;
case 0x6F0:
this->AddEvent(0, "effect\\AG_TORNADO_STORM.wav", 0, 0);
this->retained = 1;
particle->m_loop = true;
break;
case 0x710:
this->AddEvent(0, "effect\\CD_MEDIALE_VOTUM.wav", 0, 0);
break;
default:
break;
}
if (this->unknown_00C4 > 0) {
particle->m_loop = true;
}
InitParticleQuad(particle->vertices);
this->particle = particle;
this->Slot34(particle, this->id);
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
this->cameraAngle = static_cast<double>(mode->camera->camera.yaw);
if (this->id >= 0x9B5) {
g_luaScript->Call("IsAttachedToHead", "d>b", this->id - 0x9B5, &this->jobScaled);
}
}
// OFFSET: 0x00B531E0

View file

@ -20,6 +20,7 @@ public:
void Slot04() override;
void Close() override;
bool Slot06() override;
void Slot12() override;
void Slot13(int argument) override;
void Slot14(int argument) override;
void Slot15(int argument) override;