Decompile 5 functions in Source/Contents/Effects/MonsterSkillEffects.cpp

Batch #11457 by Yommy: 0 byte-identical, 5 confirmed by peer review.

- fn_07124 CCrimsonArrowEffect::Slot03: logic confirmed by peer review
- fn_07132 CRootTwistEffect::Slot03: logic confirmed by peer review
- fn_07144 CSpriteMableEffect::Slot01: logic confirmed by peer review
- fn_07211 CEternalSlashAttackEffect::Slot03: logic confirmed by peer review
- fn_07218 CEternalSlashCountEffect::Slot03: logic confirmed by peer review

Peer-reviewed-by: dori, cremane, StrawberrysherbetIX
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-11-05 03:06:02 +00:00
commit afe3ed4526

View file

@ -86,11 +86,10 @@ void CCrimsonArrowEffect::Slot03() {
return;
}
CEZ2STRParticle* particle = AsParticle(this->emitter);
particle->position.x = this->position[0] + this->emitter->offset.x;
particle->position.y = this->position[1] + this->emitter->offset.y;
particle->position.z = this->position[2] + this->emitter->offset.z;
particle->Process(0.0f, 0.0f, 0.0f);
EZ2STREmitter* emitter = this->emitter;
const vector3d position = {emitter->offset.x + this->position[0], emitter->offset.y + this->position[1], emitter->offset.z + this->position[2]};
emitter->position = position;
AsParticle(this->emitter)->Process(0.0f, 0.0f, 0.0f);
}
// OFFSET: 0x0070C120
@ -119,11 +118,10 @@ bool CRootTwistEffect::Slot06() {
// FUNCTION: fn_07132
void CRootTwistEffect::Slot03() {
for (auto it = this->emitters.begin(); it != this->emitters.end(); ++it) {
const vector3d position = {this->position[0] + 0.0f, this->position[1] + 3.0f, this->position[2] + 0.0f};
EZ2STREmitter* emitter = *it;
++emitter->elapsed;
emitter->position.x = this->position[0] + 0.0f;
emitter->position.y = this->position[1] + 3.0f;
emitter->position.z = this->position[2] + 0.0f;
emitter->position = position;
}
}
@ -317,12 +315,14 @@ CSpriteMableEffect::CSpriteMableEffect() : CEffect(1096) {
// FUNCTION: fn_07144
void CSpriteMableEffect::Slot01() {
for (int i = 0; i < 3; ++i) {
CSpriteParticle* particle =
static_cast<CSpriteParticle*>(CreateSpriteParticle(reinterpret_cast<const vector3d*>(this->position), 1));
if (!particle) {
EZ2STREmitter* emitter =
reinterpret_cast<EZ2STREmitter*>(CreateSpriteParticle(reinterpret_cast<const vector3d*>(this->position), 1));
if (!emitter) {
continue;
}
CSpriteParticle* particle = AsSprite(emitter);
particle->unknown_0004 = this->id;
particle->unknown_000C = i;
particle->unknown_0010 = 0;
@ -348,7 +348,7 @@ void CSpriteMableEffect::Slot01() {
}
this->unknown_002C = 9999;
this->emitters.push_back(reinterpret_cast<EZ2STREmitter*>(particle));
this->emitters.push_back(emitter);
}
}
@ -805,11 +805,9 @@ void CEternalSlashAttackEffect::Slot03() {
continue;
}
CEZ2STRParticle* particle = AsParticle(emitter);
particle->position.x = this->position[0] + emitter->offset.x;
particle->position.y = this->position[1] + emitter->offset.y;
particle->position.z = this->position[2] + emitter->offset.z;
particle->Process(0.0f, 0.0f, 0.0f);
const vector3d position = {this->position[0] + emitter->offset.x, this->position[1] + emitter->offset.y, this->position[2] + emitter->offset.z};
emitter->position = position;
AsParticle(emitter)->Process(0.0f, 0.0f, 0.0f);
}
}
@ -870,11 +868,10 @@ void CEternalSlashCountEffect::Slot03() {
return;
}
CEZ2STRParticle* particle = AsParticle(this->emitter);
particle->position.x = this->position[0] + this->emitter->offset.x;
particle->position.y = this->position[1] + this->emitter->offset.y;
particle->position.z = this->position[2] + this->emitter->offset.z;
particle->Process(0.0f, 0.0f, 0.0f);
EZ2STREmitter* emitter = this->emitter;
const vector3d position = {emitter->offset.x + this->position[0], emitter->offset.y + this->position[1], emitter->offset.z + this->position[2]};
emitter->position = position;
AsParticle(this->emitter)->Process(0.0f, 0.0f, 0.0f);
}
// OFFSET: 0x007113F0