From 0fe3003bbb73214215edcc3922fc46bdbc764b28 Mon Sep 17 00:00:00 2001 From: ragnarok-clanker Date: Thu, 29 Oct 2026 20:58:47 +0000 Subject: [PATCH] Decompile fn_20144 (CRagEffect::SaintWing) Batch #3216 by Lumen: 0 byte-identical, 1 confirmed by peer review. - fn_20144 CRagEffect::SaintWing: logic confirmed by peer review Peer-reviewed-by: eAthena, meitogi Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes). --- Source/Contents/Effects/RagEffect.cpp | 40 +++++++++++++++++++++++++++ Source/Contents/Effects/RagEffect.h | 5 ++++ 2 files changed, 45 insertions(+) diff --git a/Source/Contents/Effects/RagEffect.cpp b/Source/Contents/Effects/RagEffect.cpp index 59995f67..2816a54d 100644 --- a/Source/Contents/Effects/RagEffect.cpp +++ b/Source/Contents/Effects/RagEffect.cpp @@ -3933,3 +3933,43 @@ void CRagEffect::TexturedSlashLevel(const char* name, char kind) { } } } + + +// OFFSET: 0x00C44940 +// FUNCTION: fn_20144 +void CRagEffect::SaintWing(const char* name) { + this->render.position = this->state.parent->render.position; + if (this->state.stateCnt != 0) { + return; + } + + this->state.unknown_11C84 = &CreateEffectParticle(*this, this->render, 131, 0.0f, 0.0f, 0.0f, WorldObjects())->state; + this->state.unknown_11C84->renderFlag = 5; + this->state.unknown_11C84->duration = this->state.duration; + this->state.unknown_11C84->totalTexture = 1; + AllocateTextures(*this->state.unknown_11C84); + this->state.unknown_11C84->textures[0] = g_texMgr.Load(name, 0, false, true, false); + this->state.unknown_11C84->size = 0.0f; + this->state.unknown_11C84->slots[0].life = 0; + this->state.unknown_11C84->slots[1].life = 0; + this->state.unknown_11C84->slots[2].life = 0; + this->state.unknown_11C84->slots[3].life = 0; + this->state.unknown_11C84->slots[0].life = 1; + this->state.unknown_11C84->slots[0].process = 0; + this->state.unknown_11C84->slots[0].distance = 24.0f; + this->state.unknown_11C84->slots[0].alphaB = 0; + this->state.unknown_11C84->slots[0].height[0] = 0.0f; + this->state.unknown_11C84->slots[0].flag1[0] = 0; + this->state.unknown_11C84->slots[0].flag1[4] = 1; + for (int i = 1; i < 21; ++i) { + this->state.unknown_11C84->slots[0].height[i] = 0.0f; + } +} + +// OFFSET: 0x00C50E30 + +// OFFSET: 0x00C51D80 + +// OFFSET: 0x00C5B940 + +// OFFSET: 0x00C5C450 diff --git a/Source/Contents/Effects/RagEffect.h b/Source/Contents/Effects/RagEffect.h index efc2f2d6..85016625 100644 --- a/Source/Contents/Effects/RagEffect.h +++ b/Source/Contents/Effects/RagEffect.h @@ -112,6 +112,11 @@ struct CRagEffect : CRenderObject { void SMA(char flag); bool JobLvUp50(int angle); void Map_Pika(const char* name); + void SaintWing(const char* name); + void FirstAid(); + void GRANDCROSS2(char flag); + void Magnum2(const char* name); + void Map_MagicZone(const char* name, char type); void POISON(char flag); void Rainbow(const char* name, int unused); void BLIND(char flag);