Decompile 3 functions in Source/Contents/Skills/SkillInfo.cpp, Source/Contents/Skills/SkillInfo.h

Batch #1771 by Yommy: 3 byte-identical, 0 confirmed by peer review.

- fn_08371 CSkillAction_ABC_CHASING_BREAK::Slot07: byte-identical
- fn_08375 CSkillAction_ABC_CHASING_SHOT::Slot07: byte-identical
- fn_08385 CSkillAction_ABC_ABYSS_FLAME_ATK::Slot03: byte-identical

Merged automatically: every function is byte-identical to the original.
This commit is contained in:
ragnarok-clanker 2026-10-28 22:12:16 +00:00
commit be749d87c8
2 changed files with 214 additions and 2 deletions

View file

@ -1,11 +1,83 @@
#include "Client/Mode/ActiveGameMode.h"
#include "Client/Mode/CGameMode.h"
#include "Contents/Actors/GameActor.h"
#include "Contents/Configuration/ServiceOptions.h"
#include "Contents/Effects/EffectActor.h"
#include "Contents/Effects/EffectLists.h"
#include "Contents/Effects/EffectPrimitiveState.h"
#include "Contents/MessageTable.h"
#include "Contents/Skills/SkillId.h"
#include "Contents/Skills/SkillInfo.h"
#include "Contents/Sound/SoundMgr.h"
#include "Contents/UserData/NormalItemSlots.h"
#include "Contents/World/WorldScene.h"
#include "Resource/World/TerrainResource.h"
#include "Script/LuaScript.h"
#include <cstdlib>
#include <cstring>
#include <memory>
class CEfstAction_ChangeSize : public CEfstAction {
public:
void Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) override;
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
};
class CEfstAction_GenderChange : public CEfstAction {
public:
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
};
class CEfstAction_ShowEffect : public CEfstAction {
public:
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
};
class CSkillAction_RA_UNLIMIT : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
};
class CEfstAction_UNLIMIT : public CEfstAction {
public:
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
};
class CEfstAction_SHADOW_WEAPON : public CEfstAction {
public:
EfstActionMessage Slot03() override;
EfstActionMessage Slot04() override;
};
class CEfstAction_DANCING_KNIFE : public CEfstAction {
public:
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
};
class CEfstAction_SHADOW_EXCEED : public CEfstAction {
public:
void Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) override;
void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) override;
EfstActionMessage Slot03() override;
EfstActionMessage Slot04() override;
};
class CSkillAction_ABC_CHASING_BREAK : public CSkillAction {
public:
bool Slot07() override;
};
class CSkillAction_ABC_CHASING_SHOT : public CSkillAction {
public:
bool Slot07() override;
};
class CSkillAction_ABC_ABYSS_FLAME_ATK : public CSkillAction {
public:
bool Slot03(int argument) override;
};
// GLOBAL: gl_24640
CSkillActionMgr* g_skillActionMgr;
@ -405,3 +477,65 @@ bool ShowsCastEffect(int skillId) {
return true;
}
}
// OFFSET: 0x007747B0
// OFFSET: 0x007747E0
// OFFSET: 0x00774E20
// OFFSET: 0x00774F30
// OFFSET: 0x00774FB0
// OFFSET: 0x007756D0
// OFFSET: 0x007764E0
// OFFSET: 0x00776510
// OFFSET: 0x00777910
// OFFSET: 0x00777E80
// OFFSET: 0x00777EE0
// OFFSET: 0x00777F00
// OFFSET: 0x00777F30
// OFFSET: 0x00778140
// FUNCTION: fn_08371
bool CSkillAction_ABC_CHASING_BREAK::Slot07() {
return true;
}
// OFFSET: 0x00778580
// FUNCTION: fn_08375
bool CSkillAction_ABC_CHASING_SHOT::Slot07() {
return true;
}
// OFFSET: 0x007794D0
// FUNCTION: fn_08385
bool CSkillAction_ABC_ABYSS_FLAME_ATK::Slot03(int argument) {
return true;
}
// OFFSET: 0x0077ACC0
// OFFSET: 0x0077AD90
// OFFSET: 0x0077AEA0
// OFFSET: 0x0077AF80
// OFFSET: 0x0077B060
// OFFSET: 0x0077B210
// OFFSET: 0x0077B2E0
// OFFSET: 0x0077B3A0
// OFFSET: 0x0077B460

View file

@ -6,16 +6,83 @@
#include <functional>
#include <map>
#include <new>
#include <utility>
#include <vector>
class CEfstAction;
class CGameActor;
class CRenderObject;
class CSkillObjectAction;
class LuaScript;
struct EffectVector3;
struct NormalItemSlot;
struct EfstActionMessage {
/* 0000 */ const char* text;
/* 0004 */ std::uint32_t color;
};
class CSkillAction {
public:
virtual bool Slot00() = 0;
virtual bool Slot00() {
return false;
}
virtual int Slot01() {
return 8;
}
virtual int Slot02() {
return 7;
}
virtual bool Slot03(int argument) {
return false;
}
virtual bool Slot04() {
return false;
}
virtual bool Slot05() {
return false;
}
virtual bool Slot06() {
return false;
}
virtual bool Slot07() {
return false;
}
virtual void Slot08(int level, CGameActor* source) {
}
virtual void Slot09(int argument1, int argument2, int argument3) {
}
virtual void Slot10(int argument1, int argument2, int argument3, int argument4, int argument5) {
}
virtual void Slot11(int level, CGameActor* source, CGameActor* target) {
}
virtual void Slot12(int argument1, int argument2, int argument3, int argument4, int argument5) {
}
virtual bool Slot13() {
return false;
}
virtual int Slot14() {
return 0;
}
virtual void Slot15(int level, CGameActor* source, CGameActor* target) {
}
virtual void Slot16(int level, CGameActor* source, CGameActor* target) {
}
};
class CEfstAction {
public:
virtual void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
}
virtual void Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
}
virtual void Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) {
}
virtual EfstActionMessage Slot03() {
return {nullptr, 0xFFFF00};
}
virtual EfstActionMessage Slot04() {
return {nullptr, 0xFF};
}
};
struct SkillInfoEntry {
@ -68,6 +135,14 @@ public:
static CSkillActionMgr* GetInstance();
bool IsSupportAction(int skillId);
std::pair<bool, int> ActionSlot01(int skillId);
std::pair<bool, int> ActionSlot02(int skillId);
int ActionSlot14(int skillId);
bool ActionSlot03(int skillId, int argument);
bool ActionSlot04(int skillId);
EfstActionMessage EfstSlot03(int efstId);
EfstActionMessage EfstSlot04(int efstId);
bool HasEfstAction(int efstId);
};
extern CSkillActionMgr* g_skillActionMgr;
@ -85,6 +160,7 @@ bool IsOptionalSelfTargetSkill(int skillId);
bool HidesUseFailureMessage(int skillId);
bool IsSupportSkill(int skillId);
bool ShowsCastEffect(int skillId);
EffectVector3 CellWorldPosition(int column, int row);
static_assert(sizeof(SkillInfoEntry) == 8);
#if defined(_WIN32) && !defined(_WIN64)
static_assert(offsetof(SkillInfoEntry, unknown_0004) == 0x4);
@ -93,6 +169,8 @@ static_assert(offsetof(CSkillActionMgr, m_efstActions) == 0x0C);
static_assert(offsetof(CSkillActionMgr, m_skillObjectActions) == 0x14);
static_assert(sizeof(CSkillActionMgr) == 0x1C);
static_assert(sizeof(CSkillAction) == 4);
static_assert(sizeof(CEfstAction) == 4);
static_assert(sizeof(EfstActionMessage) == 8);
#endif
#endif