Maintenance: C7 (replaces 18431/18498/18559). Actor SendMsg takes (CGameObject* sender, std::int64_t message, std::int64_t b..g). Aud
Batch #18562 by ragnarok-clanker: forced by an admin (31 lower score(s), 132 changed function(s)); checked with 230 compiled unit(s), including every includer of Source/Client/Mode/CGameMode.h, Source/Contents/Actors/EffectActors.h, Source/Contents/Actors/GameActor.h, Source/Contents/Actors/GameObject.h, Source/Contents/Actors/GndRiser.h, Source/Contents/Actors/GroundScope.h, Source/Contents/Actors/Item.h, Source/Contents/Actors/MousePointer.h, Source/Contents/Actors/Npc.h, Source/Contents/Actors/Pc.h, Source/Contents/Actors/RenderObject.h, Source/Contents/Actors/Skill.h, Source/Contents/Effects/Core/DummyEffectLauncher.h, Source/Contents/Effects/Core/EffectActor.h, Source/Contents/Effects/Core/EffectMaker.h, Source/Contents/Effects/Core/MsgEffect.h, Source/Contents/Effects/Skills/ArrowEffect.h, Source/Contents/Effects/Skills/MandraAttackEffect.h, Source/Contents/SignBoard/SignBoard.h, Source/Contents/Skills/GraffiSkill.h, Source/Contents/Sound/SoundMaker.h.
This commit is contained in:
parent
9938240d7b
commit
0d6efeaf09
57 changed files with 1181 additions and 1251 deletions
|
|
@ -730,7 +730,7 @@ public:
|
|||
void ReceiveItem1758List(const unsigned char* packet);
|
||||
void ReceiveOpenedVendingItemList(const unsigned char* packet);
|
||||
void ReceiveItem1748List(const unsigned char* packet);
|
||||
void ReceiveActorStatusValue(std::uint32_t aid, int status, int amount, int option);
|
||||
void ReceiveActorStatusValue(std::uint32_t aid, int status, std::int64_t amount);
|
||||
void ReceiveActorSkillResult(const unsigned char* packet);
|
||||
void UpdateSkillCooldown(std::uint16_t skill, std::uint32_t remaining, std::uint32_t duration);
|
||||
void LoadCooldownSnapshot(const void* packet);
|
||||
|
|
|
|||
|
|
@ -503,7 +503,7 @@ bool CGameMode::HasResurrectionItem() {
|
|||
// FUNCTION: fn_21287
|
||||
void CGameMode::SendMousePointerState(int value) {
|
||||
if (this->mousePointer) {
|
||||
this->mousePointer->SendMsg(nullptr, AM_HIDEMOUSE, 0, value, value >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->mousePointer->SendMsg(nullptr, AM_HIDEMOUSE, value, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2927,7 +2927,7 @@ int CGameMode::SendMsg(int event, int argument1, int argument2, int argument3, i
|
|||
std::strcat(text, " !! ");
|
||||
std::strcat(text, LookupMessage(MSI_LOVE_SKILL));
|
||||
const int address = reinterpret_cast<int>(text);
|
||||
actor->SendMsg(nullptr, AM_CHAT, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_CHAT, address, 0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
if (argument1 == WE_CALLPARTNER) {
|
||||
|
|
@ -2939,7 +2939,7 @@ int CGameMode::SendMsg(int event, int argument1, int argument2, int argument3, i
|
|||
std::strcat(text, " !! ");
|
||||
std::strcat(text, skillName);
|
||||
const int address = reinterpret_cast<int>(text);
|
||||
actor->SendMsg(nullptr, AM_CHAT, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_CHAT, address, 0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
if (argument1 == DC_SCREAM || argument1 == BA_FROSTJOKER || argument1 == ITEM_ENCHANTARMS ||
|
||||
|
|
@ -2949,7 +2949,7 @@ int CGameMode::SendMsg(int event, int argument1, int argument2, int argument3, i
|
|||
std::strcpy(skillName, CSkillInfo::DisplayName(*g_session.m_hotkeyScript, argument1));
|
||||
std::strcat(skillName, " !!");
|
||||
const int address = reinterpret_cast<int>(skillName);
|
||||
actor->SendMsg(nullptr, AM_CHAT, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_CHAT, address, 0, 0, 0, 0, 0);
|
||||
return 0;
|
||||
}
|
||||
case MM_REQ_CHANGE_MEMBERPOS: {
|
||||
|
|
@ -4452,7 +4452,7 @@ int CGameMode::SendMsg(int event, int argument1, int argument2, int argument3, i
|
|||
}
|
||||
case MM_CONTACTNPC: {
|
||||
if (this->scene->player != nullptr) {
|
||||
this->scene->player->SendMsg(nullptr, AM_FREEZE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_FREEZE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
const auto* request = reinterpret_cast<const std::uint32_t*>(argument1);
|
||||
if (request[1] == 0x2D) {
|
||||
|
|
@ -4747,7 +4747,7 @@ std::uint64_t CGameMode::LaunchDummyEffect(const vector3d* position, int effectI
|
|||
CDummyEffectLauncher* launcher = new CDummyEffectLauncher;
|
||||
if (launcher != nullptr) {
|
||||
const int address = reinterpret_cast<int>(position);
|
||||
launcher->SendMsg(nullptr, AM_SETPOS, 0, address, address >> 31, effectId, effectId >> 31, lifeFrames, lifeFrames >> 31, value, value >> 31, 0, 0, 0, 0);
|
||||
launcher->SendMsg(nullptr, AM_SETPOS, address, effectId, lifeFrames, value, 0, 0);
|
||||
this->scene->objects.push_back(launcher);
|
||||
return launcher->identity;
|
||||
}
|
||||
|
|
@ -4773,12 +4773,12 @@ void CGameMode::RequestPlayerAction(int target, int argument) {
|
|||
|
||||
switch (reinterpret_cast<std::intptr_t>(this->skillUseType)) {
|
||||
case SUT_NOSKILL:
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDATTACK, 0, target, 0, argument, argument >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDATTACK, static_cast<std::uint32_t>(target), argument, 0, 0, 0, 0);
|
||||
break;
|
||||
case SUT_TO_CHARACTER:
|
||||
case SUT_TO_ALL:
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDSKILL, 0, target, 0, value, value >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_SET_SKILL_USE_LEVEL, 0, this->skillUseLevel, this->skillUseLevel >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDSKILL, static_cast<std::uint32_t>(target), value, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_SET_SKILL_USE_LEVEL, this->skillUseLevel, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -4821,7 +4821,7 @@ void CGameMode::SendMousePointerPosition(float x, float y, int value) {
|
|||
position[0] = x;
|
||||
position[1] = y;
|
||||
const std::intptr_t address = reinterpret_cast<std::intptr_t>(position);
|
||||
this->mousePointer->SendMsg(nullptr, AM_SETPOSMOUSE, 0, address, address >> 31, value, value >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->mousePointer->SendMsg(nullptr, AM_SETPOSMOUSE, address, value, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00CED330
|
||||
|
|
@ -6527,7 +6527,7 @@ void CGameMode::ChangeZoneServer(std::string mapName, int x, int y, int ip, int
|
|||
|
||||
this->noMove = 1;
|
||||
this->noMoveStartTick = timeGetTime();
|
||||
this->scene->player->SendMsg(nullptr, AM_FREEZE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_FREEZE, 0, 0, 0, 0, 0, 0);
|
||||
if (g_screenShakeDuration > 0) {
|
||||
g_screenShakeDuration = g_screenShakeMode == 2 ? 10001 : g_screenShakeDuration;
|
||||
}
|
||||
|
|
@ -7173,7 +7173,7 @@ void CGameMode::PlayItemUseEffect(int itemId, std::uint32_t aid) {
|
|||
|
||||
if (effectId > 0) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(effectId)) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, effectId, effectId >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, effectId, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (g_effectMgr->HasAllocator(effectId)) {
|
||||
g_effectMgr->Spawn(actor->render.accountId, effectId, vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
|
||||
|
|
@ -7184,7 +7184,7 @@ void CGameMode::PlayItemUseEffect(int itemId, std::uint32_t aid) {
|
|||
|
||||
if (secondEffectId > 0) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(secondEffectId)) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, secondEffectId, secondEffectId >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, secondEffectId, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (g_effectMgr->HasAllocator(secondEffectId)) {
|
||||
g_effectMgr->Spawn(actor->render.accountId, secondEffectId, vector3d{0.0f, 0.0f, 0.0f}, 0, -1, 0, 0);
|
||||
|
|
@ -7972,7 +7972,7 @@ void CGameMode::Initialize(const char* name) {
|
|||
}
|
||||
|
||||
if (g_screenShakeMode == 2) {
|
||||
this->scene->player->SendMsg(nullptr, AM_STATUS_CHANGE, 0, 0x22, 0, g_screenShakeDuration <= 10000 && g_screenShakeDuration != 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_STATUS_CHANGE, 0x22, g_screenShakeDuration <= 10000 && g_screenShakeDuration != 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (g_session.GetOption(6) > 0) {
|
||||
|
|
@ -8627,9 +8627,9 @@ int CGameMode::ProcessGroundClick(int result) {
|
|||
|
||||
if (this->scene->player) {
|
||||
const int skill = this->skillId;
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDGROUNDSKILL, 0, skill, skill >> 31, column, column >> 31, row, row >> 31, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDGROUNDSKILL, skill, column, row, 0, 0, 0);
|
||||
const int level = this->skillUseLevel;
|
||||
this->scene->player->SendMsg(nullptr, AM_SET_SKILL_USE_LEVEL, 0, level, level >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_SET_SKILL_USE_LEVEL, level, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -8684,7 +8684,7 @@ int CGameMode::ProcessGroundClick(int result) {
|
|||
g_windowMgr.UpdateNavigationList();
|
||||
clickTick = timeGetTime();
|
||||
if (HIBYTE(GetAsyncKeyState(VK_SHIFT)) || g_windowMgr.chatRoomWnd || this->scene->player->render.state == 6) {
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, 0, column, column >> 31, row, row >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, column, row, 0, 0, 0, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -8711,7 +8711,7 @@ int CGameMode::ProcessGroundClick(int result) {
|
|||
g_windowMgr.CloseWindow(WID_MENUWND);
|
||||
}
|
||||
if (this->scene->player) {
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_MOVE, 0, column, column >> 31, row, row >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_MOVE, column, row, 0, 0, 0, 0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -8800,10 +8800,10 @@ void CGameMode::Update() {
|
|||
if (g_windowMgr.menuWnd != nullptr) {
|
||||
g_windowMgr.CloseWindow(WID_MENUWND);
|
||||
}
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_MOVE, 0, x, x >> 31, y, y >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_MOVE, x, y, 0, 0, 0, 0);
|
||||
}
|
||||
} else {
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, 0, x, x >> 31, y, y >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, x, y, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8971,7 +8971,7 @@ void CGameMode::ProcessInput() {
|
|||
|
||||
if (g_mouse.buttons[0] == 3) {
|
||||
if (this->scene->player) {
|
||||
this->scene->player->SendMsg(nullptr, AM_ATTACKCLICKUP, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_ATTACKCLICKUP, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->SendMsg(MM_DROP, g_mouse.x, g_mouse.y, 0, 0);
|
||||
UIMenuWnd* menu = static_cast<UIMenuWnd*>(g_windowMgr.menuWnd);
|
||||
|
|
@ -10791,7 +10791,7 @@ int CGameMode::HandleActorPick(ActorPickInfo* pick, int result) {
|
|||
int column;
|
||||
int row;
|
||||
this->WorldCell(actor->render.position.x, actor->render.position.z, column, row);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, 0, column, column >> 31, row, row >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_REQ_CHANGE_DIR, column, row, 0, 0, 0, 0);
|
||||
if (g_windowMgr.HasPendingDialog() == true) {
|
||||
g_windowMgr.SendNotice(UIM_OPENCHATWND, 0, 0, 0, 0, 0);
|
||||
g_windowMgr.SendNotice(UIM_PUSHINTOCHATHISTORY, reinterpret_cast<std::intptr_t>(LookupMessage(MSI_VIEW_CHANGE_EQUIPMENT_PROPERTIES_MSG)), 255, 25, 0, 0);
|
||||
|
|
@ -11027,10 +11027,10 @@ int CGameMode::HandleActorPick(ActorPickInfo* pick, int result) {
|
|||
this->isAutoMoveClickOn = 0;
|
||||
const int skillUse = reinterpret_cast<int>(&this->skillUseType);
|
||||
if (!HIBYTE(GetAsyncKeyState(VK_CONTROL)) && forceOption == 0) {
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, 0, pick->accountId, 0, skillUse, skillUse >> 31, 1, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, pick->accountId, skillUse, 1, 0, 0, 0);
|
||||
this->forcedAttack = 0;
|
||||
} else {
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, 0, pick->accountId, 0, skillUse, skillUse >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, pick->accountId, skillUse, 0, 0, 0, 0);
|
||||
this->forcedAttack = 1;
|
||||
}
|
||||
return result;
|
||||
|
|
@ -11038,7 +11038,7 @@ int CGameMode::HandleActorPick(ActorPickInfo* pick, int result) {
|
|||
default:
|
||||
if (reinterpret_cast<std::intptr_t>(this->skillUseType) == 5) {
|
||||
const long long skillUse = static_cast<long long>(reinterpret_cast<int>(this)) + offsetof(CGameMode, skillUseType);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, 0, pick->accountId, 0, static_cast<int>(skillUse), static_cast<int>(skillUse >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDTOUCHSKILL, pick->accountId, skillUse, 0, 0, 0, 0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -11047,7 +11047,7 @@ int CGameMode::HandleActorPick(ActorPickInfo* pick, int result) {
|
|||
return 0;
|
||||
case 1:
|
||||
if (g_mouse.buttons[0] == 1 && reinterpret_cast<std::intptr_t>(this->skillUseType) == 0) {
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDPICKUPITEM, 0, pick->accountId, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_PROCEEDPICKUPITEM, pick->accountId, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 4: {
|
||||
|
|
|
|||
|
|
@ -393,11 +393,11 @@ void CGameMode::ReceiveGroundSkillExtended(const unsigned char* record) {
|
|||
return;
|
||||
}
|
||||
CGraffiSkill* skill = new CGraffiSkill;
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, 0, packet.aid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, packet.aid, 0, 0, 0, 0, 0);
|
||||
const int address = reinterpret_cast<int>(packet.text);
|
||||
const int x = packet.x;
|
||||
const int y = packet.y;
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, 0, address, address >> 31, x, x >> 31, y, y >> 31, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, address, x, y, 0, 0, 0);
|
||||
this->scene->objects.push_back(skill);
|
||||
this->scene->skills.push_back(skill);
|
||||
return;
|
||||
|
|
@ -442,7 +442,7 @@ void CGameMode::ReceiveGroundSkillExtended(const unsigned char* record) {
|
|||
}
|
||||
skill->sourceActorId = packet.owner;
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D413F0
|
||||
|
|
@ -483,10 +483,11 @@ void CGameMode::SpawnGroundSkill(std::uint32_t aid, std::uint32_t owner, int val
|
|||
}
|
||||
skill->sourceActorId = owner;
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SpawnMirrorActor(aid, owner, x, y);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
struct GameOptionEntry {
|
||||
|
|
@ -786,10 +787,7 @@ void CGameMode::ReceivePetAct(unsigned char* packet) {
|
|||
if (kind == 2) {
|
||||
const std::int64_t emotion = value;
|
||||
const std::int64_t basePack = g_cashEmotionMgr->BasePackId();
|
||||
actor->SendMsg(
|
||||
nullptr, 160, 0, static_cast<int>(basePack), static_cast<int>(basePack >> 32), static_cast<int>(emotion), static_cast<int>(emotion >> 32), 0, 0, 0,
|
||||
0, 0, 0, 0, 0
|
||||
);
|
||||
actor->SendMsg(nullptr, 160, basePack, emotion, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -802,7 +800,7 @@ void CGameMode::ReceivePetAct(unsigned char* packet) {
|
|||
g_session.FormatMonsterSpeech(talk, speech, *reinterpret_cast<const std::uint32_t*>(packet + 2), 1 - kind);
|
||||
if (std::strcmp(speech, "") != 0) {
|
||||
const std::int64_t text = reinterpret_cast<std::intptr_t>(speech);
|
||||
actor->SendMsg(nullptr, AM_CHAT, 0, static_cast<int>(text), static_cast<int>(text >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_CHAT, text, 0, 0, 0, 0, 0);
|
||||
if (!g_serviceOptions.Get(114) && !g_serviceOptions.Get(148)) {
|
||||
g_windowMgr.SendNotice(UIM_PUSHINTOCHATHISTORY, reinterpret_cast<std::intptr_t>(speech), 0xFAFAFA, 0, 0, 0);
|
||||
}
|
||||
|
|
@ -891,7 +889,7 @@ void CGameMode::ReceivePlayerMessage82(const unsigned char* packet) {
|
|||
return;
|
||||
}
|
||||
|
||||
player->SendMsg(nullptr, AM_MAKE_SKILL_RECHARGEGAGE, 0, *reinterpret_cast<const int*>(packet + 6) * 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_MAKE_SKILL_RECHARGEGAGE, static_cast<std::uint32_t>(*reinterpret_cast<const int*>(packet + 6) * 1000), 0, 0, 0, 0, 0);
|
||||
g_session.playerStatusFlags[0x0A] = true;
|
||||
}
|
||||
|
||||
|
|
@ -1324,7 +1322,7 @@ void CGameMode::ReceiveActorMessage32(const unsigned char* packet) {
|
|||
}
|
||||
|
||||
const std::int64_t argument = reinterpret_cast<std::intptr_t>(&message);
|
||||
actor->SendMsg(nullptr, AM_MAKE_CHAT_TITLE, 0, static_cast<int>(argument), static_cast<int>(argument >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_MAKE_CHAT_TITLE, argument, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D3F3E0
|
||||
|
|
@ -1579,7 +1577,7 @@ void CGameMode::ReceiveSummonHpInit(const unsigned char* buffer) {
|
|||
CRenderObject* actor = this->scene->GetGameActorByAID(packet->summonId);
|
||||
if (actor != nullptr) {
|
||||
const std::int64_t id = packet->summonId;
|
||||
actor->SendMsg(nullptr, AM_UPDATEGAGE, 0, static_cast<int>(id), static_cast<int>(id >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_UPDATEGAGE, id, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1603,7 +1601,7 @@ void CGameMode::ReceiveSummonHpUpdate(const unsigned char* buffer) {
|
|||
CRenderObject* actor = this->scene->GetGameActorByAID(packet->summonId);
|
||||
if (actor != nullptr) {
|
||||
const std::int64_t id = packet->summonId;
|
||||
actor->SendMsg(nullptr, AM_UPDATEGAGE, 0, static_cast<int>(id), static_cast<int>(id >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_UPDATEGAGE, id, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2555,8 +2553,7 @@ void CGameMode::ReceiveStatusChangeEffect2(const unsigned char* packet) {
|
|||
// FUNCTION: fn_22018
|
||||
void CGameMode::ReceiveActorStatusValuePacket2(const unsigned char* packet) {
|
||||
this->ReceiveActorStatusValue(
|
||||
*reinterpret_cast<const std::uint32_t*>(packet + 2), *reinterpret_cast<const int*>(packet + 6), *reinterpret_cast<const int*>(packet + 10),
|
||||
*reinterpret_cast<const int*>(packet + 14)
|
||||
*reinterpret_cast<const std::uint32_t*>(packet + 2), *reinterpret_cast<const int*>(packet + 6), *reinterpret_cast<const std::int64_t*>(packet + 10)
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -2676,7 +2673,7 @@ void CGameMode::Zc_Skill_Entry(const unsigned char* record) {
|
|||
|
||||
skill->sourceActorId = packet.owner;
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D40730
|
||||
|
|
@ -2698,9 +2695,9 @@ void CGameMode::Zc_Skill_Entry2(const unsigned char* record) {
|
|||
CGraffiSkill* skill = new CGraffiSkill;
|
||||
this->scene->objects.push_back(skill);
|
||||
this->scene->skills.push_back(skill);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, 0, packet.aid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, packet.aid, 0, 0, 0, 0, 0);
|
||||
const int address = reinterpret_cast<int>(packet.text);
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, 0, address, address >> 31, data.x, data.x >> 31, data.y, data.y >> 31, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, address, data.x, data.y, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2726,7 +2723,7 @@ void CGameMode::Zc_Skill_Entry2(const unsigned char* record) {
|
|||
}
|
||||
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D40970
|
||||
|
|
@ -2740,11 +2737,11 @@ void CGameMode::ReceiveGroundSkill8(const unsigned char* record) {
|
|||
CGraffiSkill* skill = new CGraffiSkill;
|
||||
this->scene->objects.push_back(skill);
|
||||
this->scene->skills.push_back(skill);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, 0, packet.aid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, packet.aid, 0, 0, 0, 0, 0);
|
||||
const int address = reinterpret_cast<int>(packet.text);
|
||||
const int x = packet.x;
|
||||
const int y = packet.y;
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, 0, address, address >> 31, x, x >> 31, y, y >> 31, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, address, x, y, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2785,7 +2782,7 @@ void CGameMode::ReceiveGroundSkill8(const unsigned char* record) {
|
|||
}
|
||||
skill->sourceActorId = packet.owner;
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D40BC0
|
||||
|
|
@ -2799,11 +2796,11 @@ void CGameMode::ReceiveGroundSkill32(const unsigned char* record) {
|
|||
CGraffiSkill* skill = new CGraffiSkill;
|
||||
this->scene->objects.push_back(skill);
|
||||
this->scene->skills.push_back(skill);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, 0, packet.aid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETMASTERGID, packet.aid, 0, 0, 0, 0, 0);
|
||||
const int address = reinterpret_cast<int>(packet.text);
|
||||
const int x = packet.x;
|
||||
const int y = packet.y;
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, 0, address, address >> 31, x, x >> 31, y, y >> 31, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SET_SKILL, address, x, y, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -2846,7 +2843,7 @@ void CGameMode::ReceiveGroundSkill32(const unsigned char* record) {
|
|||
}
|
||||
skill->sourceActorId = packet.owner;
|
||||
const int address = reinterpret_cast<int>(&data);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SKILLSTANDENTRY, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
|
|
|||
|
|
@ -564,9 +564,7 @@ void CGameMode::StopActorMove(std::uint32_t aid, std::int16_t x, std::int16_t y,
|
|||
}
|
||||
}
|
||||
|
||||
actor->SendMsg(nullptr, AM_STOPMOVE, 0, static_cast<int>(static_cast<std::int64_t>(x)), static_cast<int>(static_cast<std::int64_t>(x) >> 32),
|
||||
static_cast<int>(static_cast<std::int64_t>(y)), static_cast<int>(static_cast<std::int64_t>(y) >> 32), 0, 0,
|
||||
static_cast<int>(static_cast<std::int64_t>(flag)), static_cast<int>(static_cast<std::int64_t>(flag) >> 32), 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_STOPMOVE, x, y, 0, flag, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D69140
|
||||
|
|
@ -977,7 +975,7 @@ void CGameMode::ReceiveEffectRemove(const unsigned char* data) {
|
|||
if (actor) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(packet->effectId)) {
|
||||
const std::int64_t effectId = packet->effectId;
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, static_cast<int>(effectId), static_cast<int>(effectId >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, effectId, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1091,7 +1089,7 @@ void CGameMode::ReceiveActorMessage144(const unsigned char* data) {
|
|||
if (actor) {
|
||||
const std::int64_t y = packet->y;
|
||||
const std::int64_t x = packet->x;
|
||||
actor->SendMsg(nullptr, AM_FALLEN_ANGEL, 0, static_cast<int>(x), static_cast<int>(x >> 32), static_cast<int>(y), static_cast<int>(y >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_FALLEN_ANGEL, x, y, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1235,11 +1233,11 @@ void CGameMode::ReceiveActorEffect228(const unsigned char* data) {
|
|||
|
||||
auto* gameActor = static_cast<CGameActor*>(actor);
|
||||
if (StateFlag01(gameActor->GetStateFlags()) == true || StateFlag02(gameActor->GetStateFlags()) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 228, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (0 == packet->state) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 228, 0, 0, 0, 0, 0);
|
||||
} else if (1 != packet->state || static_cast<EffectActor*>(actor)->HasId(228)) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -1579,35 +1577,35 @@ void CGameMode::ReceiveItemEffectResult(const unsigned char* data) {
|
|||
break;
|
||||
case 2:
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(305)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 305, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(305, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_SUCCEESS_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
break;
|
||||
case 3:
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(306)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 306, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 306, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(306, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_FAIL_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
break;
|
||||
case 4:
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(1015)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1015, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 1015, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(1015, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_SUCCEESS_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
break;
|
||||
case 5:
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(1016)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1016, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 1016, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(1016, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_FAIL_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
break;
|
||||
case 6: {
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(1017)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1017, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 1017, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(1017, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_FAIL_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
|
|
@ -1619,7 +1617,7 @@ void CGameMode::ReceiveItemEffectResult(const unsigned char* data) {
|
|||
}
|
||||
case 7: {
|
||||
if (static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->HasId(1018)) {
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 1018, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->LaunchEffect(1018, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
text = FormatOwnedString(LookupMessage(MSI_MAKE_TARGET_FAIL_MSG), item.DisplayName(0).c_str()).c_str();
|
||||
|
|
@ -2556,7 +2554,7 @@ void CGameMode::ReceiveRodexMailReturn(const unsigned char* data) {
|
|||
// FUNCTION: fn_22144
|
||||
void CGameMode::ReceiveActorStatusValuePacket(const unsigned char* data) {
|
||||
const auto* packet = reinterpret_cast<const ActorStatusValuePacket*>(data);
|
||||
this->ReceiveActorStatusValue(packet->aid, packet->status, packet->value, packet->value >> 31);
|
||||
this->ReceiveActorStatusValue(packet->aid, packet->status, packet->value);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00D73E20
|
||||
|
|
@ -4032,7 +4030,7 @@ void CGameMode::ReceiveNotifyGroundSkill(const unsigned char* packet) {
|
|||
|
||||
if (*reinterpret_cast<const std::uint32_t*>(packet + 4) == g_session.m_aid) {
|
||||
const std::int64_t value = reinterpret_cast<std::intptr_t>(&message);
|
||||
this->scene->player->SendMsg(nullptr, AM_GROUNDSKILL, 0, static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_GROUNDSKILL, value, 0, 0, 0, 0, 0);
|
||||
actor = this->scene->player;
|
||||
if (actor != nullptr) {
|
||||
job = actor->GetEffectiveJob(-1);
|
||||
|
|
@ -4041,7 +4039,7 @@ void CGameMode::ReceiveNotifyGroundSkill(const unsigned char* packet) {
|
|||
CGameActor* gameActor = static_cast<CGameActor*>(this->scene->GetGameActorByAID(*reinterpret_cast<const std::uint32_t*>(packet + 4)));
|
||||
if (gameActor != nullptr) {
|
||||
const std::int64_t value = reinterpret_cast<std::intptr_t>(&message);
|
||||
gameActor->SendMsg(nullptr, AM_GROUNDSKILL, 0, static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
gameActor->SendMsg(nullptr, AM_GROUNDSKILL, value, 0, 0, 0, 0, 0);
|
||||
actor = gameActor;
|
||||
job = actor->GetEffectiveJob(-1);
|
||||
}
|
||||
|
|
@ -4618,7 +4616,7 @@ void CGameMode::ReceiveItemDropEntry(const unsigned char* data) {
|
|||
}
|
||||
|
||||
const std::int64_t entryAddress = reinterpret_cast<int>(&entry);
|
||||
item->SendMsg(nullptr, AM_INITSTANDENTRY, 0, static_cast<int>(entryAddress), static_cast<int>(entryAddress >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
item->SendMsg(nullptr, AM_INITSTANDENTRY, entryAddress, 0, 0, 0, 0, 0);
|
||||
}
|
||||
#pragma pack(push, 1)
|
||||
struct SpriteChangePacket {
|
||||
|
|
@ -4690,7 +4688,7 @@ void CGameMode::ReceiveSpriteChange(const unsigned char* data) {
|
|||
return;
|
||||
}
|
||||
if (packet->type == LOOK_BASE) {
|
||||
skill->SendMsg(nullptr, AM_SETJOB, 0, packet->value, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETJOB, packet->value, 0, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -4804,7 +4802,7 @@ void CGameMode::ReceiveSpriteChange2(const unsigned char* data) {
|
|||
return;
|
||||
}
|
||||
if (packet->type == LOOK_BASE) {
|
||||
skill->SendMsg(nullptr, AM_SETJOB, 0, value, packet->valueHigh, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_SETJOB, packet->value, 0, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -4879,12 +4877,12 @@ void CGameMode::ReceiveSpriteChange2(const unsigned char* data) {
|
|||
case LOOK_BODY2:
|
||||
actor->SetBodyCostume(value, 1);
|
||||
if (StateFlag04(actor->GetStateFlags())) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(actor->GetStateFlags())) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case 14:
|
||||
|
|
@ -5768,7 +5766,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
if (CRenderObject* actor = this->scene->GetGameActorByAID(packet->aid)) {
|
||||
const std::int64_t state = packet->state;
|
||||
const std::int64_t type = packet->type;
|
||||
actor->SendMsg(nullptr, AM_STATUS_CHANGE, 0, static_cast<int>(type), static_cast<int>(type >> 32), static_cast<int>(state), static_cast<int>(state >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_STATUS_CHANGE, type, state, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -6807,19 +6805,19 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
break;
|
||||
case EFST_SIREN:
|
||||
if (packet->aid == g_session.m_aid) {
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 879, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 879, 0, 0, 0, 0, 0);
|
||||
}
|
||||
std::sprintf(message, "");
|
||||
break;
|
||||
case EFST_DEEP_SLEEP:
|
||||
if (packet->aid == g_session.m_aid) {
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
std::sprintf(message, "");
|
||||
break;
|
||||
case EFST_NETHERWORLD:
|
||||
if (packet->aid == g_session.m_aid) {
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 453, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_DELETE_EFFECT, 453, 0, 0, 0, 0, 0);
|
||||
}
|
||||
std::sprintf(message, "");
|
||||
break;
|
||||
|
|
@ -6827,7 +6825,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
if (packet->aid == g_session.m_aid) {
|
||||
CPlayer* player = this->scene->player;
|
||||
while (player->HasId(752)) {
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 752, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 752, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
std::sprintf(message, "");
|
||||
|
|
@ -6883,14 +6881,14 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
break;
|
||||
case EFST_HANDICAPSTATE_ICEEXPLO:
|
||||
if (packet->aid == g_session.m_aid && this->scene->player) {
|
||||
this->scene->player->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case EFST_DARKCROW:
|
||||
if (packet->aid == g_session.m_aid) {
|
||||
CPlayer* player = this->scene->player;
|
||||
while (player->HasId(1040)) {
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 1040, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -6898,7 +6896,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
if (packet->aid == g_session.m_aid) {
|
||||
CPlayer* player = this->scene->player;
|
||||
while (player->HasId(1061)) {
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1061, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 1061, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -6937,7 +6935,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
if (packet->aid == g_session.m_aid) {
|
||||
g_session.madogearType = 0;
|
||||
}
|
||||
actor->SendMsg(nullptr, AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
case EFST_RELIEVE_DAMAGE:
|
||||
|
|
@ -6954,7 +6952,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
actor = this->scene->GetGameActorByAID(packet->aid);
|
||||
}
|
||||
if (actor) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1601, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 1601, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -6967,7 +6965,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
actor = this->scene->GetGameActorByAID(packet->aid);
|
||||
}
|
||||
if (actor) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1610, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 1610, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -7074,7 +7072,7 @@ void CGameMode::ReceiveStatusChangeNotice(const unsigned char* data) {
|
|||
if (packet->aid == g_session.m_aid) {
|
||||
const std::int64_t state = packet->state;
|
||||
const std::int64_t type = packet->type;
|
||||
this->scene->player->SendMsg(nullptr, AM_STATUS_CHANGE, 0, static_cast<int>(type), static_cast<int>(type >> 32), static_cast<int>(state), static_cast<int>(state >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->scene->player->SendMsg(nullptr, AM_STATUS_CHANGE, type, state, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1802,7 +1802,7 @@ void CSession::RemovePartyMemberByName(const char* name) {
|
|||
|
||||
CRenderObject* actor = mode->scene->GetGameActorByAidIncludeMe(it->accountId);
|
||||
if (actor != nullptr && static_cast<EffectActor*>(actor)->HasId(160) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 160, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
this->m_partyMembers.erase(it);
|
||||
|
|
@ -3280,7 +3280,7 @@ void CSession::ClearItemContainers() {
|
|||
for (std::list<MessengerMember>::iterator it = this->m_partyMembers.begin(); it != this->m_partyMembers.end(); ++it) {
|
||||
CRenderObject* actor = mode->scene->GetGameActorByAidIncludeMe(it->accountId);
|
||||
if (actor != nullptr && static_cast<EffectActor*>(actor)->HasId(160) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 160, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ public:
|
|||
~CBlowEffect() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
};
|
||||
|
||||
|
|
@ -22,7 +22,7 @@ public:
|
|||
~CCorpse() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ public:
|
|||
~CNumEffect() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
|
||||
/* 0138 */ float baseHeight;
|
||||
|
|
|
|||
|
|
@ -104,9 +104,7 @@ void CGameActor::ProcessDamageMessages() {
|
|||
}
|
||||
|
||||
ActorDamageMessage& message = *it;
|
||||
this->SendMsg(
|
||||
nullptr, message.action, message.action >> 31, reinterpret_cast<int>(&message.targetAid), 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0);
|
||||
this->SendMsg(nullptr, message.action, reinterpret_cast<std::uint32_t>(&message.targetAid), 0, 0, 0, 0, 0);
|
||||
it = this->willBeAttackedList.erase(it);
|
||||
} else {
|
||||
++it;
|
||||
|
|
@ -165,7 +163,7 @@ bool CGameActor::ProcessState() {
|
|||
this->isCounter = 0;
|
||||
this->render.isMotionFreezed = false;
|
||||
this->SetState(0, 1);
|
||||
this->SendMsg(nullptr, AM_DELETE_SKILL_RECHARGEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_SKILL_RECHARGEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->ProcessMotion();
|
||||
this->lastProcessStateTime = timeGetTime();
|
||||
|
|
@ -588,7 +586,7 @@ void CGameActor::UpdateGaugePositions() {
|
|||
|
||||
if (this->actorWindows[3] != 0) {
|
||||
if (timeGetTime() > this->skillRechargeEndTick) {
|
||||
this->SendMsg(nullptr, AM_DELETE_SKILL_RECHARGEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_SKILL_RECHARGEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
if (this->render.state == 8) {
|
||||
this->SetState(0, 1);
|
||||
}
|
||||
|
|
@ -666,7 +664,7 @@ void CGameActor::ReleaseAttachments() {
|
|||
}
|
||||
|
||||
for (std::list<CGameObject*>::iterator it = this->msgEffectList.begin(); it != this->msgEffectList.end(); ++it) {
|
||||
(*it)->SendMsg(nullptr, AM_MSGMASTER_DEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
(*it)->SendMsg(nullptr, AM_MSGMASTER_DEAD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->msgEffectList.erase(this->msgEffectList.begin(), this->msgEffectList.end());
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ public:
|
|||
CGameActor();
|
||||
~CGameActor() override;
|
||||
bool OnProcess() override = 0;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
/* 0158 */ int movementState[6];
|
||||
/* 0170 */ unsigned char destinationAndSpeed[0x08];
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -10,7 +10,7 @@ public:
|
|||
CGameObject();
|
||||
virtual ~CGameObject();
|
||||
virtual bool OnProcess();
|
||||
virtual void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m);
|
||||
virtual void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g);
|
||||
virtual void Render(int argument);
|
||||
virtual int Get8Dir(float angle);
|
||||
int Get8Dir2(float rot, int flag);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ public:
|
|||
CGndRiser();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -190,27 +190,27 @@ void CGroundScope::Render(int argument) {
|
|||
|
||||
// OFFSET: 0x00E50DB0
|
||||
// FUNCTION: fn_24299
|
||||
void CGroundScope::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
switch (static_cast<std::int64_t>(a) << 32 | static_cast<std::uint32_t>(message)) {
|
||||
void CGroundScope::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
switch (message) {
|
||||
case AM_SETPOS:
|
||||
this->m_cellX = b;
|
||||
this->m_cellY = d;
|
||||
this->m_cellX = static_cast<int>(b);
|
||||
this->m_cellY = static_cast<int>(c);
|
||||
return;
|
||||
|
||||
case AM_SETMASTERGID:
|
||||
this->m_masterGid = b;
|
||||
this->m_masterGid = static_cast<int>(b);
|
||||
return;
|
||||
|
||||
case AM_SETTIME:
|
||||
this->m_lastingTime = b;
|
||||
this->m_lastingTime = static_cast<unsigned long>(b);
|
||||
return;
|
||||
|
||||
case AM_SET_SKILL:
|
||||
this->m_size = this->SkillScopeType(b) + 2;
|
||||
this->m_size = this->SkillScopeType(static_cast<int>(b)) + 2;
|
||||
this->m_angleSpeed = this->m_size != 0 ? 0.5f / static_cast<float>(this->m_size) : 0.0f;
|
||||
this->m_skillId = b;
|
||||
this->m_skillId = static_cast<int>(b);
|
||||
return;
|
||||
}
|
||||
|
||||
this->EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class CGroundScope : public EffectActor {
|
|||
public:
|
||||
CGroundScope();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
int SkillScopeType(int skillId);
|
||||
|
|
|
|||
|
|
@ -131,14 +131,14 @@ void CItem::Render(int argument) {
|
|||
|
||||
// OFFSET: 0x00D8B720
|
||||
// FUNCTION: fn_22252
|
||||
void CItem::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
void CItem::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
if (message != 4 || a != 0) {
|
||||
this->EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
if (message != 4) {
|
||||
this->EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const ItemFallEntry* entry = reinterpret_cast<const ItemFallEntry*>(b);
|
||||
const ItemFallEntry* entry = reinterpret_cast<const ItemFallEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->itemAid = entry->aid;
|
||||
this->name = entry->itemId;
|
||||
std::string itemName = this->name;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public:
|
|||
void SubD8B5A0();
|
||||
void SubD8B5B0();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
void SetRenderInfo(const float* bounds, float x, float y) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -24,23 +24,23 @@ bool CMousePointer::OnProcess() {
|
|||
|
||||
// OFFSET: 0x00CBF860
|
||||
// FUNCTION: fn_21114
|
||||
void CMousePointer::SendMsg(CGameObject*, int message, int a, int b, int c, int d, int e, int, int, int, int, int, int, int, int) {
|
||||
if (message == 1 && a == 0) {
|
||||
const float* const position = reinterpret_cast<const float*>(b);
|
||||
void CMousePointer::SendMsg(CGameObject*, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t, std::int64_t, std::int64_t, std::int64_t) {
|
||||
if (message == 1) {
|
||||
const float* const position = reinterpret_cast<const float*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.x = position[0];
|
||||
this->render.position.z = position[1];
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
this->render.position.y = mode->scene->terrain->Height(this->render.position.x, this->render.position.z);
|
||||
this->render.visible = 1;
|
||||
this->m_remainingFrames = 0;
|
||||
if ((d | e) != 0) {
|
||||
if (c != 0) {
|
||||
this->render.color = 0xFFFF0000;
|
||||
} else {
|
||||
this->render.color = 0xFFFFFFFF;
|
||||
}
|
||||
} else if (message == 2 && a == 0) {
|
||||
if ((b | c) != 0) {
|
||||
this->m_remainingFrames = b;
|
||||
} else if (message == 2) {
|
||||
if (b != 0) {
|
||||
this->m_remainingFrames = static_cast<int>(b);
|
||||
} else {
|
||||
this->render.visible = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ class CMousePointer : public CRenderObject {
|
|||
public:
|
||||
CMousePointer();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
/* 0138 */ int m_remainingFrames;
|
||||
/* 013C */ int padding_013C;
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ public:
|
|||
~CNpc() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
void SetState(int state, int unused) override;
|
||||
|
|
@ -52,7 +52,7 @@ public:
|
|||
CCharacterNpc();
|
||||
~CCharacterNpc() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
void SetSprJob(int value) override;
|
||||
|
|
@ -66,7 +66,7 @@ public:
|
|||
~CHalluNPC() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
@ -84,7 +84,7 @@ public:
|
|||
~CHalluPlant() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ public:
|
|||
~CPc() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
@ -165,7 +165,7 @@ public:
|
|||
~CBlurPC() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
};
|
||||
|
|
@ -176,7 +176,7 @@ public:
|
|||
~CHalluPC() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
@ -190,7 +190,7 @@ public:
|
|||
~CHalluPC2() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
@ -203,7 +203,7 @@ public:
|
|||
CPlayer();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
static int AngleToDirection(float angle);
|
||||
|
||||
|
|
@ -256,7 +256,7 @@ class CGrannyPc : public CGameActor {
|
|||
public:
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
void SetAction(unsigned animation, int motion, int repeat) override;
|
||||
|
|
|
|||
|
|
@ -274,9 +274,9 @@ void CPc::SetHeadPalette(int value) {
|
|||
void CGrannyPc::SetHonor(int value) {
|
||||
if (value < 0) {
|
||||
const std::int64_t emotion = g_cashEmotionMgr->GetSpecialEmotion(CashEmotionSpecial::ChatProhibit);
|
||||
this->SendMsg(nullptr, AM_CASH_EMOTION, 0, 0, 0, static_cast<int>(emotion), static_cast<int>(emotion >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CASH_EMOTION, 0, emotion, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_DELETE_PROHIBITEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_PROHIBITEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->honor = value;
|
||||
}
|
||||
|
|
@ -286,9 +286,9 @@ void CGrannyPc::SetHonor(int value) {
|
|||
void CPc::SetHonor(int value) {
|
||||
if (value < 0) {
|
||||
const std::int64_t emotion = g_cashEmotionMgr->GetSpecialEmotion(CashEmotionSpecial::ChatProhibit);
|
||||
this->SendMsg(nullptr, AM_CASH_EMOTION, 0, 0, 0, static_cast<int>(emotion), static_cast<int>(emotion >> 32), 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CASH_EMOTION, 0, emotion, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_DELETE_PROHIBITEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_PROHIBITEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->honor = value;
|
||||
}
|
||||
|
|
@ -1503,9 +1503,9 @@ void CPc::SetSprAccessory2(int value) {
|
|||
);
|
||||
|
||||
if (this->HasId(678)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 678, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 679, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 680, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 678, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 679, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 680, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2151,7 +2151,7 @@ void CPc::RenderOverlaySprite(const float* matrix, int) {
|
|||
}
|
||||
|
||||
int effectId;
|
||||
this->SendMsg(nullptr, AM_IS_HAVE_EFFECT, 0, reinterpret_cast<int>(&effectId), reinterpret_cast<int>(&effectId) >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_IS_HAVE_EFFECT, reinterpret_cast<int>(&effectId), 0, 0, 0, 0, 0);
|
||||
this->DrawQuad(quad, palette, 0x101, 0.0f, 0.0f, 0);
|
||||
}
|
||||
|
||||
|
|
@ -2270,7 +2270,7 @@ bool CPc::OnProcess() {
|
|||
if (!this->msgEffect) {
|
||||
CMsgEffect* effect = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->SpawnMsgEffect(44, &this->render.position, this->render.accountId, true);
|
||||
this->AddMsgEffect(effect);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect = effect;
|
||||
}
|
||||
return result;
|
||||
|
|
@ -2278,7 +2278,7 @@ bool CPc::OnProcess() {
|
|||
}
|
||||
|
||||
if (this->msgEffect) {
|
||||
this->msgEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect = nullptr;
|
||||
}
|
||||
|
||||
|
|
@ -2599,7 +2599,7 @@ __declspec(noinline) void CPlayer::UpdateMsgEffect(bool show) {
|
|||
if (!this->msgEffect) {
|
||||
CMsgEffect* effect = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->SpawnMsgEffect(44, &this->render.position, this->render.accountId, true);
|
||||
this->AddMsgEffect(effect);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect = effect;
|
||||
}
|
||||
return;
|
||||
|
|
@ -2607,7 +2607,7 @@ __declspec(noinline) void CPlayer::UpdateMsgEffect(bool show) {
|
|||
}
|
||||
|
||||
if (this->msgEffect) {
|
||||
this->msgEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
this->msgEffect = nullptr;
|
||||
}
|
||||
}
|
||||
|
|
@ -2861,7 +2861,7 @@ bool CPlayer::OnProcess() {
|
|||
request.destinationX = reinterpret_cast<const int&>(this->destCellX);
|
||||
request.destinationY = this->destCellZ;
|
||||
const long long address = reinterpret_cast<int>(&request);
|
||||
this->SendMsg(nullptr, AM_MOVE, 0, static_cast<int>(address), static_cast<int>(address >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MOVE, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
this->UpdatePendingAction();
|
||||
|
|
@ -2953,13 +2953,13 @@ void CPlayer::UpdatePendingAction() {
|
|||
reinterpret_cast<int&>(this->destCellX) = cellX;
|
||||
this->destCellZ = cellY;
|
||||
this->tickOfMoveForAttack = timeGetTime();
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, cellX, cellX >> 31, cellY, cellY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, cellX, cellY, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->attackMode == 2) {
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (this->isAttackRequest != 0 || timeGetTime() <= this->attackReqTime + 1200) {
|
||||
return;
|
||||
|
|
@ -2968,9 +2968,9 @@ void CPlayer::UpdatePendingAction() {
|
|||
this->attackReqTime = timeGetTime();
|
||||
this->isAttackRequest = 1;
|
||||
if (this->attackMode != 2) {
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK_REPEAT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK_REPEAT, 0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -3004,7 +3004,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
);
|
||||
const bool inRange = static_cast<float>(range * 5) + 5.5f >= distance;
|
||||
if ((reinterpret_cast<const int&>(this->destCellX) == column && this->destCellZ == row) || inRange) {
|
||||
this->SendMsg(nullptr, AM_REQ_SKILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_SKILL, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -3017,7 +3017,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
this->destCellZ = cellY;
|
||||
reinterpret_cast<int&>(this->destCellX) = cellX;
|
||||
this->ApplyFollowOffset(target, x, z, &cellY, &cellX);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, cellX, cellX >> 31, cellY, cellY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, cellX, cellY, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
case PT_GROUNDSKILL: {
|
||||
|
|
@ -3039,7 +3039,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
const float distance = this->CalcDist(x, this->render.position.y, z);
|
||||
const bool inRange = static_cast<float>(range * 5) + 5.5f >= distance;
|
||||
if ((reinterpret_cast<const int&>(this->destCellX) == column && this->destCellZ == row) || inRange) {
|
||||
this->SendMsg(nullptr, AM_REQ_GROUND_SKILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_GROUND_SKILL, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -3051,7 +3051,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
}
|
||||
this->destCellZ = groundY;
|
||||
reinterpret_cast<int&>(this->destCellX) = groundX;
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, groundX, groundX >> 31, groundY, groundY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, groundX, groundY, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
case PT_PICKUPITEM: {
|
||||
|
|
@ -3075,7 +3075,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
}
|
||||
|
||||
if (mode->IsWithinRange(column, row, targetX, targetY, 1)) {
|
||||
this->SendMsg(nullptr, AM_REQ_CHANGE_DIR, 0, targetX, targetX >> 31, targetY, targetY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_CHANGE_DIR, targetX, targetY, 0, 0, 0, 0);
|
||||
if (!mode->HasPendingItemPickup(this->proceedTargetGid)) {
|
||||
mode->AddPendingItemPickup(this->proceedTargetGid);
|
||||
mode->SendMsg(MM_ITEMPICKUP, this->proceedTargetGid, 0, 0, 0);
|
||||
|
|
@ -3088,7 +3088,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
}
|
||||
this->destCellZ = itemY;
|
||||
reinterpret_cast<int&>(this->destCellX) = itemX;
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, itemX, itemX >> 31, itemY, itemY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, itemX, itemY, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
case PT_TOUCH_SKILL: {
|
||||
|
|
@ -3128,7 +3128,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
}
|
||||
this->destCellZ = cellY;
|
||||
reinterpret_cast<int&>(this->destCellX) = cellX;
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, cellX, cellX >> 31, cellY, cellY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, cellX, cellY, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -3145,7 +3145,7 @@ void CPlayer::UpdatePendingAction() {
|
|||
case UNT_FLAMETRAP:
|
||||
if (this->skillId == 0) {
|
||||
if (this->attackMode == 2) {
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (this->isAttackRequest != 0 || timeGetTime() <= this->attackReqTime + 1200) {
|
||||
return;
|
||||
|
|
@ -3154,22 +3154,22 @@ void CPlayer::UpdatePendingAction() {
|
|||
this->attackReqTime = timeGetTime();
|
||||
this->isAttackRequest = 1;
|
||||
if (this->attackMode != 2) {
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK_REPEAT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK_REPEAT, 0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_ATTACK, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
this->SendMsg(nullptr, AM_REQ_SKILL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_SKILL, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DB68B0
|
||||
|
|
@ -3293,12 +3293,12 @@ void CPlayer::ReapplySkillEffects() {
|
|||
}
|
||||
for (int id = 0x1DB; id < 0x1E5; ++id) {
|
||||
if (this->HasId(id) == true) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, id, id >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, id, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
this->LaunchEffect(effectId, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0xA4, 0, 0, 0, 0, 0);
|
||||
this->skillEffect = this->LaunchEffect(0xA4, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
}
|
||||
|
|
@ -3325,7 +3325,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_DUPLELIGHT: {
|
||||
while (this->HasId(0x341)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x341, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x341, 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};
|
||||
|
|
@ -3342,7 +3342,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_STRIKING: {
|
||||
while (this->HasId(0x39D)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x39D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x39D, 0, 0, 0, 0, 0);
|
||||
}
|
||||
CRagEffect* effect = this->LaunchEffect(0x39D, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
|
|
@ -3436,24 +3436,24 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_MELODYOFSINK:
|
||||
if (this->HasId(0x57) == true) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x57, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x57, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_BEYOND_OF_WARCRY:
|
||||
if (this->HasId(0x31F) == true) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x31F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x31F, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x31F, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_SATURDAY_NIGHT_FEVER:
|
||||
if (this->HasId(0x360) == true) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x360, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x360, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x360, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_EQUIPED_FLOOR:
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0, 0x23B, 0, 1, 0, value, value >> 31, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0x23B, 1, value, 0, 0, 0);
|
||||
break;
|
||||
case EFST_ALL_RIDING:
|
||||
this->SetRiding(1);
|
||||
|
|
@ -3461,41 +3461,41 @@ void CPlayer::ReapplySkillEffects() {
|
|||
this->SetBodyPalette(this->render.bodyPalette);
|
||||
break;
|
||||
case EFST_ON_PUSH_CART:
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0, type, type >> 31, 1, 0, g_session.replayPacketMode, g_session.replayPacketMode >> 31, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, type, 1, g_session.replayPacketMode, 0, 0, 0);
|
||||
break;
|
||||
case EFST_TELEKINESIS_INTENSE:
|
||||
while (this->HasId(0x418)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x418, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x418, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x418, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_WIDEWEB:
|
||||
while (this->HasId(0x194)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x194, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x194, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_BURNT:
|
||||
while (this->HasId(0x41E)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x41E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x41E, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x41E, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_CHILL:
|
||||
while (this->HasId(0x41F)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x41F, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x41F, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x41F, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_OFFERTORIUM:
|
||||
while (this->HasId(0x421)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x421, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x421, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x421, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_ZANGETSU:
|
||||
while (this->HasId(0x3EB)) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x3EB, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x3EB, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3EB, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
|
|
@ -3508,13 +3508,13 @@ void CPlayer::ReapplySkillEffects() {
|
|||
}
|
||||
}
|
||||
while (this->HasId(0x3C3)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x3C3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x3C3, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3C3, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_KAGEMUSYA:
|
||||
while (this->HasId(0x3EC)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x3EC, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x3EC, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x3EC, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
|
|
@ -3532,7 +3532,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_DARKCROW:
|
||||
while (this->HasId(0x410)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x410, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x410, 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);
|
||||
|
|
@ -3541,7 +3541,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
case EFST_HALLUCINATIONWALK:
|
||||
case EFST_NPC_HALLUCINATIONWALK: {
|
||||
while (this->HasId(0x318)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x318, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x318, 0, 0, 0, 0, 0);
|
||||
}
|
||||
CRagEffect* effect = this->LaunchEffect(0x318, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (effect) {
|
||||
|
|
@ -3659,19 +3659,19 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_HANDICAPSTATE_DEEPBLIND:
|
||||
if (this->HasId(0x14E) == true) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x14E, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x14E, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x14E, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
g_overrideColor = 1;
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0xA4, 0, 0, 0, 0, 0);
|
||||
this->skillEffect = this->LaunchEffect(0xA4, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_DEEPSILENCE:
|
||||
case EFST_HANDICAPSTATE_SWOONING:
|
||||
this->SendMsg(nullptr, AM_MAKE_DEEPSILENCE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_DEEPSILENCE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_LASSITUDE:
|
||||
this->SendMsg(nullptr, AM_MAKE_LASSITUDE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LASSITUDE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_FROSTBITE:
|
||||
g_effectMgr->Spawn(this->render.accountId, 0x8DE, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
|
|
@ -3685,21 +3685,21 @@ void CPlayer::ReapplySkillEffects() {
|
|||
g_effectMgr->Spawn(this->render.accountId, 0x8E1, 0.0f, 0.0f, 0.0f, 0, -1, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_CONFLAGRATION:
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 255, 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 EFST_HANDICAPSTATE_MISFORTUNE:
|
||||
this->SendMsg(nullptr, AM_MAKE_MISFORTUNE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_MISFORTUNE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_DEADLYPOISON:
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 170, 0, 0, 0, 170, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 170, 0, 170, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_DEPRESSION:
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 0, 255, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HANDICAPSTATE_HOLYFLAME:
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CHANGE_COLOR, 255, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case EFST_DRAGONIC_AURA:
|
||||
g_effectMgr->Retire(this->render.accountId, 0x6BE);
|
||||
|
|
@ -3796,7 +3796,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
break;
|
||||
case EFST_EQUIPPED_DIVINE_ARMOR:
|
||||
case EFST_EQUIPPED_HOLY_ARMOR:
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0, type, type >> 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, type, 1, 0, 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
switch (type) {
|
||||
|
|
@ -3814,7 +3814,7 @@ void CPlayer::ReapplySkillEffects() {
|
|||
case EFST_MERMAID_LONGING:
|
||||
case EFST_MAGICAL_FEATHER:
|
||||
case EFST_TIME_ACCESSORY:
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0, type, type >> 31, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, type, 1, 0, 0, 0, 0);
|
||||
break;
|
||||
case EFST_HEAD_EQUIPMENT_EFFECT:
|
||||
this->ApplyEffectState(value + 0x9B5, true);
|
||||
|
|
@ -3843,10 +3843,10 @@ struct PlayerSkillRequest {
|
|||
// OFFSET: 0x00DB9A00
|
||||
// FUNCTION: fn_22672
|
||||
void CPlayer::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
switch (static_cast<std::int64_t>(a) << 32 | static_cast<std::uint32_t>(message)) {
|
||||
switch (message) {
|
||||
case AM_REQ_GROUND_SKILL: {
|
||||
PlayerSkillRequest request;
|
||||
request.skill = this->skillId;
|
||||
|
|
@ -3898,17 +3898,17 @@ void CPlayer::SendMsg(
|
|||
}
|
||||
break;
|
||||
case AM_REQ_MOVE:
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0);
|
||||
if (this->render.state != 0x4B) {
|
||||
if (this->IsSpecialState(this->render.state)) {
|
||||
this->isPreengageStateOfMove = 1;
|
||||
this->preengageXOfMove = b;
|
||||
this->preengageYOfMove = d;
|
||||
this->preengageXOfMove = static_cast<int>(b);
|
||||
this->preengageYOfMove = static_cast<int>(c);
|
||||
} else {
|
||||
this->isPreengageStateOfMove = 0;
|
||||
this->preengageXOfMove = -1;
|
||||
this->preengageYOfMove = -1;
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, b, b >> 31, d, d >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, b, c, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -3916,7 +3916,7 @@ void CPlayer::SendMsg(
|
|||
g_moveRequestPending = false;
|
||||
if (timeGetTime() > this->standTick + 350) {
|
||||
this->standTick = timeGetTime();
|
||||
mode->SendMsg(MM_REQUEST_MOVE, b, d, 0, 0);
|
||||
mode->SendMsg(MM_REQUEST_MOVE, static_cast<int>(b), static_cast<int>(c), 0, 0);
|
||||
}
|
||||
break;
|
||||
case AM_REQ_CHANGE_DIR: {
|
||||
|
|
@ -3926,7 +3926,7 @@ void CPlayer::SendMsg(
|
|||
}
|
||||
float targetX;
|
||||
float targetZ;
|
||||
mode->CellCenter(b, d, targetX, targetZ);
|
||||
mode->CellCenter(static_cast<int>(b), static_cast<int>(c), targetX, targetZ);
|
||||
const float heading = CRenderObject::Heading(this->render.position.x, this->render.position.z, targetX, targetZ);
|
||||
const float facing = static_cast<float>((CPlayer::AngleToDirection(static_cast<float>(heading + 22.5)) + 4) * 45);
|
||||
int delta = static_cast<int>(this->render.angle - facing);
|
||||
|
|
@ -3983,12 +3983,12 @@ void CPlayer::SendMsg(
|
|||
case AM_PREMOVE:
|
||||
this->preMoveOn = 1;
|
||||
this->preMoveStartTick = timeGetTime();
|
||||
reinterpret_cast<int&>(this->destCellX) = b;
|
||||
this->destCellZ = d;
|
||||
reinterpret_cast<int&>(this->destCellX) = static_cast<int>(b);
|
||||
this->destCellZ = static_cast<int>(c);
|
||||
break;
|
||||
case AM_MOVE: {
|
||||
this->preMoveOn = 0;
|
||||
const int* route = reinterpret_cast<const int*>(b);
|
||||
const int* route = reinterpret_cast<const int*>(static_cast<std::intptr_t>(b));
|
||||
this->routeStartTick = route[0];
|
||||
if (this->FindRoute(route[1], route[2], route[3], route[4], route[5], route[6], *reinterpret_cast<const int*>(g_session.healthPoints))) {
|
||||
this->movementState[5] = route[5];
|
||||
|
|
@ -4032,33 +4032,31 @@ void CPlayer::SendMsg(
|
|||
if (this->attackMode != 0) {
|
||||
this->attackMode = 2;
|
||||
if (this->totalAttackReqCnt != 0) {
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_CANCELATTACK, 0, 0, 0, 0, 0, 0);
|
||||
mode->SendMsg(MM_CANCEL_LOCKON, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case AM_SET_SKILL_USE_LEVEL:
|
||||
this->skillUseLevel = b;
|
||||
this->skillUseLevel = static_cast<int>(b);
|
||||
break;
|
||||
case AM_PROCEEDGROUNDSKILL:
|
||||
if (this->render.state != 6 &&
|
||||
(!StateFlag01(this->stateFlags) || (b == 0x89 && c == 0) || (b == 0xD4 && c == 0) || (b == 0x211 && c == 0) ||
|
||||
(b == 0x212 && c == 0))) {
|
||||
(!StateFlag01(this->stateFlags) || b == 0x89 || b == 0xD4 || b == 0x211 || b == 0x212)) {
|
||||
this->proceedType = 4;
|
||||
this->skillId = b;
|
||||
this->gSkillDx = d;
|
||||
this->gSkillDy = f;
|
||||
this->skillId = static_cast<int>(b);
|
||||
this->gSkillDx = static_cast<int>(c);
|
||||
this->gSkillDy = static_cast<int>(d);
|
||||
this->proceedTargetGid = 0;
|
||||
}
|
||||
break;
|
||||
case AM_PROCEEDSKILL:
|
||||
if (this->render.state != 6 &&
|
||||
(!StateFlag01(this->stateFlags) || (d == 0x89 && e == 0) || (d == 0xD4 && e == 0) || (d == 0x211 && e == 0) ||
|
||||
(d == 0x212 && e == 0) || (d == 0x250 && e == 0))) {
|
||||
(!StateFlag01(this->stateFlags) || c == 0x89 || c == 0xD4 || c == 0x211 || c == 0x212 || c == 0x250)) {
|
||||
this->proceedType = 3;
|
||||
this->proceedTargetGid = b;
|
||||
this->skillId = d;
|
||||
this->proceedTargetGid = static_cast<int>(b);
|
||||
this->skillId = static_cast<int>(c);
|
||||
}
|
||||
break;
|
||||
case AM_RESUMEPROCEEDATTACK:
|
||||
|
|
@ -4066,7 +4064,7 @@ void CPlayer::SendMsg(
|
|||
const int attackMode = this->proceedType == 1 ? 5 : 1;
|
||||
this->tickOfMoveForAttack = timeGetTime() - 1200;
|
||||
this->proceedType = attackMode;
|
||||
this->proceedTargetGid = b;
|
||||
this->proceedTargetGid = static_cast<int>(b);
|
||||
this->isAttackRequest = 0;
|
||||
this->totalAttackReqCnt = 0;
|
||||
reinterpret_cast<int&>(this->destCellX) = -1;
|
||||
|
|
@ -4075,16 +4073,16 @@ void CPlayer::SendMsg(
|
|||
break;
|
||||
case AM_PROCEEDATTACK:
|
||||
if (this->render.state != 6 && !StateFlag01(this->stateFlags)) {
|
||||
CRenderObject* target = mode->scene->GetGameActorByAID(b);
|
||||
CRenderObject* target = mode->scene->GetGameActorByAID(static_cast<std::uint32_t>(b));
|
||||
if (target != nullptr) {
|
||||
this->proceedType =
|
||||
static_cast<std::uint32_t>(*reinterpret_cast<const int*>(g_session.healthPoints) * 4 / 3) <
|
||||
reinterpret_cast<const std::uint32_t*>(static_cast<CGameActor*>(target)->destinationAndSpeed)[1]
|
||||
? 5
|
||||
: 1;
|
||||
this->proceedTargetGid = b;
|
||||
this->proceedTargetGid = static_cast<int>(b);
|
||||
this->isAttackRequest = 0;
|
||||
this->attackMode = d;
|
||||
this->attackMode = static_cast<int>(c);
|
||||
this->totalAttackReqCnt = 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -4092,17 +4090,17 @@ void CPlayer::SendMsg(
|
|||
case AM_PROCEEDPICKUPITEM:
|
||||
if (this->render.state != 6 && !StateFlag01(this->stateFlags)) {
|
||||
this->proceedType = 2;
|
||||
this->proceedTargetGid = b;
|
||||
this->proceedTargetGid = static_cast<int>(b);
|
||||
}
|
||||
break;
|
||||
case AM_PROCEEDTOUCHSKILL:
|
||||
if (this->render.state != 6 && !StateFlag01(this->stateFlags)) {
|
||||
const int* skill = reinterpret_cast<const int*>(d);
|
||||
const int* skill = reinterpret_cast<const int*>(static_cast<std::intptr_t>(c));
|
||||
this->proceedType = 6;
|
||||
this->skillId = skill[1];
|
||||
this->skillUseLevel = skill[3];
|
||||
this->proceedTargetGid = b;
|
||||
this->attackMode = f;
|
||||
this->proceedTargetGid = static_cast<int>(b);
|
||||
this->attackMode = static_cast<int>(d);
|
||||
this->isAttackRequest = 0;
|
||||
this->totalAttackReqCnt = 0;
|
||||
}
|
||||
|
|
@ -4111,7 +4109,7 @@ void CPlayer::SendMsg(
|
|||
this->route.points.clear();
|
||||
break;
|
||||
default:
|
||||
this->CPc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, j, k, l, m);
|
||||
this->CPc::SendMsg(sender, message, b, c, d, e, f, g);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -4326,7 +4324,7 @@ void CPlayer::Initialize() {
|
|||
this->SetSprRobe(g_session.m_robe, 0);
|
||||
if (g_session.playerAppearanceState != 0) {
|
||||
const int value = g_session.playerAppearanceState;
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 0, 856, 0, 1, 0, value, value >> 31, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_STATUS_CHANGE, 856, 1, value, 0, 0, 0);
|
||||
}
|
||||
this->bodyState = bodyState;
|
||||
this->stateFlags = stateFlags;
|
||||
|
|
@ -4335,7 +4333,7 @@ void CPlayer::Initialize() {
|
|||
*reinterpret_cast<const int*>(&g_session.statusLevelEffects[0]), g_session.m_jobFlags, *reinterpret_cast<const int*>(&g_session.statusLevelEffects[4]), false
|
||||
);
|
||||
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0xA4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0xA4, 0, 0, 0, 0, 0);
|
||||
this->skillEffect = this->LaunchEffect(0xA4, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (!g_statusRefreshSuppressed) {
|
||||
this->ReapplySkillEffects();
|
||||
|
|
@ -4762,13 +4760,13 @@ struct PcMoveEntry {
|
|||
// OFFSET: 0x00DAE890
|
||||
// FUNCTION: fn_22602
|
||||
void CPc::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
switch (*reinterpret_cast<const std::int64_t*>(&message)) {
|
||||
switch (message) {
|
||||
case AM_SET_HEAD_DIR:
|
||||
if (this->render.state == 0 || this->render.state == 6) {
|
||||
this->render.curMotion = b;
|
||||
this->render.curMotion = static_cast<int>(b);
|
||||
}
|
||||
break;
|
||||
case AM_REMOVEGAGE:
|
||||
|
|
@ -4783,12 +4781,12 @@ void CPc::SendMsg(
|
|||
this->gaugeWindow->SetSize(60, 5);
|
||||
g_windowMgr.AddRenderedFront(this->gaugeWindow);
|
||||
}
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetValues(b, d);
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetValues(static_cast<int>(b), static_cast<int>(c));
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetLimits(0, 0);
|
||||
this->gaugeWindow->Move(this->render.screenX - 30, ScaleByScreenHeight(12) + this->render.screenY);
|
||||
break;
|
||||
case AM_STANDENTRY: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
mode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
this->render.position.y =
|
||||
mode->scene->terrain->Height(this->render.position.x, this->render.position.z);
|
||||
|
|
@ -4825,7 +4823,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_STANDENTRY2: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->bodyStyle = entry->bodyStyle;
|
||||
mode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
this->render.position.y =
|
||||
|
|
@ -4881,7 +4879,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_INITSTANDENTRY: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
CGameMode* gameMode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
gameMode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
|
|
@ -4918,14 +4916,14 @@ void CPc::SendMsg(
|
|||
this->SetState(0, 1);
|
||||
break;
|
||||
}
|
||||
if (d == 2 && e == 0 && !StateFlag06(this->stateFlags)) {
|
||||
if (c == 2 && !StateFlag06(this->stateFlags)) {
|
||||
this->LaunchEffect(0x158, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
this->ShowPartyMemberEffect(entry->aid);
|
||||
break;
|
||||
}
|
||||
case AM_INITSTANDENTRY2: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->bodyStyle = entry->bodyStyle;
|
||||
this->render.accountId = entry->aid;
|
||||
CGameMode* gameMode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
|
|
@ -4964,7 +4962,7 @@ void CPc::SendMsg(
|
|||
this->SetState(0, 1);
|
||||
break;
|
||||
}
|
||||
if (d == 2 && e == 0 && !StateFlag06(this->stateFlags)) {
|
||||
if (c == 2 && !StateFlag06(this->stateFlags)) {
|
||||
this->LaunchEffect(0x158, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
this->ShowPartyMemberEffect(entry->aid);
|
||||
|
|
@ -4972,7 +4970,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_INITMOVEENTRY: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
this->routeStartTick = entry->moveStartTick;
|
||||
|
|
@ -5003,7 +5001,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_INITMOVEENTRY2: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->bodyStyle = entry->bodyStyle;
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
|
|
@ -5037,7 +5035,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_MOVEENTRY: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->bodyStyle = entry->bodyStyle;
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
|
|
@ -5063,7 +5061,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_MOVEENTRY2: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->bodyStyle = entry->bodyStyle;
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
|
|
@ -5091,8 +5089,8 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_CHANGE_RANK:
|
||||
this->pkRank = d;
|
||||
this->pkTotal = b;
|
||||
this->pkRank = static_cast<int>(c);
|
||||
this->pkTotal = static_cast<int>(b);
|
||||
break;
|
||||
case AM_MAKE_BIRD: {
|
||||
if (this->statusEffects[0] != 0) {
|
||||
|
|
@ -5131,7 +5129,7 @@ void CPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
CMsgEffect* effect = mode->SpawnMsgEffect(effectId, &this->render.position, this->render.accountId, true);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
effect->SetAnimationSpeed(6.0f);
|
||||
this->AddMsgEffect(effect);
|
||||
this->statusEffects[0] = reinterpret_cast<int>(effect);
|
||||
|
|
@ -5168,13 +5166,13 @@ void CPc::SendMsg(
|
|||
if (!effect) {
|
||||
break;
|
||||
}
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
this->AddMsgEffect(effect);
|
||||
this->statusEffects[1] = reinterpret_cast<int>(effect);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, j, k, l, m);
|
||||
CGameActor::SendMsg(sender, message, b, c, d, e, f, g);
|
||||
break;
|
||||
case 77:
|
||||
break;
|
||||
|
|
@ -5184,13 +5182,13 @@ void CPc::SendMsg(
|
|||
// OFFSET: 0x00DADE30
|
||||
// FUNCTION: fn_22601
|
||||
void CGrannyPc::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
switch (*reinterpret_cast<const std::int64_t*>(&message)) {
|
||||
switch (message) {
|
||||
case AM_SET_HEAD_DIR:
|
||||
if (this->render.state == 0 || this->render.state == 6) {
|
||||
this->render.curMotion = b;
|
||||
this->render.curMotion = static_cast<int>(b);
|
||||
}
|
||||
break;
|
||||
case AM_REMOVEGAGE:
|
||||
|
|
@ -5205,12 +5203,12 @@ void CGrannyPc::SendMsg(
|
|||
this->gaugeWindow->SetSize(60, 5);
|
||||
g_windowMgr.AddRenderedFront(this->gaugeWindow);
|
||||
}
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetValues(b, d);
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetValues(static_cast<int>(b), static_cast<int>(c));
|
||||
static_cast<UIPcGage*>(this->gaugeWindow)->SetLimits(0, 0);
|
||||
this->gaugeWindow->Move(this->render.screenX - 30, ScaleByScreenHeight(12) + this->render.screenY);
|
||||
break;
|
||||
case AM_STANDENTRY: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
mode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
this->render.position.y =
|
||||
mode->scene->terrain->Height(this->render.position.x, this->render.position.z);
|
||||
|
|
@ -5247,7 +5245,7 @@ void CGrannyPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_STANDENTRY2: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
mode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
this->render.position.y =
|
||||
mode->scene->terrain->Height(this->render.position.x, this->render.position.z);
|
||||
|
|
@ -5296,7 +5294,7 @@ void CGrannyPc::SendMsg(
|
|||
}
|
||||
case AM_INITSTANDENTRY:
|
||||
case AM_INITSTANDENTRY2: {
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(b);
|
||||
PcStandEntry* entry = reinterpret_cast<PcStandEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
CGameMode* gameMode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
gameMode->CellCenter(entry->cellX, entry->cellY, this->render.position.x, this->render.position.z);
|
||||
|
|
@ -5333,14 +5331,14 @@ void CGrannyPc::SendMsg(
|
|||
this->SetState(0, 1);
|
||||
break;
|
||||
}
|
||||
if (d == 2 && e == 0 && !StateFlag06(this->stateFlags)) {
|
||||
if (c == 2 && !StateFlag06(this->stateFlags)) {
|
||||
this->LaunchEffect(0x158, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
this->ShowPartyMemberEffect(entry->aid);
|
||||
break;
|
||||
}
|
||||
case AM_INITMOVEENTRY: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
this->routeStartTick = entry->moveStartTick;
|
||||
|
|
@ -5371,7 +5369,7 @@ void CGrannyPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_INITMOVEENTRY2: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
this->routeStartTick = entry->moveStartTick;
|
||||
|
|
@ -5406,7 +5404,7 @@ void CGrannyPc::SendMsg(
|
|||
}
|
||||
case AM_MOVEENTRY:
|
||||
case AM_MOVEENTRY2: {
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(b);
|
||||
PcMoveEntry* entry = reinterpret_cast<PcMoveEntry*>(static_cast<std::intptr_t>(b));
|
||||
this->render.accountId = entry->aid;
|
||||
*reinterpret_cast<int*>(&this->destinationAndSpeed[4]) = entry->speed;
|
||||
this->routeStartTick = entry->moveStartTick;
|
||||
|
|
@ -5430,11 +5428,11 @@ void CGrannyPc::SendMsg(
|
|||
break;
|
||||
}
|
||||
case AM_CHANGE_RANK:
|
||||
this->pkRank = d;
|
||||
this->pkTotal = b;
|
||||
this->pkRank = static_cast<int>(c);
|
||||
this->pkTotal = static_cast<int>(b);
|
||||
break;
|
||||
default:
|
||||
CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
break;
|
||||
case 77:
|
||||
break;
|
||||
|
|
@ -5590,7 +5588,7 @@ void CPlayer::SetState(int state, int resetPosition) {
|
|||
this->isPreengageStateOfMove = 0;
|
||||
this->preengageXOfMove = -1;
|
||||
this->preengageYOfMove = -1;
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, 0, cellX, cellX >> 31, cellY, cellY >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REQ_MOVE_PRIMITIVE, cellX, cellY, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (state == 3) {
|
||||
|
|
|
|||
|
|
@ -438,7 +438,7 @@ void CRenderObject::PlayFrameSounds() {
|
|||
|
||||
// OFFSET: 0x00CBF920
|
||||
// FUNCTION: fn_21115
|
||||
void CRenderObject::SendMsg(CGameObject*, int, int, int, int, int, int, int, int, int, int, int, int, int, int) {
|
||||
void CRenderObject::SendMsg(CGameObject*, std::int64_t, std::int64_t, std::int64_t, std::int64_t, std::int64_t, std::int64_t, std::int64_t) {
|
||||
}
|
||||
|
||||
// OFFSET: 0x00CBF930
|
||||
|
|
@ -1081,7 +1081,7 @@ void CGameActor::PlayGroundSkillEffect(int sender, const int* skill, int argumen
|
|||
mode->LaunchDummyEffect(&position, 0x77, EffectLifetime(0x77) + 10, 0);
|
||||
if (this->statusEffects[0] != 0) {
|
||||
const std::int64_t address = reinterpret_cast<int>(&position);
|
||||
reinterpret_cast<CGameObject*>(this->statusEffects[0])->SendMsg(nullptr, AM_REQ_ATTACK, 0, static_cast<int>(address), static_cast<int>(address >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
reinterpret_cast<CGameObject*>(this->statusEffects[0])->SendMsg(nullptr, AM_REQ_ATTACK, address, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case AS_VENOMDUST:
|
||||
|
|
@ -1335,7 +1335,7 @@ void CGameActor::SetState(int state, int resetPosition) {
|
|||
target = mode->scene->GetGameActorByAID(this->hitTargetAid);
|
||||
}
|
||||
if (target) {
|
||||
target->SendMsg(nullptr, AM_DELETE_MAGIC_TARGET, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(nullptr, AM_DELETE_MAGIC_TARGET, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->SetAction(action, 5, 1);
|
||||
const int job = this->GetEffectiveJob(-1);
|
||||
|
|
@ -1376,8 +1376,8 @@ void CGameActor::SetState(int state, int resetPosition) {
|
|||
this->render.timedSequenceActive = 0;
|
||||
this->render.isMotionFreezed = false;
|
||||
if (this->bodyState == BODYSTATE_FREEZING) {
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->render.isLieOnGround = true;
|
||||
this->render.isMotionFinished = false;
|
||||
|
|
@ -1431,10 +1431,10 @@ void CGameActor::SetState(int state, int resetPosition) {
|
|||
this->render.sequenceInterval = 10;
|
||||
this->SetAnimationSequence(action, 0, action, 0, action, 0, action, 1, action, 1, 1, 3000, 0);
|
||||
while (HasEffectOfType(this->state.effects, 0x1be)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x1be, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x1be, 0, 0, 0, 0, 0);
|
||||
}
|
||||
while (HasEffectOfType(this->state.effects, 0x1bd)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x1bd, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x1bd, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x1bd, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x19b, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
|
|
@ -1591,10 +1591,10 @@ void CGameActor::SetState(int state, int resetPosition) {
|
|||
this->render.sequenceInterval = 20;
|
||||
this->SetAnimationSequence(action, 0, action, 0, action, 0, action, 1, action, 1, 1, 3000, 0);
|
||||
while (HasEffectOfType(this->state.effects, 0x1be)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x1be, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x1be, 0, 0, 0, 0, 0);
|
||||
}
|
||||
while (HasEffectOfType(this->state.effects, 0x430)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 0x430, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0x430, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->LaunchEffect(0x430, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
this->LaunchEffect(0x19b, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
|
|
@ -2732,12 +2732,12 @@ static __forceinline void FillCharacterNpcRenderSecondary(CCharacterNpc* self, C
|
|||
// OFFSET: 0x005A1530
|
||||
// FUNCTION: fn_03053
|
||||
void CCharacterNpc::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
CharacterNpcViewInfo* info = reinterpret_cast<CharacterNpcViewInfo*>(b);
|
||||
switch (static_cast<std::int64_t>(static_cast<std::uint64_t>(static_cast<std::uint32_t>(a)) << 32 | static_cast<std::uint32_t>(message))) {
|
||||
CharacterNpcViewInfo* info = reinterpret_cast<CharacterNpcViewInfo*>(static_cast<std::intptr_t>(b));
|
||||
switch (message) {
|
||||
case AM_INITSTANDENTRY:
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
this->render.visible = g_session.IsVisibleJob(info->job);
|
||||
this->SetGuildInfo(info->guildId, info->guildEmblemVersion);
|
||||
if (this->characterRender != nullptr) {
|
||||
|
|
@ -2747,7 +2747,7 @@ void CCharacterNpc::SendMsg(
|
|||
FillCharacterNpcRenderPrimary(this, info);
|
||||
return;
|
||||
case AM_STANDENTRY:
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
if (this->characterRender == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -2755,7 +2755,7 @@ void CCharacterNpc::SendMsg(
|
|||
return;
|
||||
case AM_INITMOVEENTRY:
|
||||
case AM_INITMOVEENTRY2:
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
if (this->characterRender != nullptr) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -2764,14 +2764,14 @@ void CCharacterNpc::SendMsg(
|
|||
return;
|
||||
case AM_MOVEENTRY:
|
||||
case AM_MOVEENTRY2:
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
if (this->characterRender == nullptr) {
|
||||
return;
|
||||
}
|
||||
FillCharacterNpcRenderSecondary(this, info);
|
||||
return;
|
||||
default:
|
||||
CNpc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CNpc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -3147,7 +3147,7 @@ void CGameActor::SetHatEffect(int effectId, bool on) {
|
|||
}
|
||||
|
||||
const std::int64_t value = hatEffect;
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, value, 0, 0, 0, 0, 0);
|
||||
|
||||
CPc* pc;
|
||||
if (hatEffect == 254 && IsPlayerJob(this->GetEffectiveJob(-1)) && (pc = dynamic_cast<CPc*>(this)) != nullptr) {
|
||||
|
|
@ -3194,30 +3194,30 @@ void CGameActor::SetEffectInstance(int effectId, int instance, bool on) {
|
|||
// FUNCTION: fn_21022
|
||||
void CGameActor::ResetJobEffects() {
|
||||
this->levelAuraType = 0;
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 978, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 979, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 1022, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 1023, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 1226, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 1227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 757, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 362, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 200, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 976, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 977, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 978, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 979, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 1022, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 1023, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 1226, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 1227, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 757, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 880, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 200, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 397, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 398, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 362, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 362, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 201, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 202, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 202, 0, 0, 0, 0, 0);
|
||||
|
||||
const std::int64_t first = g_session.m_maxLevelEffect4th;
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, static_cast<int>(first), static_cast<int>(first >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, first, 0, 0, 0, 0, 0);
|
||||
const std::int64_t second = g_session.m_maxLevelEffect4thSub;
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, static_cast<int>(second), static_cast<int>(second >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, second, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00CAB020
|
||||
|
|
@ -3755,13 +3755,10 @@ void CGameActor::ProcessHitMessage(CGameObject*, const ActorHitInfo* info, int,
|
|||
|
||||
const std::int64_t address = reinterpret_cast<int>(&message);
|
||||
if (hitCount == 1) {
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
const std::int64_t value = damage;
|
||||
target->SendMsg(
|
||||
this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0,
|
||||
0, 0, 0, 0, 0
|
||||
);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, value, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
const int job = this->GetEffectiveJob(-1);
|
||||
|
|
@ -3773,10 +3770,7 @@ void CGameActor::ProcessHitMessage(CGameObject*, const ActorHitInfo* info, int,
|
|||
total += damage;
|
||||
message.damage = damage;
|
||||
const std::int64_t value = total;
|
||||
target->SendMsg(
|
||||
this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), static_cast<int>(value), static_cast<int>(value >> 32), 0, 0,
|
||||
0, 0, 0, 0, 0, 0
|
||||
);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, value, 0, 0, 0, 0);
|
||||
message.time -= g_multiHitInterval / 2;
|
||||
}
|
||||
}
|
||||
|
|
@ -3785,13 +3779,10 @@ void CGameActor::ProcessHitMessage(CGameObject*, const ActorHitInfo* info, int,
|
|||
message.time += g_multiHitInterval / 2 + (g_multiHitInterval / 4 + g_multiHitInterval);
|
||||
message.damage = extraDamage;
|
||||
if (hitCount == 1) {
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
const std::int64_t value = total + extraDamage;
|
||||
target->SendMsg(
|
||||
this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0,
|
||||
0, 0, 0, 0, 0
|
||||
);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, value, 0, 0, 0, 0);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -3803,10 +3794,7 @@ void CGameActor::ProcessHitMessage(CGameObject*, const ActorHitInfo* info, int,
|
|||
total += damage;
|
||||
message.damage = damage;
|
||||
const std::int64_t value = total;
|
||||
target->SendMsg(
|
||||
this, AM_WILL_BE_ATTACKED, 0, static_cast<int>(address), static_cast<int>(address >> 32), static_cast<int>(value), static_cast<int>(value >> 32), 0, 0, 0,
|
||||
0, 0, 0, 0, 0
|
||||
);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, value, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -4265,10 +4253,10 @@ void C3dGrannyGameActor::RenderShadowed(int argument) {
|
|||
// OFFSET: 0x00CC3E50
|
||||
// FUNCTION: fn_21156
|
||||
void CGameActor::SetCharm(int type, int count) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x2E1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x2E2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x2DF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 0x2E0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x2E1, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x2E2, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x2DF, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0x2E0, 0, 0, 0, 0, 0);
|
||||
if (count <= 0 || StateFlag01(this->GetStateFlags()) || StateFlag02(this->GetStateFlags())) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -4334,7 +4322,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
|
||||
if (g_session.IsTreeGroupTwo(this->GetEffectiveJob(-1))) {
|
||||
if (g_session.m_maxLevel == static_cast<std::int16_t>(this->characterLevel)) {
|
||||
this->SendMsg(nullptr, 0x96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, 0x96, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
this->hasLevelAura = 0;
|
||||
|
|
@ -4343,7 +4331,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
|
||||
if (g_session.IsTreeGroupThree(this->GetEffectiveJob(-1)) == true) {
|
||||
if (*reinterpret_cast<int*>(&g_session.jobLevelLimits[0x74]) == static_cast<std::int16_t>(this->characterLevel)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL4TH_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL4TH_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
this->hasLevelAura = 0;
|
||||
|
|
@ -4352,7 +4340,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
|
||||
if (g_session.IsSuperNovice2Job(this->GetEffectiveJob(-1))) {
|
||||
if (*reinterpret_cast<int*>(&g_session.jobLevelLimits[0]) == static_cast<std::int16_t>(this->characterLevel)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
this->hasLevelAura = 0;
|
||||
|
|
@ -4361,7 +4349,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
|
||||
if (g_session.IsExpandedJob(this->GetEffectiveJob(-1))) {
|
||||
if (*reinterpret_cast<int*>(&g_session.jobLevelLimits[4]) == static_cast<std::int16_t>(this->characterLevel)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
this->hasLevelAura = 0;
|
||||
|
|
@ -4371,7 +4359,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
if (g_session.IsMercenaryJob(this->GetEffectiveJob(-1))) {
|
||||
const int skill = static_cast<std::int16_t>(this->characterLevel);
|
||||
if (*reinterpret_cast<int*>(&g_session.jobLevelLimits[8]) == skill) {
|
||||
this->SendMsg(nullptr, 0x93, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, 0x93, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
if (*reinterpret_cast<int*>(g_session.maxBaseLevel) != skill || g_session.IsNewMercenaryJob(this->GetEffectiveJob(-1)) != 0) {
|
||||
|
|
@ -4380,7 +4368,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
}
|
||||
} else if (g_session.IsDoramJob(this->GetEffectiveJob(-1)) == true) {
|
||||
if (*reinterpret_cast<int*>(&g_session.jobLevelLimits[0x28]) == static_cast<std::int16_t>(this->characterLevel)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL160_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
this->hasLevelAura = 0;
|
||||
|
|
@ -4390,7 +4378,7 @@ void CGameActor::UpdateMaxLevelAura() {
|
|||
return;
|
||||
}
|
||||
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL99_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_LEVEL99_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00CC2340
|
||||
|
|
@ -4628,9 +4616,7 @@ __declspec(noinline) void CGameActor::ProcessActorEffects() {
|
|||
}
|
||||
|
||||
ActorDamageMessage& message = *it;
|
||||
this->SendMsg(
|
||||
nullptr, message.action, message.action >> 31, reinterpret_cast<int>(&message.targetAid), 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0);
|
||||
this->SendMsg(nullptr, message.action, reinterpret_cast<std::uint32_t>(&message.targetAid), 0, 0, 0, 0, 0);
|
||||
it = this->willBeAttackedList.erase(it);
|
||||
}
|
||||
}
|
||||
|
|
@ -4717,7 +4703,7 @@ void CGameActor::SpawnDamageDigits(int, int damage, std::uint32_t color, int typ
|
|||
CMsgEffect* effect = static_cast<CMsgEffect*>(*it);
|
||||
if (effect->m_type == 22) {
|
||||
this->ClearStatusEffectInstance(reinterpret_cast<int>(effect));
|
||||
effect->SendMsg(this, AM_MASTER_DEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_MASTER_DEAD, 0, 0, 0, 0, 0, 0);
|
||||
it = this->msgEffectList.erase(it);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->RemoveObject(effect);
|
||||
} else {
|
||||
|
|
@ -4730,19 +4716,19 @@ void CGameActor::SpawnDamageDigits(int, int damage, std::uint32_t color, int typ
|
|||
for (auto it = digits.begin(); it != digits.end(); ++it, ++index) {
|
||||
CMsgEffect* effect = new CMsgEffect;
|
||||
effect->render.color = color;
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, 0, this->render.accountId, 0, type, type >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, static_cast<std::uint32_t>(this->render.accountId), type, 0, 0, 0, 0);
|
||||
const std::intptr_t position = reinterpret_cast<std::intptr_t>(&this->render.position);
|
||||
const int count = static_cast<int>(digits.size());
|
||||
if (value >= 100000000 && g_session.m_damageMillionUnit == 2) {
|
||||
if (index == 0) {
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, 0, position, position >> 31, *it, *it >> 31, (count - 1) * 3 + 4, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, position, *it, static_cast<std::uint32_t>((count - 1) * 3 + 4), 0, 0, 0);
|
||||
} else {
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, 0, position, position >> 31, *it, *it >> 31, (count - 1) * 3 - index * 8, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, position, *it, static_cast<std::uint32_t>((count - 1) * 3 - index * 8), 0, 0, 0);
|
||||
}
|
||||
} else {
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, 0, position, position >> 31, *it, *it >> 31, (count - index * 2) * 4 - 4, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, position, *it, static_cast<std::uint32_t>((count - index * 2) * 4 - 4), 0, 0, 0);
|
||||
}
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
effect->render.useGroundLighting = 0;
|
||||
if (type == 22) {
|
||||
effect->render.scale = 0.5f;
|
||||
|
|
@ -4794,12 +4780,12 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
if (StateFlag01Changed(this->stateFlags, previousFlags)) {
|
||||
this->ResetJobEffects();
|
||||
if (this->GetEffectiveJob(-1) == 45) {
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 0, 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_DELETE_EFFECT, 321, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (StateFlag01(this->stateFlags)) {
|
||||
if (notify) {
|
||||
this->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
if (this->GetEffectiveJob(-1) != 25 && this->GetEffectiveJob(-1) != 4222) {
|
||||
this->LaunchEffect(16, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
|
|
@ -4808,17 +4794,17 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.enabled = 0;
|
||||
if (this->render.accountId != g_session.m_aid && g_session.IsAdminSubMode(7) == 0) {
|
||||
this->render.visibilityOptions[0] = 0;
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REMOVEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 159, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REMOVEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (!g_session.IsGuildMemberAccount(this->render.accountId)) {
|
||||
this->ClearSiegeNameWindow();
|
||||
|
|
@ -4829,7 +4815,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
}
|
||||
} else {
|
||||
if (notify) {
|
||||
this->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->waitingUseItemAck = 0;
|
||||
}
|
||||
|
||||
|
|
@ -4838,13 +4824,13 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.visibilityOptions[0] = 1;
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->RefreshGuildEmblemWindow();
|
||||
if (this->hasLevelAura != 0) {
|
||||
|
|
@ -4863,17 +4849,17 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.enabled = 0;
|
||||
if (this->render.accountId != g_session.m_aid && g_session.IsAdminSubMode(7) == 0) {
|
||||
this->render.visibilityOptions[0] = 0;
|
||||
this->SendMsg(nullptr, AM_REMOVEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_REMOVEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 159, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (!g_session.IsGuildMemberAccount(this->render.accountId)) {
|
||||
this->ClearSiegeNameWindow();
|
||||
|
|
@ -4889,13 +4875,13 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.visibilityOptions[0] = 1;
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->RefreshGuildEmblemWindow();
|
||||
if (this->hasLevelAura != 0) {
|
||||
|
|
@ -4906,36 +4892,36 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
|
||||
if (!StateFlag01(this->stateFlags) && !StateFlag02(this->stateFlags) && !StateFlag06(this->stateFlags)) {
|
||||
if (StateFlag04Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag04(this->stateFlags) ? AM_MAKE_BIRD : AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag04(this->stateFlags) ? AM_MAKE_BIRD : AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag20(this->stateFlags) ? AM_MAKE_WOLF : AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag20(this->stateFlags) ? AM_MAKE_WOLF : AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (StateFlag19Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag19(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag19(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag23Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag23(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag23(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag24Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag24(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag24(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag25Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag25(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag25(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag26Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag26(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag26(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag21Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag21(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag21(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag05Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag05(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag05(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag15Changed(this->stateFlags, previousFlags)) {
|
||||
this->SendMsg(nullptr, StateFlag15(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, StateFlag15(this->stateFlags) ? AM_MAKE_CHICKEN : AM_DELETE_CHICKEN, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (StateFlag06Changed(this->stateFlags, previousFlags)) {
|
||||
|
|
@ -4945,7 +4931,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.visibilityOptions[0] = 0;
|
||||
if (admin == 0) {
|
||||
this->render.visible = 0;
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 159, 0, 0, 0, 0, 0);
|
||||
if (this->msgEffectList.size() != 0) {
|
||||
for (CGameObject* object : this->msgEffectList) {
|
||||
static_cast<CMsgEffect*>(object)->m_visible = this->render.accountId == g_session.m_aid;
|
||||
|
|
@ -4955,13 +4941,13 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
this->render.visible = 1;
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (!g_session.IsGuildMemberAccount(this->render.accountId)) {
|
||||
this->ClearSiegeNameWindow();
|
||||
|
|
@ -4982,13 +4968,13 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
}
|
||||
}
|
||||
if (this->maxHp > 0) {
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_CART, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag04(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_BIRD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
if (StateFlag20(this->stateFlags)) {
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_WOLF, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->RefreshGuildEmblemWindow();
|
||||
if (this->hasLevelAura != 0) {
|
||||
|
|
@ -5011,8 +4997,8 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
break;
|
||||
}
|
||||
case OPT1_FREEZE: {
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
const vector3d& player = reinterpret_cast<const CRenderObject*>(static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player)->render.position;
|
||||
g_soundMgr->PlayWave(
|
||||
"_frozen_explosion.wav", this->render.position.x - player.x, 0.0f, this->render.position.z - player.z, 250, 40, 1.0f, 0
|
||||
|
|
@ -5027,19 +5013,19 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
break;
|
||||
}
|
||||
case OPT1_STUN:
|
||||
this->SendMsg(nullptr, AM_DELETE_STUN_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_STUN_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->waitingUseItemAck = 0;
|
||||
break;
|
||||
case OPT1_SLEEP:
|
||||
this->SendMsg(nullptr, AM_DELETE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
static_cast<CGameMode*>(g_modeMgr.GetGameMode())->waitingUseItemAck = 0;
|
||||
break;
|
||||
case OPT1_BURNING:
|
||||
this->SendMsg(nullptr, AM_DELETE_BURNING_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_BURNING_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case OPT1_IMPRISON:
|
||||
while (this->HasId(802)) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 802, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 802, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
@ -5056,7 +5042,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
color[0] = 0x40;
|
||||
break;
|
||||
case OPT1_FREEZE:
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->render.isMotionFinished = true;
|
||||
this->render.isMotionFreezed = true;
|
||||
this->render.colorLocked = 1;
|
||||
|
|
@ -5071,7 +5057,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
}
|
||||
break;
|
||||
case OPT1_STUN:
|
||||
this->SendMsg(nullptr, AM_MAKE_STUN_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_STUN_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
if (notify) {
|
||||
const vector3d& player = reinterpret_cast<const CRenderObject*>(static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player)->render.position;
|
||||
g_soundMgr->PlayWave(
|
||||
|
|
@ -5080,7 +5066,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
}
|
||||
break;
|
||||
case OPT1_SLEEP:
|
||||
this->SendMsg(nullptr, AM_MAKE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_SLEEP_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case OPT1_STONEWAIT:
|
||||
this->render.colorLocked = 1;
|
||||
|
|
@ -5089,7 +5075,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
color[0] = 0x80;
|
||||
break;
|
||||
case OPT1_BURNING:
|
||||
this->SendMsg(nullptr, AM_MAKE_BURNING_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_BURNING_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
case OPT1_IMPRISON:
|
||||
if (!this->HasId(802)) {
|
||||
|
|
@ -5124,7 +5110,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
poisonSound = true;
|
||||
} else if (this->render.accountId == g_session.m_aid) {
|
||||
if (g_playerPoisoned == 1) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 335, 0, 0, 0, 0, 0);
|
||||
}
|
||||
g_playerPoisoned = 0;
|
||||
}
|
||||
|
|
@ -5141,7 +5127,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
}
|
||||
|
||||
if (this->effectState & 0x02) {
|
||||
this->SendMsg(nullptr, AM_MAKE_CURSE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_CURSE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->render.colorLocked = 1;
|
||||
color[1] = 0x32;
|
||||
color[2] = 0xC8;
|
||||
|
|
@ -5153,7 +5139,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
);
|
||||
}
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_DELETE_CURSE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_CURSE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (this->effectState & 0x04) {
|
||||
|
|
@ -5163,12 +5149,12 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
"_silence.wav", this->render.position.x - player.x, 0.0f, this->render.position.z - player.z, 250, 40, 1.0f, 0
|
||||
);
|
||||
}
|
||||
this->SendMsg(nullptr, AM_MAKE_SILENCE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_SILENCE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, AM_DELETE_SILENCE_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_SILENCE_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
this->SendMsg(nullptr, (this->effectState & 0x20) ? AM_MAKE_ANGELUS_EFFECT : AM_DELETE_ANGELUS_EFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, (this->effectState & 0x20) ? AM_MAKE_ANGELUS_EFFECT : AM_DELETE_ANGELUS_EFFECT, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
if ((this->effectState & 0x08) && notify) {
|
||||
const vector3d& player = reinterpret_cast<const CRenderObject*>(static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player)->render.position;
|
||||
|
|
@ -5194,7 +5180,7 @@ void CGameActor::SetStatusStates(int bodyState, std::uint32_t stateFlags, int ef
|
|||
} else if (this->render.accountId == g_session.m_aid) {
|
||||
if (static_cast<int>(this->render.instant.Get(16)) == 0) {
|
||||
if (g_overrideColor == 1) {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 334, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 334, 0, 0, 0, 0, 0);
|
||||
}
|
||||
g_overrideColor = 0;
|
||||
}
|
||||
|
|
@ -5352,7 +5338,7 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
message.blueDamage = 0;
|
||||
message.skillId = skillId;
|
||||
message.skillTarget = 0;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
} else if (skillId == SO_CLOUD_KILL || skillId == NPC_CLOUD_KILL || skillId == SU_SV_ROOTTWIST_ATK || skillId == GN_CARTCANNON) {
|
||||
|
|
@ -5377,7 +5363,7 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
message.blueDamage = 0;
|
||||
message.skillId = skillId;
|
||||
message.skillTarget = 0;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
return;
|
||||
}
|
||||
} else if (skillId == SO_CLOUD_KILL || skillId == NPC_CLOUD_KILL) {
|
||||
|
|
@ -5630,26 +5616,26 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
case SR_EARTHSHAKER:
|
||||
case SR_FALLENEMPIRE:
|
||||
case SR_TIGERCANNON:
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case WL_TETRAVORTEX_WATER:
|
||||
message.time += 500;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case WL_TETRAVORTEX_WIND:
|
||||
message.time += 1000;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case WL_TETRAVORTEX_GROUND:
|
||||
message.time += 1500;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case TK_DOWNKICK:
|
||||
case TK_TURNKICK:
|
||||
case SJ_SOLARBURST:
|
||||
case SJ_PROMINENCEKICK:
|
||||
message.time += 300;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED2, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED2, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case TK_STORMKICK:
|
||||
case TK_COUNTER:
|
||||
|
|
@ -5659,16 +5645,16 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
case SR_CRESCENTELBOW_AUTOSPELL:
|
||||
case SJ_FULLMOONKICK:
|
||||
case SJ_FLASHKICK:
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED2, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED2, address, damage, 0, 0, 0, 0);
|
||||
break;
|
||||
case PR_TURNUNDEAD:
|
||||
message.time += 500;
|
||||
[[fallthrough]];
|
||||
default:
|
||||
if (hitCount == 1) {
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, damage, damage >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, damage, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -5818,7 +5804,7 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
total += damage;
|
||||
message.action = action;
|
||||
message.damage = damage;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, total, total >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, total, 0, 0, 0, 0);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -5830,7 +5816,7 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
message.effectId = 122;
|
||||
} else if (skillId == CH_CHAINCRUSH) {
|
||||
message.action = 0x6C;
|
||||
this->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(this, AM_WILL_BE_ATTACKED, address, 0, 0, 0, 0, 0);
|
||||
} else if (skillId == CG_ARROWVULCAN) {
|
||||
} else if (skillId == WL_CRIMSONROCK) {
|
||||
message.effectId = 0x512;
|
||||
|
|
@ -5900,6 +5886,6 @@ void CGameActor::ProcessSkillMessage(CGameObject*, const ActorSkillInfo* info, i
|
|||
break;
|
||||
}
|
||||
|
||||
target->SendMsg(this, kind, 0, address, address >> 31, total, total >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, kind, address, total, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ public:
|
|||
CRenderObject();
|
||||
~CRenderObject() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
virtual void SetRenderInfo(const float* bounds, float x, float y);
|
||||
|
|
|
|||
|
|
@ -321,12 +321,12 @@ __declspec(safebuffers) void CSkill::ShowModel(const char* modelName) {
|
|||
|
||||
// OFFSET: 0x00E51BD0
|
||||
// FUNCTION: fn_24302
|
||||
void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
void CSkill::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
|
||||
switch (static_cast<std::int64_t>(a) << 32 | static_cast<std::uint32_t>(message)) {
|
||||
switch (message) {
|
||||
case AM_CHAT: {
|
||||
const char* text = reinterpret_cast<const char*>(b);
|
||||
const char* text = reinterpret_cast<const char*>(static_cast<std::intptr_t>(b));
|
||||
if (std::strlen(text) == 0) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -349,7 +349,7 @@ void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int
|
|||
return;
|
||||
}
|
||||
case AM_SKILL: {
|
||||
const SkillHitMessage* hit = reinterpret_cast<const SkillHitMessage*>(b);
|
||||
const SkillHitMessage* hit = reinterpret_cast<const SkillHitMessage*>(static_cast<std::intptr_t>(b));
|
||||
const int skillId = hit->skillId;
|
||||
const int monsterValue = hit->monsterValue;
|
||||
const int cellX = hit->cellX;
|
||||
|
|
@ -456,13 +456,13 @@ void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int
|
|||
|
||||
const int address = reinterpret_cast<int>(&damageMessage);
|
||||
int total = damage;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, total, total >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, total, 0, 0, 0, 0);
|
||||
for (int index = 0; index < hitCount - 1;) {
|
||||
++index;
|
||||
damageMessage.time += g_multiHitInterval;
|
||||
total += damage;
|
||||
damageMessage.skillTarget = index;
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, 0, address, address >> 31, total, total >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(this, AM_WILL_BE_ATTACKED, address, total, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -472,7 +472,7 @@ void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int
|
|||
return;
|
||||
}
|
||||
case AM_SKILLSTANDENTRY: {
|
||||
const SkillUnitMessage* unit = reinterpret_cast<const SkillUnitMessage*>(b);
|
||||
const SkillUnitMessage* unit = reinterpret_cast<const SkillUnitMessage*>(static_cast<std::intptr_t>(b));
|
||||
this->range = unit->range;
|
||||
this->skillAid = unit->aid;
|
||||
this->render.accountId = unit->aid;
|
||||
|
|
@ -879,7 +879,7 @@ void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int
|
|||
}
|
||||
}
|
||||
case AM_SETJOB:
|
||||
this->SetActorJob(b);
|
||||
this->SetActorJob(static_cast<int>(b));
|
||||
switch (this->GetEffectiveJob(-1)) {
|
||||
case UNT_WARP_WAITING: {
|
||||
const vector3d& player = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player->render.position;
|
||||
|
|
@ -943,7 +943,7 @@ void CSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int
|
|||
}
|
||||
return;
|
||||
default:
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public:
|
|||
explicit CSkill(std::uint32_t aid);
|
||||
~CSkill() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
const char* GetTrapModelName();
|
||||
void ReleaseModel();
|
||||
|
|
|
|||
|
|
@ -213,9 +213,9 @@ std::uint32_t CSession::ReadReplayStats(const std::vector<unsigned char>& data)
|
|||
if (player) {
|
||||
player->SetMadogearType(this->madogearType);
|
||||
if (this->madogearType) {
|
||||
player->SendMsg(nullptr, 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, 105, 0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
player->SendMsg(nullptr, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, 106, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1350,7 +1350,7 @@ void NotifyGameModeOptionFirst() {
|
|||
void RequestPlayerAction31() {
|
||||
CGameMode* mode = static_cast<CGameMode*>(g_modeMgr.GetGameMode());
|
||||
if (CPlayer* player = mode->scene->player) {
|
||||
player->SendMsg(nullptr, AM_REQ_SIT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_REQ_SIT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,30 +17,30 @@ bool CDummyEffectLauncher::OnProcess() {
|
|||
|
||||
// OFFSET: 0x00E50A60
|
||||
// FUNCTION: fn_24296
|
||||
__declspec(safebuffers) void CDummyEffectLauncher::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
if (message != AM_SETPOS || a != 0) {
|
||||
this->EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
__declspec(safebuffers) void CDummyEffectLauncher::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
if (message != AM_SETPOS) {
|
||||
this->EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const vector3d* position = reinterpret_cast<const vector3d*>(b);
|
||||
const vector3d* position = reinterpret_cast<const vector3d*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.x = position->x;
|
||||
this->render.position.y = position->y;
|
||||
this->render.position.z = position->z;
|
||||
this->render.visible = 0;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
if (g_effectMgr->Spawn(0, d, this->render.position, 0, -1, 0, 0) != nullptr) {
|
||||
if (g_effectMgr->Spawn(0, static_cast<int>(c), this->render.position, 0, -1, 0, 0) != nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
CRagEffect* effect = this->LaunchEffect(d, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if ((f | g) != 0) {
|
||||
this->lifeFrames = f;
|
||||
if (f == 333 && g == 0) {
|
||||
CRagEffect* effect = this->LaunchEffect(static_cast<int>(c), vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
if (d != 0) {
|
||||
this->lifeFrames = static_cast<int>(d);
|
||||
if (d == 333) {
|
||||
vector3d value;
|
||||
value.y = 0.0f;
|
||||
value.z = 0.0f;
|
||||
value.x = static_cast<float>(static_cast<std::int64_t>(i) << 32 | static_cast<std::uint32_t>(h));
|
||||
value.x = static_cast<float>(e);
|
||||
if (effect != nullptr) {
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, reinterpret_cast<std::intptr_t>(&value), 0, 0, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
class CDummyEffectLauncher : public EffectActor {
|
||||
public:
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
/* 0158 */ int lifeFrames;
|
||||
/* 015C */ int padding_015C;
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ struct EffectActorState {
|
|||
struct EffectActor : CRenderObject {
|
||||
EffectActor();
|
||||
~EffectActor() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
bool EffectVisible() const;
|
||||
bool HasId(int id) const;
|
||||
bool Contains(const RagEffectState* effect) const;
|
||||
|
|
|
|||
|
|
@ -70,13 +70,13 @@ void CEffectMaker::Render(int) {
|
|||
|
||||
// OFFSET: 0x00E50BB0
|
||||
// FUNCTION: fn_24297
|
||||
void CEffectMaker::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
if (message != 14 || a != 0) {
|
||||
this->EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
void CEffectMaker::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
if (message != 14) {
|
||||
this->EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const WorldEffectRecord* record = reinterpret_cast<const WorldEffectRecord*>(b);
|
||||
const WorldEffectRecord* record = reinterpret_cast<const WorldEffectRecord*>(static_cast<std::intptr_t>(b));
|
||||
this->effectId = record->id;
|
||||
if (this->effectId != 45) {
|
||||
this->spawnInterval = static_cast<unsigned>(record->delay);
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
struct CEffectMaker : EffectActor {
|
||||
CEffectMaker();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
void Reset();
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ CMsgEffect::CMsgEffect() {
|
|||
// FUNCTION: fn_24258
|
||||
CMsgEffect::~CMsgEffect() {
|
||||
if (this->m_owner != nullptr) {
|
||||
this->m_owner->SendMsg(this, AM_MSGEFFECT_DEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->m_owner->SendMsg(this, AM_MSGEFFECT_DEAD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -464,7 +464,7 @@ bool CMsgEffect::OnProcess() {
|
|||
{
|
||||
const int frame = static_cast<int>(elapsed);
|
||||
if (frame % 34 == 0) {
|
||||
this->m_owner->SendMsg(nullptr, 0x4D, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->m_owner->SendMsg(nullptr, 0x4D, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
|
@ -1536,9 +1536,9 @@ void CMsgEffect::Render(int argument) {
|
|||
|
||||
// OFFSET: 0x00E512B0
|
||||
// FUNCTION: fn_24301
|
||||
void CMsgEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
const vector3d* position = reinterpret_cast<const vector3d*>(b);
|
||||
switch (static_cast<std::int64_t>(a) << 32 | static_cast<std::uint32_t>(message)) {
|
||||
void CMsgEffect::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
const vector3d* position = reinterpret_cast<const vector3d*>(static_cast<std::intptr_t>(b));
|
||||
switch (message) {
|
||||
case AM_REQ_ATTACK:
|
||||
if (this->m_type == 18) {
|
||||
this->m_velocity.x = (position->x - this->render.position.x) / 10.0f;
|
||||
|
|
@ -1610,9 +1610,9 @@ void CMsgEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c,
|
|||
return;
|
||||
|
||||
case AM_SETMASTERGID:
|
||||
this->m_type = d;
|
||||
this->m_value = b;
|
||||
switch (d) {
|
||||
this->m_type = static_cast<int>(c);
|
||||
this->m_value = static_cast<int>(b);
|
||||
switch (static_cast<int>(c)) {
|
||||
case MET_CART:
|
||||
case 31:
|
||||
this->render.flatDepth = 0;
|
||||
|
|
@ -1699,14 +1699,14 @@ void CMsgEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c,
|
|||
break;
|
||||
}
|
||||
|
||||
this->render.curMotion = d;
|
||||
this->render.curMotion = static_cast<int>(c);
|
||||
this->render.visible = 1;
|
||||
if (d < 0 || d > 11) {
|
||||
if (static_cast<int>(c) < 0 || static_cast<int>(c) > 11) {
|
||||
this->render.curMotion = 0;
|
||||
}
|
||||
|
||||
this->render.spriteOffsetX = f;
|
||||
this->m_digit = f;
|
||||
this->render.spriteOffsetX = static_cast<int>(d);
|
||||
this->m_digit = static_cast<int>(d);
|
||||
this->render.scale = 5.0f;
|
||||
this->m_scale = 5.0f;
|
||||
this->render.depthLayer = static_cast<std::uint32_t>(-2);
|
||||
|
|
@ -1717,18 +1717,18 @@ void CMsgEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c,
|
|||
case AM_SETPOS: {
|
||||
this->render.visible = 1;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
if ((static_cast<std::int64_t>(e) << 32 | static_cast<std::uint32_t>(d)) != 0) {
|
||||
const std::string* names = reinterpret_cast<const std::string*>(d);
|
||||
if (c != 0) {
|
||||
const std::string* names = reinterpret_cast<const std::string*>(static_cast<std::intptr_t>(c));
|
||||
this->SetSpriteName(ResourceMgr::Instance(), names[0].c_str());
|
||||
this->SetActionName(ResourceMgr::Instance(), names[1].c_str());
|
||||
}
|
||||
|
||||
if ((static_cast<std::int64_t>(g) << 32 | static_cast<std::uint32_t>(f)) == 1000) {
|
||||
if (d == 1000) {
|
||||
this->SetAction(10, 4, 0);
|
||||
this->render.state = 10000;
|
||||
this->render.color = 0xFFFF0000;
|
||||
} else {
|
||||
this->SetAction(f, 4, 1);
|
||||
this->SetAction(static_cast<unsigned>(d), 4, 1);
|
||||
}
|
||||
|
||||
switch (this->m_type) {
|
||||
|
|
@ -1809,5 +1809,5 @@ void CMsgEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c,
|
|||
}
|
||||
}
|
||||
|
||||
this->EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ public:
|
|||
|
||||
~CMsgEffect() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
void FollowOwner();
|
||||
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ CRagEffect::~CRagEffect() {
|
|||
}
|
||||
|
||||
if (this->state.parent) {
|
||||
this->state.parent->SendMsg(this, AM_EFFECT_DEAD, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(this, AM_EFFECT_DEAD, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
if (this->state.resource) {
|
||||
|
|
@ -184,7 +184,7 @@ static __forceinline void SendAfterimageColor(CGameObject& target, CRagEffect& s
|
|||
const int red = static_cast<int>(color.x);
|
||||
const int green = static_cast<int>(color.y);
|
||||
const int blue = static_cast<int>(color.z);
|
||||
target.SendMsg(&sender, 0, 0, red, red >> 31, green, green >> 31, blue, blue >> 31, 0, 0, 0, 0, 0, 0);
|
||||
target.SendMsg(&sender, 0, red, green, blue, 0, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -2564,7 +2564,7 @@ void CRagEffect::PotionPillar(float heightSpeed, int duration) {
|
|||
// FUNCTION: fn_20094
|
||||
bool CRagEffect::Potion_Berserk() {
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 250, 0, 120, 0, 120, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_CHANGE_COLOR, 250, 120, 120, 0, 0, 0);
|
||||
this->PotionPillar(1.0f, 50);
|
||||
}
|
||||
|
||||
|
|
@ -2603,7 +2603,7 @@ bool CRagEffect::Potion_Berserk() {
|
|||
return true;
|
||||
}
|
||||
|
||||
this->state.parent->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
@ -11451,7 +11451,7 @@ void CRagEffect::Sightrasher() {
|
|||
this->state.tlvertY = vertex.y;
|
||||
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_DELETE_EFFECT, 22, 0, 0, 0, 0, 0);
|
||||
PlayEffectWave(*this, "effect\\wizard_sightrasher.wav");
|
||||
}
|
||||
|
||||
|
|
@ -15211,14 +15211,14 @@ void CRagEffect::AlphaCenterRise() {
|
|||
}
|
||||
|
||||
if (this->state.stateCnt == 35 && this->state.parent != nullptr) {
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_SMOKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
// OFFSET: 0x00C36710
|
||||
// FUNCTION: fn_20093
|
||||
bool CRagEffect::Potion_Awakening() {
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_CHANGE_COLOR, 0, 250, 0, 250, 0, 200, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_CHANGE_COLOR, 250, 250, 200, 0, 0, 0);
|
||||
this->PotionPillar(1.0f, 50);
|
||||
}
|
||||
|
||||
|
|
@ -15256,7 +15256,7 @@ bool CRagEffect::Potion_Awakening() {
|
|||
return true;
|
||||
}
|
||||
|
||||
this->state.parent->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_RETURN_COLOR, 0, 0, 0, 0, 0, 0);
|
||||
return false;
|
||||
}
|
||||
// OFFSET: 0x00C3C4E0
|
||||
|
|
@ -17280,7 +17280,7 @@ void CPlayer::UpdateFootprints(int kind) {
|
|||
// OFFSET: 0x00C74B60
|
||||
// FUNCTION: fn_20334
|
||||
void CPlayer::RefreshEffect164() {
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_EFFECT, 164, 0, 0, 0, 0, 0);
|
||||
this->skillEffect = this->LaunchEffect(164, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
|
||||
|
|
@ -21070,17 +21070,17 @@ bool CRagEffect::OnProcess3() {
|
|||
if (this->state.stateCnt == 0) {
|
||||
this->render.position = this->state.parent->render.position;
|
||||
PlayEffectWave(*this, "effect\\EF_hit2.wav");
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 0, 1, 0, 0xFFFF0000, 0, 114, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 1, 0xFFFF0000, 114, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case EF_DAMAGE1_2:
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 0, 1, 0, 0xFFFF0000, 0, 114, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 1, 0xFFFF0000, 114, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case EF_DAMAGE1_3:
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 0, 1, 0, 0xFFFF00FF, 0, 114, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_MAKE_NUMBER, 1, 0xFFFF00FF, 114, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case EF_SPREADATTACK:
|
||||
|
|
@ -21336,7 +21336,7 @@ bool CRagEffect::OnProcess3() {
|
|||
break;
|
||||
case EF_NPC_STOP2_DEL:
|
||||
if (this->state.stateCnt == 0) {
|
||||
this->state.parent->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->state.parent->SendMsg(nullptr, AM_DELETE_EFFECT, 604, 0, 0, 0, 0, 0);
|
||||
}
|
||||
break;
|
||||
case EF_SIGHT2:
|
||||
|
|
@ -22236,7 +22236,7 @@ bool CRagEffect::OnProcess3() {
|
|||
hallu->render.position.x = this->state.deltaPos[0];
|
||||
hallu->render.position.y = this->state.deltaPos[1];
|
||||
hallu->render.position.z = this->state.deltaPos[2];
|
||||
hallu->SendMsg(this, 0, 0, 200, 0, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
hallu->SendMsg(this, 0, 200, 200, 0, 0, 0, 0);
|
||||
WorldObjects().push_back(hallu);
|
||||
this->state.deltaPos[0] += x * step;
|
||||
this->state.deltaPos[1] += y * step;
|
||||
|
|
|
|||
|
|
@ -77,8 +77,7 @@ void CShowEffect::Close() {
|
|||
|
||||
for (auto it = this->effects.begin(); it != this->effects.end(); ++it) {
|
||||
if (target) {
|
||||
target->SendMsg(nullptr, AM_DELETE_TAGGED_EFFECT, 0, static_cast<int>(static_cast<std::int64_t>(it->first)),
|
||||
static_cast<int>(static_cast<std::int64_t>(it->first) >> 32), it->second, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(nullptr, AM_DELETE_TAGGED_EFFECT, it->first, static_cast<std::uint32_t>(it->second), 0, 0, 0, 0);
|
||||
} else if (g_effectMgr->HasAllocator(it->second)) {
|
||||
g_effectMgr->Retire(actorId, it->first, it->second);
|
||||
}
|
||||
|
|
@ -105,7 +104,6 @@ void CShowEffect::Remove(int tag) {
|
|||
return;
|
||||
}
|
||||
|
||||
target->SendMsg(target, AM_DELETE_TAGGED_EFFECT, 0, static_cast<int>(static_cast<std::int64_t>(tag)),
|
||||
static_cast<int>(static_cast<std::int64_t>(tag) >> 32), this->effects[tag], 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(target, AM_DELETE_TAGGED_EFFECT, tag, static_cast<std::uint32_t>(this->effects[tag]), 0, 0, 0, 0);
|
||||
this->effects.erase(tag);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -99,11 +99,11 @@ __declspec(safebuffers) bool CArrowEffect::OnProcess() {
|
|||
|
||||
// OFFSET: 0x00E50500
|
||||
// FUNCTION: fn_24295
|
||||
void CArrowEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
if (message == 14 && a == 0) {
|
||||
void CArrowEffect::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
if (message == 14) {
|
||||
const char* sprite;
|
||||
const char* action;
|
||||
switch (static_cast<std::int64_t>(static_cast<std::uint64_t>(static_cast<std::uint32_t>(i)) << 32 | static_cast<std::uint32_t>(h))) {
|
||||
switch (static_cast<std::int64_t>(static_cast<std::uint64_t>(e))) {
|
||||
case JT_PARASITE:
|
||||
case JT_G_PARASITE:
|
||||
action = "몬스터\\PARASITE_BULLET.act";
|
||||
|
|
@ -245,31 +245,31 @@ void CArrowEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c
|
|||
this->SetSpriteName(sprite);
|
||||
this->SetActionName(action);
|
||||
this->speedScale = 1.0f;
|
||||
this->render.position = *reinterpret_cast<const vector3d*>(b);
|
||||
this->render.position = *reinterpret_cast<const vector3d*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.y -= 10.0f;
|
||||
this->startPos.x = this->render.position.x;
|
||||
this->startPos.y = this->render.position.y;
|
||||
this->startPos.z = this->render.position.z;
|
||||
this->targetAid = d;
|
||||
this->targetAid = static_cast<std::uint32_t>(c);
|
||||
this->render.visible = 0;
|
||||
this->GetTargetPos(d, this->targetPos);
|
||||
this->GetTargetPos(static_cast<std::uint32_t>(c), this->targetPos);
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
} else if (message == 64 && a == 0) {
|
||||
} else if (message == 64) {
|
||||
this->SetSpriteName("몬스터\\skel_archer_arrow.spr");
|
||||
this->SetActionName("몬스터\\skel_archer_arrow.act");
|
||||
this->speedScale = 1.0f;
|
||||
this->render.position = *reinterpret_cast<const vector3d*>(b);
|
||||
this->render.position = *reinterpret_cast<const vector3d*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.y -= 10.0f;
|
||||
this->startPos.x = this->render.position.x;
|
||||
this->startPos.y = this->render.position.y;
|
||||
this->startPos.z = this->render.position.z;
|
||||
this->targetPos = *reinterpret_cast<const vector3d*>(d);
|
||||
this->targetPos = *reinterpret_cast<const vector3d*>(static_cast<std::intptr_t>(c));
|
||||
this->targetPos.y -= 10.0f;
|
||||
this->render.visible = 0;
|
||||
this->targetAid = 0;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
} else {
|
||||
this->CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ public:
|
|||
CArrowEffect();
|
||||
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
void Reset();
|
||||
|
||||
|
|
|
|||
|
|
@ -41,15 +41,15 @@ bool CMandraAttackEffect::OnProcess() {
|
|||
|
||||
// OFFSET: 0x00E50F30
|
||||
// FUNCTION: fn_24300
|
||||
void CMandraAttackEffect::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int) {
|
||||
if (message != 14 || a != 0) {
|
||||
this->CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
void CMandraAttackEffect::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
if (message != 14) {
|
||||
this->CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const char* sprite;
|
||||
const char* action;
|
||||
switch (f) {
|
||||
switch (static_cast<int>(d)) {
|
||||
case JT_HYDRA:
|
||||
sprite = "몬스터\\hydra_atk.spr";
|
||||
action = "몬스터\\hydra_atk.act";
|
||||
|
|
@ -157,18 +157,18 @@ void CMandraAttackEffect::SendMsg(CGameObject* sender, int message, int a, int b
|
|||
this->SetSpriteName(sprite);
|
||||
this->SetActionName(action);
|
||||
vector3d target{0.0f, 0.0f, 0.0f};
|
||||
this->GetTargetPos(b, target);
|
||||
this->GetTargetPos(static_cast<std::uint32_t>(b), target);
|
||||
this->render.position.x = target.x;
|
||||
this->render.position.y = target.y;
|
||||
this->render.position.z = target.z;
|
||||
this->render.visible = 1;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
this->SetAnimationSpeed(this->GetActRes()->Speed(0));
|
||||
if (f == 0x42C) {
|
||||
if (static_cast<int>(d) == 0x42C) {
|
||||
this->SetAnimationSpeed(2.0f);
|
||||
}
|
||||
|
||||
if (d != 0 || e != 0) {
|
||||
this->startFrame = *reinterpret_cast<const float*>(d);
|
||||
if (c != 0) {
|
||||
this->startFrame = *reinterpret_cast<const float*>(static_cast<std::intptr_t>(c));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ class CMandraAttackEffect : public CRenderObject {
|
|||
public:
|
||||
CMandraAttackEffect();
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
|
||||
/* 0138 */ float startFrame;
|
||||
/* 013C */ int padding_013C;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ void CShadowExceed::Close() {
|
|||
CRenderObject* actor = FindRenderObject(this->actor);
|
||||
if (actor) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(1004) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 1004, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -136,7 +136,7 @@ void CShadowExceed::OnProcess() {
|
|||
CRenderObject* actor = FindRenderObject(this->actor);
|
||||
if (actor) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(1004) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 1004, 0, 0, 0, 0, 0);
|
||||
}
|
||||
static_cast<EffectActor*>(actor)->LaunchEffect(1004, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1307,7 +1307,7 @@ void CSession::ClearPartyMembers() {
|
|||
for (auto member = this->m_partyMembers.begin(); member != this->m_partyMembers.end(); ++member) {
|
||||
CRenderObject* actor = mode->scene->GetGameActorByAidIncludeMe(member->accountId);
|
||||
if (actor && static_cast<EffectActor*>(actor)->HasId(160) == true) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 160, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ int CChampionMonsterMgr::ApplyEffects(int id, CGameActor* actor, int aid) {
|
|||
} else {
|
||||
for (unsigned int i = 0; i < effects.size(); ++i) {
|
||||
const int effect = effects[i];
|
||||
actor->SendMsg(actor, AM_DELETE_EFFECT, 0, effect, effect >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(actor, AM_DELETE_EFFECT, effect, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -361,9 +361,9 @@ void CIcon::Render(int argument) {
|
|||
|
||||
// OFFSET: 0x008220A0
|
||||
// FUNCTION: fn_10273
|
||||
void CIcon::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) {
|
||||
void CIcon::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
g_modeMgr.GetGameMode();
|
||||
this->CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
this->CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x008220F0
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ public:
|
|||
CIcon();
|
||||
~CIcon() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
void SetRenderInfo(const float* bounds, float x, float y) override;
|
||||
void Load(const std::string& name);
|
||||
|
|
|
|||
|
|
@ -137,20 +137,20 @@ void CGraffiSkill::Render(int argument) {
|
|||
|
||||
// OFFSET: 0x00E50D10
|
||||
// FUNCTION: fn_24298
|
||||
void CGraffiSkill::SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int, int, int, int, int, int) {
|
||||
const std::uint64_t id = static_cast<std::uint64_t>(static_cast<std::uint32_t>(a)) << 32 | static_cast<std::uint32_t>(message);
|
||||
void CGraffiSkill::SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) {
|
||||
const std::uint64_t id = static_cast<std::uint64_t>(message);
|
||||
if (id == 22) {
|
||||
this->skillAid = b;
|
||||
this->skillAid = static_cast<std::uint32_t>(b);
|
||||
return;
|
||||
}
|
||||
|
||||
if (id == 117) {
|
||||
std::strcpy(this->m_text, reinterpret_cast<const char*>(b));
|
||||
this->m_cellX = d;
|
||||
this->m_cellY = f;
|
||||
std::strcpy(this->m_text, reinterpret_cast<const char*>(static_cast<std::intptr_t>(b)));
|
||||
this->m_cellX = static_cast<int>(c);
|
||||
this->m_cellY = static_cast<int>(d);
|
||||
this->BuildTexture();
|
||||
return;
|
||||
}
|
||||
|
||||
this->CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, 0, 0, 0, 0, 0, 0);
|
||||
this->CGameActor::SendMsg(sender, message, b, c, d, 0, 0, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ public:
|
|||
CGraffiSkill();
|
||||
~CGraffiSkill() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m) override;
|
||||
void SendMsg(CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
virtual void BuildTexture();
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ void CEfstAction_GRADUAL_GRAVITY::OnEfstBegin(int efstId, int value, int argumen
|
|||
void CEfstAction_GRADUAL_GRAVITY::OnEfstEnd(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
|
||||
if (actor) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(779)) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 779, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 779, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -559,7 +559,7 @@ void CEfstAction_SHADOW_CLOCK::OnEfstBegin(int efstId, int value, int argument3,
|
|||
void CEfstAction_SHADOW_CLOCK::OnEfstEnd(int efstId, int argument2, int argument3, int argument4, CRenderObject* actor) {
|
||||
if (actor) {
|
||||
while (static_cast<EffectActor*>(actor)->HasId(963)) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 963, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 963, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ void CSkillAction_SOA_TALISMAN_OF_SOUL_STEALING::OnSkillCast(int level, CGameAct
|
|||
void CSkillAction_SOA_TALISMAN_OF_SOUL_STEALING::OnSkillEffect(int level, CGameActor* source, CGameActor* target) {
|
||||
if (target) {
|
||||
target->LaunchEffect(253, vector3d{0.0f, 0.0f, 0.0f}, 0.0f);
|
||||
target->SendMsg(nullptr, AM_MAKE_NUMBER, 0, level, level >> 31, static_cast<int>(0xFF0000FF), 0, 114, 0, 0, 0, 0, 0, 0, 0);
|
||||
target->SendMsg(nullptr, AM_MAKE_NUMBER, level, 0xFF0000FFu, 114, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1043,7 +1043,7 @@ void CEfstAction_SHADOW_EXCEED::OnEfstEnd(int efstId, int argument2, int argumen
|
|||
|
||||
auto* effectActor = static_cast<EffectActor*>(actor);
|
||||
while (effectActor->HasId(1004)) {
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 1004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
actor->SendMsg(nullptr, AM_DELETE_EFFECT, 1004, 0, 0, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -532,36 +532,35 @@ void CSoundMaker::Render(int) {
|
|||
// OFFSET: 0x00DA4970
|
||||
// FUNCTION: fn_22418
|
||||
void CBlowEffect::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (message != 14 || a != 0) {
|
||||
CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
if (message != 14) {
|
||||
CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const float* position = reinterpret_cast<const float*>(b);
|
||||
const float* position = reinterpret_cast<const float*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.x = position[0];
|
||||
this->render.position.y = position[1];
|
||||
this->render.position.z = position[2];
|
||||
this->render.visible = 1;
|
||||
this->render.color = (d | e) ? 0xFFFF0000u : 0xFFFFFFFFu;
|
||||
this->render.color = c ? 0xFFFF0000u : 0xFFFFFFFFu;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4A00
|
||||
// FUNCTION: fn_22419
|
||||
void CBlurPC::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (a == 0) {
|
||||
switch (message) {
|
||||
case BM_RGB:
|
||||
this->SetColor(180, b, d, f);
|
||||
this->SetColor(180, static_cast<int>(b), static_cast<int>(c), static_cast<int>(d));
|
||||
this->destCellZ = 0x8000000;
|
||||
return;
|
||||
case BM_ALPHA:
|
||||
this->render.color &= (b << 24) + 0xFFFFFF;
|
||||
this->destCellZ = d << 24;
|
||||
this->render.color &= (static_cast<int>(b) << 24) + 0xFFFFFF;
|
||||
this->destCellZ = static_cast<int>(c) << 24;
|
||||
return;
|
||||
case BM_MOTIONY:
|
||||
this->destCellX = *reinterpret_cast<const float*>(&b);
|
||||
|
|
@ -570,26 +569,25 @@ void CBlurPC::SendMsg(
|
|||
this->render.isMotionFreezed = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CPc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CPc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4AD0
|
||||
// FUNCTION: fn_22420
|
||||
void CCorpse::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4B10
|
||||
// FUNCTION: fn_22421
|
||||
void CGndRiser::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (message == 14 && a == 0) {
|
||||
const float* position = reinterpret_cast<const float*>(b);
|
||||
if (message == 14) {
|
||||
const float* position = reinterpret_cast<const float*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.x = position[0];
|
||||
this->render.position.y = position[1];
|
||||
this->render.position.z = position[2];
|
||||
|
|
@ -606,23 +604,22 @@ void CGndRiser::SendMsg(
|
|||
return;
|
||||
}
|
||||
|
||||
EffectActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
EffectActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4BF0
|
||||
// FUNCTION: fn_22422
|
||||
void CHalluNPC::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (a == 0) {
|
||||
switch (message) {
|
||||
case BM_RGB:
|
||||
this->SetColor(180, b, d, f);
|
||||
this->SetColor(180, static_cast<int>(b), static_cast<int>(c), static_cast<int>(d));
|
||||
this->fadeStep = 0x8000000;
|
||||
return;
|
||||
case BM_ALPHA:
|
||||
this->render.color &= (b << 24) + 0xFFFFFF;
|
||||
this->fadeStep = d << 24;
|
||||
this->render.color &= (static_cast<int>(b) << 24) + 0xFFFFFF;
|
||||
this->fadeStep = static_cast<int>(c) << 24;
|
||||
return;
|
||||
case BM_MOTIONY:
|
||||
this->hallucinationOffset = *reinterpret_cast<const float*>(&b);
|
||||
|
|
@ -631,25 +628,23 @@ void CHalluNPC::SendMsg(
|
|||
this->render.isMotionFreezed = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CNpc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CNpc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4CC0
|
||||
// FUNCTION: fn_22423
|
||||
void CHalluPC2::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (a == 0) {
|
||||
switch (message) {
|
||||
case BM_RGB:
|
||||
this->SetColor(180, 255, 55, 55);
|
||||
this->destCellZ = 0x8000000;
|
||||
return;
|
||||
case BM_ALPHA:
|
||||
this->render.color &= (b << 24) + 0xFFFFFF;
|
||||
this->destCellZ = d << 24;
|
||||
this->render.color &= (static_cast<int>(b) << 24) + 0xFFFFFF;
|
||||
this->destCellZ = static_cast<int>(c) << 24;
|
||||
return;
|
||||
case BM_MOTIONY:
|
||||
this->destCellX = *reinterpret_cast<const float*>(&b);
|
||||
|
|
@ -658,25 +653,23 @@ void CHalluPC2::SendMsg(
|
|||
this->render.isMotionFreezed = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CPc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CPc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4D90
|
||||
// FUNCTION: fn_22424
|
||||
void CHalluPC::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (a == 0) {
|
||||
switch (message) {
|
||||
case BM_RGB:
|
||||
this->SetColor(180, b, d, f);
|
||||
this->SetColor(180, static_cast<int>(b), static_cast<int>(c), static_cast<int>(d));
|
||||
this->destCellZ = 0x8000000;
|
||||
return;
|
||||
case BM_ALPHA:
|
||||
this->render.color &= (b << 24) + 0xFFFFFF;
|
||||
this->destCellZ = d << 24;
|
||||
this->render.color &= (static_cast<int>(b) << 24) + 0xFFFFFF;
|
||||
this->destCellZ = static_cast<int>(c) << 24;
|
||||
return;
|
||||
case BM_MOTIONY:
|
||||
this->destCellX = *reinterpret_cast<const float*>(&b);
|
||||
|
|
@ -685,30 +678,29 @@ void CHalluPC::SendMsg(
|
|||
this->render.isMotionFreezed = 1;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
CPc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CPc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA4E60
|
||||
// FUNCTION: fn_22425
|
||||
void CHalluPlant::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if ((message | a) != 0) {
|
||||
if (message == 1 && a == 0) {
|
||||
this->render.color &= (b << 24) + 0xFFFFFF;
|
||||
if (message != 0) {
|
||||
if (message == 1) {
|
||||
this->render.color &= (static_cast<int>(b) << 24) + 0xFFFFFF;
|
||||
return;
|
||||
}
|
||||
|
||||
if (message == 3 && a == 0) {
|
||||
if (message == 3) {
|
||||
this->render.isMotionFreezed = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
CNpc::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CNpc::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
} else {
|
||||
this->SetColor(180, b, d, f);
|
||||
this->SetColor(180, static_cast<int>(b), static_cast<int>(c), static_cast<int>(d));
|
||||
}
|
||||
}
|
||||
struct NpcAppearInfo {
|
||||
|
|
@ -724,11 +716,11 @@ struct NpcAppearInfo {
|
|||
// OFFSET: 0x00DA4EF0
|
||||
// FUNCTION: fn_22426
|
||||
void CNpc::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (message == 4 && a == 0) {
|
||||
CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
const NpcAppearInfo* info = reinterpret_cast<const NpcAppearInfo*>(b);
|
||||
if (message == 4) {
|
||||
CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
const NpcAppearInfo* info = reinterpret_cast<const NpcAppearInfo*>(static_cast<std::intptr_t>(b));
|
||||
switch (this->objectType) {
|
||||
case 8:
|
||||
case 9:
|
||||
|
|
@ -743,7 +735,7 @@ void CNpc::SendMsg(
|
|||
return;
|
||||
}
|
||||
|
||||
if (message == AM_UPDATEGAGE && a == 0) {
|
||||
if (message == AM_UPDATEGAGE) {
|
||||
if (g_session.IsCompanionAid(this->render.accountId)) {
|
||||
if (this->playerGaugeWindow == nullptr) {
|
||||
this->playerGaugeWindow = new UIPlayerGage();
|
||||
|
|
@ -840,22 +832,22 @@ void CNpc::SendMsg(
|
|||
return;
|
||||
}
|
||||
}
|
||||
static_cast<UIPcGage*>(this->pcGaugeWindow)->SetValues(b, d);
|
||||
static_cast<UIPcGage*>(this->pcGaugeWindow)->SetValues(static_cast<int>(b), static_cast<int>(c));
|
||||
static_cast<UIPcGage*>(this->pcGaugeWindow)->SetLimits(0, 0);
|
||||
const int y = this->render.screenY + ScaleByScreenHeight(12);
|
||||
this->pcGaugeWindow->Move(this->render.screenX - 30, y);
|
||||
return;
|
||||
}
|
||||
CGameActor::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CGameActor::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA5610
|
||||
// FUNCTION: fn_22427
|
||||
void CNumEffect::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (message == 14 && a == 0) {
|
||||
const float* position = reinterpret_cast<const float*>(b);
|
||||
if (message == 14) {
|
||||
const float* position = reinterpret_cast<const float*>(static_cast<std::intptr_t>(b));
|
||||
this->render.position.x = position[0];
|
||||
this->render.position.y = position[1];
|
||||
this->render.position.z = position[2];
|
||||
|
|
@ -863,36 +855,37 @@ void CNumEffect::SendMsg(
|
|||
this->render.position.y -= 12.0f;
|
||||
this->baseHeight = this->render.position.y;
|
||||
|
||||
this->render.curMotion = d;
|
||||
if (d > 9 || d < 0) {
|
||||
const int motion = static_cast<int>(c);
|
||||
this->render.curMotion = motion;
|
||||
if (motion > 9 || motion < 0) {
|
||||
this->render.curMotion = 0;
|
||||
}
|
||||
|
||||
this->render.spriteOffsetX = f;
|
||||
this->render.spriteOffsetX = static_cast<int>(d);
|
||||
this->render.scale = 5.0f;
|
||||
this->baseScale = 5.0f;
|
||||
this->render.motionStartTime = timeGetTime();
|
||||
return;
|
||||
}
|
||||
|
||||
if (message == 22 && a == 0) {
|
||||
if (message == 22) {
|
||||
return;
|
||||
}
|
||||
|
||||
CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
}
|
||||
|
||||
// OFFSET: 0x00DA56E0
|
||||
// FUNCTION: fn_22428
|
||||
void CSoundMaker::SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int, int, int, int
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) {
|
||||
if (message != 14 || a != 0) {
|
||||
CRenderObject::SendMsg(sender, message, a, b, c, d, e, f, g, h, i, 0, 0, 0, 0);
|
||||
if (message != 14) {
|
||||
CRenderObject::SendMsg(sender, message, b, c, d, e, 0, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
const WorldSoundRecord& sound = *reinterpret_cast<const WorldSoundRecord*>(b);
|
||||
const WorldSoundRecord& sound = *reinterpret_cast<const WorldSoundRecord*>(static_cast<std::intptr_t>(b));
|
||||
this->file = sound.file;
|
||||
this->volume = sound.volume;
|
||||
this->width = sound.width;
|
||||
|
|
@ -1324,7 +1317,7 @@ void CNpc::UpdateMinimapMarker() {
|
|||
return;
|
||||
}
|
||||
if (this->attachedEffect) {
|
||||
this->attachedEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->attachedEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
this->attachedEffect = nullptr;
|
||||
this->attachedEffectId = 9999;
|
||||
}
|
||||
|
|
@ -1332,7 +1325,7 @@ void CNpc::UpdateMinimapMarker() {
|
|||
const int base = marker->effectType < 6 ? 0x24 : 0x36;
|
||||
CMsgEffect* effect = mode->SpawnMsgEffect(base + marker->effectType, &this->render.position, this->render.accountId, true);
|
||||
this->msgEffectList.push_back(effect);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(this, AM_SET_MASTER_POINTER, 0, 0, 0, 0, 0, 0);
|
||||
this->attachedEffect = effect;
|
||||
this->minimapMarkerCell[0] = marker->effectType;
|
||||
this->minimapMarkerCell[1] = marker->questIconId;
|
||||
|
|
@ -1340,7 +1333,7 @@ void CNpc::UpdateMinimapMarker() {
|
|||
}
|
||||
|
||||
if (this->attachedEffect) {
|
||||
this->attachedEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->attachedEffect->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
this->attachedEffect = nullptr;
|
||||
this->attachedEffectId = 9999;
|
||||
}
|
||||
|
|
@ -1407,7 +1400,7 @@ bool CNpc::OnProcess() {
|
|||
} else {
|
||||
reinterpret_cast<CMercenaryAI*>(this->homunAI)->Load(".\\AI\\AI.lua");
|
||||
}
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
} else {
|
||||
this->homunAI = reinterpret_cast<int>(new CMercenaryAI(0));
|
||||
|
|
@ -1432,7 +1425,7 @@ bool CNpc::OnProcess() {
|
|||
path = ".\\AI\\AI_M.lua";
|
||||
}
|
||||
reinterpret_cast<CMercenaryAI*>(this->merAI)->Load(path);
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
} else {
|
||||
this->merAI = reinterpret_cast<int>(new CMercenaryAI(1));
|
||||
|
|
@ -1440,17 +1433,17 @@ bool CNpc::OnProcess() {
|
|||
}
|
||||
|
||||
if (g_session.IsPetAid(this->render.accountId)) {
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_UPDATEGAGE, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
this->UpdateBubblePositions();
|
||||
|
||||
if (g_session.homunAlive && g_groundMarkAid == this->render.accountId) {
|
||||
this->SendMsg(nullptr, 0x86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, 0x86, 0, 0, 0, 0, 0, 0);
|
||||
} else if (g_session.mercenaryAlive && g_groundMarkAltAid == this->render.accountId) {
|
||||
this->SendMsg(nullptr, 0x86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, 0x86, 0, 0, 0, 0, 0, 0);
|
||||
} else {
|
||||
this->SendMsg(nullptr, 0x87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, 0x87, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
this->UpdateMinimapMarker();
|
||||
|
|
@ -1732,8 +1725,8 @@ void CNpc::SetState(int state, int) {
|
|||
this->render.timedSequenceActive = 0;
|
||||
this->render.isMotionFreezed = false;
|
||||
if (this->bodyState == 2) {
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->render.isLieOnGround = true;
|
||||
this->render.isMotionFreezed = false;
|
||||
|
|
@ -1779,8 +1772,8 @@ void CNpc::SetState(int state, int) {
|
|||
break;
|
||||
case ST_SLEEP:
|
||||
if (this->bodyState == 2) {
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_DELETE_ICEEFFECT, 0, 0, 0, 0, 0, 0);
|
||||
this->SendMsg(nullptr, AM_MAKE_ICEBREAKE_FFECT, 0, 0, 0, 0, 0, 0);
|
||||
}
|
||||
this->render.isLieOnGround = false;
|
||||
this->render.isMotionFinished = true;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ public:
|
|||
~CSoundMaker() override;
|
||||
bool OnProcess() override;
|
||||
void SendMsg(
|
||||
CGameObject* sender, int message, int a, int b, int c, int d, int e, int f, int g, int h, int i, int j, int k, int l, int m
|
||||
CGameObject* sender, std::int64_t message, std::int64_t b, std::int64_t c, std::int64_t d, std::int64_t e, std::int64_t f, std::int64_t g
|
||||
) override;
|
||||
void Render(int argument) override;
|
||||
|
||||
|
|
|
|||
|
|
@ -659,7 +659,7 @@ void SpriteLayerRenderer::DrawLayer(
|
|||
quad.image = resolved.image;
|
||||
const std::uint32_t* palette = this->GetPalette(layer, sprite, action);
|
||||
int effect = 0xA6;
|
||||
this->pc->SendMsg(nullptr, AM_IS_HAVE_EFFECT, 0, reinterpret_cast<int>(&effect), reinterpret_cast<int>(&effect) >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
this->pc->SendMsg(nullptr, AM_IS_HAVE_EFFECT, reinterpret_cast<int>(&effect), 0, 0, 0, 0, 0);
|
||||
|
||||
int blend;
|
||||
switch (layer) {
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ void CWorld::LoadMapEffects() {
|
|||
} else {
|
||||
CEffectMaker* effect = new CEffectMaker;
|
||||
const int address = reinterpret_cast<int>(record);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, address, 0, 0, 0, 0, 0);
|
||||
this->objects.push_back(effect);
|
||||
}
|
||||
}
|
||||
|
|
@ -41,7 +41,7 @@ void CWorld::LoadMapEffects() {
|
|||
WorldSoundRecord* record = *it;
|
||||
CSoundMaker* sound = new CSoundMaker;
|
||||
const int address = reinterpret_cast<int>(record);
|
||||
sound->SendMsg(nullptr, AM_SETPOS, 0, address, address >> 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
sound->SendMsg(nullptr, AM_SETPOS, address, 0, 0, 0, 0, 0);
|
||||
this->objects.push_back(sound);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -190,7 +190,7 @@ void CWorld::OnProcess() {
|
|||
continue;
|
||||
}
|
||||
|
||||
skill->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
if (skill->HasPendingDamage() == true) {
|
||||
if (std::find(this->pendingActorIds.begin(), this->pendingActorIds.end(), aid) == this->pendingActorIds.end()) {
|
||||
this->pendingActorIds.push_back(aid);
|
||||
|
|
@ -270,7 +270,7 @@ void CWorld::SendObjectMessage(CGameObject* sender, std::uint64_t identity, int
|
|||
auto it = std::find_if(this->objects.begin(), this->objects.end(), [identity](CRenderObject* object) { return identity == object->identity; });
|
||||
|
||||
if (it != this->objects.end()) {
|
||||
(*it)->SendMsg(sender, message, message >> 31, a, a >> 31, b, b >> 31, c, c >> 31, d, d >> 31, 0, 0, 0, 0);
|
||||
(*it)->SendMsg(sender, message, a, b, c, d, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -285,8 +285,7 @@ void CGameMode::SpawnArrowEffect(std::uint32_t aid, int target, char flag, int a
|
|||
|
||||
if (effect) {
|
||||
this->scene->objects.push_back(effect);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, static_cast<int>(aid), static_cast<int>(aid) >> 31, target, 0, reinterpret_cast<int>(&flag),
|
||||
reinterpret_cast<int>(&flag) >> 31, argument, argument >> 31, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, static_cast<int>(aid), static_cast<std::uint32_t>(target), reinterpret_cast<int>(&flag), argument, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -297,8 +296,7 @@ void CGameMode::SpawnArrowEffect64(const vector3d* source, const vector3d* targe
|
|||
|
||||
if (effect) {
|
||||
this->scene->objects.push_back(effect);
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, 0, reinterpret_cast<int>(source), reinterpret_cast<int>(source) >> 31, reinterpret_cast<int>(target),
|
||||
reinterpret_cast<int>(target) >> 31, reinterpret_cast<int>(&speed), reinterpret_cast<int>(&speed) >> 31, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS2, reinterpret_cast<int>(source), reinterpret_cast<int>(target), reinterpret_cast<int>(&speed), 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -591,9 +589,8 @@ CMsgEffect* CGameMode::SpawnCashEmotion(int aid, int packId, int emotionId, std:
|
|||
this->scene->objects.emplace_back(effect);
|
||||
}
|
||||
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, 0, duration, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, aid, aid >> 31, reinterpret_cast<int>(&names), reinterpret_cast<int>(&names) >> 31, data->actionIndex,
|
||||
data->actionIndex >> 31, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, duration, 1, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, aid, reinterpret_cast<int>(&names), data->actionIndex, 0, 0, 0);
|
||||
}
|
||||
|
||||
return effect;
|
||||
|
|
@ -626,7 +623,7 @@ void CGameMode::SpawnMandraAttack(std::uint32_t aid, int target, char flag) {
|
|||
|
||||
if (effect) {
|
||||
this->scene->objects.push_back(effect);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, aid, 0, reinterpret_cast<int>(&flag), reinterpret_cast<int>(&flag) >> 31, target, target >> 31, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, aid, reinterpret_cast<int>(&flag), target, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -913,7 +910,7 @@ bool CWorld::RemoveSkill(std::uint32_t aid) {
|
|||
return false;
|
||||
}
|
||||
|
||||
skill->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
skill->SendMsg(nullptr, AM_DISAPPEAR, 0, 0, 0, 0, 0, 0);
|
||||
|
||||
if (skill->HasPendingDamage() == true) {
|
||||
for (std::uint32_t pending : this->pendingActorIds) {
|
||||
|
|
@ -948,9 +945,8 @@ CMsgEffect* CGameMode::SpawnDamageMsgEffect(const vector3d* position, std::uint3
|
|||
CMsgEffect* effect = new CMsgEffect;
|
||||
if (effect) {
|
||||
this->scene->objects.push_back(effect);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, 0, accountId, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, reinterpret_cast<int>(position), reinterpret_cast<int>(position) >> 31, reinterpret_cast<int>(&names),
|
||||
reinterpret_cast<int>(&names) >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, accountId, 13, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, reinterpret_cast<int>(position), reinterpret_cast<int>(&names), 0, 0, 0, 0);
|
||||
effect->render.color = color;
|
||||
effect->render.useGroundLighting = 0;
|
||||
}
|
||||
|
|
@ -1358,10 +1354,9 @@ CMsgEffect* CGameMode::SpawnMsgEffect(int effectId, const vector3d* position, st
|
|||
|
||||
if (effect) {
|
||||
this->scene->objects.push_back(effect);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, 0, accountId, 0, type, type >> 31, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETMASTERGID, accountId, type, 0, 0, 0, 0);
|
||||
effect->m_visible = visible;
|
||||
effect->SendMsg(nullptr, AM_SETPOS, 0, reinterpret_cast<int>(position), reinterpret_cast<int>(position) >> 31, reinterpret_cast<int>(names),
|
||||
reinterpret_cast<int>(names) >> 31, animation, animation >> 31, 0, 0, 0, 0, 0, 0);
|
||||
effect->SendMsg(nullptr, AM_SETPOS, reinterpret_cast<int>(position), reinterpret_cast<int>(names), animation, 0, 0, 0);
|
||||
}
|
||||
|
||||
return effect;
|
||||
|
|
|
|||
|
|
@ -1781,7 +1781,7 @@ void UIWindowMgr::CycleWindowVisibility(int) {
|
|||
this->CloseWindow(WID_MINIMAPZOOMWND);
|
||||
CPlayer* player = static_cast<CGameMode*>(g_modeMgr.GetGameMode())->scene->player;
|
||||
if (player) {
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 0, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||
player->SendMsg(nullptr, AM_DELETE_EFFECT, 164, 0, 0, 0, 0, 0);
|
||||
player->skillEffect = 0;
|
||||
}
|
||||
this->windowVisibilityState = 2;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue