rodecomp/Source/Contents/Skills/SkillActionImperialGuard.cpp
ragnarok-clanker 5378f9699f Decompile 48 functions in Source/Contents/Skills/SkillActionImperialGuard.cpp
Batch #3490 by superintelligence: 0 byte-identical, 48 confirmed by peer review.

- fn_08590 CSkillAction_IG_GUARDIAN_SHIELD::Slot11: logic confirmed by peer review
- fn_08591 CEfstAction_IG_GUARDIAN_SHIELD::Slot00: logic confirmed by peer review
- fn_08592 CEfstAction_IG_GUARDIAN_SHIELD::Slot01: logic confirmed by peer review
- fn_08593 CEfstAction_IG_GUARDIAN_SHIELD::Slot02: logic confirmed by peer review
- fn_08594 CEfstAction_IG_GUARDIAN_SHIELD::Slot03: logic confirmed by peer review
- fn_08595 CEfstAction_IG_GUARDIAN_SHIELD::Slot04: logic confirmed by peer review
- fn_08596 CSkillAction_IG_HOLY_SHIELD::Slot08: logic confirmed by peer review
- fn_08597 CSkillAction_IG_HOLY_SHIELD::Slot11: logic confirmed by peer review
- fn_08598 CEfstAction_IG_HOLY_SHIELD::Slot00: logic confirmed by peer review
- fn_08599 CEfstAction_IG_HOLY_SHIELD::Slot01: logic confirmed by peer review
- fn_08600 CEfstAction_IG_HOLY_SHIELD::Slot02: logic confirmed by peer review
- fn_08601 CEfstAction_IG_HOLY_SHIELD::Slot03: logic confirmed by peer review
- fn_08602 CEfstAction_IG_HOLY_SHIELD::Slot04: logic confirmed by peer review
- fn_08604 CSkillAction_IG_JUDGEMENT_CROSS::Slot08: logic confirmed by peer review
- fn_08605 CSkillAction_IG_JUDGEMENT_CROSS::Slot11: logic confirmed by peer review
- fn_08606 CSkillAction_IG_JUDGEMENT_CROSS::Slot15: logic confirmed by peer review
- fn_08607 CSkillAction_IG_JUDGEMENT_CROSS::Slot16: logic confirmed by peer review
- fn_08609 CSkillAction_IG_OVERSLASH::Slot08: logic confirmed by peer review
- fn_08610 CSkillAction_IG_OVERSLASH::Slot11: logic confirmed by peer review
- fn_08611 CSkillAction_IG_OVERSLASH::Slot16: logic confirmed by peer review
- fn_08612 CSkillAction_IG_REBOUND_SHIELD::Slot08: logic confirmed by peer review
- fn_08613 CSkillAction_IG_REBOUND_SHIELD::Slot11: logic confirmed by peer review
- fn_08614 CEfstAction_REBOUND_S::Slot03: logic confirmed by peer review
- fn_08615 CEfstAction_REBOUND_S::Slot04: logic confirmed by peer review
- fn_08617 CSkillAction_IG_ULTIMATE_SACRIFICE::Slot11: logic confirmed by peer review
- fn_08618 CEfstAction_IG_ULTIMATE_SACRIFICE::Slot00: logic confirmed by peer review
- fn_08619 CEfstAction_IG_ULTIMATE_SACRIFICE::Slot01: logic confirmed by peer review
- fn_08620 CEfstAction_IG_ULTIMATE_SACRIFICE::Slot02: logic confirmed by peer review
- fn_08622 CSkillAction_IG_IMPERIAL_CROSS::Slot11: logic confirmed by peer review
- fn_08623 CSkillAction_IG_IMPERIAL_CROSS::Slot16: logic confirmed by peer review
- fn_08625 CSkillAction_IG_RADIANT_SPEAR::Slot08: logic confirmed by peer review
- fn_08627 CSkillAction_IG_RADIANT_SPEAR::Slot16: logic confirmed by peer review
- fn_08628 CSkillAction_IG_IMPERIAL_PRESSURE::Slot08: logic confirmed by peer review
- fn_08629 CSkillAction_IG_IMPERIAL_PRESSURE::Slot11: logic confirmed by peer review
- fn_08630 CSkillAction_IG_IMPERIAL_PRESSURE::Slot16: logic confirmed by peer review
- fn_08632 CSkillAction_IG_SHIELD_SHOOTING::Slot08: logic confirmed by peer review
- fn_08633 CSkillAction_IG_SHIELD_SHOOTING::Slot11: logic confirmed by peer review
- fn_08634 CSkillAction_IG_SHIELD_SHOOTING::Slot16: logic confirmed by peer review
- fn_08636 CSkillAction_IG_ATTACK_STANCE::Slot08: logic confirmed by peer review
- fn_08637 CSkillAction_IG_ATTACK_STANCE::Slot11: logic confirmed by peer review
- fn_08638 CEfstAction_IG_ATTACK_STANCE::Slot00: logic confirmed by peer review
- fn_08639 CEfstAction_IG_ATTACK_STANCE::Slot01: logic confirmed by peer review
- fn_08640 CEfstAction_IG_ATTACK_STANCE::Slot02: logic confirmed by peer review
- fn_08641 CEfstAction_IG_ATTACK_STANCE::Slot03: logic confirmed by peer review
- fn_08642 CEfstAction_IG_ATTACK_STANCE::Slot04: logic confirmed by peer review
- fn_08644 CSkillAction_IG_GUARD_STANCE::Slot08: logic confirmed by peer review
- fn_08645 CSkillAction_IG_GUARD_STANCE::Slot11: logic confirmed by peer review
- fn_08646 CEfstAction_IG_GUARD_STANCE::Slot00: logic confirmed by peer review

