Decompile fn_22670 (CPlayer::ReapplySkillEffects)
Batch #8566 by eAthena: 0 byte-identical, 1 confirmed by peer review. - fn_22670 CPlayer::ReapplySkillEffects: logic confirmed by peer review Peer-reviewed-by: ragnarok-clanker, youko, superintelligence, aDw Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
parent
646af9a280
commit
556c256cd6
1 changed files with 664 additions and 0 deletions
|
|
@ -3109,6 +3109,670 @@ void CPlayer::UpdatePendingAction() {
|
|||
}
|
||||
|
||||
// OFFSET: 0x00DB68B0
|
||||
// FUNCTION: fn_22670
|
||||
void CPlayer::ReapplySkillEffects() {
|
||||
if (this == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
g_weatherEffect.StopDarken();
|
||||
this->unknown_0210 = static_cast<std::uint16_t>(g_session.m_level);
|
||||
this->sub_CAA4D0();
|
||||
|
||||
CTetraBallEffect* tetraBall;
|
||||
for (int id = 0x4EE; id <= 0x4F1; ++id) {
|
||||
tetraBall = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Find(this->render.accountId, id));
|
||||
if (tetraBall) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (std::vector<ActiveSkillEffect>::iterator it = g_activeSkillEffects.begin(); it != g_activeSkillEffects.end(); ++it) {
|
||||
const int type = it->id;
|
||||
const int value = it->unknown_0008;
|
||||
const int argument3 = it->unknown_000C;
|
||||
const int argument4 = it->unknown_0010;
|
||||
|
||||
switch (type) {
|
||||
case 0x2: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x82, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0xA1: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x82, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0xCF: {
|
||||
CRagEffect* effect = this->LaunchEffect(0x269, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x269, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x19: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x80, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0xBC: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x80, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x1F: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0xA9, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x44: {
|
||||
CRagEffect* effect = this->LaunchEffect(0xA6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0xFA, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x56:
|
||||
this->LaunchEffect(0xCB, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x57:
|
||||
this->LaunchEffect(0xFE, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x46C, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0xA5:
|
||||
case 0xA6:
|
||||
case 0xA7:
|
||||
this->LaunchEffect(0x1A2, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x220, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x99:
|
||||
this->LaunchEffect(0x1A3, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x67:
|
||||
this->LaunchEffect(0x1DA, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x6B:
|
||||
this->LaunchEffect(0x170, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x69:
|
||||
this->LaunchEffect(0x171, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x71:
|
||||
this->LaunchEffect(0x17E, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x7B:
|
||||
this->LaunchEffect(0x18A, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x98: {
|
||||
ClientSkills skills{
|
||||
g_session.m_skillBundle,
|
||||
g_session.m_homunSkills,
|
||||
g_session.m_mercSkills,
|
||||
g_session.m_additionalSkills,
|
||||
reinterpret_cast<const int&>(g_session.m_jobFlags),
|
||||
g_activeSkillEffects
|
||||
};
|
||||
CSkillInfo skill = skills.bundle.Lookup(0x1B9, skills.classMode, skills.HasEffect(1717), skills.HasEffect(1716));
|
||||
int effectId = skill.level;
|
||||
if (effectId > 0) {
|
||||
CSkillInfo upgrade = skills.bundle.Lookup(0xA1D, skills.classMode, skills.HasEffect(1717), skills.HasEffect(1716));
|
||||
if (upgrade.level > 0) {
|
||||
effectId = 5;
|
||||
}
|
||||
effectId += 0x1DA;
|
||||
if (!this->state.Attachments().HasId(effectId)) {
|
||||
this->LaunchEffect(0x1E7, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
g_soundMgr->PlayWave("effect\\_blind.wav", 0.0f, -100.0f, 0.0f, 250, 40, 1.0f, 0);
|
||||
}
|
||||
for (int id = 0x1DB; id < 0x1E5; ++id) {
|
||||
if (this->state.Attachments().HasId(id) == true) {
|
||||
this->SendMsg(nullptr, 109, 0, id, id >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
this->LaunchEffect(effectId, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
this->SendMsg(nullptr, 109, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->unknown_0544 = this->LaunchEffect(0xA4, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
}
|
||||
case 0x95:
|
||||
g_weatherEffect.StartDarken();
|
||||
this->LaunchEffect(0x1A8, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x61:
|
||||
this->LaunchEffect(0x28F, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0xA0:
|
||||
g_weatherEffect.StartDarken();
|
||||
break;
|
||||
case 0xE8:
|
||||
this->LaunchEffect(0x1A2, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x220, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0xEB:
|
||||
this->LaunchEffect(0xFE, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x46C, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x107:
|
||||
this->LaunchEffect(0x24A, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x15E: {
|
||||
while (this->state.Attachments().HasId(0x341)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
CRagEffect* effect = this->LaunchEffect(0x341, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
vector3d scale{2.0f, 0.0f, 0.0f};
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 14, 0, reinterpret_cast<int>(&scale), 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x14A:
|
||||
this->LaunchEffect(0x2F3, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1D0:
|
||||
this->LaunchEffect(0x170, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1BD: {
|
||||
while (this->state.Attachments().HasId(0x39D)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x39D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
CRagEffect* effect = this->LaunchEffect(0x39D, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x39D, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x148:
|
||||
this->LaunchEffect(0x314, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x15F:
|
||||
this->LaunchEffect(0x315, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1B5:
|
||||
this->LaunchEffect(0x3AC, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x168:
|
||||
this->LaunchEffect(0x2E8, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x18A:
|
||||
this->LaunchEffect(0x329, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1A6:
|
||||
g_soundMgr->PlayWave("effect\\manhole.wav", 0.0f, 0.0f, 0.0f, 250, 40, 1.0f, 0);
|
||||
this->LaunchEffect(0x337, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x17B:
|
||||
this->LaunchEffect(0x2E8, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x10A:
|
||||
this->LaunchEffect(0x2A1, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x16B:
|
||||
case 0x16C:
|
||||
case 0x16D:
|
||||
case 0x16E:
|
||||
case 0x16F:
|
||||
if (!tetraBall) {
|
||||
CTetraBallEffect* ball;
|
||||
for (int id = 0x4EE; id <= 0x4F1; ++id) {
|
||||
ball = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Find(this->render.accountId, id));
|
||||
if (ball) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (ball) {
|
||||
switch (value) {
|
||||
case 0:
|
||||
ball->AddBall(0x4EE, type - 0x16B);
|
||||
break;
|
||||
case 1:
|
||||
ball->AddBall(0x4F0, type - 0x16B);
|
||||
break;
|
||||
case 2:
|
||||
ball->AddBall(0x4EF, type - 0x16B);
|
||||
break;
|
||||
case 3:
|
||||
ball->AddBall(0x4F1, type - 0x16B);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (value) {
|
||||
case 0:
|
||||
ball = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Spawn(this->render.accountId, 0x4EE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0));
|
||||
ball->MoveFirstTo(type - 0x16B);
|
||||
break;
|
||||
case 1:
|
||||
ball = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Spawn(this->render.accountId, 0x4F0, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0));
|
||||
ball->MoveFirstTo(type - 0x16B);
|
||||
break;
|
||||
case 2:
|
||||
ball = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Spawn(this->render.accountId, 0x4EF, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0));
|
||||
ball->MoveFirstTo(type - 0x16B);
|
||||
break;
|
||||
case 3:
|
||||
ball = dynamic_cast<CTetraBallEffect*>(g_effectMgr->Spawn(this->render.accountId, 0x4F1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0));
|
||||
ball->MoveFirstTo(type - 0x16B);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x153:
|
||||
if (value < 10) {
|
||||
if (g_serviceOptions.Get(0xE5)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, value + 0x5BA, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
} else {
|
||||
g_effectMgr->Spawn(this->render.accountId, value + 0x513, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x1C4:
|
||||
if (this->state.Attachments().HasId(0x57) == true) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x57, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1C5:
|
||||
if (this->state.Attachments().HasId(0x31F) == true) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x31F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x31F, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x1C0:
|
||||
if (this->state.Attachments().HasId(0x360) == true) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x360, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x23B:
|
||||
this->SendMsg(nullptr, 110, 0, 0x23B, 0, 1, 0, value, value >> 31, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x265:
|
||||
this->Slot47(1);
|
||||
this->Slot21(this->GetEffectiveJob(-1));
|
||||
this->Slot33(this->render.unknown_0048);
|
||||
break;
|
||||
case 0x2A1:
|
||||
this->SendMsg(nullptr, 110, 0, type, type >> 31, 1, 0, g_session.unknown_5C1C, g_session.unknown_5C1C >> 31, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x2CD:
|
||||
while (this->state.Attachments().HasId(0x418)) {
|
||||
this->SendMsg(this, 109, 0, 0x418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x418, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x2DF:
|
||||
while (this->state.Attachments().HasId(0x194)) {
|
||||
this->SendMsg(this, 109, 0, 0x194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x194, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x2E1:
|
||||
while (this->state.Attachments().HasId(0x41E)) {
|
||||
this->SendMsg(this, 109, 0, 0x41E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x41E, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x2E0:
|
||||
while (this->state.Attachments().HasId(0x41F)) {
|
||||
this->SendMsg(this, 109, 0, 0x41F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x41F, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x2CC:
|
||||
while (this->state.Attachments().HasId(0x421)) {
|
||||
this->SendMsg(this, 109, 0, 0x421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x421, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x291:
|
||||
while (this->state.Attachments().HasId(0x3EB)) {
|
||||
this->SendMsg(this, 109, 0, 0x3EB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3EB, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x293:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x3ED);
|
||||
if (g_effectMgr->HasAllocator(0x3ED)) {
|
||||
CEffect* orb = g_effectMgr->Spawn(this->render.accountId, 0x3ED, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
if (orb) {
|
||||
static_cast<CEnergyOrbEffect*>(orb)->SetCount(10);
|
||||
}
|
||||
}
|
||||
while (this->state.Attachments().HasId(0x3C3)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x3C3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3C3, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x290:
|
||||
while (this->state.Attachments().HasId(0x3EC)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x3EC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3EC, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x2F8:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x470);
|
||||
if (g_effectMgr->HasAllocator(0x470) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x470, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x2A3:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x3F5);
|
||||
if (g_effectMgr->HasAllocator(0x3F5) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x3F5, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x2DA:
|
||||
while (this->state.Attachments().HasId(0x410)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x410, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x410, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x410, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x14E:
|
||||
case 0x365: {
|
||||
while (this->state.Attachments().HasId(0x318)) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
CRagEffect* effect = this->LaunchEffect(0x318, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
effect->SendMsg(nullptr, 44, 0, 0xFFFF, 0x318, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 0x6E:
|
||||
case 0x1D9:
|
||||
case 0x461:
|
||||
this->LaunchEffect(0x177, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x3A9:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x448);
|
||||
if (g_effectMgr->HasAllocator(0x448) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x448, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x3A5:
|
||||
this->Slot15(0x30, 1);
|
||||
this->render.isMotionFreezed = true;
|
||||
break;
|
||||
case 0x397:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x449);
|
||||
if (g_effectMgr->HasAllocator(0x449) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x449, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x380:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x456);
|
||||
if (g_effectMgr->HasAllocator(0x456) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x456, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x395:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x45F);
|
||||
if (g_effectMgr->HasAllocator(0x45F) == true) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x45F, this->render.position.x, this->render.position.y, this->render.position.z, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x3D6:
|
||||
this->unknown_04D8[0] = 1;
|
||||
break;
|
||||
case 0x3F8:
|
||||
case 0x3F9:
|
||||
case 0x3FA:
|
||||
case 0x3FB:
|
||||
case 0x3FC:
|
||||
case 0x3FD:
|
||||
case 0x3FE:
|
||||
case 0x3FF:
|
||||
case 0x400:
|
||||
case 0x401:
|
||||
g_effectMgr->Spawn(this->render.accountId, type + 0x87, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x41A:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4B1) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4B1);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4B1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_soundMgr->PlayWave("effect\\t_캐스팅.wav", 0.0f, 0.0f, 0.0f, 250, 40, 1.0f, 0);
|
||||
break;
|
||||
case 0x410:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4BE) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4BE);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4BE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x40E:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4BF) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4BF);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4BF, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x413:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4C0) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4C0);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4C0, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x40F:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4C1) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4C1);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4C1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x411:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4C5) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4C5);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4C5, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x41F:
|
||||
if (g_effectMgr->Has(this->render.accountId, 0x4C6) == true) {
|
||||
g_effectMgr->Retire(this->render.accountId, 0x4C6);
|
||||
}
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x4C6, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_soundMgr->PlayWave("effect\\t_바람방출.wav", 0.0f, 0.0f, 0.0f, 250, 40, 1.0f, 0);
|
||||
break;
|
||||
case 0x420:
|
||||
case 0x421:
|
||||
case 0x422:
|
||||
case 0x423:
|
||||
g_weatherEffect.StartDarken();
|
||||
this->LaunchEffect(0x1A8, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x466:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x66C);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x66C, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x47E:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x6CD)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x6CD, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4B5:
|
||||
if (this->state.Attachments().HasId(0x14E) == true) {
|
||||
this->SendMsg(nullptr, 109, 0, 0x14E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x14E, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
g_overrideColor = 1;
|
||||
this->SendMsg(nullptr, 109, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->unknown_0544 = this->LaunchEffect(0xA4, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case 0x4B6:
|
||||
case 0x4B9:
|
||||
this->SendMsg(nullptr, 156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x4B7:
|
||||
this->SendMsg(nullptr, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x4B8:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8DE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8E0, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4BA:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x8DC);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8DC, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4BB:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8E1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4BC:
|
||||
this->SendMsg(nullptr, 127, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
g_effectMgr->Retire(this->render.accountId, 0x8DD);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8DD, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4BD:
|
||||
this->SendMsg(nullptr, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x4BE:
|
||||
this->SendMsg(nullptr, 127, 0, 170, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x4BF:
|
||||
this->SendMsg(nullptr, 127, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x4C0:
|
||||
this->SendMsg(nullptr, 127, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x498:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x6BE);
|
||||
g_effectMgr->Retire(this->render.accountId, 0x6BF);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x6BE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x6BF, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x480:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x708)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x708, this->render.position.x, this->render.position.y, this->render.position.z, 0, value, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4AD:
|
||||
if (!g_serviceOptions.Get(0xE5) && !g_effectMgr->Has(this->render.accountId, 0x712)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x712, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4DD:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x84E)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x84E, this->render.position.x, this->render.position.y, this->render.position.z, 0, value, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4D2:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x7B7, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4D0:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x7BA, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x7BD, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4D1:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x7BE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x7C1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case 0x4D5:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x719)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x719, this->render.position.x, this->render.position.y, this->render.position.z, 0, value, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4D4:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x72F, this->render.position.x, this->render.position.y, this->render.position.z, 0, value, 0, 0);
|
||||
break;
|
||||
case 0x4B1:
|
||||
if (!g_serviceOptions.Get(0xE5) && !g_effectMgr->Has(this->render.accountId, 0x73C)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x73C, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x73D)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x73D, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4E2:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x76C)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x76C, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4AC:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x779)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x779, this->render.position.x, this->render.position.y, this->render.position.z, 0, value, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x48D:
|
||||
if (!this->state.Attachments().HasId(0x64A)) {
|
||||
this->LaunchEffect(0x64A, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
break;
|
||||
case 0x4EA:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x80C)) {
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x80C, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 0x4DC:
|
||||
if (!g_effectMgr->Has(this->render.accountId, 0x83D)) {
|
||||
CEffect* abyss = g_effectMgr->Spawn(this->render.accountId, 0x83D, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
if (abyss) {
|
||||
static_cast<CFromTheAbyssEffect*>(abyss)->SetLevel(value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x526:
|
||||
if (!this->state.Attachments().HasId(0x8E5)) {
|
||||
this->LaunchEffect(0x8E5, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
break;
|
||||
case 0x527:
|
||||
if (!this->state.Attachments().HasId(0x8E6)) {
|
||||
this->LaunchEffect(0x8E6, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
break;
|
||||
case 0x698:
|
||||
g_windowMgr.EnsureWindow(0x2730);
|
||||
break;
|
||||
case 0x4A6:
|
||||
case 0x4CE:
|
||||
case 0x4CF:
|
||||
break;
|
||||
case 0x288:
|
||||
case 0x289:
|
||||
this->SendMsg(nullptr, 110, 0, type, type >> 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
switch (type) {
|
||||
case 0x2A2:
|
||||
case 0x2CE:
|
||||
case 0x2CF:
|
||||
case 0x2D8:
|
||||
case 0x30B:
|
||||
case 0x336:
|
||||
case 0x337:
|
||||
case 0x339:
|
||||
case 0x33A:
|
||||
case 0x351:
|
||||
case 0x359:
|
||||
case 0x35F:
|
||||
case 0x360:
|
||||
case 0x368:
|
||||
this->SendMsg(nullptr, 110, 0, type, type >> 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case 0x37F:
|
||||
this->ApplyEffectState(value + 0x9B5, true);
|
||||
break;
|
||||
default:
|
||||
CSkillActionMgr::GetInstance()->EfstSlot02(type, value, argument3, argument4, this);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
g_statusRefreshSuppressed = 1;
|
||||
}
|
||||
|
||||
// GLOBAL: gl_25218
|
||||
bool g_unknown173AD3F;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue