1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-27 14:57:44 +00:00
sapphire/src/common/Common.h

1534 lines
34 KiB
C
Raw Normal View History

#pragma once
2017-08-08 13:53:47 +02:00
2017-08-09 00:36:26 +02:00
#include <cstdint>
2017-08-08 13:53:47 +02:00
#include <vector>
#include <string>
2017-08-08 13:53:47 +02:00
#include "CommonGen.h"
2019-02-06 11:12:29 +01:00
#include "Vector3.h"
2017-08-08 13:53:47 +02:00
// +---------------------------------------------------------------------------
// The following enumerations are structures to require their type be included.
// They are also defined within the Sapphire::Common namespace to avoid collisions.
2017-08-08 13:53:47 +02:00
// +---------------------------------------------------------------------------
namespace Sapphire::Common
2018-10-28 21:53:21 +01:00
{
2018-10-28 21:53:21 +01:00
// 99 is the last spawn id that seems to spawn any actor
const uint8_t MAX_DISPLAYED_ACTORS = 99;
const uint8_t MAX_DISPLAYED_EOBJS = 40;
2018-10-28 21:53:21 +01:00
const int32_t INVALID_GAME_OBJECT_ID = 0xE0000000;
const uint64_t INVALID_GAME_OBJECT_ID64 = 0xE0000000;
const uint16_t MAX_PLAYER_LEVEL = 60;
const uint8_t CURRENT_EXPANSION_ID = 3;
const uint8_t CLASSJOB_TOTAL = 23;
const uint8_t CLASSJOB_SLOTS = 23;
const uint8_t TOWN_COUNT = 6;
/// Version value used in lobby encryption
const uint16_t FFXIV_ENC_VERSION = 3000;
/// Default service ID name
const std::string SERVICE_ACCOUNT_DEFAULT_NAME = "FINAL FANTASY XIV";
/// Lobby char list settings
const uint16_t MAX_CREATE_CHARACTER = 8;
const uint16_t MAX_CHARACTER_LIST = 8;
/*!
* @brief The maximum length (in ms) of a combo before it is canceled/voided.
*
* The client has a combo timer of about 12 seconds, with a 0.5 second grace on top for latency considerations.
*/
const uint16_t MAX_COMBO_LENGTH = 12500;
struct FFXIVARR_POSITION3_U16
{
uint16_t x;
uint16_t y;
uint16_t z;
};
2018-11-10 19:00:41 +01:00
struct ActiveLand
{
uint8_t ward;
uint8_t plot;
};
enum INSTANCE_CONTENT_VOTE_TYPE : uint32_t
{
INSTANCE_CONTENT_VOTE_TYPE_KICK = 0x0,
INSTANCE_CONTENT_VOTE_TYPE_GIVEUP = 0x1,
INSTANCE_CONTENT_VOTE_TYPE_TREASURE = 0x2,
INSTANCE_CONTENT_VOTE_TYPE_MAX = 0x3,
};
enum ITEM_OPERATION_TYPE : uint8_t
{
ITEM_OPERATION_TYPE_NONE = 0x0,
ITEM_OPERATION_TYPE_CREATESTORAGE = 0x1,
ITEM_OPERATION_TYPE_DELETESTORAGE = 0x2,
ITEM_OPERATION_TYPE_COMPACTSTORAGE = 0x3,
ITEM_OPERATION_TYPE_RESYNCSTORAGE = 0x4,
ITEM_OPERATION_TYPE_CREATEITEM = 0x5,
ITEM_OPERATION_TYPE_UPDATEITEM = 0x6,
ITEM_OPERATION_TYPE_DELETEITEM = 0x7,
ITEM_OPERATION_TYPE_MOVEITEM = 0x8,
ITEM_OPERATION_TYPE_SWAPITEM = 0x9,
ITEM_OPERATION_TYPE_SPLITITEM = 0xA,
ITEM_OPERATION_TYPE_SPLITTOMERGE = 0xB,
ITEM_OPERATION_TYPE_MERGEITEM = 0xC,
ITEM_OPERATION_TYPE_REPAIRITEM = 0xD,
ITEM_OPERATION_TYPE_NPC_REPAIRITEM = 0xE,
ITEM_OPERATION_TYPE_REPAIRMANNEQUIN = 0xF,
ITEM_OPERATION_TYPE_NPC_REPAIRMANNEQUIN = 0x10,
ITEM_OPERATION_TYPE_REPAIRINVENTORY = 0x11,
ITEM_OPERATION_TYPE_NPC_REPAIRINVENTORY = 0x12,
ITEM_OPERATION_TYPE_EQUIPMANNEQUIN = 0x13,
ITEM_OPERATION_TYPE_BRINGOUTLEGACYITEM = 0x14,
ITEM_OPERATION_TYPE_GIVETORETAINER = 0x15,
ITEM_OPERATION_TYPE_TAKEFROMRETAINER = 0x16,
ITEM_OPERATION_TYPE_SETRETAINERGIL = 0x17,
ITEM_OPERATION_TYPE_TRADECOMMAND = 0x18,
ITEM_OPERATION_TYPE_MOVETRADE = 0x19,
ITEM_OPERATION_TYPE_SETGILTRADE = 0x1A,
ITEM_OPERATION_TYPE_SETTRADESTACK = 0x1B,
ITEM_OPERATION_TYPE_UPDATEPARTNERBOX = 0x1C,
ITEM_OPERATION_TYPE_CREATEMATERIA = 0x1D,
ITEM_OPERATION_TYPE_ATTACHMATERIA = 0x1E,
ITEM_OPERATION_TYPE_REMOVEMATERIA = 0x1F,
ITEM_OPERATION_TYPE_ASKATTACHMATERIA = 0x20,
ITEM_OPERATION_TYPE_DEBUG_ADDITEM = 0x21,
ITEM_OPERATION_TYPE_DEBUG_SETITEM = 0x22,
ITEM_OPERATION_TYPE_DEBUG_SETSTACK = 0x23,
ITEM_OPERATION_TYPE_DEBUG_SETREFINE = 0x24,
ITEM_OPERATION_TYPE_DEBUG_SETDURABILITY = 0x25,
ITEM_OPERATION_TYPE_ALIASITEM = 0x26,
ITEM_OPERATION_TYPE_UNALIASITEM = 0x27,
ITEM_OPERATION_TYPE_MOVEALIAS = 0x28,
ITEM_OPERATION_TYPE_SWAPALIAS = 0x29,
ITEM_OPERATION_TYPE_TAKEFROMFCCHEST = 0x2A,
ITEM_OPERATION_TYPE_FATEREWARD = 0x2B,
ITEM_OPERATION_TYPE_QUESTREWARD = 0x2C,
ITEM_OPERATION_TYPE_LEVEREWARD = 0x2D,
ITEM_OPERATION_TYPE_SPECIALSHOPTRADE = 0x2E,
ITEM_OPERATION_TYPE_CRAFTLEVETRADE = 0x2F,
ITEM_OPERATION_TYPE_QUESTTRADE = 0x30,
ITEM_OPERATION_TYPE_GATHERING = 0x31,
ITEM_OPERATION_TYPE_CRAFT = 0x32,
ITEM_OPERATION_TYPE_FISHING = 0x33,
ITEM_OPERATION_TYPE_GCSUPPLY = 0x34,
ITEM_OPERATION_TYPE_CABINET_TAKE = 0x35,
ITEM_OPERATION_TYPE_CABINET_GIVE = 0x36,
ITEM_OPERATION_TYPE_SHOPBUYBACK = 0x37,
ITEM_OPERATION_TYPE_TELEPO = 0x38,
ITEM_OPERATION_TYPE_VENTURE_START = 0x39,
ITEM_OPERATION_TYPE_VENTURE_END = 0x3A,
ITEM_OPERATION_TYPE_GARDENING_HARVEST = 0x3B,
ITEM_OPERATION_TYPE_SALVAGE_RESULT = 0x3C,
ITEM_OPERATION_TYPE_TREASURE_PUBLIC = 0x3D,
ITEM_OPERATION_TYPE_TREASURE_GUILD_LEAD = 0x3E,
ITEM_OPERATION_TYPE_TREASURE_RAID = 0x3F,
ITEM_OPERATION_TYPE_TREASURE_MONSTER = 0x40,
ITEM_OPERATION_TYPE_TREASURE_HUNT = 0x41,
ITEM_OPERATION_TYPE_TREASURE_DEBUG_DROP_TABLE = 0x42,
ITEM_OPERATION_TYPE_TREASURE_DEBUG_DROP_PACK = 0x43,
ITEM_OPERATION_TYPE_TREASURE_DEBUG_DROP_TREASURE = 0x44,
ITEM_OPERATION_TYPE_TREASURE_DEBUG_DROP_PACK_TREASURE = 0x45,
ITEM_OPERATION_TYPE_RANDOM_ITEM = 0x46,
ITEM_OPERATION_TYPE_SPECIALSHOPBUYITEM = 0x47,
ITEM_OPERATION_TYPE_EPICWEAPON020TRADE = 0x48,
ITEM_OPERATION_TYPE_EPICWEAPON030TREASUREMAP = 0x49,
ITEM_OPERATION_TYPE_MATERIA_SLOT = 0x4A,
ITEM_OPERATION_TYPE_ACHIEVEMENT_REWARD = 0x4B,
ITEM_OPERATION_TYPE_NUM = 0x4C,
};
enum ITEM_OPERATION_ERROR_TYPE : uint8_t
{
ITEM_OPERATION_ERROR_TYPE_NONE = 0x0,
ITEM_OPERATION_ERROR_TYPE_TERRITORYNOTFOUND = 0x1,
ITEM_OPERATION_ERROR_TYPE_ACTORNOTFOUND = 0x2,
ITEM_OPERATION_ERROR_TYPE_STORAGENOTFOUND = 0x3,
ITEM_OPERATION_ERROR_TYPE_ITEMNOTFOUND = 0x4,
ITEM_OPERATION_ERROR_TYPE_COMPACTIONFAILED = 0x5,
ITEM_OPERATION_ERROR_TYPE_LOADINGDATA = 0x6,
ITEM_OPERATION_ERROR_TYPE_INVALIDSTACK = 0x7,
ITEM_OPERATION_ERROR_TYPE_INVALIDGIL = 0x8,
ITEM_OPERATION_ERROR_TYPE_CREATEFAILED = 0x9,
ITEM_OPERATION_ERROR_TYPE_MOVEFAILED = 0xA,
ITEM_OPERATION_ERROR_TYPE_SWAPFAILED = 0xB,
ITEM_OPERATION_ERROR_TYPE_MERGEFAILED = 0xC,
ITEM_OPERATION_ERROR_TYPE_SPLITFAILED = 0xD,
ITEM_OPERATION_ERROR_TYPE_DISCARDFAILED = 0xE,
ITEM_OPERATION_ERROR_TYPE_EQUIPFAILED = 0xF,
ITEM_OPERATION_ERROR_TYPE_NO_WEAPON = 0x10,
ITEM_OPERATION_ERROR_TYPE_NO_UNDERSHIRT = 0x11,
ITEM_OPERATION_ERROR_TYPE_NO_UNDERGARMENT = 0x12,
ITEM_OPERATION_ERROR_TYPE_TRADELOCK = 0x13,
ITEM_OPERATION_ERROR_TYPE_TRADEFAILED = 0x14,
ITEM_OPERATION_ERROR_TYPE_SUCCESSMOVETRADE = 0x15,
ITEM_OPERATION_ERROR_TYPE_PARTNERBUSY = 0x16,
ITEM_OPERATION_ERROR_TYPE_TRADECANCELED = 0x17,
ITEM_OPERATION_ERROR_TYPE_STORAGEFULL = 0x18,
ITEM_OPERATION_ERROR_TYPE_GILFULL = 0x19,
ITEM_OPERATION_ERROR_TYPE_CRYSTALFULL = 0x1A,
ITEM_OPERATION_ERROR_TYPE_UNIQUEITEM = 0x1B,
ITEM_OPERATION_ERROR_TYPE_EXTYPE = 0x1C,
ITEM_OPERATION_ERROR_TYPE_NEED_DURABILITY = 0x1D,
ITEM_OPERATION_ERROR_TYPE_HAS_VANITY = 0x1E,
ITEM_OPERATION_ERROR_TYPE_NOTMATERIALIZABLE = 0x1F,
ITEM_OPERATION_ERROR_TYPE_MELDFAILED = 0x20,
ITEM_OPERATION_ERROR_TYPE_INVALIDFONDNESS = 0x21,
ITEM_OPERATION_ERROR_TYPE_REPAIRFAILED = 0x22,
ITEM_OPERATION_ERROR_TYPE_NEED_REPAIR_KIT_I = 0x23,
ITEM_OPERATION_ERROR_TYPE_NEED_REPAIR_KIT_II = 0x24,
ITEM_OPERATION_ERROR_TYPE_NEED_REPAIR_KIT_III = 0x25,
ITEM_OPERATION_ERROR_TYPE_NEED_REPAIR_KIT_IV = 0x26,
ITEM_OPERATION_ERROR_TYPE_NEED_REPAIR_KIT_V = 0x27,
ITEM_OPERATION_ERROR_TYPE_OPERATIONTOOMUCH = 0x28,
ITEM_OPERATION_ERROR_TYPE_ADDICTION_LEVEL_1 = 0x29,
ITEM_OPERATION_ERROR_TYPE_ADDICTION_LEVEL_2 = 0x2A,
ITEM_OPERATION_ERROR_TYPE_NUM = 0x2B,
};
enum GmRank : uint8_t
{
GM_RANK_1 = 1,
GM_RANK_EVENT_JUNIOR = 3,
GM_RANK_EVENT_SENIOR = 4,
GM_RANK_SUPPORT = 5,
GM_RANK_SENIOR = 7,
GM_RANK_DEBUG = 90
2018-10-28 21:53:21 +01:00
};
2018-10-28 21:53:21 +01:00
enum ClientLanguage : uint8_t
{
Japanese = 1,
English = 2,
German = 4,
French = 8
};
enum ChatFromType : uint8_t
{
GmTellMsg = 0x1,
};
enum ChatChannelType : uint16_t
{
CWLinkshellChat = 0x0,
PartyChat = 0x1,
LinkshellChat = 0x2,
FreeCompanyChat = 0x3,
NoviceNetworkChat = 0x4
};
2019-04-15 23:45:58 +02:00
enum BNpcType : uint8_t
{
Friendly = 0,
Enemy = 4,
};
enum ACTOR_KIND : int32_t
{
ACTOR_KIND_PC = 0x0,
ACTOR_KIND_NPC = 0x1,
ACTOR_KIND_RETAINER = 0x2,
ACTOR_KIND_BATTLE = 0x3,
ACTOR_KIND_BATTLE_FRIEND = 0x4,
ACTOR_KIND_OBJECT = 0x5,
ACTOR_KIND_TREASURE = 0x6,
ACTOR_KIND_GATHERING = 0x7,
ACTOR_KIND_MAX = 0x8,
};
enum OBJECT_TYPE : int32_t
{
OBJECT_TYPE_CAMERA = 0x0,
OBJECT_TYPE_CAMERA_MAYA = 0x1,
OBJECT_TYPE_LIGHT = 0x2,
OBJECT_TYPE_PLAYER = 0x3,
OBJECT_TYPE_WEAPON = 0x4,
OBJECT_TYPE_MONSTER = 0x5,
OBJECT_TYPE_TERRAIN = 0x6,
OBJECT_TYPE_BG_OBJECT = 0x7,
OBJECT_TYPE_ENV_LOCATION = 0x8,
OBJECT_TYPE_ENV_SPACE = 0x9,
OBJECT_TYPE_VFX_OBJECT = 0xA,
OBJECT_TYPE_COUNT_MAX = 0xB,
};
enum WARP_TYPE : uint8_t
{
WARP_TYPE_NON = 0x0,
WARP_TYPE_NORMAL = 0x1,
WARP_TYPE_NORMAL_POS = 0x2,
WARP_TYPE_EXIT_RANGE = 0x3,
WARP_TYPE_TELEPO = 0x4,
WARP_TYPE_REISE = 0x5,
WARP_TYPE_ = 0x6,
WARP_TYPE_DESION = 0x7,
WARP_TYPE_HOME_POINT = 0x8,
WARP_TYPE_RENTAL_CHOCOBO = 0x9,
WARP_TYPE_CHOCOBO_TAXI = 0xA,
WARP_TYPE_INSTANCE_CONTENT = 0xB,
WARP_TYPE_REJECT = 0xC,
WARP_TYPE_CONTENT_END_RETURN = 0xD,
WARP_TYPE_TOWN_TRANSLATE = 0xE,
WARP_TYPE_GM = 0xF,
WARP_TYPE_LOGIN = 0x10,
WARP_TYPE_LAYER_SET = 0x11,
WARP_TYPE_EMOTE = 0x12,
WARP_TYPE_HOUSING_TELEPO = 0x13,
WARP_TYPE_DEBUG = 0x14,
};
2018-10-28 21:53:21 +01:00
enum ObjKind : uint8_t
{
None = 0x00,
Player = 0x01,
BattleNpc = 0x02,
EventNpc = 0x03,
Treasure = 0x04,
Aetheryte = 0x05,
GatheringPoint = 0x06,
EventObj = 0x07,
MountType = 0x08,
Companion = 0x09, // this probably actually means minion
Retainer = 0x0A,
Area = 0x0B,
Housing = 0x0C,
Cutscene = 0x0D,
CardStand = 0x0E,
};
2018-10-28 21:53:21 +01:00
enum Stance : uint8_t
{
Passive = 0,
Active = 1,
};
2018-10-28 21:53:21 +01:00
enum class DisplayFlags : uint16_t
{
ActiveStance = 0x001,
Invisible = 0x020,
HideHead = 0x040,
HideWeapon = 0x080,
Faded = 0x100,
Visor = 0x800,
};
2018-10-28 21:53:21 +01:00
enum struct ActorStatus : uint8_t
{
Idle = 0x01,
Dead = 0x02,
Sitting = 0x03,
Mounted = 0x04,
Crafting = 0x05,
Gathering = 0x06,
Melding = 0x07,
SMachine = 0x08,
Carry = 0x09,
EmoteMode = 0x0B
};
enum GearSetSlot : uint8_t
{
MainHand = 0,
OffHand = 1,
Head = 2,
Body = 3,
Hands = 4,
Waist = 5,
Legs = 6,
Feet = 7,
Ear = 8,
Neck = 9,
Wrist = 10,
Ring1 = 11,
Ring2 = 12,
SoulCrystal = 13,
};
2018-10-28 21:53:21 +01:00
enum GearModelSlot : int8_t
{
ModelInvalid = -1,
ModelHead = 0,
ModelBody = 1,
ModelHands = 2,
ModelLegs = 3,
ModelFeet = 4,
ModelEar = 5,
ModelNeck = 6,
ModelWrist = 7,
ModelRing1 = 8,
ModelRing2 = 9
};
enum EquipSlotCategory : uint8_t
{
Unequippable = 0,
// main slots
CharaMainHand = 1,
CharaOffHand = 2,
CharaHead = 3,
CharaBody = 4,
CharaHands = 5,
CharaWaist = 6,
CharaLegs = 7,
CharaFeet = 8,
CharaEars = 9,
CharaNeck = 10,
CharaWrist = 11,
CharaRing = 12,
CharaSoulCrystal = 17,
// specials
/*! Cannot equip gear to offhand slot */
MainTwoHandedWeapon = 13,
/*! Can be equipped in either main or offhand slot */
MainOrOffHand = 14, // unused
/*! Cannot equip gear to head */
BodyDisallowHead = 15,
/*! Cannot equip gear to hands, legs and feet slots */
BodyDisallowHandsLegsFeet = 16,
/*! Cannot equip gear to feet slot */
LegsDisallowFeet = 18,
/*! Cannot equp gear to head, hands, legs, feet slots */
BodyDisallowAll = 19,
/*! Cannot equip gear to hands slot */
BodyDisallowHands = 20,
/*! Cannot equip gear to legs & feet slots */
BodyDisallowLegsFeet = 21,
2018-10-28 21:53:21 +01:00
};
2018-10-28 21:53:21 +01:00
enum InventoryType : uint16_t
{
Bag0 = 0,
Bag1 = 1,
Bag2 = 2,
Bag3 = 3,
GearSet0 = 1000,
GearSet1 = 1001,
Currency = 2000,
Crystal = 2001,
//UNKNOWN_0 = 2003,
KeyItem = 2004,
2018-10-28 21:53:21 +01:00
HandIn = 2005,
DamagedGear = 2007,
//UNKNOWN_1 = 2008,
ArmoryOff = 3200,
ArmoryHead = 3201,
ArmoryBody = 3202,
ArmoryHand = 3203,
ArmoryWaist = 3204,
ArmoryLegs = 3205,
ArmoryFeet = 3206,
ArmoryNeck = 3207,
ArmoryEar = 3208,
2018-10-28 21:53:21 +01:00
ArmoryWrist = 3209,
ArmoryRing = 3300,
ArmorySoulCrystal = 3400,
ArmoryMain = 3500,
RetainerBag0 = 10000,
RetainerBag1 = 10001,
RetainerBag2 = 10002,
RetainerBag3 = 10003,
RetainerBag4 = 10004,
RetainerBag5 = 10005,
RetainerBag6 = 10006,
RetainerEquippedGear = 11000,
RetainerGil = 12000,
RetainerCrystal = 12001,
RetainerMarket = 12002,
FreeCompanyBag0 = 20000,
FreeCompanyBag1 = 20001,
FreeCompanyBag2 = 20002,
FreeCompanyGil = 22000,
2018-11-01 00:18:19 +01:00
FreeCompanyCrystal = 22001,
2018-12-04 21:47:27 +11:00
// housing interior containers
HousingInteriorAppearance = 25002,
// 50 in each container max, 400 slots max
HousingInteriorPlacedItems1 = 25003,
HousingInteriorPlacedItems2 = 25004,
HousingInteriorPlacedItems3 = 25005,
HousingInteriorPlacedItems4 = 25006,
HousingInteriorPlacedItems5 = 25007,
HousingInteriorPlacedItems6 = 25008,
HousingInteriorPlacedItems7 = 25009,
HousingInteriorPlacedItems8 = 25010,
2018-12-20 23:38:39 +11:00
// 50 max per container, 400 slots max
// slot limit increased 'temporarily' for relocation for all estates
// see: https://na.finalfantasyxiv.com/lodestone/topics/detail/d781e0d538428aef93b8bed4b50dd62c3c50fc74
HousingInteriorStoreroom1 = 27001,
HousingInteriorStoreroom2 = 27002,
HousingInteriorStoreroom3 = 27003,
HousingInteriorStoreroom4 = 27004,
HousingInteriorStoreroom5 = 27005,
HousingInteriorStoreroom6 = 27006,
HousingInteriorStoreroom7 = 27007,
HousingInteriorStoreroom8 = 27008,
// housing exterior containers
HousingExteriorAppearance = 25000,
HousingExteriorPlacedItems = 25001,
HousingExteriorStoreroom = 27000,
2018-10-28 21:53:21 +01:00
};
2019-03-26 00:04:27 +01:00
struct HuntingLogEntry
{
uint8_t rank;
uint8_t entries[10][4];
};
enum class UnlockEntry : uint16_t
{
Return = 1,
Teleport = 4,
GearSets = 6,
HuntingLog = 21,
};
2018-10-28 21:53:21 +01:00
enum ContainerType : uint16_t
{
2018-10-28 21:53:21 +01:00
Unknown = 0,
Bag = 1,
GearSet = 2,
CurrencyCrystal = 3,
Armory = 4
};
2018-10-28 21:53:21 +01:00
enum CurrencyType : uint8_t
{
2018-10-28 21:53:21 +01:00
Gil = 0x01,
StormSeal = 0x02,
SerpentSeal = 0x03,
FlameSeal = 0x04,
TomestonePhilo = 0x05,
TomestoneMytho = 0x06,
WolfMark = 0x07,
TomestoneSold = 0x08,
AlliedSeal = 0x09,
TomestonePoet = 0x0A,
Mgp = 0x0B,
TomestoneLaw = 0x0C,
TomestoneEso = 0x0D,
TomestoneLore = 0x0E
};
enum CrystalType : uint8_t
{
FireShard = 0x01,
IceShard = 0x02,
WindShard = 0x03,
EarthShard = 0x04,
LightningShard = 0x05,
WaterShard = 0x06,
FireCrystal = 0x07,
IceCrystal = 0x08,
WindCrystal = 0x09,
EarthCrystal = 0x0A,
LightningCrystal = 0x0B,
WaterCrystal = 0x0C,
FireCluster = 0x0D,
IceCluster = 0x0E,
WindCluster = 0x0F,
EarthCluster = 0x10,
LightningCluster = 0x11,
WaterCluster = 0x12
};
enum struct ZoneingType : uint8_t
{
None = 1,
Teleport = 2,
Return = 3,
ReturnDead = 4,
FadeIn = 5,
};
enum struct ResurrectType : uint8_t
{
None = 0,
RaiseSpell = 5,
Return = 8
};
enum Gender : uint8_t
{
Male = 0,
Female = 1,
};
enum struct GCRank : uint8_t
{
None = 0,
PrivateThirdClass = 1,
PrivateSecondClass = 2,
PrivateFirstClass = 3,
Corporal = 4,
SergeantThirdClass = 5,
SergeantSecondClass = 6,
SergeantFirstClass = 7,
ChiefSergeant = 8,
SecondLieutenant = 9,
FirstLieutenant = 10,
Captain = 11,
SecondCommander = 12,
FirstCommander = 13,
HighCommander = 14,
RearMarshal = 15,
ViceMarshal = 16,
Marshal = 17,
GrandMarshal = 18,
Champion = 19,
};
/**
* Structural representation of the packet sent by the server
* Send the entire StatusEffect list
*/
struct StatusWork
2018-10-28 21:53:21 +01:00
{
uint16_t Id;
int16_t SystemParam;
float Time;
uint32_t Source;
2018-10-28 21:53:21 +01:00
};
2019-03-08 11:05:32 +01:00
enum CharaLook : uint8_t
2018-10-28 21:53:21 +01:00
{
Race = 0x00,
Gender = 0x01,
Tribe = 0x04,
Height = 0x03,
ModelType = 0x02, // Au Ra: changes horns/tails, everything else: seems to drastically change appearance (flip between two sets, odd/even numbers). sometimes retains hairstyle and other features
FaceType = 0x05,
HairStyle = 0x06,
HasHighlights = 0x07, // negative to enable, positive to disable
SkinColor = 0x08,
EyeColor = 0x09, // color of character's right eye
HairColor = 0x0A, // main color
HairColor2 = 0x0B, // highlights color
FaceFeatures = 0x0C, // seems to be a toggle, (-odd and +even for large face covering), opposite for small
FaceFeaturesColor = 0x0D,
Eyebrows = 0x0E,
EyeColor2 = 0x0F, // color of character's left eye
EyeShape = 0x10,
NoseShape = 0x11,
JawShape = 0x12,
LipStyle = 0x13, // lip colour depth and shape (negative values around -120 darker/more noticeable, positive no colour)
LipColor = 0x14,
RaceFeatureSize = 0x15,
RaceFeatureType = 0x16, // negative or out of range tail shapes for race result in no tail (e.g. Au Ra has max of 4 tail shapes), incorrect value can crash client
BustSize = 0x17, // char creator allows up to max of 100, i set to 127 cause who wouldnt but no visible difference
Facepaint = 0x18,
FacepaintColor = 0x19,
};
2019-03-08 11:05:32 +01:00
enum MoveType : uint8_t
2018-10-28 21:53:21 +01:00
{
Running = 0x00,
Walking = 0x02,
Strafing = 0x04,
Jumping = 0x10,
};
2019-03-08 11:05:32 +01:00
enum MoveState : uint8_t
2018-10-28 21:53:21 +01:00
{
No = 0x00,
LeaveCollision = 0x01,
EnterCollision = 0x02,
StartFalling = 0x04,
2018-10-28 21:53:21 +01:00
};
2019-03-08 11:05:32 +01:00
enum MoveSpeed : uint8_t
2019-02-06 08:49:57 +01:00
{
Walk = 24,
Run = 60,
};
struct QuestData
2018-10-28 21:53:21 +01:00
{
QuestData()
{
2018-10-28 21:53:21 +01:00
c.questId = 0;
c.sequence = 0;
c.flags = 0;
c.UI8A = 0;
c.UI8B = 0;
c.UI8C = 0;
c.UI8D = 0;
c.UI8E = 0;
c.UI8F = 0;
}
union
{
/*!
* default SE struct
*/
struct
{
uint16_t questId;
uint8_t sequence;
uint8_t flags;
uint8_t vars[6];
} packed;
2018-10-28 21:53:21 +01:00
struct
{
uint16_t questId;
uint8_t sequence;
uint8_t flags;
uint8_t BitFlag48;
uint8_t BitFlag40;
uint8_t BitFlag32;
uint8_t BitFlag24;
uint8_t BitFlag16;
uint8_t BitFlag8;
} a;
struct
{
uint16_t questId;
uint8_t sequence;
uint8_t flags;
uint8_t UI8AL : 4;
uint8_t UI8AH : 4;
uint8_t UI8BL : 4;
uint8_t UI8BH : 4;
uint8_t UI8CL : 4;
uint8_t UI8CH : 4;
uint8_t UI8DL : 4;
uint8_t UI8DH : 4;
uint8_t UI8EL : 4;
uint8_t UI8EH : 4;
uint8_t UI8FL : 4;
uint8_t UI8FH : 4;
} b;
struct
{
uint16_t questId;
uint8_t sequence;
uint8_t flags;
uint8_t UI8A;
uint8_t UI8B;
uint8_t UI8C;
uint8_t UI8D;
uint8_t UI8E;
uint8_t UI8F;
} c;
//struct
//{
// uint16_t questId;
// uint8_t sequence;
// uint8_t flags;
// uint8_t padding;
// uint16_t UI16A;
// uint16_t UI16B;
// uint16_t UI16C;
// uint8_t padding1;
//} d;
//struct
//{
// uint8_t padding;
// uint32_t UI32A;
// uint16_t padding2;
//} e;
};
2018-10-28 21:53:21 +01:00
};
2019-02-09 23:36:37 +11:00
enum struct ActionAspect : uint8_t
2018-10-28 21:53:21 +01:00
{
None = 0, // Doesn't imply unaspected
Fire = 1,
Ice = 2,
Wind = 3,
Stone = 4,
Lightning = 5,
Water = 6,
Unaspected = 7 // Doesn't imply magical unaspected damage - could be unaspected physical
};
enum class ActionPrimaryCostType : uint8_t
{
None = 0, // ?
MagicPoints = 3,
TacticsPoints = 5,
// WARGauge = 22,
// DRKGauge = 25,
// AetherflowStack = 30,
// Status = 32,
// PLDGauge = 41,
// RDMGaugeBoth = 74,
//// RDMGaugeBlack = 75, // not right?
// DRGGauge3Eyes = 76,
};
enum class ActionType : int8_t
{
WeaponOverride = -1, // Needs more investigation (takes the damage type of the equipped weapon)?
2018-10-28 21:53:21 +01:00
Unknown_0 = 0,
Slashing = 1,
Piercing = 2,
Blunt = 3,
Unknown_4 = 4,
Magical = 5,
Darkness = 6,
Unknown_7 = 7,
LimitBreak = 8,
};
enum ActionEffectType : uint8_t
2018-10-28 21:53:21 +01:00
{
CALC_RESULT_TYPE_NONE = 0x0,
CALC_RESULT_TYPE_MISS = 0x1,
CALC_RESULT_TYPE_RESIST = 0x2,
CALC_RESULT_TYPE_DAMAGE_HP = 0x3,
CALC_RESULT_TYPE_RECOVER_HP = 0x4,
CALC_RESULT_TYPE_CRITICAL_DAMAGE_HP = 0x5,
CALC_RESULT_TYPE_CRITICAL_RECOVER_HP = 0x6,
CALC_RESULT_TYPE_GUARD = 0x7,
CALC_RESULT_TYPE_PARRY = 0x8,
CALC_RESULT_TYPE_INVALID = 0x9,
CALC_RESULT_TYPE_UNEFFECTIVE = 0xA,
CALC_RESULT_TYPE_NEGLECT = 0xB,
CALC_RESULT_TYPE_DAMAGE_MP = 0xC,
CALC_RESULT_TYPE_RECOVER_MP = 0xD,
CALC_RESULT_TYPE_DAMAGE_TP = 0xE,
CALC_RESULT_TYPE_RECOVER_TP = 0xF,
CALC_RESULT_TYPE_RECOVER_GP = 0x10,
CALC_RESULT_TYPE_SET_STATUS = 0x11,
CALC_RESULT_TYPE_SET_STATUS_ME = 0x12,
CALC_RESULT_TYPE_RESET_STATUS = 0x13,
CALC_RESULT_TYPE_RESET_STATUS_ME = 0x14,
CALC_RESULT_TYPE_RESET_BAD_STATUS = 0x15,
CALC_RESULT_TYPE_UNEFFECTIVE_STATUS = 0x16,
CALC_RESULT_TYPE_HALF_GOOD_STATUS = 0x17,
CALC_RESULT_TYPE_HATE_DIRECT = 0x18,
CALC_RESULT_TYPE_HATE_INDIRECTION = 0x19,
CALC_RESULT_TYPE_HATE_TOP = 0x1A,
CALC_RESULT_TYPE_HATE_ADD = 0x1B,
CALC_RESULT_TYPE_HATE_MULT = 0x1C,
CALC_RESULT_TYPE_COMBO = 0x1D,
CALC_RESULT_TYPE_COMBO_HIT = 0x1E,
CALC_RESULT_TYPE_COUNTER = 0x1F,
CALC_RESULT_TYPE_DESTRUCT = 0x20,
CALC_RESULT_TYPE_PARALYSIS = 0x21,
CALC_RESULT_TYPE_KNOCK_BACK = 0x22,
CALC_RESULT_TYPE_DRAW_UP_CHAIRS = 0x23,
CALC_RESULT_TYPE_SUCKED = 0x24,
CALC_RESULT_TYPE_CT_DRAW_UP_CHAIRS = 0x25,
CALC_RESULT_TYPE_LIVE_CALLBACK = 0x26,
CALC_RESULT_TYPE_MOUNT = 0x27,
CALC_RESULT_ARCHER_DOT = 0x28,
CALC_RESULT_MASTER_DOT = 0x29,
CALC_RESULT_BLESSINGS_OF_GODDESS = 0x2A,
CALC_RESULT_BAD_BREATH = 0x2B,
CALC_RESULT_REVIVAL = 0x2C,
CALC_RESULT_PET = 0x2D,
CALC_RESULT_TYPE_BLOW = 0x2E,
CALC_RESULT_TYPE_STATUS_RESIST = 0x2F,
CALC_RESULT_TYPE_CLEAR_PHYSICAL = 0x30,
CALC_RESULT_BNPC_STATE = 0x31,
CALC_RESULT_TYPE_VFX = 0x32,
CALC_RESULT_TYPE_HARD_CODE = 0x33,
CALC_RESULT_CALC_ID = 0x34,
CALC_RESULT_TYPE_CLEAR_PVP_POINT = 0x35,
CALC_RESULT_TYPE_CHECK_BARRIER = 0x36,
CALC_RESULT_TYPE_REFLEC = 0x37,
2018-10-28 21:53:21 +01:00
};
enum class ActionHitSeverityType : uint8_t
2018-10-28 21:53:21 +01:00
{
NormalDamage = 0,
CritHeal = 0,
2018-10-28 21:53:21 +01:00
CritDamage = 1,
NormalHeal = 1,
2018-10-28 21:53:21 +01:00
DirectHitDamage = 2,
CritDirectHitDamage = 3
};
2020-01-05 20:49:50 +09:00
enum class ActionEffectResultFlag : uint8_t
{
None = 0,
Absorbed = 0x04,
2020-01-05 20:49:50 +09:00
EffectOnSource = 0x80,
Reflected = 0xA0,
2020-01-05 20:49:50 +09:00
};
2019-02-09 21:48:42 +11:00
enum ItemActionType : uint16_t
{
ItemActionVFX = 852,
ItemActionVFX2 = 944,
2019-02-09 21:48:42 +11:00
};
enum ActionEffectDisplayType : uint8_t
2018-10-28 21:53:21 +01:00
{
HideActionName = 0,
ShowActionName = 1,
ShowItemName = 2,
};
struct CalcResultParam
{
uint8_t Type;
uint8_t Arg0;
uint8_t Arg1;
uint8_t Arg2;
int16_t Value;
uint8_t Flag;
uint8_t Padding;
};
struct CalcResult
{
CalcResultParam CalcResultCt[4];
CalcResultParam CalcResultTg[4];
};
struct IntegrityStatus
{
uint8_t Slot;
uint8_t __padding1;
uint16_t Id;
int16_t SystemParam;
uint8_t __padding2;
uint8_t __padding3;
float Time;
uint32_t Source;
};
enum class ActionCollisionType : uint8_t
2018-10-28 21:53:21 +01:00
{
None,
SingleTarget,
Circle,
Cone,
Box,
Unknown,
Unknown2,
PersistentArea, // for when you set aoe like asylum
Unknown3
};
enum class ActionInterruptType : uint8_t
{
None,
RegularInterrupt,
DamageInterrupt,
};
enum HandleActionType : uint8_t
2018-10-28 21:53:21 +01:00
{
Event,
Spell,
Teleport
};
enum HandleSkillType : uint8_t
2018-10-28 21:53:21 +01:00
{
StdDamage,
StdHeal,
StdDot,
};
enum InvincibilityType : uint8_t
2018-10-28 21:53:21 +01:00
{
InvincibilityNone,
InvincibilityRefill,
InvincibilityStayAlive,
InvincibilityIgnoreDamage,
2018-10-28 21:53:21 +01:00
};
enum HierarchyType : uint8_t
{
NONE_2 = 0x0,
PCPARTY = 0x1,
FRIENDLIST = 0x2,
AUTOPARTY = 0x3,
FCCREATE = 0x4,
FREECOMPANY = 0x5,
FCJOINREQUEST = 0x6,
PARTYCANCEL = 0x7,
MAX_1 = 0xFF,
};
enum HierarchyStatus : uint8_t
{
Invalid = 0,
Added = 0x10,
SentRequest = 0x20,
ReceivedRequest = 0x30
};
enum LinkshellHierarchy : int32_t
{
NONE_1 = 0x0,
MASTER = 0x1,
LEADER = 0x2,
MEMBER = 0x3,
INVITE = 0x4,
MAX_0 = 0x7,
};
union HierarchyData
{
uint64_t u64;
struct HierarchyPackedData {
uint32_t dateAdded;
uint8_t status;
uint8_t type;
uint8_t group;
uint8_t unk;
} data;
};
/* 61719 */
enum InviteReplyType : int32_t
{
DENY = 0x0,
ACCEPT = 0x1,
CANCEL = 0x2,
};
enum InviteUpdateType : uint8_t
{
NEW_INVITE = 0x01,
INVITE_CANCEL = 0x02,
JOINED_PARTY = 0x03,
ACCEPT_INVITE = 0x04,
REJECT_INVITE = 0x05,
};
enum PlayerStateFlag : uint8_t
2018-10-28 21:53:21 +01:00
{
HideUILockChar = 16, // as the name suggests, hides the ui and logs the char...
InCombat = 17, // in Combat, locks gearchange/return/teleport
Casting = 18,
InNpcEvent = 23, // when talking to an npc, locks ui giving "occupied" message
2018-10-28 21:53:21 +01:00
// InNpcEvent1 = 10, // Sent together with InNpcEvent, when waiting for input? just a guess...
2018-10-28 21:53:21 +01:00
BoundByDuty = 26,
BetweenAreas = 37,
WatchingCutscene = 51, // this is actually just a dummy, this id is different
2018-10-28 21:53:21 +01:00
};
enum struct FateStatus : uint8_t
2018-10-28 21:53:21 +01:00
{
Active = 2,
Inactive = 4,
Preparing = 7,
Completed = 8,
};
enum struct ChatType : uint16_t
2018-10-28 21:53:21 +01:00
{
LogKindError,
ServerDebug,
ServerUrgent,
ServerNotice,
Unused4,
Unused5,
Unused6,
Unused7,
Unused8,
Unused9,
Say,
Shout,
Tell,
TellReceive,
Party,
Alliance,
LS1,
LS2,
LS3,
LS4,
LS5,
LS6,
LS7,
LS8,
FreeCompany,
Unused25,
Unused26,
NoviceNetwork,
CustomEmote,
StandardEmote,
Yell,
Unknown31,
PartyUnk2,
Unused33,
Unused34,
Unused35,
Unused36,
Unused37,
Unused38,
Unused39,
Unused40,
BattleDamage,
BattleFailed,
BattleActions,
BattleItems,
BattleHealing,
BattleBeneficial,
BattleDetrimental,
BattleUnk48,
BattleUnk49,
Unused50,
Unused51,
Unused52,
Unused53,
Unused54,
Unused55,
Echo,
SystemMessage,
SystemErrorMessage,
BattleSystem,
GatheringSystem,
NPCMessage,
LootMessage,
Unused63,
CharProgress,
Loot,
Crafting,
Gathering,
NPCAnnouncement,
FCAnnouncement,
FCLogin,
RetainerSale,
PartySearch,
PCSign,
DiceRoll,
NoviceNetworkNotice,
Unknown76,
Unused77,
Unused78,
Unused79,
GMTell,
GMSay,
GMShout,
GMYell,
GMParty,
GMFreeCompany,
GMLS1,
GMLS2,
GMLS3,
GMLS4,
GMLS5,
GMLS6,
GMLS7,
GMLS8,
GMNoviceNetwork,
Unused95,
Unused96,
Unused97,
Unused98,
Unused99,
Unused100
};
2019-03-08 11:05:32 +01:00
enum EquipDisplayFlags : uint8_t
2018-10-28 21:53:21 +01:00
{
HideNothing = 0x0,
HideHead = 0x1,
HideWeapon = 0x2,
HideLegacyMark = 0x4,
StoreNewItemsInArmouryChest = 0x10,
StoreCraftedItemsInInventory = 0x20,
Visor = 0x40,
};
2019-03-08 11:05:32 +01:00
enum SkillType : uint8_t
2018-10-28 21:53:21 +01:00
{
Normal = 0x1,
2019-01-29 23:29:28 +11:00
ItemAction = 0x2,
2018-10-28 21:53:21 +01:00
MountSkill = 0xD,
};
enum HouseExteriorSlot
2018-11-02 19:21:12 +01:00
{
HousePermit,
2018-11-02 19:21:12 +01:00
ExteriorRoof,
ExteriorWall,
ExteriorWindow,
ExteriorDoor,
ExteriorRoofDecoration,
ExteriorWallDecoration,
ExteriorPlacard,
ExteriorFence
2018-11-02 19:21:12 +01:00
};
2018-12-30 17:44:03 +11:00
enum HouseInteriorSlot
2018-12-01 21:40:30 +01:00
{
InteriorWall,
InteriorFloor,
InteriorLight,
InteriorWall_Attic,
InteriorFloor_Attic,
InteriorLight_Attic,
InteriorWall_Basement,
InteriorFloor_Basement,
InteriorLight_Basement,
InteriorLight_Mansion
};
enum LandFlagsSlot
2018-11-07 11:59:59 +01:00
{
FreeCompany,
Private
2018-11-07 11:59:59 +01:00
};
enum class LandType : uint8_t
{
none = 0,
FreeCompany = 1,
Private = 2,
};
enum BuildingMenu : uint32_t
{
BUILDING_MENU_BUY_DEED = 0x0,
BUILDING_MENU_BUILD = 0x1,
BUILDING_MENU_DESTROY = 0x2,
BUILDING_MENU_MAX = 0x3,
};
enum HousingProfileStatus : uint32_t
{
HOUSING_PROFILE_STATUS_SOLD = 0x1,
HOUSING_PROFILE_STATUS_WELCOME = 0x2,
HOUSING_PROFILE_STATUS_HAS_GREETING = 0x4,
HOUSING_PROFILE_STATUS_HAS_HOUSE = 0x8,
};
enum HOUSING_LAND_STATUS : uint8_t
{
HOUSING_LAND_STATUS_NOINIT = 0x0,
HOUSING_LAND_STATUS_NONE = 0x1,
HOUSING_LAND_STATUS_BUYLAND = 0x2,
HOUSING_LAND_STATUS_BUILDHOUSE = 0x3,
};
enum HOUSING_SAVE_FLAG : uint8_t
{
HOUSING_SAVE_FLAG_NONE = 0x0,
HOUSING_SAVE_FLAG_LAND = 0x1,
HOUSING_SAVE_FLAG_HOUSE = 0x2,
HOUSING_SAVE_FLAG_BUDDYSTABLE = 0x4,
HOUSING_SAVE_FLAG_LAND_HOUSE = 0x3,
};
enum HOUSING_AETHERYTE_BITFLAG : uint8_t
{
HOUSING_AETHERYTE_BITFLAG_NONE = 0x0,
HOUSING_AETHERYTE_BITFLAG_PRIVATEAETHERYTE = 0x1,
HOUSING_AETHERYTE_BITFLAG_BUDDYSTABLE = 0x2,
};
enum HOUSING_ACCESSLOCK : uint8_t
{
HOUSING_ACCESSLOCK_NONE = 0x0,
HOUSING_ACCESSLOCK_LOCK = 0x1,
HOUSING_ACCESSLOCK_FORCEREMOVE = 0x2,
HOUSING_ACCESSLOCK_AUTOREMOVE = 0x3,
HOUSING_ACCESSLOCK_NUM = 0x4,
};
enum HOUSING_AUTOREMOVEDLAND_STATUS : uint8_t
{
HOUSING_AUTOREMOVELAND_STATUS_NONE = 0x0,
HOUSING_AUTOREMOVELAND_STATUS_FORCE = 0x1,
HOUSING_AUTOREMOVELAND_STATUS_AUTO = 0x2,
};
enum HOUSING_ENTERLIMIT : uint8_t
{
HOUSING_ENTERLIMIT_S = 0x40,
HOUSING_ENTERLIMIT_M = 0x60,
HOUSING_ENTERLIMIT_L = 0x80,
};
enum HOUSING_PRICEDOWN : uint16_t
{
HOUSING_PRICEDOWN_FINAL = 0x1FF,
HOUSING_PRICEDOWN_RESET = 0x200,
HOUSING_PRICEDOWN_UPDATETIME = 0x201,
};
enum HOUSING_PERSONALROOM : uint16_t
{
HOUSING_PERSONALROOM_INITIALPRICE = 0x2710,
};
enum HOUSING_TEMP_BUFFER_ITEMS : uint8_t
{
HOUSING_TEMP_BUFFER_ITEMS_MAX = 0xA,
};
enum LandFlags : uint8_t
{
CHARA_HOUSING_LAND_DATA_FLAG_HOUSE = 0x1,
CHARA_HOUSING_LAND_DATA_FLAG_AETHERYTE = 0x2,
};
enum HouseSize : uint8_t
{
HOUSE_SIZE_S = 0x0,
HOUSE_SIZE_M = 0x1,
HOUSE_SIZE_L = 0x2,
HOUSE_SIZE_ALL = 0xFE,
INVALID_HOUSE_SIZE = 0xFF,
};
2018-11-26 23:15:42 +01:00
struct LandIdent
2018-11-02 19:21:12 +01:00
{
2018-11-10 19:00:41 +01:00
int16_t landId; //00
int16_t wardNum; //02
2018-11-26 23:15:42 +01:00
int16_t territoryTypeId; //04
int16_t worldId; //06
2018-11-26 23:15:42 +01:00
};
struct House
2018-11-26 23:15:42 +01:00
{
uint8_t size;
uint8_t status;
uint8_t flags;
uint8_t __padding1;
uint64_t fcCrestId;
uint8_t patternIds[8];
uint8_t colors[8];
2018-11-02 19:21:12 +01:00
};
struct Furniture
2018-11-02 19:21:12 +01:00
{
uint16_t patternId;
uint8_t color;
uint8_t status;
uint16_t dir;
uint16_t pos[3];
2018-11-02 19:21:12 +01:00
};
struct CharaLandData
{
LandIdent landId;
uint8_t flags;
};
struct SimpleProfile
{
uint32_t price;
uint8_t status;
uint8_t fcTag[7];
};
struct HousingLayout
{
uint8_t storageIndex;
uint8_t __padding1;
uint16_t dir;
uint16_t pos[3];
};
struct HousingPersonalRoomProfileData
{
uint64_t OnlineStatus;
uint16_t TerritoryType;
uint8_t Welcome;
char OwnerName[32];
char HouseCommentSimple[49];
};
struct HouseBuddyStableData
2018-11-02 19:21:12 +01:00
{
uint32_t LastTrainingTime;
uint8_t Rank;
uint8_t __padding1;
uint16_t HouseBuddyRoomId;
uint8_t SkillLines[3];
char OwnerName[32];
char BuddyName[21];
2018-11-02 19:21:12 +01:00
};
2018-12-31 21:54:32 +11:00
enum HouseStatus : uint8_t
2018-11-02 19:21:12 +01:00
{
none,
2018-12-31 22:02:34 +11:00
ForSale,
Sold,
PrivateEstate,
FreeCompanyEstate,
2018-11-02 19:21:12 +01:00
};
2018-11-03 00:47:45 +01:00
2018-11-02 19:21:12 +01:00
enum HouseIconAdd : uint8_t
{
heart = 0x06
};
2018-11-01 00:18:19 +01:00
2018-11-27 23:12:26 +11:00
enum WardlandFlags : uint8_t
{
IsEstateOwned = 1,
IsPublicEstate = 2,
HasEstateGreeting = 4,
EstateFlagUnknown = 8,
IsFreeCompanyEstate = 16,
};
struct PlayerTeleportQuery
{
uint16_t targetAetheryte;
uint16_t cost;
};
enum EventSceneError : uint8_t
{
EVENT_SCENE_SUCCESS = 0x0,
EVENT_SCENE_ERROR_LUA_ERRRUN = 0x2,
EVENT_SCENE_ERROR_LUA_ERRSYNTAX = 0x3,
EVENT_SCENE_ERROR_LUA_ERRMEM = 0x4,
EVENT_SCENE_ERROR_LUA_ERRERR = 0x5,
EVENT_SCENE_ERROR_USER_CANCEL = 0x32,
EVENT_SCENE_ERROR_SERVER_ABORT = 0x33,
EVENT_SCENE_ERROR_RELOAD = 0x34,
EVENT_SCENE_ERROR_LUA_THREAD_BUSY = 0x35,
EVENT_SCENE_ERROR_TARGET_CHANGED = 0x36,
EVENT_SCENE_ERROR_CLIENT_ABORT = 0x37,
EVENT_SCENE_ERROR_TARGET_LOST = 0x38,
EVENT_SCENE_ERROR_BEFORE_PLAY = 0x39,
EVENT_SCENE_ERROR_BIND_CHARACTER = 0x3A,
EVENT_SCENE_ERROR_TARGET_MOVE = 0x3B,
EVENT_SCENE_ERROR_SCRIPT_NOT_READY = 0x3C,
EVENT_SCENE_ERROR_TARGET_WARP = 0x3D,
EVENT_SCENE_ERROR_BIND_OBJECT = 0x3E,
EVENT_SCENE_ERROR_MAX = 0xFF,
};
enum LevelTableEntry : uint8_t
{
MAIN,
SUB,
DIV,
HP,
ELMT,
THREAT
};
enum CastType : uint8_t
{
SingleTarget = 1,
CircularAOE = 2,
2020-01-23 22:36:01 +09:00
Type3 = 3, // another single target? no idea how to call it
RectangularAOE = 4,
2019-04-28 23:34:43 +02:00
CircularAoEPlaced = 7
};
enum class Role : uint8_t
{
None,
Tank,
Healer,
RangedPhysical,
RangedMagical,
Melee,
Crafter,
Gatherer
};
using PlayerStateFlagList = std::vector< PlayerStateFlag >;
2020-04-24 19:24:04 +09:00
struct BNPCInstanceObject
{
uint16_t territoryType;
std::string bnpcName;
uint32_t instanceId;
uint32_t nameOffset;
float x;
float y;
float z;
float rotation;
uint32_t BaseId;
uint32_t PopWeather;
uint8_t PopTimeStart;
uint8_t PopTimeEnd;
uint32_t MoveAI;
uint8_t WanderingRange;
uint8_t Route;
uint16_t EventGroup;
uint32_t NameId;
uint32_t DropItem;
float SenseRangeRate;
uint16_t Level;
uint8_t ActiveType;
uint8_t PopInterval;
uint8_t PopRate;
uint8_t PopEvent;
uint8_t LinkGroup;
uint8_t LinkFamily;
uint8_t LinkRange;
uint8_t LinkCountLimit;
int8_t NonpopInitZone;
int8_t InvalidRepop;
int8_t LinkParent;
int8_t LinkOverride;
int8_t LinkReply;
int8_t Nonpop;
float HorizontalPopRange;
float VerticalPopRange;
int32_t BNpcBaseData;
uint8_t RepopId;
uint8_t BNPCRankId;
uint16_t TerritoryRange;
uint32_t BoundInstanceID;
uint32_t FateLayoutLabelId;
uint32_t NormalAI;
uint32_t ServerPathId;
uint32_t EquipmentID;
uint32_t CustomizeID;
};
/*
* CellId is used to identify a cell in the cell container of a zone
*/
struct CellId
{
uint32_t x{ 0 };
uint32_t y{ 0 };
};
2020-04-24 19:24:04 +09:00
2018-10-28 21:53:21 +01:00
}