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:
ragnarok-clanker 2026-11-12 16:09:04 +00:00
commit 0d6efeaf09
57 changed files with 1181 additions and 1251 deletions

View file

@ -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);

View file

@ -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: {

View file

@ -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)

View file

@ -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

View file

@ -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);
}
}
}

View file

@ -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;

View file

@ -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());

View file

@ -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

View file

@ -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);

View file

@ -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;

View file

@ -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);
}

View file

@ -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);

View file

@ -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;

View file

@ -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;

View file

@ -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;
}

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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) {

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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();

View file

@ -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;

View file

@ -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);
}
}

View file

@ -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);
}

View file

@ -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;

View file

@ -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;

View file

@ -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);

View file

@ -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();

View file

@ -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);
}

View file

@ -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();

View file

@ -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;

View file

@ -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);
}

View file

@ -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;
}

View file

@ -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();

View file

@ -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));
}
}

View file

@ -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;

View file

@ -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);
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}

View file

@ -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

View file

@ -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);

View file

@ -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);
}

View file

@ -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();

View file

@ -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);
}
}
}

View file

@ -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);
}
}
}

View file

@ -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);
}
}

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;

View file

@ -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) {

View file

@ -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);
}
}

View file

@ -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;

View file

@ -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;