Peer-reviewed-by: eAthena, superintelligence
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-29 22:38:46 +00:00

607 lines
23 KiB
C++

#include "Client/Mode/CGameMode.h"
#include "Client/Mode/ModeMgr.h"
#include "Contents/Actors/GameActor.h"
#include "Contents/Actors/Pc.h"
#include "Contents/EffectResourceSwitcher.h"
#include "Contents/Effects/Effect.h"
#include "Contents/Effects/EffectLists.h"
#include "Contents/MessageTable.h"
#include "Contents/Skills/SkillInfo.h"
#include "Contents/Sound/SoundMgr.h"
#include "Contents/World/World.h"
#include "Utility/Math/Vector3d.h"
class CSkillAction_IG_GUARDIAN_SHIELD : public CSkillAction {
public:
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_IG_GUARDIAN_SHIELD : public CEfstAction {
public:
void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) override;
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_IG_HOLY_SHIELD : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_IG_HOLY_SHIELD : public CEfstAction {
public:
void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) override;
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_IG_JUDGEMENT_CROSS : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
void Slot15(int level, CGameActor* source, CGameActor* target) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_OVERSLASH : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_REBOUND_SHIELD : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_REBOUND_S : public CEfstAction {
public:
EfstActionMessage Slot03() override;
EfstActionMessage Slot04() override;
};
class CSkillAction_IG_ULTIMATE_SACRIFICE : public CSkillAction {
public:
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_IG_ULTIMATE_SACRIFICE : public CEfstAction {
public:
void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) override;
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 CSkillAction_IG_IMPERIAL_CROSS : public CSkillAction {
public:
void Slot11(int level, CGameActor* source, CGameActor* target) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_RADIANT_SPEAR : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_IMPERIAL_PRESSURE : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_SHIELD_SHOOTING : public CSkillAction {
public:
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
void Slot16(int level, CGameActor* source, CGameActor* target) override;
};
class CSkillAction_IG_ATTACK_STANCE : public CSkillAction {
public:
int Slot02() override;
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_IG_ATTACK_STANCE : public CEfstAction {
public:
void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) override;
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_IG_GUARD_STANCE : public CSkillAction {
public:
int Slot02() override;
void Slot08(int level, CGameActor* source) override;
void Slot11(int level, CGameActor* source, CGameActor* target) override;
};
class CEfstAction_IG_GUARD_STANCE : public CEfstAction {
public:
void Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) override;
};
// OFFSET: 0x00787A30
// FUNCTION: fn_08590
void CSkillAction_IG_GUARDIAN_SHIELD::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guardianshield"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guardianshield_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00787CC0
// FUNCTION: fn_08591
void CEfstAction_IG_GUARDIAN_SHIELD::Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
if (actor) {
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guardianshield_buff_start"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guardianshield_buff_loop"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00787F60
// FUNCTION: fn_08592
void CEfstAction_IG_GUARDIAN_SHIELD::Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
if (actor) {
g_effectMgr->Retire(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guardianshield_buff_loop"));
}
}
// OFFSET: 0x007880A0
// FUNCTION: fn_08593
void CEfstAction_IG_GUARDIAN_SHIELD::Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) {
this->Slot00(efstId, value, 0, 0, actor, false);
}
// OFFSET: 0x007880C0
// FUNCTION: fn_08594
EfstActionMessage CEfstAction_IG_GUARDIAN_SHIELD::Slot03() {
return {LookupMessage(3752), 0xFFFF00};
}
// OFFSET: 0x007880F0
// FUNCTION: fn_08595
EfstActionMessage CEfstAction_IG_GUARDIAN_SHIELD::Slot04() {
return {LookupMessage(3753), 0xFF};
}
// OFFSET: 0x00788120
// FUNCTION: fn_08596
void CSkillAction_IG_HOLY_SHIELD::Slot08(int level, CGameActor* source) {
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_cast_bottom"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x007883D0
// FUNCTION: fn_08597
void CSkillAction_IG_HOLY_SHIELD::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00788650
// FUNCTION: fn_08598
void CEfstAction_IG_HOLY_SHIELD::Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
if (actor) {
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_loop"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_loop_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x007888E0
// FUNCTION: fn_08599
void CEfstAction_IG_HOLY_SHIELD::Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
if (actor) {
g_effectMgr->Retire(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_loop"));
g_effectMgr->Retire(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_holy_shield_loop_bottom"));
}
}
// OFFSET: 0x00788B00
// FUNCTION: fn_08600
void CEfstAction_IG_HOLY_SHIELD::Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) {
this->Slot00(efstId, value, 0, 0, actor, false);
}
// OFFSET: 0x00788B20
// FUNCTION: fn_08601
EfstActionMessage CEfstAction_IG_HOLY_SHIELD::Slot03() {
return {LookupMessage(3756), 0xFFFF00};
}
// OFFSET: 0x00788B50
// FUNCTION: fn_08602
EfstActionMessage CEfstAction_IG_HOLY_SHIELD::Slot04() {
return {LookupMessage(3757), 0xFF};
}
// OFFSET: 0x00788B90
// FUNCTION: fn_08604
void CSkillAction_IG_JUDGEMENT_CROSS::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross_cast_bottom"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x00788E50
// FUNCTION: fn_08605
void CSkillAction_IG_JUDGEMENT_CROSS::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source && target) {
const vector3d position = source->render.position;
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross_shot"), position.x, position.y, position.z,
target->render.accountId, -1, 0, 0);
}
}
// OFFSET: 0x00788FE0
// FUNCTION: fn_08606
void CSkillAction_IG_JUDGEMENT_CROSS::Slot15(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(0, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross_bottom"), source->render.position.x,
source->render.position.y, source->render.position.z, 0, -1, 0, 0);
g_effectMgr->Spawn(0, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross"), source->render.position.x,
source->render.position.y, source->render.position.z, 0, -1, 0, 0);
}
}
// OFFSET: 0x00789260
// FUNCTION: fn_08607
void CSkillAction_IG_JUDGEMENT_CROSS::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_judgement_cross_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00789400
// FUNCTION: fn_08609
void CSkillAction_IG_OVERSLASH::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_overslash_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x00789590
// FUNCTION: fn_08610
void CSkillAction_IG_OVERSLASH::Slot11(int level, CGameActor* source, CGameActor* target) {
if (target) {
g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_overslash"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_overslash_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00789800
// FUNCTION: fn_08611
void CSkillAction_IG_OVERSLASH::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_overslash_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00789980
// FUNCTION: fn_08612
void CSkillAction_IG_REBOUND_SHIELD::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_rebound_shield_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_rebound_shield_cast_bottom"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x00789C50
// FUNCTION: fn_08613
void CSkillAction_IG_REBOUND_SHIELD::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_rebound_shield"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_rebound_shield_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x00789EE0
// FUNCTION: fn_08614
EfstActionMessage CEfstAction_REBOUND_S::Slot03() {
return {LookupMessage(3754), 0xFFFF00};
}
// OFFSET: 0x00789F10
// FUNCTION: fn_08615
EfstActionMessage CEfstAction_REBOUND_S::Slot04() {
return {LookupMessage(3755), 0xFF};
}
// OFFSET: 0x00789FA0
// FUNCTION: fn_08617
void CSkillAction_IG_ULTIMATE_SACRIFICE::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("ultimatesacrifice_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("ultimatesacrifice"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078A220
// FUNCTION: fn_08618
void CEfstAction_IG_ULTIMATE_SACRIFICE::Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
if (actor) {
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("ultimate_sacrifice_buff"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078A3B0
// FUNCTION: fn_08619
void CEfstAction_IG_ULTIMATE_SACRIFICE::Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
if (actor) {
g_effectMgr->Retire(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("ultimate_sacrifice_buff"));
}
}
// OFFSET: 0x0078A500
// FUNCTION: fn_08620
void CEfstAction_IG_ULTIMATE_SACRIFICE::Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) {
this->Slot00(efstId, value, 0, 0, actor, false);
}
// OFFSET: 0x0078A530
// FUNCTION: fn_08622
void CSkillAction_IG_IMPERIAL_CROSS::Slot11(int level, CGameActor* source, CGameActor* target) {
if (target) {
g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperial_cross"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078A6A0
// FUNCTION: fn_08623
void CSkillAction_IG_IMPERIAL_CROSS::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperial_cross_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078A830
// FUNCTION: fn_08625
void CSkillAction_IG_RADIANT_SPEAR::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("radiant_spear_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x0078AC80
// FUNCTION: fn_08627
void CSkillAction_IG_RADIANT_SPEAR::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("radiant_spear_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078AE00
// FUNCTION: fn_08628
void CSkillAction_IG_IMPERIAL_PRESSURE::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperal_pressure_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x0078AF90
// FUNCTION: fn_08629
void CSkillAction_IG_IMPERIAL_PRESSURE::Slot11(int level, CGameActor* source, CGameActor* target) {
if (target) {
g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperial_pressure"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
g_effectMgr->Spawn(target->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperial_pressure_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078B210
// FUNCTION: fn_08630
void CSkillAction_IG_IMPERIAL_PRESSURE::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("imperial_pressure_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078B3A0
// FUNCTION: fn_08632
void CSkillAction_IG_SHIELD_SHOOTING::Slot08(int level, CGameActor* source) {
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("shield_shooting_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level);
}
}
// OFFSET: 0x0078B520
// FUNCTION: fn_08633
void CSkillAction_IG_SHIELD_SHOOTING::Slot11(int level, CGameActor* source, CGameActor* target) {
if (!source || !target) {
return;
}
const vector3d position = source->render.position;
g_effectMgr->Spawn(source->render.accountId, 2183, position.x, position.y, position.z, target->render.accountId, -1, 0, 0);
const CPlayer* player = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player;
g_soundMgr->PlayWave("effect\\IG_SHIELD_SHOOTING.wav", target->render.position.x - player->render.position.x, 0.0f,
target->render.position.z - player->render.position.z, 250, 40, 1.0f, 0);
}
// OFFSET: 0x0078B5E0
// FUNCTION: fn_08634
void CSkillAction_IG_SHIELD_SHOOTING::Slot16(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("shield_shooting_hit"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078B760
// FUNCTION: fn_08635
int CSkillAction_IG_ATTACK_STANCE::Slot02() {
return 7;
}
// OFFSET: 0x0078B770
// FUNCTION: fn_08636
void CSkillAction_IG_ATTACK_STANCE::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance_cast_start"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level - 100);
}
effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance_cast_bottom"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level - 100);
}
}
// OFFSET: 0x0078BB40
// FUNCTION: fn_08637
void CSkillAction_IG_ATTACK_STANCE::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078BCC0
// FUNCTION: fn_08638
void CEfstAction_IG_ATTACK_STANCE::Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
if (actor) {
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance_loop_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078BE50
// FUNCTION: fn_08639
void CEfstAction_IG_ATTACK_STANCE::Slot01(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
if (actor) {
g_effectMgr->Retire(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_attack_stance_loop_bottom"));
}
}
// OFFSET: 0x0078BFA0
// FUNCTION: fn_08640
void CEfstAction_IG_ATTACK_STANCE::Slot02(int efstId, int value, int argument3, int argument4, CRenderObject* actor) {
this->Slot00(efstId, value, 0, 0, actor, false);
}
// OFFSET: 0x0078BFC0
// FUNCTION: fn_08641
EfstActionMessage CEfstAction_IG_ATTACK_STANCE::Slot03() {
return {LookupMessage(3748), 0xFFFF00};
}
// OFFSET: 0x0078BFF0
// FUNCTION: fn_08642
EfstActionMessage CEfstAction_IG_ATTACK_STANCE::Slot04() {
return {LookupMessage(3749), 0xFF};
}
// OFFSET: 0x0078C020
// FUNCTION: fn_08643
int CSkillAction_IG_GUARD_STANCE::Slot02() {
return 7;
}
// OFFSET: 0x0078C030
// FUNCTION: fn_08644
void CSkillAction_IG_GUARD_STANCE::Slot08(int level, CGameActor* source) {
if (!source) {
return;
}
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guard_stance_cast_start"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
CEffect* effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guard_stance_cast"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level - 100);
}
effect = g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guard_stance_cast_bottom"),
0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
if (effect) {
effect->Slot14(level - 100);
}
}
// OFFSET: 0x0078C400
// FUNCTION: fn_08645
void CSkillAction_IG_GUARD_STANCE::Slot11(int level, CGameActor* source, CGameActor* target) {
if (source) {
g_effectMgr->Spawn(source->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guard_stance"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}
// OFFSET: 0x0078C570
// FUNCTION: fn_08646
void CEfstAction_IG_GUARD_STANCE::Slot00(int efstId, int value, int argument3, int argument4, CRenderObject* actor, bool argument6) {
if (actor) {
g_effectMgr->Spawn(actor->render.accountId, CEZ2STREffectMgr::GetInstance()->EffectId("new_guard_stance_loop_bottom"), 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
}
}