rodecomp/Source/Client/Mode/CGameMode.h
ragnarok-clanker 694f37b1a5 Decompile fn_21329 (CGameMode::ProcessGroundClick)
Batch #9998 by ragnarok-clanker: 0 byte-identical, 1 confirmed by peer review.

- fn_21329 CGameMode::ProcessGroundClick: logic confirmed by peer review

Peer-reviewed-by: gordaoprogramas, cremane
Reviewed-by: ragnarok-clanker
2026-11-02 13:53:27 +00:00

1013 lines
54 KiB
C++

#ifndef RAGNAROK_SOURCE_CLIENT_MODE_CGAMEMODE_H
#define RAGNAROK_SOURCE_CLIENT_MODE_CGAMEMODE_H
#include "Client/Mode/CMode.h"
#include "Client/Mode/ModeDragState.h"
#include "Contents/ActorNameCard.h"
#include <cstddef>
#include <cstdint>
#include <cstdio>
#include <list>
#include <map>
#include <string>
#include <unordered_map>
#include <unordered_set>
#include <vector>
class CView;
class UIBroadcastBalloon;
class UINameBalloonText;
class CMousePointer;
class CCorpse;
class CMsgEffect;
class CGameActor;
class CPlayer;
class CRenderObject;
struct ActorNameAllPacket;
struct ActorNameTitlePacket;
struct PlayerNameUpdatePacket;
struct GameOptionEntry;
struct CWorld;
struct RenewQuestOngoingInfo;
struct ActorPickInfo;
struct TextureRegion;
struct vector3d;
struct ItemCardSlots;
struct ItemSlotOptions;
struct ReputePointEntry;
struct GuildStorageLogItem;
struct MiniMapMember {
/* 0000 */ int x;
/* 0004 */ int y;
/* 0008 */ std::uint32_t color;
};
#pragma pack(push, 1)
struct PartyRosterEntry {
/* 0000 */ std::uint32_t accountId;
/* 0004 */ std::uint32_t characterId;
/* 0008 */ char name[24];
/* 0020 */ char mapName[16];
/* 0030 */ unsigned char member;
/* 0031 */ unsigned char offline;
/* 0032 */ std::int16_t x;
/* 0034 */ std::int16_t y;
};
#pragma pack(pop)
static_assert(sizeof(PartyRosterEntry) == 0x36);
#pragma pack(push, 1)
struct SkillListEntry {
/* 0000 */ std::uint16_t id;
/* 0002 */ int type;
/* 0006 */ std::int16_t level;
/* 0008 */ std::int16_t spCost;
/* 000A */ std::int16_t range;
/* 000C */ unsigned char upgradable;
/* 000D */ std::int16_t unknown_000D;
};
#pragma pack(pop)
static_assert(sizeof(SkillListEntry) == 0xF);
struct GameModeLoopSound {
/* 0000 */ std::string name;
/* 0018 */ std::uint32_t npcId;
/* 001C */ std::uint32_t term;
/* 0020 */ std::uint32_t nextTick;
};
struct MiniMapPing {
/* 0000 */ int x;
/* 0004 */ int y;
/* 0008 */ int persistent;
/* 000C */ std::uint32_t color;
/* 0010 */ std::uint32_t tick;
};
struct MinimapMarker {
/* 0000 */ std::int16_t unknown_0000;
/* 0002 */ std::int16_t unknown_0002;
/* 0004 */ std::int16_t unknown_0004;
/* 0006 */ std::int16_t unknown_0006;
};
class CGameMode : public CMode {
public:
CGameMode();
/* 0058 */ unsigned char unknown_0058[0x10];
/* 0068 */ char mapName[16];
/* 0078 */ unsigned char unknown_0078[0xC];
/* 0084 */ std::vector<std::string> unknown_0084;
/* 0090 */ unsigned char unknown_0090[0x3C];
/* 00CC */ CWorld* scene;
/* 00D0 */ CView* camera;
/* 00D4 */ CMousePointer* mousePointer;
/* 00D8 */ unsigned char unknown_00D8[0x04];
/* 00DC */ int unknown_00DC;
/* 00E0 */ int unknown_00E0;
/* 00E4 */ int unknown_00E4;
/* 00E8 */ int unknown_00E8;
/* 00EC */ unsigned char unknown_00EC[0x0C];
/* 00F8 */ int unknown_00F8;
/* 00FC */ int unknown_00FC;
/* 0100 */ unsigned char unknown_0100[0x18];
/* 0118 */ std::string unknown_0118;
/* 0130 */ std::string unknown_0130;
/* 0148 */ std::string exchangeName;
/* 0160 */ CActorNameCardHolder nameCard;
/* 0194 */ std::map<std::uint32_t, int> unknown_0194;
/* 019C */ std::map<std::uint32_t, std::pair<int, int>> unknown_019C;
/* 01A4 */ std::list<int> unknown_01A4;
/* 01AC */ std::map<std::uint32_t, std::uint32_t> unknown_01AC;
/* 01B4 */ std::map<std::uint32_t, MiniMapMember> unknown_01B4;
/* 01BC */ std::map<std::uint32_t, MiniMapMember> unknown_01BC;
/* 01C4 */ std::map<std::uint32_t, MiniMapPing> unknown_01C4;
/* 01CC */ std::vector<int> actorMenuIds;
/* 01D8 */ std::list<std::uint32_t> m_skillUnitIds;
/* 01E0 */ unsigned char unknown_01E0[4];
/* 01E4 */ std::vector<GameModeLoopSound> loopSounds;
/* 01F0 */ std::map<std::uint32_t, MinimapMarker> minimapMarkers;
/* 01F8 */ int unknown_01F8;
/* 01FC */ std::string unknown_01FC;
/* 0214 */ std::string unknown_0214;
/* 022C */ std::string unknown_022C;
/* 0244 */ int unknown_0244;
/* 0248 */ std::uint32_t unknown_0248;
/* 024C */ int unknown_024C;
/* 0250 */ int unknown_0250;
/* 0254 */ int unknown_0254;
/* 0258 */ int hasViewParameters;
/* 025C */ std::int16_t viewParameters[9];
/* 026E */ unsigned char unknown_026E[0x1A];
/* 0288 */ float unknown_0288;
/* 028C */ unsigned char unknown_028C[0x08];
/* 0294 */ char unknown_0294[0x18];
/* 02AC */ UINameBalloonText* nameBalloon;
/* 02B0 */ UINameBalloonText* itemNameBalloon;
/* 02B4 */ UIWindow* itemWindow;
/* 02B8 */ unsigned char unknown_02B8[0x14];
/* 02CC */ int unknown_02CC;
/* 02D0 */ unsigned char unknown_02D0[0x04];
/* 02D4 */ int unknown_02D4;
/* 02D8 */ std::uint32_t balloonActorId;
/* 02DC */ int unknown_02DC;
/* 02E0 */ int unknown_02E0;
/* 02E4 */ unsigned char unknown_02E4[0x08];
/* 02EC */ std::string unknown_02EC;
/* 0304 */ unsigned char unknown_0304[0x04];
/* 0308 */ ModeDragState drag;
/* 03C8 */ std::string unknown_03C8;
/* 03E0 */ std::string unknown_03E0;
/* 03F8 */ int unknown_03F8;
/* 03FC */ int unknown_03FC;
/* 0400 */ int unknown_0400;
/* 0404 */ int unknown_0404;
/* 0408 */ void* unknown_0408;
/* 040C */ int unknown_040C;
/* 0410 */ int unknown_0410;
/* 0414 */ int unknown_0414;
/* 0418 */ unsigned char unknown_0418;
/* 041C */ int miniMapTooltipId;
/* 0420 */ std::string miniMapTooltipText;
/* 0438 */ std::string unknown_0438;
/* 0450 */ int unknown_0450;
/* 0454 */ int unknown_0454;
/* 0458 */ int unknown_0458;
/* 045C */ unsigned char unknown_045C[0x08];
/* 0464 */ int unknown_0464;
/* 0468 */ unsigned char unknown_0468[0x04];
/* 046C */ std::string unknown_046C[11];
/* 0574 */ unsigned char unknown_0574[0x3C];
/* 05B0 */ int forcedAttack;
/* 05B4 */ int unknown_05B4;
/* 05B8 */ int unknown_05B8;
/* 05BC */ int chatLogLines;
/* 05C0 */ unsigned char unknown_05C0[0x04];
/* 05C4 */ int unknown_05C4;
/* 05C8 */ int unknown_05C8;
/* 05CC */ unsigned char unknown_05CC[0x02];
/* 05CE */ unsigned char unknown_05CE;
/* 05CF */ unsigned char unknown_05CF;
/* 05D0 */ UIWindow* unknown_05D0;
/* 05D4 */ std::list<unsigned long> unknown_05D4;
/* 05DC */ std::map<int, std::string> miniMapTooltipWindows;
/* 05E4 */ std::uint32_t wheelTick;
/* 05E8 */ std::uint32_t replayPauseTick;
/* 05EC */ unsigned char unknown_05EC[0x08];
/* 05F4 */ int unknown_05F4;
/* 05F8 */ int unknown_05F8;
/* 05FC */ UIWindow* unknown_05FC;
/* 0600 */ std::uint32_t unknown_0600;
/* 0604 */ std::list<UIWindow*> unknown_0604;
/* 060C */ unsigned char unknown_060C[0x4];
/* 0610 */ std::vector<std::uint32_t> spriteMirrorActorIds;
/* 061C */ UIBroadcastBalloon* broadcastBalloon;
/* 0620 */ UIBroadcastBalloon* noticeBalloon;
/* 0624 */ unsigned char unknown_0624[0x4];
/* 0628 */ std::unordered_set<int> unknown_0628;
/* 0648 */ unsigned char unknown_0648;
/* 0649 */ unsigned char unknown_0649[0x3];
/* 064C */ std::unordered_map<int, int> unknown_064C;
/* 066C */ unsigned char unknown_066C[0x4];
std::string MapName();
UIBroadcastBalloon* EnsureBroadcastBalloon();
void InitializeCamera();
void ReloadScene();
void InitializeState();
std::string GetUnknown0084(unsigned int index);
void RequestPlayerAction(int target, int argument);
void UpdateLoopSounds();
void AddSceneObject(CRenderObject* object);
void SendMousePointerPosition(float x, float y, int value);
void WriteChatLog(const char* text);
bool IsEffectId990Group(int id);
bool IsEffectId994Group(int id);
bool ConfirmDraggedItemUse();
void sub_CFE480(int actorId);
void NotifyUnknown0604(int value);
void UpdatePetFriendlyWindow(int previousFriendly);
__declspec(noinline) bool SaveEmblemFile(const std::vector<unsigned char>& data);
void SendNpcInputText(std::uint32_t npcId, const char* text, const char* replacement, int unused);
std::string HuntTargetText(const RenewQuestOngoingInfo& quest, int index);
std::vector<unsigned char> SaveActiveSkillEffects();
std::vector<unsigned char> SaveUnknown024C();
std::vector<unsigned char> SaveNameCardState();
std::vector<unsigned char> SaveGroundItems();
std::vector<unsigned char> SaveActorStates();
void WorldCell(float x, float z, int& column, int& row) const;
void SubcellPosition(int column, int row, int subColumn, int subRow, float& x, float& z) const;
void PlayerCell(int* column, int* row) const;
void RefreshActorJobEffects(bool playerOnly);
int GetSkillAttackRange(int id, int level);
int TerrainHeight() const;
int TerrainWidth() const;
std::string LocationText();
bool HasInventoryItem(int id);
bool HasResurrectionItem();
void SendMousePointerState(int value);
void ShowSpecialPopup(int popupId);
void ReceiveNpcAckMapmove(const unsigned char* packet);
void ReceiveZoneServerChange(const unsigned char* packet);
void ReceiveZoneServerChange(const char* mapName, std::int16_t x, std::int16_t y, int ip, std::int16_t port);
void RequestLocalMapMove(const char* mapName, std::uint16_t x, std::uint16_t y);
bool CanFindPath(int sx, int sy, int cellX, int cellY, int dx, int dy);
bool IsAllowedPair(int kind, int value);
bool IsWithinRange(const int& x1, const int& y1, const int& x2, const int& y2, int range);
bool IsRegisterCell(int x, int y);
bool HasUnknown01A4(int value);
bool IsValidCell(int x, int y);
bool GetClosestValidCell(int* x, int* y);
void ReceiveActorNameAll(const ActorNameAllPacket* packet);
void ReceiveActorNameTitle(const ActorNameTitlePacket* packet);
void ReceivePlayerNameUpdate(const PlayerNameUpdatePacket* packet);
void ReceiveColoredNotice(const unsigned char* packet);
void ReceiveNamedActionResult(const unsigned char* packet);
void ReceiveStatDump(const unsigned char* packet);
void ReceiveActorText(const unsigned char* packet);
void ReceiveRentalItemTime(const unsigned char* packet);
void ReceiveEquipWindowMicroscope(const unsigned char* packet);
void ReceiveMemorialDungeonInfo(const unsigned char* packet);
void ReceiveMemorialDungeonNotify(const unsigned char* packet);
void ReceiveMemorialDungeonSubscriptionInfo(const unsigned char* packet);
void ReceiveMemorialDungeonSubscriptionNotify(const unsigned char* packet);
void ReceiveWindow17Entries(const unsigned char* packet);
void ReceiveActorSequenceDeadline(const unsigned char* packet);
void ReceiveActorSignal(const unsigned char* packet);
void IgnorePacket(const unsigned char* packet);
void SetWindow16Align(unsigned char align);
void IgnorePacket473(const unsigned char* packet);
void IgnorePacket474(const unsigned char* packet);
void IgnorePacket478(const unsigned char* packet);
void ClearUnknown0244(const unsigned char* packet);
void ReceiveActorStatusBlock(const unsigned char* packet);
void ReceiveActorStatusUpdate(const unsigned char* packet);
void ReceiveActorTitle(const unsigned char* packet);
void ReceiveActorInt8(const unsigned char* packet);
void ReceiveActorInt64Pair(const unsigned char* packet);
void ReceiveItem1740EquipList(const unsigned char* packet);
void ReceiveItem1740EquipListOptions(const unsigned char* packet);
void ReceiveItem1738EquipList(const unsigned char* packet);
void ReceiveItem1738EquipListOptions(const unsigned char* packet);
void ReceiveItem1738NormalList(const unsigned char* packet);
void ReceiveHomunculusProperty64(const unsigned char* packet);
void ReceiveHomunculusProperty(const unsigned char* packet);
void ReceiveHuntingList(const unsigned char* packet);
void ReceiveDevotionList(const unsigned char* packet);
void ReceiveFormatStringMessage(const unsigned char* packet);
void Zc_Notify_Exp(const unsigned char* packet);
void ReceiveEquipAck(const unsigned char* packet);
void ReceiveToggleNotice(const unsigned char* packet);
void ReceiveSound(const unsigned char* packet);
void ReceivePendingResult(const unsigned char* packet);
void ReceiveNoticeResult14(const unsigned char* packet);
void ReceivePetAct(unsigned char* packet);
void PlayBgm(unsigned char type, std::string name);
void ReceiveNpcBgm(const unsigned char* packet);
void IgnoreRemovedPacket1(const unsigned char* packet);
void ReceivePlayerMessage82(const unsigned char* packet);
void ReceiveResultNotice00FC(const unsigned char* packet);
void IgnoreRemovedPacket2(const unsigned char* packet);
void ReceiveBillingInfo(const unsigned char* packet);
void ReceiveActorMessage32(const unsigned char* packet);
void ReceiveActorMessage34(const unsigned char* packet);
void ReceiveStatusNotice(const unsigned char* packet);
void ReceivePartyBookingRegisterResult(const unsigned char* packet);
void ReceivePartyBookingSearchResult(const unsigned char* packet);
void ReceivePartyBookingDelete(const unsigned char* packet);
void ReceivePartyBookingInsert(const unsigned char* packet);
void ReceivePartyBookingUpdate(const unsigned char* packet);
void ReceivePartyBookingUpdateResult(const unsigned char* packet);
void ReceivePendingItem1718List(const unsigned char* packet);
void ReceiveItem1718BasicList(const unsigned char* packet);
void ReceiveItem1718Result(const unsigned char* packet);
void ReceiveItem1718IndexList(const unsigned char* packet);
void NotifyResult2571(int result);
void ReceiveHomunculusInfo(const unsigned char* data);
void ReceiveHomunculusInfo2(const unsigned char* data);
void ReceiveHomunculusInfo3(const unsigned char* data);
void ReceiveMinimapMarker(const unsigned char* data);
void ReceiveBookOpen(const unsigned char* packet);
void ReceiveActorNameCard(const unsigned char* packet);
void ReceiveServiceRequest(unsigned char type, int value);
void ReceiveAchievementUpdate(
int unknown01738784, short unknown01738788, int completed, int total, int id, unsigned char achieved, const std::uint32_t* objectives,
__time32_t completedAt, unsigned char rewarded
);
void ReceiveAchievementResult(unsigned char result, int id);
void ReceiveRuneRewardPacket(const unsigned char* packet);
void ReceiveRuneGradeResult(int result, int tagId, int type, std::int64_t id, int grade, int gradeLevel);
void SpawnSkillWarningPlanes(std::uint32_t aid, std::uint16_t skillId, int level, std::int16_t x, std::int16_t y, int duration);
void ReceiveRodexMailDeleteResult(int mailId, int result);
void ReceiveItemReward2(const unsigned char* data);
void ReceiveItemReward(const unsigned char* data);
void ReceiveWindow181Message(const unsigned char* packet);
void ReceiveNamedResultNotice(const unsigned char* packet);
void ReceiveResultNotice0118(const unsigned char* packet);
bool NotifyItemResult(int result);
void NotifyItemBounds();
CCorpse* SpawnCorpse(float x, float y, float z, const char* action, const char* sprite, int animation, int motion, float angle);
bool LaunchTargetEffect(int effectId, CGameActor* source, CGameActor* target, int argument);
void UpdateNameBalloon(CGameActor* actor);
void ShowGuildEmblem(CGameActor* actor, int guildId, int unused);
void RemoveUnknown0604(int window);
void DrawMiniMapNumber();
void DrawTimeAttackTimer();
void DrawTimeAttackCountdown(std::uint32_t value, int mode);
CMsgEffect* SpawnCashEmotion(int aid, int packId, int emotionId, std::uint32_t duration);
CMsgEffect* SpawnDamageMsgEffect(const vector3d* position, std::uint32_t color, std::uint32_t accountId);
CMsgEffect* SpawnMsgEffect(int effectId, const vector3d* position, std::uint32_t accountId, bool visible);
void ApplyMapFog(int enabled);
void SpawnGrannyCorpse(float x, float y, float z, float angle, const char* name);
void SpawnMandraAttack(std::uint32_t aid, int target, char flag);
void OpenActorMenu(const ActorPickInfo* pick, int handled);
int HandleActorPick(ActorPickInfo* pick, int result);
int ProcessMousePick(int result, ActorPickInfo* pick);
void ReceiveSkillList(int packetType, const std::vector<SkillListEntry>& skills);
void ShowActorNameBalloon(std::uint32_t id);
int ProcessGroundClick(int result);
void ProcessActorClick(int& handled, ActorPickInfo* pick, CGameActor* actor);
void ProcessActorPick(int& handled, ActorPickInfo* pick, CGameActor* actor);
void ReceiveSkillUpdate(
std::uint16_t id, std::int16_t level, std::int16_t spCost, unsigned char upgradable, std::int16_t range, int type, std::int16_t unknown
);
std::uint32_t FindUnknown01AC(std::uint32_t key);
std::string ActorName(std::uint32_t id);
std::uint32_t ActorNameColor(int job, std::uint32_t aid);
const CActorNameCard& LookupNameCard(std::uint32_t id);
std::vector<char> BuildActorEntryPacket(CGameActor* actor, std::uint16_t packetType);
CGameActor* NewActor(int job);
void UpdateHoverNameBalloon();
void ShowHoverActorName(CGameActor* actor);
const char* DragItemName();
void PushUnknown01A4(int value);
bool IsOverWeight(bool notify);
void CompleteUnknown0194(std::uint32_t id, const std::string& text);
std::string GetActiveSkillEffectTimeText(int skillId, int* activeSkillId);
void ProcessStatusIconTooltip(int x, int y);
bool IsActiveSkillEffectId(std::uint32_t id);
bool IsExcludedSkillEffectId(std::uint32_t id);
int SubD07740(int id, int defaultResult);
bool AppendGuildEmblem(std::vector<char>& output, std::vector<std::string>& names, int guildId, int unused);
void ReceiveResultNotice(int result);
void RefreshWindow16(const unsigned char* packet);
void ReceiveWindow154Close(std::int16_t value);
void MoveWindow16(int x, int y);
void ResizeWindow16(int width, int height);
void ReceiveNotice1950(const unsigned char* packet);
void ReceiveActorPairFreeze(const unsigned char* packet);
void ReceiveEffectRemove(const unsigned char* packet);
void ReceiveActorEffect347(const unsigned char* packet);
void ReceiveUnknown0294Text(const unsigned char* packet);
void ReceiveToggle128(int enabled);
void PlaceWindow16(unsigned int xPercent, unsigned int yPercent);
void ReceiveUnknown7FBC(const unsigned char* packet);
void ReceiveActorMessage144(const unsigned char* packet);
void StopActorMove(std::uint32_t aid, std::int16_t x, std::int16_t y, unsigned char flag);
void NotifyResult4138(int result);
void NotifyResult2877(int result);
void ReceiveRodexMailDeleted(const unsigned char* packet);
void ReceiveRodexMailList(const unsigned char* packet);
void NotifyResult3562(const unsigned char* packet);
void IgnoreRemovedPacket6();
void ReceiveRouletteResult(const unsigned char* packet);
void NotifyResult4013(unsigned char result, unsigned short value);
void ReceiveGuildUnknown0114List(const unsigned char* packet);
void ReceiveClanLeave(const unsigned char* packet);
void ReceiveClanInfo(const unsigned char* packet);
void ReceiveGameOptions(int count, const GameOptionEntry* entries);
void ReceiveActorClanName(const unsigned char* packet);
void ReceiveClanMemberCount(const unsigned char* packet);
void ReceiveClanChat(const unsigned char* packet);
void ReceiveGuildEmblemVersion(std::uint32_t aid, int guildId, int emblemVersion);
int RejectRequest(int, int, int, int, int);
void EnsureWindow259(const unsigned char* packet);
void ReceiveRuneActivation(const unsigned char* packet);
void ReceiveRuneSetGrades(const unsigned char* packet);
void ReceiveRuneRewardResult(int result, int tagId, std::int64_t id, int step);
void ReceiveRuneRewardSteps(const unsigned char* packet);
int HandleRuneResult(int result);
void ApplyRuneSetResult(int result, int tagId, int runeSetId);
void ApplyRuneSetResultWithRequest(int result, int tagId, int runeSetId, int grade, int slotCount);
std::uint64_t LaunchDummyEffect(const vector3d* position, int effectId, int lifeFrames, int value);
void NotifyWindow4F258(int result);
void ReceiveNamedResult(std::uint32_t aid, std::string name, int result);
void ReceiveBasicInfoResult(unsigned char result);
void ReceiveUnknown0454Result(const unsigned char* packet);
std::string MakeSimulatorFolder(const std::string& folder);
std::FILE* OpenPackageSimulatorFile(const std::string& folder, int itemId, std::string& itemName);
std::FILE* OpenSimulatorFile(const std::string& folder, const std::string& name);
void ReceiveRandomUpgradeSimulation(const unsigned char* packet);
void ReceiveEnchantSimulation(const unsigned char* packet);
void ReceivePackageSimulation(const unsigned char* packet);
void ReceiveSimulationResult(const unsigned char* packet);
void sub_D606B0(const unsigned char* packet);
void ReceiveWindow154Result(std::int16_t value);
void ReceivePlayerDuration(const unsigned char* packet);
void ReceiveFailureNotice(const unsigned char* packet);
void ReceiveServerRateNotice(const unsigned char* packet);
void ReceiveRequestResult(const unsigned char* packet);
void ReceivePackageItemTest(const unsigned char* packet);
void ReceiveDdukddakBoxTest(const unsigned char* packet);
void ReceiveDeferredReset(const unsigned char* packet);
void ReceiveGradeEnchantResult(const unsigned char* packet);
void UpdateUnknown0628(int id, bool add);
void ClearUnknown0458();
void SetDragIds(int source, int id);
void EnsureNameBalloon(UINameBalloonText*& balloon);
void ShowNoticeBalloon(const std::vector<std::string>* lines);
void UpdateBalloons();
void ChangeZoneServer(std::string mapName, int x, int y, int ip, int port, std::string host);
const char* Unknown04DCText();
CPlayer* Player();
MinimapMarker* FindMinimapMarker(std::uint32_t key);
float CameraDesiredYaw();
void IgnoreRemovedPacket3(const unsigned char* packet);
void ReceiveShowRankingSchedule(const unsigned char* packet);
void ReceiveInventoryStart(const unsigned char* packet);
void IgnoreRemovedPacket4(const unsigned char* packet);
void IgnoreRemovedPacket5(const unsigned char* packet);
void IgnoreRemovedPacket7(const unsigned char* packet);
void IgnoreRemovedPacket8();
void IgnoreRemovedPacket9();
void sub_D079A0(unsigned char kind, int argument);
void sub_D08390(const unsigned char* packet);
void IgnoreRemovedPacket10(const unsigned char* packet);
void IgnoreRemovedPacket11(const unsigned char* packet);
void IgnoreRemovedPacket12(const unsigned char* packet, int value1, int value2, int value3, int value4);
void ToggleWindow169(unsigned char enable);
void RequestWindow169(unsigned char enable);
void ShowNoticeText(std::string text);
void ReceiveItem1738Add(const unsigned char* packet);
void ReceiveItem1738AddOptions(const unsigned char* packet);
void ReceiveItem1738AddGrade(const unsigned char* packet);
void ReceiveItem1740Add(const unsigned char* packet);
void ReceiveItem1740AddOptions(const unsigned char* packet);
void ReceiveItem1740AddGrade(const unsigned char* packet);
void ReceiveItem1740BasicList(const unsigned char* packet);
void ReceiveItem1740BasicListBind(const unsigned char* packet);
void ReceiveItemInventoryList(const unsigned char* packet);
void ReceiveUnknown05C4Result(const unsigned char* packet);
void ReceiveHpSpRecovery(const unsigned char* packet, int variant);
void ReceiveUnknown173A5BC(const unsigned char* packet);
void ReceiveUnknown16FC588(const unsigned char* packet);
void ReceiveShopItemList(const unsigned char* data);
void ReceiveUnknownD26800(const unsigned char* packet);
void AddMiniMapEffectMarker(const unsigned char* packet);
void ReceiveUnknownD79660(const unsigned char* packet);
void ReceiveUnknownD79E90(std::int16_t result, std::intptr_t value);
void ReceiveRouletteSetResult(const unsigned char* packet);
void ReceiveDynamicNpcNotice(const unsigned char* packet);
void ReceiveUnknownD612A0(const unsigned char* packet);
void ReceiveUnknownD77BF0(const unsigned char* packet);
void ReceiveUnknownD264E0(const unsigned char* packet);
void ResetItemLists(const unsigned char* packet);
void StepTowardWalkableCell(const int& targetX, const int& targetY, int& x, int& y);
void FindWalkableCellToward(float x, float z, float originX, float originZ, int& column, int& row, int distance);
void RemoveMiniMapPing(std::uint32_t id);
void DrawMiniMap();
void DrawMiniMapMembers(const TextureRegion& view);
void DrawMiniMapTriangle(float x, float y, float size, std::uint32_t color);
void DrawMiniMapMarker(
const TextureRegion& view, int x, int y, int size, std::string texture, int kind, std::uint32_t color, bool clamp
);
void DrawMiniMapCoordinates();
void RefreshMiniMapTooltips();
int UpdateMiniMapTooltip();
void ReceiveGradeEnchantInfo(const unsigned char* packet);
void ReceivePartyItemPickup(const unsigned char* packet);
void ReceiveItemDisappear(std::uint32_t itemAid);
void ReceiveShortcutPagePacket(const unsigned char* packet);
void ReceiveCardCompositionResult(const unsigned char* packet);
void ReceiveRefineResult(const unsigned char* packet);
void ReceiveRefineStatus(const char* playerName, int itemId, unsigned char refine, bool success);
void ReceiveGradeEnchantBroadcast(const unsigned char* packet);
void ReceiveRodexReadMail(const unsigned char* packet);
void ReceiveRodexMailListRefresh(const unsigned char* packet);
void ReceiveRodexMailListAppend(const unsigned char* packet);
void ReceiveStatusChangeNotice(const unsigned char* packet);
void ReceiveItemEffectResult(const unsigned char* packet);
void NotifyResult3995(unsigned char result);
void ReceiveActorEffect228(const unsigned char* packet);
void ResendMinimapMarkers();
void ReceiveJobTitle(unsigned char result, int job);
void ReceiveQuestStates(int count, const unsigned char* entries);
void ReceiveStoreResult(unsigned char kind, unsigned char result);
void ReceiveMessageBox(const unsigned char* packet);
void NotifyCaptchaRegistered();
void ReceiveItem1784List(const unsigned char* packet);
void ReceiveItemListPart(unsigned char listType, int count, const unsigned char* data);
void ReceiveEquipListPart(unsigned char listType, int count, const unsigned char* data);
void ClearItemLists(const unsigned char* packet);
void RefreshItemListWindow(unsigned char listType, bool partial);
void SetFollowTicks(int updateTick, int lostTick);
bool IsMenuWindowOpen() const;
bool ShowRestrictedNotice(int grade);
void AddUnknown0604(UIWindow* window);
void RequestAdminStatus();
void sub_CEB8E0();
unsigned sub_CEBBB0(const std::vector<unsigned char>& data);
unsigned sub_CEBF30(const std::vector<unsigned char>& data);
unsigned sub_CEC100(const std::vector<unsigned char>& data);
unsigned sub_CEC6A0(const std::vector<unsigned char>& data);
void sub_D2DB80(const unsigned char* record);
void sub_D3D2F0(const unsigned char* record);
void sub_D3F130(const unsigned char* record);
void sub_D24430(const unsigned char* record);
void sub_D350A0(const unsigned char* record);
void sub_D37A10(const unsigned char* record);
void sub_D40730(const unsigned char* record);
void ReceiveGroundSkill8(const unsigned char* record);
void ReceiveGroundSkill32(const unsigned char* record);
void ReceiveGroundSkillExtended(const unsigned char* record);
void ReceivePartyRoster(const unsigned char* packet);
void ReceivePartyMemberInfo(const unsigned char* packet);
void ReceivePartyMemberList(const unsigned char* packet);
void sub_D59FD0(const char* partyName, std::vector<PartyRosterEntry>* members);
void sub_D48C60(const unsigned char* data);
void sub_D4A060(const unsigned char* data);
void sub_D6F900(const unsigned char* data);
void sub_D48530(const unsigned char* data);
void RefreshInventoryOrEquipItem(std::uint16_t itemId, unsigned char unknownValue, std::uint16_t refine, ItemCardSlots cards, ItemSlotOptions options);
void RefreshInventoryOrEquipItem2(const unsigned char* data);
void ReceiveRankingList(const unsigned char* data);
void ApplyStatusIcons(int level, unsigned int flags);
void ReceiveGuildStorageLogItems(const unsigned char* data);
void sub_D1A330(const unsigned char* data);
void sub_D1A520(int unknown_0004, std::string name, std::string text, bool flag);
void SpawnGroundSkill(std::uint32_t aid, std::uint32_t owner, int value, std::int16_t x, std::int16_t y, int type, signed char level, unsigned char visible, unsigned char flags);
void sub_D60D70(std::uint32_t aid, std::uint32_t owner, std::int16_t x, std::int16_t y);
void sub_D41250(const unsigned char* record);
void sub_D51A90(const unsigned char* record);
void sub_D61390(const unsigned char* record);
void sub_D616B0(const unsigned char* record);
void sub_D619E0(const unsigned char* record);
void sub_D63720(const unsigned char* record);
void sub_D63A40(const unsigned char* record);
void sub_D63D70(const unsigned char* record);
void sub_D65FC0(const unsigned char* record);
void ReceiveBroadcastBalloonNotice(const unsigned char* packet);
void ReceiveUnknownD65870(const unsigned char* packet);
void ReceiveStatusChangeEffect2(const unsigned char* packet);
void ReceiveActorStatusValuePacket2(const unsigned char* packet);
void ReceiveWindow95Data(const unsigned char* packet);
void sub_D7B170(
int first, int second, int third, int fourth, int fifth, int sixth, int seventh, int eighth, int ninth, int tenth,
int eleventh, int twelfth, int thirteenth, int fourteenth, std::string text, int fifteenth
);
int Run() override;
void End() override;
void TargetActorByAid(int aid);
void Slot7(int value) override;
void PlaceWindowAtActor(UIWindow* window, CGameActor* actor);
void ReceiveSummonHpInit(const unsigned char* buffer);
void ReceiveSummonHpUpdate(const unsigned char* buffer);
void ReceiveGameOptionResult(int command, int result, int enabled);
void ReceiveCharViewResult(const unsigned char* packet);
void SpawnArrowEffect(std::uint32_t aid, int target, char flag, int argument);
void SpawnArrowEffect64(const vector3d* source, const vector3d* target, float speed);
void UnusedArrowStub(int a, int b, int c, int d, int e, int f, int g, int h, int i, int j);
bool UpdateReplayPause(bool resume);
void ReceiveCharacterRenameResult(const unsigned char* packet);
void ReceiveLapineUpgradeResult(std::int16_t result);
void ReceiveLapineBoxResult(std::uint16_t result);
void ReceiveRouletteInfo(const unsigned char* packet);
void BeginCaptchaImage(unsigned short size, const char* key);
void ReceiveCaptchaImageData(const char* key, const void* data, unsigned short size);
void ReceiveWindow99Values(int count, const int* values);
void ReceiveMacroBlackListResult(int result);
void ReceiveMacroDetectorResult(int result);
void ReceiveMacroBlackListCode(unsigned char state, const char* code);
void OpenServiceWindow(unsigned char type);
void ReceiveWindow328Result(int result, int value);
void ReceiveRouletteClose(const unsigned char* packet);
void ReceiveWindow227Result(const unsigned char* packet);
void ReceiveRouletteOpen(const unsigned char* packet);
void ReceiveRodexOpen(const unsigned char* packet);
void ReceiveCaptchaPreview(int result, unsigned short size, const char* key);
void ReceiveStackedItemReturn(const unsigned char* packet);
void ReceiveRodexRecipient(int id, unsigned short job, unsigned short level, const char* name);
void ReceiveStatus(const unsigned char* data);
void ReceiveStatusChange(const unsigned char* data);
void ReceiveStatusChangeEffect(const unsigned char* data);
void ReceiveStatusChangeAck(const unsigned char* data);
void ReceiveStatusChangeList(const unsigned char* data);
void ReceiveStatusChangeExtended(const unsigned char* data);
void ReceiveWindow227Entries(const unsigned char* data);
void ReceiveItemDropEntry(const unsigned char* data);
void ReceiveSpriteChange(const unsigned char* data);
void ReceiveSpriteChange2(const unsigned char* data);
void ReceiveSpriteChange2Mirrored(const unsigned char* packet);
void ReceiveMapProperty(const unsigned char* data);
void ReceiveStovePurchaseResult(const unsigned char* data);
void ReceiveOngoingQuestList(const unsigned char* data);
void ReceiveOngoingQuestList2(const unsigned char* data);
void ReceiveShopItemListPacket(const unsigned char* data);
void SetActorUnknown02E4(std::uint32_t aid, int value);
void IgnoreRemovedPacket13(const unsigned char* packet);
void IgnoreRemovedPacket14(const unsigned char* packet);
void IgnoreRemovedPacket15(const unsigned char* packet);
void IgnoreRemovedPacket16(const unsigned char* packet);
void ReceiveItemSlotAddOptions(const unsigned char* data);
void ReceiveItemSlotAddGrade(const unsigned char* data);
void ReceiveGuildUnknown0114Change(unsigned char value, std::uint32_t removeAid, std::uint32_t addAid);
void ReceiveItemOptionsRefresh(const unsigned char* data);
void ReceivePartyJobLevel(const unsigned char* packet);
void ReceivePartyDead(const unsigned char* packet);
void ReceiveShopItemList(const std::vector<ITEM_INFO>& items, int value, int unused1, int argument, int unused2, std::uint32_t duration, unsigned char myShop);
void ReceivePacket0B2E(short result);
void ReceiveBuyingStoreItemList(const unsigned char* packet);
void ReceiveUnknownD2A1F0(const unsigned char* packet);
void ReceiveActorMessage7(const unsigned char* packet);
void ReceiveUnknownD78010(const unsigned char* packet);
void ReceiveUnknownD89C60(const unsigned char* packet);
void ReceiveEquipItemList(const unsigned char* packet);
void ReceiveSwapEquipmentList(const unsigned char* packet);
void ReceiveStatusBonus(const unsigned char* packet);
void ReceiveGuildMemberList(const unsigned char* packet);
void SetActorNameCard(std::uint32_t id, const char* name, const char* value1, const char* value2, const char* value3, int job);
void ReceiveShopName(const char* text, int shopId);
void ReceiveFriendList(const unsigned char* packet);
void ReceiveGuildMemberMemoList(const unsigned char* packet);
void sub_D591A0(std::uint32_t aid, int state, int flag, int options);
void sub_D5EEF0(
const char* first, int second, const char* third, int fourth, unsigned char fifth, std::uint16_t sixth, std::uint16_t seventh,
const char* eighth, unsigned char ninth, unsigned char tenth, int eleventh
);
void ReceiveLapineBoxIngredient(const unsigned char* packet);
void ActivateMacroBlackListCheck(unsigned char state, int duration);
void SetMacroDetectorCountdown(unsigned char count, std::uint32_t duration);
void ReceiveCaptchaPreviewImage(const char* key, const void* data, unsigned short size);
void ReceiveLapineUpgradeBoxValue(int value);
void Zc_Trycapture_Monster(const unsigned char* packet);
void Zc_Trycollection(const unsigned char* packet);
void Zc_Msg(const unsigned char* packet);
void Zc_Msg_Color(const unsigned char* packet);
void ReceiveRouletteBonusPoints(const unsigned char* packet);
void ReceiveActorCharm(const unsigned char* packet);
void Zc_Start_Baby(const unsigned char* packet);
void Zc_Start_Capture(const unsigned char* packet);
void Zc_Start_Collection(const unsigned char* packet);
void Zc_Start_Couple(const unsigned char* packet);
void IgnorePacket();
void RemoveUnknown01A4(int value);
bool RecordReplayMessage(int message, int value, int first, int second);
void UpdateReplayActionSpeeds();
struct ReplayTime StopReplayRecording();
std::vector<unsigned char> WriteReplaySkillState();
void ReceivePacket0AB8(const unsigned char* packet);
void ReceivePacket0A29(int value);
void ReceiveCashShopBanner(int value1, int value2, int value3);
void ReceiveWindow308TextEntries(unsigned char* packet);
void ReceiveActorStateValue(std::uint32_t aid, int unused, std::int16_t value);
void ReceiveChatEntries(unsigned char* data);
void ReceiveWindowItemList(const unsigned char* packet);
void ReceivePacket0B73(const unsigned char* data);
void ReceiveInventoryItemUpdate(const unsigned char* packet);
void ReceiveUnknownD25850(const unsigned char* packet);
void ReceiveUnknownD31A40(const unsigned char* packet);
void ReceiveNotifySkill(const unsigned char* packet);
void ProcessSkillUsePacket(const unsigned char* packet, int type);
void ReceiveActorSkillAction(const unsigned char* packet);
void ReceiveActorSkillMessage(const unsigned char* packet);
void OpenWindow154();
void ReceiveUnknownD2D990(const unsigned char* packet);
void ReceiveUnknownD4E3F0(const unsigned char* packet);
void ReceiveUnknownD4E2A0(const unsigned char* packet);
void ReceiveItem1740List(const unsigned char* packet);
void ReceiveDispel(const unsigned char* packet);
void ReceiveItem1758List(const unsigned char* packet);
void ReceiveUnknownD50810(const unsigned char* packet);
void ReceiveItem1748List(const unsigned char* packet);
void ReceiveActorStatusValue(std::uint32_t aid, int status, int amount, int option);
void ReceiveActorSkillResult(const unsigned char* packet);
void UpdateSkillCooldown(std::uint16_t skill, std::uint32_t remaining, std::uint32_t duration);
void sub_D5B030(
std::uint32_t source, std::uint32_t target, std::uint16_t skill, std::uint16_t x, std::uint16_t y,
int tick, int level, unsigned char flag, int result
);
void ReceiveItem1718List(const unsigned char* packet);
void Zc_Spirits2(const unsigned char* data);
void UpdateActorSpiritCount(std::uint32_t aid, std::int16_t count);
void Zc_Mer_Init(const unsigned char* data);
void Zc_Mer_Par_Change(const unsigned char* data);
void ReceiveItemReformOpen(int itemId);
void ReceiveReputeInfo(bool received, unsigned int count, const ReputePointEntry* entries);
void ReceiveEnchantResult(int messageId, int itemId);
void ReceiveReputeOpen(std::uint64_t groupId, std::uint64_t reputeId);
void ReceiveUiOpen(unsigned char type, std::uint64_t data);
void RefreshEmotionPurchaseSchedule();
void RefreshEmotionSaleSchedule();
void ReceiveTypedNotice(const unsigned char* packet);
void ReceiveEquipCardChange(const unsigned char* packet);
void ReceiveEquipWindowMicroscope2(const unsigned char* packet);
void ReceiveEquipWindowMicroscope3(const unsigned char* packet);
void ReceiveBroadcastText(const unsigned char* data);
void ReceiveActorBroadcastText(const unsigned char* data);
void ReceiveEquipWindowMicroscope4(const unsigned char* packet);
void ReceiveEquipWindowMicroscope5(const unsigned char* packet);
void ReceiveEquipWindowMicroscope6(const unsigned char* packet);
void ReceiveInventoryEquipList(const unsigned char* packet);
void ReceiveInventoryEquipList2(const unsigned char* packet);
void ReceiveInventoryEquipList3(const unsigned char* packet);
void ReceiveItemPickupAck2(const unsigned char* data);
void ReceiveItemPickupAck3(const unsigned char* data);
void ReceiveItemPickupAck(const unsigned char* data);
void ReceiveItemPickupAck5(
std::uint16_t index, std::uint16_t amount, int itemId, unsigned char identified, unsigned char damaged, unsigned char refine, ItemCardSlots slots,
std::uint32_t location, unsigned char type, unsigned char result, std::uint32_t expireTime, std::uint16_t bindOnEquip
);
void ReceiveItemPickupAck7(const unsigned char* data);
void ReceiveEquipItemDamaged(const unsigned char* packet);
void ReceiveExpandedBarterMarketItemList2(const unsigned char* data);
void ReceiveExpandedBarterMarketItemList(const unsigned char* data);
void ReceiveFeedResult(const unsigned char* data);
void ReceivePetChangeState(const unsigned char* data);
void ReceiveGuildInfo(const unsigned char* data);
void ReceiveChatRoomMemberList(const unsigned char* data);
void ReceiveGuildMemberAdd(const unsigned char* packet);
void ReceiveGuildPositionInfo(const unsigned char* packet);
void ReceiveRodexMailReturn(const unsigned char* packet);
void ReceiveActorStatusValuePacket(const unsigned char* packet);
void ReceivePartyMemberEffect(const unsigned char* packet);
void ShowFormattedNotice(unsigned short messageId, std::uint32_t color, int argument);
void ReceiveCaptchaUploadRequest(const std::uint32_t* sessionId, int result);
void ReceiveExtraInventoryResult(const unsigned char* packet);
void ReceiveWindow348Result(unsigned char result, std::int16_t index);
void ReceiveRodexItemReturn(const unsigned char* packet);
void ReceiveExpGainNotice(const unsigned char* packet);
void ReceiveTraitStatusChangeAck(unsigned char result, unsigned short statusId, unsigned char value);
void ReceiveBankDepositAck(const unsigned char* packet);
void ReceiveBankWithdrawAck(const unsigned char* packet);
void ReceiveBankCheck(const unsigned char* packet);
void ReceiveExchangeItemAddAck(const unsigned char* packet);
void ReceiveExchangeRequestAck2(const unsigned char* packet);
void ReceiveExchangeRequestAck(const unsigned char* packet);
void ReceiveGuildStorageLog(const unsigned char* packet);
void ReceiveTradeItemFilter(const unsigned char* packet);
void ReceiveOpenStore(const unsigned char* packet);
void ReceiveSearchStoreOpen(const unsigned char* packet);
void ReceiveSearchStoreItems(const unsigned char* packet);
void ReceiveSearchStoreItemsOld(const unsigned char* packet);
void ReceiveStorageEquipList(const unsigned char* packet);
void ReceiveStorageEquipList2(const unsigned char* packet);
void ReceiveStorageEquipList3(const unsigned char* packet);
void ReceiveStorageEquipList4(const unsigned char* packet);
void ReceiveStorageEquipList5(const unsigned char* packet);
void ReceiveStorageNormalList(const unsigned char* packet);
void ReceiveStorageNormalList2(const unsigned char* packet);
void ReceiveItemUpgrade(std::uint16_t index, std::uint16_t refine, ItemCardSlots cards, ItemSlotOptions options);
void ReceiveFeedConfig(unsigned char state, unsigned char option);
void ReceiveFeedConfig2(unsigned char state, unsigned char option, bool petAutoFeed);
void ReceiveFeedConfig3(unsigned char state, unsigned char option, bool petAutoFeed, bool homunculusAutoFeed);
void ReceiveFeedConfig4(unsigned char state, unsigned char option, bool petAutoFeed, bool homunculusAutoFeed, int value);
void ReceiveParChange(unsigned char* packet);
void ReceiveLongParChange(const unsigned char* packet);
void ReceiveNotifyEffect(const unsigned char* packet);
void ReceiveTypedItemList(const unsigned char* packet);
void ReceiveVendingItemList(int aid, int storeId, char own, int count, std::uint32_t duration, const unsigned char* data, int value, int unused);
void ReceiveVendingItemList2(int aid, int storeId, char own, int count, std::uint32_t duration, const unsigned char* data);
void ReceiveVendingItemSoldNow(const unsigned char* data);
void ReceiveNotifyGroundSkill(const unsigned char* packet);
void ReceiveAcceptEnter(const unsigned char* data);
void ApplyStatusChange(
std::uint32_t aid, unsigned char on, int type, std::uint32_t remaining, int value1, int value2, int value3, unsigned char flag, std::uint32_t total
);
void ReceiveObjectsDisappear(int count, const std::uint32_t* aids);
void ReceiveWindow107List(const unsigned char* packet);
void ReceiveActorColorChat(const unsigned char* packet);
void ReceiveWearEquipAck(unsigned char result, std::uint16_t index, std::uint16_t look, int location);
void ReceiveFormattedMessage(const unsigned char* packet);
void ReceiveParaItemResult(unsigned char success, int count, const unsigned char* data);
void ReceiveResultNotice4327(const unsigned char* packet);
void OpenBuyingStoreMake(unsigned char slotCount);
void OpenVendingMake(unsigned char slotCount, int itemCount, const short* items);
void ReceiveAgitNotice(unsigned char agitId, int first, int second);
void ReceiveItemFallEntry(const unsigned char* packet);
void ReceiveFeedOption(const unsigned char* packet);
void ReceiveTakeOffEquipResult(unsigned char result, int location, std::uint16_t identity);
void ReceiveHomunculusChange(const unsigned char* packet);
void ReceiveItemConsumed(const unsigned char* packet);
void ReceivePartyLeaderChange(const unsigned char* packet);
void ReceiveItemSellResult(const unsigned char* packet);
void ReceiveSpecialBroadcast(const unsigned char* data);
void ReceiveQuestHuntUpdate(const unsigned char* data);
void ReceiveQuestHuntUpdate2(const unsigned char* data);
void ReceiveGuildMemberExpelled(const unsigned char* data);
void ReceiveGuildPositionUpdate(const unsigned char* data);
void ReceiveGuildPositionNames(const unsigned char* data);
void ReceiveMapMove(const unsigned char* data);
void ApplyGuildStorageLog(std::uint16_t result, const std::vector<GuildStorageLogItem>& items);
void ReceiveGuildMemberLeft(const unsigned char* data);
std::FILE* OpenRandomOptionSimulatorFile(const std::string& folder, const std::string& itemName);
void ReceiveRandomOptionSimulation(const unsigned char* packet);
void ReceiveBuyingStoreOpenResult(const unsigned char* packet);
void ReceiveExpChange(const unsigned char* packet);
void ReceiveItemObtainNotice(const unsigned char* packet);
void ReceiveTakeOffEquipItemResult(const unsigned char* packet);
void ReceiveBuyingStoreSellResult(const unsigned char* packet);
void ReceivePartyItemPickupNotice(const unsigned char* packet);
void ProcessUiMessage(unsigned char* message);
void ReceiveUiDragMessage(const unsigned char* message);
void PlayItemUseEffect(int itemId, std::uint32_t aid);
void ReceiveAddQuest64(const unsigned char* data);
void ReceiveAddQuest(const unsigned char* data);
void ReceiveBarterMarketItemList(const unsigned char* data);
void ReceiveNotifyBan(const unsigned char* packet);
void ReceiveSkillFailure(const unsigned char* data);
void ReceiveItemPickupAck8(const unsigned char* data);
void ReceiveItemPickupAck9(const unsigned char* data);
void ReceiveActorChat(const unsigned char* data);
void ReceivePartyChat(const unsigned char* data);
void ReceiveEffectNumber(const unsigned char* data);
void ReceiveGuildBanList(const unsigned char* data);
void ReceiveGuildBanList2(const unsigned char* data);
void ReceiveGuildBanList3(const unsigned char* data);
void ReceiveGuildChat(const unsigned char* data);
void ReceiveActorAction(
std::uint32_t sourceAid, std::uint32_t targetAid, std::uint32_t tick, int attackMT, int attackedMT, int damage, std::int16_t count, unsigned char type,
int damage2, unsigned char spDamaged
);
void ReceiveActorDisappear(const unsigned char* data);
void ReceiveGuildInfo2(const unsigned char* data);
void ReceiveGuildInfo3(const unsigned char* data);
void ReceiveGuildInfo4(const unsigned char* data);
void ReceiveGuildNotice(unsigned char* data);
void ReceiveGuildMemberAdd2(const unsigned char* data);
void ReceiveGuildMemberAdd3(const unsigned char* data);
void ReceiveGuildMemberList2(const unsigned char* data);
void ReceiveGuildMemberList3(const unsigned char* data);
void ReceiveGuildRelationList(const unsigned char* data);
void ReceivePartyMemberLeft(const unsigned char* data);
void ReceiveBroadcast(const unsigned char* packet);
void ReceiveRefineBroadcast(const unsigned char* data);
void ReceiveTradeBroadcast(const unsigned char* data);
void ReceiveItemBroadcast(const unsigned char* data);
void ReceiveColorBroadcast(const unsigned char* data);
void ReceiveTaggedBroadcast(const unsigned char* data);
void ReceiveRefineStatusGraded(const char* playerName, int itemId, unsigned char refine, unsigned char grade, bool success);
void ReceiveItemObtainBroadcast(const unsigned char* data, bool package);
void ReceiveRateInfo(const unsigned char* packet);
void ReceiveEquipItemNotice(const unsigned char* data);
void ReceiveEquipItemListFlags(const unsigned char* packet);
void ReceiveParaResultList(const unsigned char* packet);
void ProcessRightButtonDrag();
void ProcessMouseWheel(int requireControl);
void ReceiveEquipItemList34(const unsigned char* packet);
void ReceiveEquipItemList38(const unsigned char* packet);
void ApplyRefiningMaterial(short itemId, unsigned char count, const unsigned char* materials, unsigned char catalystCount);
void ReceiveAddRelatedGuild(const unsigned char* data);
void ReceiveEquipItemResult(const unsigned char* packet);
void ReceiveGuildMemberAdd4(const unsigned char* data);
void ReceiveActorStandEntryNamedOld(const unsigned char* data);
void ReceiveActorStandEntryOld(const unsigned char* data);
void ReceiveActorStandEntryOld2(const unsigned char* data);
void ReceiveActorStandEntryOld3(const unsigned char* data);
void ReceiveActorStandEntryOld0(const unsigned char* data);
void ReceiveActorStateEntryNamedOld(const unsigned char* data);
void ReceiveActorStateEntryOld(const unsigned char* data);
void SpawnStandingPc(
std::uint32_t aid, int job, short cellX, short cellY, unsigned char sex, short unknown_0024, int unknown_0028, int unknown_002C,
short unknown_0030, short unknown_004C, short unknown_0050, short unknown_0054, short unknown_0058, short robe, std::string name
);
void SpawnStandingPc2(
std::uint32_t aid, int job, short cellX, short cellY, unsigned char sex, short unknown_0024, int unknown_0028, int unknown_002C,
short unknown_0030, short unknown_004C, short unknown_0050, short unknown_0054, short unknown_0058, short robe, std::string name, short unknown_0078
);
void SpawnMirrorActor(std::uint32_t aid, std::uint32_t owner, short x, short y);
void ReceiveActorMoveEntryOld(const unsigned char* data);
void ReceiveActorMoveEntryOld2(const unsigned char* data);
void ReceiveActorMoveEntryNamed(const unsigned char* data);
void ReceiveActorMoveEntryOld0(const unsigned char* data);
void ReceiveItem1748List2(const unsigned char* packet);
void ReceiveItem1758StoreList(const unsigned char* packet);
void ReceiveActorStandEntry(const unsigned char* data);
void ReceiveActorStandEntryFont(const unsigned char* data);
void ReceiveActorTypedEntry(const unsigned char* data);
void ReceiveNpcStandEntry(const unsigned char* data);
void ReceiveActorMoveEntry(const unsigned char* data);
void ReceiveActorMoveEntryBody(const unsigned char* data);
void ReceiveActorMoveEntryLegacy(const unsigned char* data);
void SpawnMovingActor(
unsigned char objectType, std::uint32_t aid, std::uint32_t gid, short speed, short bodyState, short healthState, int effectState, short job, short head,
int weapon, int shield, short accessory, std::uint32_t moveStartTime, short accessory2, short accessory3, short headPalette, short bodyPalette,
short headDir, short robe, int guildId, short guildVersion, short honor, int virtue, unsigned char pkMode, unsigned char sex,
const unsigned char* moveData, unsigned char xSize, unsigned char ySize, short level, short font, int maxHp, int hp, unsigned char isBoss,
std::string name, short body
);
void ReceiveActorStandEntryNamed(const unsigned char* data);
void ReceiveActorStandEntryNamedBody(const unsigned char* data);
void ReceiveActorStandEntryLegacy(const unsigned char* data);
void SpawnStandingActor(
unsigned char objectType, std::uint32_t aid, std::uint32_t gid, short speed, short bodyState, short healthState, int effectState, short job, short head,
int weapon, int shield, short accessory, short accessory2, short accessory3, short headPalette, short bodyPalette, short headDir, short robe,
int guildId, short guildVersion, short honor, int virtue, unsigned char pkMode, unsigned char sex, const unsigned char* posDir, unsigned char xSize,
unsigned char ySize, short level, short font, int maxHp, int hp, unsigned char isBoss, std::string name, short body
);
void ReceiveActorStateEntryNamed(const unsigned char* data);
void ReceiveActorStateEntryNamedBody(const unsigned char* data);
void ReceiveActorStateEntryLegacy(const unsigned char* data);
void SpawnStateActor(
unsigned char objectType, std::uint32_t aid, std::uint32_t gid, short speed, short bodyState, short healthState, int effectState, short job, short head,
int weapon, int shield, short accessory, short accessory2, short accessory3, short headPalette, short bodyPalette, short headDir, short robe,
int guildId, short guildVersion, short honor, int virtue, unsigned char pkMode, unsigned char sex, const unsigned char* posDir, unsigned char xSize,
unsigned char ySize, unsigned char state, short level, short font, int maxHp, int hp, unsigned char isBoss, std::string name, short body
);
};
void LaunchRollingCutterEffect(CGameActor* actor);
void LaunchSkillCastEffect(CGameMode* mode, CGameActor* source, CGameActor* target, std::uint32_t targetAid, std::uint16_t skillId, short x, short y, int delay);
void LaunchSkillActorEffect(CGameActor* actor, short x, short y, std::uint16_t skillId, int delay, int effectId);
void __stdcall sub_CDBC30(const vector3d* position, int actorId, float scale, int job);
void __stdcall sub_D08670(int field14, int itemId, int quantity, int field8, int fieldC, int field10);
void DecodeSrcDst(const unsigned char* packed, int* srcX, int* srcY, int* dstX, int* dstY, int* subX, int* subY);
#if defined(_WIN32) && !defined(_WIN64)
static_assert(offsetof(CGameMode, mapName) == 0x68);
static_assert(offsetof(CGameMode, unknown_0194) == 0x194);
static_assert(offsetof(CGameMode, unknown_019C) == 0x19C);
static_assert(offsetof(CGameMode, unknown_01A4) == 0x1A4);
static_assert(offsetof(CGameMode, unknown_01AC) == 0x1AC);
static_assert(offsetof(CGameMode, unknown_0118) == 0x118);
static_assert(offsetof(CGameMode, unknown_0084) == 0x84);
static_assert(offsetof(CGameMode, scene) == 0xCC);
static_assert(offsetof(CGameMode, broadcastBalloon) == 0x61C);
static_assert(offsetof(CGameMode, camera) == 0xD0);
static_assert(offsetof(CGameMode, nameCard) == 0x160);
static_assert(offsetof(CGameMode, unknown_01BC) == 0x1BC);
static_assert(offsetof(CGameMode, unknown_01C4) == 0x1C4);
static_assert(offsetof(CGameMode, actorMenuIds) == 0x1CC);
static_assert(offsetof(CGameMode, m_skillUnitIds) == 0x1D8);
static_assert(offsetof(CGameMode, unknown_00E4) == 0xE4);
static_assert(offsetof(CGameMode, loopSounds) == 0x1E4);
static_assert(offsetof(CGameMode, minimapMarkers) == 0x1F0);
static_assert(offsetof(CGameMode, unknown_0294) == 0x294);
static_assert(offsetof(CGameMode, drag) == 0x308);
static_assert(offsetof(CGameMode, unknown_024C) == 0x24C);
static_assert(offsetof(CGameMode, unknown_02DC) == 0x2DC);
static_assert(offsetof(CGameMode, unknown_05D0) == 0x5D0);
static_assert(offsetof(CGameMode, unknown_0604) == 0x604);
static_assert(offsetof(CGameMode, unknown_0628) == 0x628);
static_assert(offsetof(CGameMode, unknown_064C) == 0x64C);
static_assert(offsetof(CGameMode, unknown_066C) == 0x66C);
static_assert(sizeof(CGameMode) == 0x670);
#endif
extern char g_pendingWhisperCount;
extern int g_whisperRecord;
extern int g_timeAttackStart;
extern UIWindow* g_saleOpenWindow;
void sub_CCFF10();
extern int g_localMapMove;
extern unsigned char g_gameModePacketBuffer[0x10000];
extern int g_unknown173A5BC;
extern int g_unknown_01738268;
extern int g_unknown_0173826C;
extern int g_unknown_01738270;
void __stdcall OpenWordDisplay(CGameActor* actor);
#endif