diff --git a/Source/Contents/Effects/ClimaxEffect.cpp b/Source/Contents/Effects/ClimaxEffect.cpp new file mode 100644 index 00000000..114f9cc2 --- /dev/null +++ b/Source/Contents/Effects/ClimaxEffect.cpp @@ -0,0 +1,7 @@ +#include "Contents/Effects/ClimaxEffect.h" + +// OFFSET: 0x00706840 +CClimaxEffect::CClimaxEffect() : CEffect(-1) { + this->particles[0] = nullptr; + this->particles[1] = nullptr; +} diff --git a/Source/Contents/Effects/ClimaxEffect.h b/Source/Contents/Effects/ClimaxEffect.h new file mode 100644 index 00000000..b516766b --- /dev/null +++ b/Source/Contents/Effects/ClimaxEffect.h @@ -0,0 +1,22 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_CLIMAXEFFECT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_CLIMAXEFFECT_H + +#include "Contents/Effects/Effect.h" + +#include + +class CParticle; + +class CClimaxEffect : public CEffect { +public: + CClimaxEffect(); + + /* 00CC */ CParticle* particles[2]; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CClimaxEffect) == 0xD4); +static_assert(offsetof(CClimaxEffect, particles) == 0xCC); +#endif + +#endif diff --git a/Source/Contents/Effects/Competentia.cpp b/Source/Contents/Effects/Competentia.cpp new file mode 100644 index 00000000..96b77014 --- /dev/null +++ b/Source/Contents/Effects/Competentia.cpp @@ -0,0 +1,11 @@ +#include "Contents/Effects/Competentia.h" + +// OFFSET: 0x00708930 +CCompetentia::CCompetentia() : CEffect(1851) { +} + +// OFFSET: 0x00708CB0 +// FUNCTION: fn_07081 +bool CCompetentia::Slot06() { + return !this->particles.empty(); +} diff --git a/Source/Contents/Effects/Competentia.h b/Source/Contents/Effects/Competentia.h new file mode 100644 index 00000000..62214aad --- /dev/null +++ b/Source/Contents/Effects/Competentia.h @@ -0,0 +1,25 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_COMPETENTIA_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_COMPETENTIA_H + +#include "Contents/Effects/Effect.h" + +#include +#include + +class CParticle; + +class CCompetentia : public CEffect { +public: + CCompetentia(); + + bool Slot06() override; + + /* 00CC */ std::vector particles; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CCompetentia) == 0xD8); +static_assert(offsetof(CCompetentia, particles) == 0xCC); +#endif + +#endif diff --git a/Source/Contents/Effects/CresciveBolt.cpp b/Source/Contents/Effects/CresciveBolt.cpp new file mode 100644 index 00000000..e515c58e --- /dev/null +++ b/Source/Contents/Effects/CresciveBolt.cpp @@ -0,0 +1,5 @@ +#include "Contents/Effects/CresciveBolt.h" + +// OFFSET: 0x0070AAD0 +CCresciveBolt::CCresciveBolt() : CEffect(1951), particle(nullptr) { +} diff --git a/Source/Contents/Effects/CresciveBolt.h b/Source/Contents/Effects/CresciveBolt.h new file mode 100644 index 00000000..29aa58c8 --- /dev/null +++ b/Source/Contents/Effects/CresciveBolt.h @@ -0,0 +1,22 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_CRESCIVEBOLT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_CRESCIVEBOLT_H + +#include "Contents/Effects/Effect.h" + +#include + +class CParticle; + +class CCresciveBolt : public CEffect { +public: + CCresciveBolt(); + + /* 00CC */ CParticle* particle; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CCresciveBolt) == 0xD0); +static_assert(offsetof(CCresciveBolt, particle) == 0xCC); +#endif + +#endif diff --git a/Source/Contents/Effects/JupitelThunderStormEffect.cpp b/Source/Contents/Effects/JupitelThunderStormEffect.cpp new file mode 100644 index 00000000..45145ad1 --- /dev/null +++ b/Source/Contents/Effects/JupitelThunderStormEffect.cpp @@ -0,0 +1,5 @@ +#include "Contents/Effects/JupitelThunderStormEffect.h" + +// OFFSET: 0x00705F80 +CJupitelThunderStormEffect::CJupitelThunderStormEffect() : CEffect(2366), particle(nullptr), step{}, duration(10) { +} diff --git a/Source/Contents/Effects/JupitelThunderStormEffect.h b/Source/Contents/Effects/JupitelThunderStormEffect.h new file mode 100644 index 00000000..8b189d6d --- /dev/null +++ b/Source/Contents/Effects/JupitelThunderStormEffect.h @@ -0,0 +1,28 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_JUPITELTHUNDERSTORMEFFECT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_JUPITELTHUNDERSTORMEFFECT_H + +#include "Contents/Effects/Effect.h" +#include "Utility/Math/Vector3d.h" + +#include +#include + +class CParticle; + +class CJupitelThunderStormEffect : public CEffect { +public: + CJupitelThunderStormEffect(); + + /* 00CC */ CParticle* particle; + /* 00D0 */ std::vector particles; + /* 00DC */ vector3d step; + /* 00E8 */ int duration; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CJupitelThunderStormEffect) == 0xEC); +static_assert(offsetof(CJupitelThunderStormEffect, particles) == 0xD0); +static_assert(offsetof(CJupitelThunderStormEffect, duration) == 0xE8); +#endif + +#endif diff --git a/Source/Contents/Effects/MeteorEffect.cpp b/Source/Contents/Effects/MeteorEffect.cpp new file mode 100644 index 00000000..df430a10 --- /dev/null +++ b/Source/Contents/Effects/MeteorEffect.cpp @@ -0,0 +1,7 @@ +#include "Contents/Effects/SkillEffects.h" + +// OFFSET: 0x00707B40 +// FUNCTION: fn_07057 +bool CMeteorEffect::Slot06() { + return !this->unknown_00CC.empty(); +} diff --git a/Source/Contents/Effects/NyanggrassEffect.cpp b/Source/Contents/Effects/NyanggrassEffect.cpp new file mode 100644 index 00000000..201931fd --- /dev/null +++ b/Source/Contents/Effects/NyanggrassEffect.cpp @@ -0,0 +1,5 @@ +#include "Contents/Effects/NyanggrassEffect.h" + +// OFFSET: 0x00708260 +CNyanggrassEffect::CNyanggrassEffect() : CEffect(-1), unknown_00D8(0) { +} diff --git a/Source/Contents/Effects/NyanggrassEffect.h b/Source/Contents/Effects/NyanggrassEffect.h new file mode 100644 index 00000000..29a74a20 --- /dev/null +++ b/Source/Contents/Effects/NyanggrassEffect.h @@ -0,0 +1,24 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_NYANGGRASSEFFECT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_NYANGGRASSEFFECT_H + +#include "Contents/Effects/Effect.h" + +#include +#include + +class CParticle; + +class CNyanggrassEffect : public CEffect { +public: + CNyanggrassEffect(); + + /* 00CC */ std::vector particles; + /* 00D8 */ int unknown_00D8; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CNyanggrassEffect) == 0xDC); +static_assert(offsetof(CNyanggrassEffect, unknown_00D8) == 0xD8); +#endif + +#endif diff --git a/Source/Contents/Effects/PowderingEffect.cpp b/Source/Contents/Effects/PowderingEffect.cpp new file mode 100644 index 00000000..07468f45 --- /dev/null +++ b/Source/Contents/Effects/PowderingEffect.cpp @@ -0,0 +1,12 @@ +#include "Contents/Effects/PowderingEffect.h" + +// OFFSET: 0x00708E70 +CPowderingEffect::CPowderingEffect() : CEffect(-1), unknown_00E4(0) { +} + +// OFFSET: 0x00709690 +void CPowderingEffect::Slot12() { + if (this->id == 1104) { + this->AddEvent(0, "effect\\su_cn_powdering.wav", 0, 0); + } +} diff --git a/Source/Contents/Effects/PowderingEffect.h b/Source/Contents/Effects/PowderingEffect.h new file mode 100644 index 00000000..c95b6fad --- /dev/null +++ b/Source/Contents/Effects/PowderingEffect.h @@ -0,0 +1,28 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_POWDERINGEFFECT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_POWDERINGEFFECT_H + +#include "Contents/Effects/Effect.h" + +#include +#include + +class CParticle; + +class CPowderingEffect : public CEffect { +public: + CPowderingEffect(); + + void Slot12() override; + + /* 00CC */ std::vector smokeParticles; + /* 00D8 */ std::vector spriteParticles; + /* 00E4 */ int unknown_00E4; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CPowderingEffect) == 0xE8); +static_assert(offsetof(CPowderingEffect, spriteParticles) == 0xD8); +static_assert(offsetof(CPowderingEffect, unknown_00E4) == 0xE4); +#endif + +#endif diff --git a/Source/Contents/Effects/RectUpEffect.cpp b/Source/Contents/Effects/RectUpEffect.cpp new file mode 100644 index 00000000..25275bc7 --- /dev/null +++ b/Source/Contents/Effects/RectUpEffect.cpp @@ -0,0 +1,12 @@ +#include "Contents/Effects/RectUpEffect.h" + +// OFFSET: 0x00709F50 +CRectUpEffect::CRectUpEffect() : CEffect(1088), unknown_00CC{} { +} + +// OFFSET: 0x0070A410 +void CRectUpEffect::Slot12() { + if (this->id == 1088) { + this->AddEvent(0, "effect\\EF_FireWall.wav", 0, 0); + } +} diff --git a/Source/Contents/Effects/RectUpEffect.h b/Source/Contents/Effects/RectUpEffect.h new file mode 100644 index 00000000..90a30870 --- /dev/null +++ b/Source/Contents/Effects/RectUpEffect.h @@ -0,0 +1,29 @@ +#ifndef RAGNAROK_SOURCE_CONTENTS_EFFECTS_RECTUPEFFECT_H +#define RAGNAROK_SOURCE_CONTENTS_EFFECTS_RECTUPEFFECT_H + +#include "Contents/Effects/Effect.h" +#include "Utility/Math/Vector3d.h" + +#include +#include + +class CParticle; + +class CRectUpEffect : public CEffect { +public: + CRectUpEffect(); + + void Slot12() override; + + /* 00CC */ vector3d unknown_00CC[2]; + /* 00E4 */ int unknown_00E4; + /* 00E8 */ std::vector particles; +}; + +#if defined(_WIN32) && !defined(_WIN64) +static_assert(sizeof(CRectUpEffect) == 0xF4); +static_assert(offsetof(CRectUpEffect, unknown_00E4) == 0xE4); +static_assert(offsetof(CRectUpEffect, particles) == 0xE8); +#endif + +#endif diff --git a/data/compile.json b/data/compile.json index e49a068b..c6aa782d 100644 --- a/data/compile.json +++ b/data/compile.json @@ -312,6 +312,9 @@ "Source/Contents/Effects/AxeBoomerang.cpp": 4, "Source/Contents/Effects/BlastForge.cpp": 4, "Source/Contents/Effects/CaneOfEvilEyeEffect.cpp": 4, + "Source/Contents/Effects/ClimaxEffect.cpp": 4, + "Source/Contents/Effects/Competentia.cpp": 4, + "Source/Contents/Effects/CresciveBolt.cpp": 4, "Source/Contents/Effects/Effect.cpp": 0, "Source/Contents/Effects/EffectActor.cpp": 4, "Source/Contents/Effects/EffectAttachments.cpp": 4, @@ -326,13 +329,18 @@ "Source/Contents/Effects/EffectPrimitiveState.cpp": 4, "Source/Contents/Effects/EffectTypes.cpp": 4, "Source/Contents/Effects/EffectVisibility.cpp": 4, + "Source/Contents/Effects/JupitelThunderStormEffect.cpp": 4, + "Source/Contents/Effects/MeteorEffect.cpp": 4, "Source/Contents/Effects/MonsterSkillEffects.cpp": 4, + "Source/Contents/Effects/NyanggrassEffect.cpp": 4, "Source/Contents/Effects/Particle.cpp": 4, "Source/Contents/Effects/ParticlePool.cpp": 4, "Source/Contents/Effects/PartyEffect.cpp": 4, "Source/Contents/Effects/PartyMemberEffects.cpp": 4, + "Source/Contents/Effects/PowderingEffect.cpp": 4, "Source/Contents/Effects/RagEffect.cpp": 4, "Source/Contents/Effects/RagEffectInitialization.cpp": 4, + "Source/Contents/Effects/RectUpEffect.cpp": 4, "Source/Contents/EmblemCacheRaw.cpp": 4, "Source/Contents/Emblems/EmblemCache.cpp": 2, "Source/Contents/Emblems/EmblemDataDownloadAsyncWork.cpp": 4,