#pragma once #include #include #include "core/Core.hpp" #include "Chunking.hpp" #define ACTIVE_MISSION_COUNT 6 #define PC_MAXHEALTH(level) (925 + 75 * (level)) struct Player { int accountId; int accountLevel; // permission level (see CN_ACCOUNT_LEVEL enums) int64_t SerialKey; int32_t iID; uint64_t FEKey; int level; int HP; int slot; // player slot, not nano slot int16_t mentor; int32_t money; int32_t fusionmatter; int32_t batteryW; int32_t batteryN; sPCStyle PCStyle; sPCStyle2 PCStyle2; sNano Nanos[NANO_COUNT]; // acquired nanos int equippedNanos[3]; int activeNano; // active nano (index into Nanos) int8_t iPCState; int32_t iWarpLocationFlag; int64_t aSkywayLocationFlag[2]; int32_t iConditionBitFlag; int32_t iSelfConditionBitFlag; int8_t iSpecialState; int x, y, z, angle; int lastX, lastY, lastZ, lastAngle; int recallX, recallY, recallZ, recallInstance; // also Lair entrances uint64_t instanceID; sItemBase Equip[AEQUIP_COUNT]; sItemBase Inven[AINVEN_COUNT]; sItemBase Bank[ABANK_COUNT]; sItemTrade Trade[12]; int32_t moneyInTrade; bool isTrading; bool isTradeConfirm; bool inCombat; bool onMonkey; int nanoDrainRate; int healCooldown; int pointDamage; int groupDamage; int fireRate; int defense; int64_t aQuestFlag[16]; int tasks[ACTIVE_MISSION_COUNT]; int RemainingNPCCount[ACTIVE_MISSION_COUNT][3]; sItemBase QInven[AQINVEN_COUNT]; int32_t CurrentMissionID; sTimeLimitItemDeleteInfo2CL toRemoveVehicle; int32_t iIDGroup; int groupCnt; int32_t groupIDs[4]; int32_t iGroupConditionBitFlag; bool notify; bool hidden; bool unwarpable; bool buddiesSynced; int64_t buddyIDs[50]; bool isBuddyBlocked[50]; uint64_t iFirstUseFlag[2]; ChunkPos chunkPos; std::set *viewableChunks; time_t lastHeartbeat; int suspicionRating; time_t lastShot; std::vector *buyback; };