rodecomp/Source/Contents/Effects/HealSpEffect.cpp
ragnarok-clanker a27af80412 Decompile 12 functions in Source/Contents/Effects/EffectPoint.h, Source/Contents/Effects/HealSpEffect.cpp, ...
Batch #4342 by youko: 0 byte-identical, 12 confirmed by peer review.

- fn_18905 CHealSp::Slot04: logic confirmed by peer review
- fn_18906 CLevel150Effect::CLevel150Effect: logic confirmed by peer review
- fn_18908 CLevel150Effect::Slot10: logic confirmed by peer review
- fn_18909 CLevel150Effect::Slot08: logic confirmed by peer review
- fn_18911 CLevel150Effect::AddShock: logic confirmed by peer review
- fn_18912 CLevel150Effect::Close: logic confirmed by peer review
- fn_18917 CLevel150SubEffect::CLevel150SubEffect: logic confirmed by peer review
- fn_18919 CLevel150SubEffect::Slot10: logic confirmed by peer review
- fn_18920 CLevel150SubEffect::Slot08: logic confirmed by peer review
- fn_18922 CLevel150SubEffect::Close: logic confirmed by peer review
- fn_18927 CMagicFloorEffect::CMagicFloorEffect: logic confirmed by peer review
- fn_18931 CMagicFloorEffect::Close: logic confirmed by peer review

Peer-reviewed-by: eAthena, superintelligence, OrangeCat
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-30 02:13:17 +00:00

42 lines
1.6 KiB
C++

#include "Contents/Effects/HealSpEffect.h"
#include "Contents/Effects/Particle.h"
#include "Contents/Effects/SpriteParticle.h"
#include "Utility/Math/AffineMatrix.h"
// OFFSET: 0x00B46230
// FUNCTION: fn_18905
void CHealSp::Slot04() {
for (std::vector<CParticle*>::iterator it = this->particles.begin(); it != this->particles.end(); ++it) {
CParticle* particle = *it;
const int segment = particle->unknown_000C;
const float height = particle->scale;
const float outer = *reinterpret_cast<const float*>(particle->unknown_0058);
const float inner = particle->unknown_0054;
const float startCos = g_cosTable[segment * 36];
const float startSin = g_sinTable[segment * 36];
const float endCos = g_cosTable[segment * 36 + 36];
const float endSin = g_sinTable[segment * 36 + 36];
particle->vertices[0].x = startCos * outer;
particle->vertices[0].y = 0.0f;
particle->vertices[0].z = startSin * outer;
particle->vertices[1].x = endCos * outer;
particle->vertices[1].y = 0.0f;
particle->vertices[1].z = endSin * outer;
particle->vertices[2].x = startCos * inner;
particle->vertices[2].y = -height;
particle->vertices[2].z = startSin * inner;
particle->vertices[3].x = endCos * inner;
particle->vertices[3].y = -height;
particle->vertices[3].z = endSin * inner;
const float left = static_cast<float>(particle->unknown_000C % 4) * 0.25f;
const ParticleQuad quad = {false, 1.0f, 0.0f, left, left + 0.25f, false, true};
particle->Render(quad);
}
for (std::list<CSpriteParticle*>::iterator it = this->sprites.begin(); it != this->sprites.end(); ++it) {
(*it)->sub_B40F30(1);
}
}