2018-06-23 21:38:04 +02:00
# ifndef _COMMONACTORCONTROL_H
# define _COMMONACTORCONTROL_H
# include <cstdint>
# include <vector>
# include "CommonGen.h"
// +---------------------------------------------------------------------------
// The following enumerations are structures to require their type be included.
2018-11-29 16:55:48 +01:00
// They are also defined within the Sapphire::Common namespace to avoid collisions.
2018-06-23 21:38:04 +02:00
// +---------------------------------------------------------------------------
2018-11-29 16:55:48 +01:00
namespace Sapphire : : Network : : ActorControl
2018-11-13 23:46:10 +01:00
{
2018-06-23 21:38:04 +02:00
2019-08-09 20:45:06 +10:00
enum ActorControlType : uint16_t
{
2018-11-13 23:46:10 +01:00
/*! Toggles weapon status -> Sheathed/UnSheathed
\ param param1 status 0 | 1 */
2019-02-10 21:01:04 +11:00
ToggleWeapon = 0x00 ,
2018-11-13 23:46:10 +01:00
/*! Toggles Autoattack status on/off
\ param param1 status 0 | 1 */
2019-02-10 21:01:04 +11:00
AutoAttack = 0x01 ,
2018-11-13 23:46:10 +01:00
SetStatus = 0x02 ,
CastStart = 0x03 ,
ToggleAggro = 0x04 ,
ClassJobChange = 0x05 ,
DefeatMsg = 0x06 ,
GainExpMsg = 0x07 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
LevelUpEffect = 0x0A ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ExpChainMsg = 0x0C ,
HpSetStat = 0x0D ,
DeathAnimation = 0x0E ,
CastInterrupt = 0x0F ,
2018-06-23 21:38:04 +02:00
2019-02-10 21:01:04 +11:00
/*!
2019-03-08 00:26:41 +11:00
* @ brief Sent when a player uses an action
2019-02-10 21:01:04 +11:00
*
2019-03-08 00:26:41 +11:00
* param1 Seems to be always 1 from what I ' ve seen , needs more research
* param2 The actionid
* param3 The action cooldown in ms / 10
2019-02-10 21:01:04 +11:00
*/
2019-03-08 00:26:41 +11:00
ActionStart = 0x11 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
StatusEffectGain = 0x14 ,
StatusEffectLose = 0x15 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
HPFloatingText = 0x17 ,
UpdateRestedExp = 0x018 ,
Unk2 = 0x19 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Flee = 0x1B ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Unk3 = 0x20 , // Animation related?
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
CombatIndicationShow = 0x22 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SpawnEffect = 0x25 ,
ToggleInvisible = 0x26 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ToggleActionUnlock = 0x29 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
UpdateUiExp = 0x2B ,
DmgTakenMsg = 0x2D ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetTarget = 0x32 ,
ToggleNameHidden = 0x36 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
LimitbreakStart = 0x47 ,
LimitbreakPartyStart = 0x48 ,
BubbleText = 0x49 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DamageEffect = 0x50 ,
RaiseAnimation = 0x51 ,
TreasureScreenMsg = 0x57 ,
SetOwnerId = 0x59 ,
ItemRepairMsg = 0x5C ,
2019-04-17 18:46:34 +02:00
BluActionLearn = 0x63 , // Displays "Action Learned!" animation. Only used for visual, doesn't actually unlock it. param1: actionId. param2: 0 = text only, 1 = text+animation. Verification needed
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DirectorInit = 0x64 ,
DirectorClear = 0x65 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
LeveStartAnim = 0x66 ,
LeveStartError = 0x67 ,
DirectorEObjMod = 0x6A ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DirectorUpdate = 0x6D ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ItemObtainMsg = 0x75 ,
DutyQuestScreenMsg = 0x7B ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ItemObtainIcon = 0x84 ,
FateItemFailMsg = 0x85 ,
ItemFailMsg = 0x86 ,
ActionLearnMsg1 = 0x87 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
FreeEventPos = 0x8A ,
2018-06-23 21:38:04 +02:00
2019-08-09 20:45:06 +10:00
DailyQuestSeed = 0x90 , // param1 = the daily quest seed
2018-11-13 23:46:10 +01:00
SetBGM = 0xA1 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
UnlockAetherCurrentMsg = 0xA4 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
RemoveName = 0xA8 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ScreenFadeOut = 0xAA ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ZoneIn = 0xC8 ,
ZoneInDefaultPos = 0xC9 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
TeleportStart = 0xCB ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
TeleportDone = 0xCD ,
TeleportDoneFadeOut = 0xCE ,
DespawnZoneScreenMsg = 0xCF ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
InstanceSelectDlg = 0xD2 ,
ActorDespawnEffect = 0xD4 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
CompanionUnlock = 0xFD ,
ObtainBarding = 0xFE ,
EquipBarding = 0xFF ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
CompanionMsg1 = 0x102 ,
CompanionMsg2 = 0x103 ,
ShowPetHotbar = 0x104 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ActionLearnMsg = 0x109 ,
ActorFadeOut = 0x10A ,
ActorFadeIn = 0x10B ,
WithdrawMsg = 0x10C ,
2019-02-02 23:06:57 +11:00
OrderCompanion = 0x10D ,
ToggleCompanion = 0x10E ,
LearnCompanion = 0x10F ,
2018-11-13 23:46:10 +01:00
ActorFateOut1 = 0x110 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Emote = 0x122 ,
EmoteInterrupt = 0x123 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetPose = 0x127 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
CraftingUnk = 0x12C ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
GatheringSenseMsg = 0x130 ,
PartyMsg = 0x131 ,
GatheringSenseMsg1 = 0x132 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
GatheringSenseMsg2 = 0x138 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
FishingMsg = 0x140 ,
2018-06-23 21:38:04 +02:00
2019-03-31 06:48:19 +02:00
FishingTotalFishCaught = 0x142 ,
2018-11-13 23:46:10 +01:00
FishingBaitMsg = 0x145 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
FishingReachMsg = 0x147 ,
FishingFailMsg = 0x148 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
MateriaConvertMsg = 0x15E ,
MeldSuccessMsg = 0x15F ,
MeldFailMsg = 0x160 ,
MeldModeToggle = 0x161 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
AetherRestoreMsg = 0x163 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DyeMsg = 0x168 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ToggleCrestMsg = 0x16A ,
ToggleBulkCrestMsg = 0x16B ,
MateriaRemoveMsg = 0x16C ,
GlamourCastMsg = 0x16D ,
GlamourRemoveMsg = 0x16E ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
RelicInfuseMsg = 0x179 ,
2018-06-23 21:38:04 +02:00
2019-10-11 22:59:15 +02:00
/*!
* Sent as result of an aetherial reduction .
* param1 = Reduced item ID + 500 000 ( idk what this 500 000 is but it ' s always here no matter what )
* param2 = First result item id ( + 1 000 000 if HQ )
* param3 = First result item quantity
* param4 = ( Optional ) Second result item id ( + 1 000 000 if HQ )
* param5 = ( Optional ) Second result item quantity
*/
2018-11-13 23:46:10 +01:00
AetherReductionDlg = 0x17D ,
2018-06-23 21:38:04 +02:00
2019-04-08 23:36:02 +10:00
/*!
* param1 = state
* param2 = actorid
*/
2019-04-09 00:03:20 +10:00
EObjSetState = 0x199 ,
2018-11-13 23:46:10 +01:00
Unk6 = 0x19C ,
EObjAnimation = 0x19D ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetTitle = 0x1F4 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetStatusIcon = 0x1F8 ,
LimitBreakGauge = 0x1F9 , // Max level, amount, build type (chop sound), lb type(0=pve lb 1=pvp lb)
SetHomepoint = 0x1FB ,
SetFavorite = 0x1FC ,
LearnTeleport = 0x1FD ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
OpenRecommendationGuide = 0x200 ,
ArmoryErrorMsg = 0x201 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
AchievementPopup = 0x203 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
LogMsg = 0x205 , // LogMessage?
AchievementMsg = 0x206 ,
2018-06-23 21:38:04 +02:00
2019-01-12 22:53:16 +01:00
SetItemLevel = 0x209 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ChallengeEntryCompleteMsg = 0x20B ,
ChallengeEntryUnlockMsg = 0x20C ,
2018-06-23 21:38:04 +02:00
2019-10-09 09:30:49 +02:00
/*!
* Sent when a player desynths an item , one packet per result type ( one for consumed item , one for each obtained items , and one for exp if the player received exp )
* param1 = result type ( 4921 = > Item consumed , 4922 = > Item obtained , 4925 = > Exp obtained )
* param3 = item id ( used for result types 4921 & 4922 )
* param5 = exp amount ( x 100 )
*/
DesynthResult = 0x20F ,
2018-11-13 23:46:10 +01:00
GilTrailMsg = 0x211 ,
2018-06-23 21:38:04 +02:00
2019-03-28 22:58:40 +01:00
HuntingLogRankUnlock = 0x21D ,
HuntingLogEntryUpdate = 0x21E ,
HuntingLogSectionFinish = 0x21F ,
HuntingLogRankFinish = 0x220 ,
2018-11-13 23:46:10 +01:00
SetMaxGearSets = 0x230 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetCharaGearParamUI = 0x260 ,
ToggleWireframeRendering = 0x261 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ExamineError = 0x2BF ,
2018-09-25 01:11:14 +10:00
2018-11-13 23:46:10 +01:00
GearSetEquipMsg = 0x321 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
SetFestival = 0x386 , // param1: festival.exd index
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
ToggleOrchestrionUnlock = 0x396 ,
2019-09-06 10:55:03 +10:00
/*!
* param1 = mountSpeed
* Retail sends 12 for mount speed star 1 unlocked and 15 for mount speed star 2 unlocked
* This also has to be sent before mounting finishes for it to take effect
*/
2019-09-06 10:56:35 +10:00
SetMountSpeed = 0x39F ,
2019-09-06 10:55:03 +10:00
2019-01-15 19:13:36 +11:00
Dismount = 0x3A1 , // updated 4.5
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
// Duty Recorder
2019-01-15 20:10:35 +11:00
BeginReplayAck = 0x3A2 ,
EndReplayAck = 0x3A3 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
// Housing
2018-12-02 16:42:46 +11:00
ShowHousingItemUI = 0x3F7 ,
2018-11-13 23:46:10 +01:00
ShowBuildPresetUI = 0x3E9 ,
2018-12-28 18:45:08 +11:00
/*!
* param1 = plot id
*/
ShowEstateExternalAppearanceUI = 0x3EA ,
ShowEstateInternalAppearanceUI = 0x3EB ,
2018-11-13 23:46:10 +01:00
BuildPresetResponse = 0x3ED ,
2018-11-07 09:05:03 +01:00
2018-12-27 23:48:55 +11:00
/*!
2018-12-28 11:49:12 +11:00
* param1 = u16 landid
* u16 slotid
2018-12-27 23:48:55 +11:00
*/
RemoveExteriorHousingItem = 0x3EF ,
2018-12-27 22:28:31 +11:00
/*!
* param1 = object array index
*/
RemoveInteriorHousingItem = 0x3F1 ,
2018-12-27 17:12:01 +11:00
/*!
* param1 = identity shit
* u16 1 - container id
* u16 2 - plot id
* param2 = item shit
* u16 1 - slot
*/
HousingItemMoveConfirm = 0x3F9 ,
2018-12-27 22:28:31 +11:00
OpenEstateSettingsUI = 0x3FF ,
2018-12-30 23:25:52 +11:00
HideAdditionalChambersDoor = 0x400 ,
2018-12-27 17:12:01 +11:00
2018-12-02 16:42:46 +11:00
/*!
* param1 = outdoor furnishings
* u8 0 - relocation available , 1 = available
* u8 1 - outoor furnishings placed
* u8 2 - outdoor furnishings in storeroom
* u8 3 - outdoor funishings limit
* param2 = indoor furnishings
* u16 0 - relocation available , 1 = available
* u16 1 - furnishings placed
* param3 = indoor furnishings
* u16 0 - in storeroom
* u16 1 - indoor furnishings limit
*/
HousingStoreroomStatus = 0x419 ,
2018-11-13 23:46:10 +01:00
// PvP Duel
2018-12-02 16:42:46 +11:00
SetPvPState = 0x5E0 , // param3 must be 6 to engage a duel (hardcoded in the client)
2018-11-13 23:46:10 +01:00
EndDuelSession = 0x5E1 , // because someone went oob?
StartDuelCountdown = 0x5E2 , // begins a countdown; also does some duel bgm thing.
StartDuel = 0x5E3 , // actually all it does is set the challenger actor id;
DuelResultScreen = 0x5E4 , // win/lose thing, also reset a target id just like what EndDuelSession does.
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
// Duty Action
2018-12-02 16:42:46 +11:00
SetDutyActionId = 0x5E8 , // ContentExAction
2018-11-13 23:46:10 +01:00
SetDutyActionHud = 0x5E9 , // disable/enable
SetDutyActionActive = 0x5EA ,
SetDutyActionRemaining = 0x5EB ,
2019-04-17 00:29:04 +02:00
2019-04-17 00:50:36 +02:00
EurekaStep = 0x73A , // alters the progress of the player on Eureka (is used for all the eureka zones)
2018-11-13 23:46:10 +01:00
} ;
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
enum ClientTriggerType
{
ToggleSheathe = 0x01 ,
ToggleAutoAttack = 0x02 ,
ChangeTarget = 0x03 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DismountReq = 0x65 ,
2019-02-02 23:06:57 +11:00
SpawnCompanionReq = 0x66 ,
2018-11-13 23:46:10 +01:00
RemoveStatusEffect = 0x68 ,
CastCancel = 0x69 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Return = 0xC8 , // return dead / accept raise
FinishZoning = 0xC9 ,
Teleport = 0xCA ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Examine = 0x12C ,
MarkPlayer = 0x12D , // Mark player, visible to party only
SetTitleReq = 0x12E ,
TitleList = 0x12F ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
UpdatedSeenHowTos = 0x133 ,
AllotAttribute = 0x135 ,
2018-06-23 21:38:04 +02:00
2019-07-21 17:54:19 +10:00
ClearFieldMarkers = 0x13A ,
2018-11-13 23:46:10 +01:00
CameraMode = 0x13B , // param12, 1 = camera mode enable, 0 = disable
CharaNameReq = 0x13D , // requests character name by content id
HuntingLogDetails = 0x194 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
Timers = 0x1AB ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DyeItem = 0x1B5 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
RequestChocoboInventory = 0x1C4 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
EmoteReq = 0x1F4 ,
EmoteCancel = 0x1F6 ,
PersistentEmoteCancel = 0x1F7 ,
PoseChange = 0x1F9 ,
PoseReapply = 0x1FA ,
PoseCancel = 0x1FB ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
AchievementCrit = 0x202 ,
AchievementComp = 0x203 ,
AchievementCatChat = 0x206 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
QuestJournalUpdateQuestVisibility = 0x2BE ,
QuestJournalClosed = 0x2BF ,
2018-08-31 22:57:33 +10:00
2018-11-13 23:46:10 +01:00
AbandonQuest = 0x320 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DirectorInitFinish = 0x321 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
DirectorSync = 0x328 , // unsure what exactly triggers it, starts director when returning to instance though
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
EnterTerritoryEventFinished = 0x330 ,
RequestInstanceLeave = 0x333 , // df menu button
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
AchievementCritReq = 0x3E8 ,
AchievementList = 0x3E9 ,
2018-06-23 21:38:04 +02:00
2018-12-20 21:52:18 +11:00
SetEstateLightingLevel = 0x40B , // param1 = light level 0 - 5 maps to UI val 5-0
2018-11-13 23:46:10 +01:00
RequestHousingBuildPreset = 0x44C ,
2018-12-28 18:45:08 +11:00
RequestEstateExteriorRemodel = 0x044D , // param11 = land id
RequestEstateInteriorRemodel = 0x44E ,
2018-11-25 01:55:53 +11:00
RequestEstateHallRemoval = 0x44F ,
2018-11-24 15:17:18 +11:00
RequestBuildPreset = 0x450 , // no idea what this is, it gets sent with BuildPresetHandler and has the plot id in param1
2018-11-13 23:46:10 +01:00
RequestLandSignFree = 0x451 ,
RequestLandSignOwned = 0x452 ,
2018-11-20 22:52:57 +11:00
RequestWardLandInfo = 0x453 ,
2018-11-15 22:30:59 +01:00
RequestLandRelinquish = 0x454 ,
2018-12-07 23:38:45 +11:00
RequestLandInventory = 0x0458 ,
2018-12-28 02:17:29 +11:00
RequestHousingItemRemove = 0x0459 ,
2018-11-13 23:46:10 +01:00
RequestEstateRename = 0x45A ,
2018-11-26 23:32:22 +11:00
RequestEstateEditGreeting = 0x45B ,
2018-11-22 15:34:17 +11:00
RequestEstateGreeting = 0x45C , // sends FFXIVIpcHousingEstateGreeting in return
2018-11-26 23:32:22 +11:00
RequestEstateEditGuestAccessSettings = 0x45D ,
2018-12-29 19:20:47 +11:00
UpdateEstateGuestAccess = 0x45E ,
2018-11-26 23:32:22 +11:00
RequestEstateTagSettings = 0x45F ,
2018-12-07 23:38:45 +11:00
RequestEstateInventory = 0x0461 ,
2018-11-13 23:46:10 +01:00
RequestHousingItemUI = 0x463 ,
RequestSharedEstateSettings = 0x46F ,
2018-12-02 14:59:24 +11:00
UpdateEstateLightingLevel = 0x471 ,
2018-12-28 17:12:24 +11:00
HousingItemSelectedInUI = 0x47E ,
2018-09-26 03:22:30 +10:00
2018-11-13 23:46:10 +01:00
CompanionAction = 0x6A4 ,
CompanionSetBarding = 0x6A5 ,
CompanionActionUnlock = 0x6A6 ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
OpenPerformInstrumentUI = 0x71C ,
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
StartReplay = 0x7BC ,
EndReplay = 0x7BD , // request for restoring the original player state (actor, buff, gauge, etc..)
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
OpenDuelUI = 0x898 , // Open a duel ui
DuelRequestResult = 0x899 , // either accept/reject
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
} ;
2018-06-23 21:38:04 +02:00
2018-11-13 23:46:10 +01:00
}
2018-06-23 21:38:04 +02:00
# endif