mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-04-24 13:47:46 +00:00
Streamline ActorControlTypes, refactor ActionHandler/ClientTrigger to ClientActorControl
This commit is contained in:
parent
a042599a64
commit
f2c2087d7b
22 changed files with 360 additions and 309 deletions
|
@ -406,208 +406,6 @@ namespace Common {
|
|||
Completed = 8,
|
||||
};
|
||||
|
||||
enum ActorControlType : uint16_t
|
||||
{
|
||||
ToggleWeapon = 0x01,
|
||||
SetStatus = 0x02,
|
||||
CastStart = 0x03,
|
||||
ToggleAggro = 0x04,
|
||||
ClassJobChange = 0x05,
|
||||
DefeatMsg = 0x06,
|
||||
GainExpMsg = 0x07,
|
||||
|
||||
LevelUpEffect = 0x0A,
|
||||
|
||||
ExpChainMsg = 0x0C,
|
||||
HpSetStat = 0x0D,
|
||||
DeathAnimation = 0x0E,
|
||||
CastInterrupt = 0x0F,
|
||||
|
||||
ActionStart = 0x11,
|
||||
|
||||
StatusEffectGain = 0x14,
|
||||
StatusEffectLose = 0x15,
|
||||
|
||||
HPFloatingText = 0x17,
|
||||
UpdateRestedExp = 0x018,
|
||||
Unk2 = 0x19,
|
||||
|
||||
Flee = 0x1B,
|
||||
|
||||
Unk3 = 0x20, // Animation related?
|
||||
|
||||
CombatIndicationShow = 0x22,
|
||||
|
||||
SpawnEffect = 0x25,
|
||||
ToggleInvisible = 0x26,
|
||||
|
||||
ToggleActionUnlock = 0x29,
|
||||
|
||||
UpdateUiExp = 0x2B,
|
||||
DmgTakenMsg = 0x2D,
|
||||
|
||||
SetTarget = 0x32,
|
||||
ToggleNameHidden = 0x36,
|
||||
|
||||
LimitbreakStart = 0x47,
|
||||
LimitbreakPartyStart = 0x48,
|
||||
BubbleText = 0x49,
|
||||
|
||||
DamageEffect = 0x50,
|
||||
RaiseAnimation = 0x51,
|
||||
TreasureScreenMsg = 0x57,
|
||||
SetOwnerId = 0x59,
|
||||
ItemRepairMsg = 0x5C,
|
||||
|
||||
DirectorInit = 0x64,
|
||||
DirectorClear = 0x65,
|
||||
|
||||
LeveStartAnim = 0x66,
|
||||
LeveStartError = 0x67,
|
||||
DirectorEObjMod = 0x6A,
|
||||
|
||||
DirectorUpdate = 0x6D,
|
||||
|
||||
ItemObtainMsg = 0x75,
|
||||
DutyQuestScreenMsg = 0x7B,
|
||||
|
||||
ItemObtainIcon = 0x84,
|
||||
FateItemFailMsg = 0x85,
|
||||
ItemFailMsg = 0x86,
|
||||
ActionLearnMsg1 = 0x87,
|
||||
|
||||
FreeEventPos = 0x8A,
|
||||
|
||||
SetBGM = 0xA1,
|
||||
|
||||
UnlockAetherCurrentMsg = 0xA4,
|
||||
|
||||
RemoveName = 0xA8,
|
||||
|
||||
ScreenFadeOut = 0xAA,
|
||||
|
||||
ZoneIn = 0xC8,
|
||||
ZoneInDefaultPos = 0xC9,
|
||||
|
||||
TeleportStart = 0xCB,
|
||||
|
||||
TeleportDone = 0xCD,
|
||||
TeleportDoneFadeOut = 0xCE,
|
||||
DespawnZoneScreenMsg = 0xCF,
|
||||
|
||||
InstanceSelectDlg = 0xD2,
|
||||
ActorDespawnEffect = 0xD4,
|
||||
|
||||
CompanionUnlock = 0xFD,
|
||||
ObtainBarding = 0xFE,
|
||||
EquipBarding = 0xFF,
|
||||
|
||||
CompanionMsg1 = 0x102,
|
||||
CompanionMsg2 = 0x103,
|
||||
ShowPetHotbar = 0x104,
|
||||
|
||||
ActionLearnMsg = 0x109,
|
||||
ActorFadeOut = 0x10A,
|
||||
ActorFadeIn = 0x10B,
|
||||
WithdrawMsg = 0x10C,
|
||||
OrderMinion = 0x10D,
|
||||
ToggleMinion = 0x10E,
|
||||
LearnMinion = 0x10F,
|
||||
ActorFateOut1 = 0x110,
|
||||
|
||||
Emote = 0x122,
|
||||
|
||||
SetPose = 0x127,
|
||||
|
||||
CraftingUnk = 0x12C,
|
||||
|
||||
GatheringSenseMsg = 0x130,
|
||||
PartyMsg = 0x131,
|
||||
GatheringSenseMsg1 = 0x132,
|
||||
|
||||
GatheringSenseMsg2 = 0x138,
|
||||
|
||||
FishingMsg = 0x140,
|
||||
|
||||
FishingBaitMsg = 0x145,
|
||||
|
||||
FishingReachMsg = 0x147,
|
||||
FishingFailMsg = 0x148,
|
||||
|
||||
MateriaConvertMsg = 0x15E,
|
||||
MeldSuccessMsg = 0x15F,
|
||||
MeldFailMsg = 0x160,
|
||||
MeldModeToggle = 0x161,
|
||||
|
||||
AetherRestoreMsg = 0x163,
|
||||
|
||||
DyeMsg = 0x168,
|
||||
|
||||
ToggleCrestMsg = 0x16A,
|
||||
ToggleBulkCrestMsg = 0x16B,
|
||||
MateriaRemoveMsg = 0x16C,
|
||||
GlamourCastMsg = 0x16D,
|
||||
GlamourRemoveMsg = 0x16E,
|
||||
|
||||
RelicInfuseMsg = 0x179,
|
||||
|
||||
AetherReductionDlg = 0x17D,
|
||||
|
||||
Unk6 = 0x19C,
|
||||
EObjAnimation = 0x19D,
|
||||
|
||||
SetTitle = 0x1F4,
|
||||
|
||||
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,
|
||||
|
||||
OpenRecommendationGuide = 0x200,
|
||||
ArmoryErrorMsg = 0x201,
|
||||
|
||||
AchievementPopup = 0x203,
|
||||
|
||||
Unk7 = 0x205, // LogMessage?
|
||||
AchievementMsg = 0x206,
|
||||
|
||||
SetItemLevel = 0x209,
|
||||
|
||||
ChallengeEntryCompleteMsg = 0x20B,
|
||||
ChallengeEntryUnlockMsg = 0x20C,
|
||||
|
||||
GilTrailMsg = 0x211,
|
||||
|
||||
SetMaxGearSets = 0x230,
|
||||
|
||||
SetCharaGearParamUI = 0x260,
|
||||
|
||||
GearSetEquipMsg = 0x321,
|
||||
|
||||
SetFestival = 0x386, // param1: festival.exd index
|
||||
|
||||
ToggleOrchestrionUnlock = 0x396,
|
||||
Dismount = 0x3A0,
|
||||
|
||||
// Duty Recorder
|
||||
BeginReplayAck = 0x3A1,
|
||||
EndReplayAck = 0x3A2,
|
||||
|
||||
// PvP Duel
|
||||
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
|
||||
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.
|
||||
|
||||
// Duty Action
|
||||
SetDutyActionId = 0x5E8, // ContentExAction
|
||||
SetDutyActionHud = 0x5E9, // disable/enable
|
||||
SetDutyActionActive = 0x5EA,
|
||||
SetDutyActionRemaining = 0x5EB,
|
||||
};
|
||||
|
||||
enum struct ChatType : uint16_t
|
||||
{
|
||||
LogKindError,
|
||||
|
|
291
src/common/Network/CommonActorControl.h
Normal file
291
src/common/Network/CommonActorControl.h
Normal file
|
@ -0,0 +1,291 @@
|
|||
#ifndef _COMMONACTORCONTROL_H
|
||||
#define _COMMONACTORCONTROL_H
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include <boost/make_shared.hpp>
|
||||
#include "CommonGen.h"
|
||||
|
||||
// +---------------------------------------------------------------------------
|
||||
// The following enumerations are structures to require their type be included.
|
||||
// They are also defined within the Core::Common namespace to avoid collisions.
|
||||
// +---------------------------------------------------------------------------
|
||||
namespace Core {
|
||||
namespace Network {
|
||||
namespace ActorControl {
|
||||
|
||||
enum ActorControlType : uint16_t
|
||||
{
|
||||
ToggleWeapon = 0x01,
|
||||
SetStatus = 0x02,
|
||||
CastStart = 0x03,
|
||||
ToggleAggro = 0x04,
|
||||
ClassJobChange = 0x05,
|
||||
DefeatMsg = 0x06,
|
||||
GainExpMsg = 0x07,
|
||||
|
||||
LevelUpEffect = 0x0A,
|
||||
|
||||
ExpChainMsg = 0x0C,
|
||||
HpSetStat = 0x0D,
|
||||
DeathAnimation = 0x0E,
|
||||
CastInterrupt = 0x0F,
|
||||
|
||||
ActionStart = 0x11,
|
||||
|
||||
StatusEffectGain = 0x14,
|
||||
StatusEffectLose = 0x15,
|
||||
|
||||
HPFloatingText = 0x17,
|
||||
UpdateRestedExp = 0x018,
|
||||
Unk2 = 0x19,
|
||||
|
||||
Flee = 0x1B,
|
||||
|
||||
Unk3 = 0x20, // Animation related?
|
||||
|
||||
CombatIndicationShow = 0x22,
|
||||
|
||||
SpawnEffect = 0x25,
|
||||
ToggleInvisible = 0x26,
|
||||
|
||||
ToggleActionUnlock = 0x29,
|
||||
|
||||
UpdateUiExp = 0x2B,
|
||||
DmgTakenMsg = 0x2D,
|
||||
|
||||
SetTarget = 0x32,
|
||||
ToggleNameHidden = 0x36,
|
||||
|
||||
LimitbreakStart = 0x47,
|
||||
LimitbreakPartyStart = 0x48,
|
||||
BubbleText = 0x49,
|
||||
|
||||
DamageEffect = 0x50,
|
||||
RaiseAnimation = 0x51,
|
||||
TreasureScreenMsg = 0x57,
|
||||
SetOwnerId = 0x59,
|
||||
ItemRepairMsg = 0x5C,
|
||||
|
||||
DirectorInit = 0x64,
|
||||
DirectorClear = 0x65,
|
||||
|
||||
LeveStartAnim = 0x66,
|
||||
LeveStartError = 0x67,
|
||||
DirectorEObjMod = 0x6A,
|
||||
|
||||
DirectorUpdate = 0x6D,
|
||||
|
||||
ItemObtainMsg = 0x75,
|
||||
DutyQuestScreenMsg = 0x7B,
|
||||
|
||||
ItemObtainIcon = 0x84,
|
||||
FateItemFailMsg = 0x85,
|
||||
ItemFailMsg = 0x86,
|
||||
ActionLearnMsg1 = 0x87,
|
||||
|
||||
FreeEventPos = 0x8A,
|
||||
|
||||
SetBGM = 0xA1,
|
||||
|
||||
UnlockAetherCurrentMsg = 0xA4,
|
||||
|
||||
RemoveName = 0xA8,
|
||||
|
||||
ScreenFadeOut = 0xAA,
|
||||
|
||||
ZoneIn = 0xC8,
|
||||
ZoneInDefaultPos = 0xC9,
|
||||
|
||||
TeleportStart = 0xCB,
|
||||
|
||||
TeleportDone = 0xCD,
|
||||
TeleportDoneFadeOut = 0xCE,
|
||||
DespawnZoneScreenMsg = 0xCF,
|
||||
|
||||
InstanceSelectDlg = 0xD2,
|
||||
ActorDespawnEffect = 0xD4,
|
||||
|
||||
CompanionUnlock = 0xFD,
|
||||
ObtainBarding = 0xFE,
|
||||
EquipBarding = 0xFF,
|
||||
|
||||
CompanionMsg1 = 0x102,
|
||||
CompanionMsg2 = 0x103,
|
||||
ShowPetHotbar = 0x104,
|
||||
|
||||
ActionLearnMsg = 0x109,
|
||||
ActorFadeOut = 0x10A,
|
||||
ActorFadeIn = 0x10B,
|
||||
WithdrawMsg = 0x10C,
|
||||
OrderMinion = 0x10D,
|
||||
ToggleMinion = 0x10E,
|
||||
LearnMinion = 0x10F,
|
||||
ActorFateOut1 = 0x110,
|
||||
|
||||
Emote = 0x122,
|
||||
|
||||
SetPose = 0x127,
|
||||
|
||||
CraftingUnk = 0x12C,
|
||||
|
||||
GatheringSenseMsg = 0x130,
|
||||
PartyMsg = 0x131,
|
||||
GatheringSenseMsg1 = 0x132,
|
||||
|
||||
GatheringSenseMsg2 = 0x138,
|
||||
|
||||
FishingMsg = 0x140,
|
||||
|
||||
FishingBaitMsg = 0x145,
|
||||
|
||||
FishingReachMsg = 0x147,
|
||||
FishingFailMsg = 0x148,
|
||||
|
||||
MateriaConvertMsg = 0x15E,
|
||||
MeldSuccessMsg = 0x15F,
|
||||
MeldFailMsg = 0x160,
|
||||
MeldModeToggle = 0x161,
|
||||
|
||||
AetherRestoreMsg = 0x163,
|
||||
|
||||
DyeMsg = 0x168,
|
||||
|
||||
ToggleCrestMsg = 0x16A,
|
||||
ToggleBulkCrestMsg = 0x16B,
|
||||
MateriaRemoveMsg = 0x16C,
|
||||
GlamourCastMsg = 0x16D,
|
||||
GlamourRemoveMsg = 0x16E,
|
||||
|
||||
RelicInfuseMsg = 0x179,
|
||||
|
||||
AetherReductionDlg = 0x17D,
|
||||
|
||||
Unk6 = 0x19C,
|
||||
EObjAnimation = 0x19D,
|
||||
|
||||
SetTitle = 0x1F4,
|
||||
|
||||
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,
|
||||
|
||||
OpenRecommendationGuide = 0x200,
|
||||
ArmoryErrorMsg = 0x201,
|
||||
|
||||
AchievementPopup = 0x203,
|
||||
|
||||
Unk7 = 0x205, // LogMessage?
|
||||
AchievementMsg = 0x206,
|
||||
|
||||
SetItemLevel = 0x209,
|
||||
|
||||
ChallengeEntryCompleteMsg = 0x20B,
|
||||
ChallengeEntryUnlockMsg = 0x20C,
|
||||
|
||||
GilTrailMsg = 0x211,
|
||||
|
||||
SetMaxGearSets = 0x230,
|
||||
|
||||
SetCharaGearParamUI = 0x260,
|
||||
|
||||
GearSetEquipMsg = 0x321,
|
||||
|
||||
SetFestival = 0x386, // param1: festival.exd index
|
||||
|
||||
ToggleOrchestrionUnlock = 0x396,
|
||||
Dismount = 0x3A0,
|
||||
|
||||
// Duty Recorder
|
||||
BeginReplayAck = 0x3A1,
|
||||
EndReplayAck = 0x3A2,
|
||||
|
||||
// PvP Duel
|
||||
SetPvPState = 0x5E0, // param3 must be 6 to engage a duel (hardcoded in the client)
|
||||
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.
|
||||
|
||||
// Duty Action
|
||||
SetDutyActionId = 0x5E8, // ContentExAction
|
||||
SetDutyActionHud = 0x5E9, // disable/enable
|
||||
SetDutyActionActive = 0x5EA,
|
||||
SetDutyActionRemaining = 0x5EB,
|
||||
};
|
||||
|
||||
enum ClientActorControlType
|
||||
{
|
||||
ToggleSeathe = 0x01,
|
||||
ToggleAutoAttack = 0x02,
|
||||
ChangeTarget = 0x03,
|
||||
|
||||
DismountReq = 0x65,
|
||||
|
||||
RemoveStatusEffect = 0x68,
|
||||
CastCancel = 0x69,
|
||||
|
||||
Return = 0xC8, // return dead / accept raise
|
||||
FinishZoning = 0xC9,
|
||||
Teleport = 0xCA,
|
||||
|
||||
MarkPlayer = 0x12D, // Mark player, visible to party only
|
||||
SetTitleReq = 0x12E,
|
||||
TitleList = 0x12F,
|
||||
|
||||
UpdatedSeenHowTos = 0x133,
|
||||
AllotAttribute = 0x135,
|
||||
|
||||
ClearWaymarks = 0x13A,
|
||||
|
||||
HuntingLogDetails = 0x194,
|
||||
|
||||
Timers = 0x1AB,
|
||||
|
||||
DyeItem = 0x1B5,
|
||||
|
||||
RequestChocoboInventory = 0x1C4,
|
||||
|
||||
EmoteReq = 0x1F4,
|
||||
PersistantEmoteCancel = 0x1F7,
|
||||
PoseChange = 0x1F9,
|
||||
PoseReapply = 0x1FA,
|
||||
PoseCancel = 0x1FB,
|
||||
|
||||
AchievementCrit = 0x202,
|
||||
AchievementComp = 0x203,
|
||||
AchievementCatChat = 0x206,
|
||||
|
||||
|
||||
DirectorInitFinish = 0x321,
|
||||
|
||||
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
|
||||
|
||||
EnterTerritoryEventFinished = 0x330,
|
||||
RequestInstanceLeave = 0x333, // df menu button
|
||||
|
||||
AchievementCritReq = 0x3E8,
|
||||
AchievementList = 0x3E9,
|
||||
|
||||
CompanionAction = 0x6A4,
|
||||
CompanionSetBarding = 0x6A5,
|
||||
CompanionActionUnlock = 0x6A6,
|
||||
|
||||
OpenPerformInstrumentUI = 0x71C,
|
||||
|
||||
StartReplay = 0x7BC,
|
||||
EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..)
|
||||
|
||||
OpenDuelUI = 0x898, // Open a duel ui
|
||||
DuelRequestResult = 0x899, // either accept/reject
|
||||
|
||||
};
|
||||
|
||||
} /* ActorControl */
|
||||
} /* Common */
|
||||
} /* Core */
|
||||
|
||||
#endif
|
|
@ -227,7 +227,7 @@ namespace Packets {
|
|||
ReqCountdownCancel = 0x012D, // updated 4.2
|
||||
|
||||
ZoneLineHandler = 0x013C, // updated 4.3
|
||||
ActionHandler = 0x013D, // updated 4.3
|
||||
ClientActorControl = 0x013D, // updated 4.3
|
||||
DiscoveryHandler = 0x013E, // updated 4.3
|
||||
|
||||
SkillHandler = 0x0140, // updated 4.3
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <Util/UtilMath.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
|
@ -19,6 +20,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <Util/Util.h>
|
||||
#include <Util/UtilMath.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
|
@ -17,6 +18,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
extern Core::Framework g_framework;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <Util/Util.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
|
@ -14,6 +15,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <Util/Util.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
|
@ -16,6 +17,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::Action::EventAction::EventAction()
|
||||
{
|
||||
|
@ -50,7 +52,7 @@ void Core::Action::EventAction::onStart()
|
|||
|
||||
m_startTime = Util::getTimeMs();
|
||||
|
||||
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart,
|
||||
auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart,
|
||||
1, m_id, 0x4000004E );
|
||||
|
||||
if( m_pSource->isPlayer() )
|
||||
|
@ -77,7 +79,7 @@ void Core::Action::EventAction::onFinish()
|
|||
if( m_onActionFinishClb )
|
||||
m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional );
|
||||
|
||||
auto control = ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::CastStart, 0, m_id );
|
||||
auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastStart, 0, m_id );
|
||||
|
||||
if( !pEvent->hasPlayedScene() )
|
||||
m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 );
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <Util/Util.h>
|
||||
#include <Util/UtilMath.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
|
@ -18,6 +19,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::Action::EventItemAction::EventItemAction()
|
||||
{
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#include <Util/UtilMath.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Forwards.h"
|
||||
#include "Action/Action.h"
|
||||
|
@ -29,6 +30,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::Entity::Chara::Chara( ObjKind type ) :
|
||||
Actor( type )
|
||||
|
|
|
@ -7,11 +7,13 @@
|
|||
#include <Network/GamePacket.h>
|
||||
#include <Network/GamePacketNew.h>
|
||||
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
#include <Util/UtilMath.h>
|
||||
|
||||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
#include "Framework.h"
|
||||
extern Core::Framework g_fw;
|
||||
|
@ -79,7 +81,7 @@ void Core::Entity::EventObject::setState( uint8_t state )
|
|||
for( const auto& player : m_inRangePlayers )
|
||||
{
|
||||
ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() );
|
||||
eobjUpdatePacket.data().category = Common::ActorControlType::DirectorEObjMod;
|
||||
eobjUpdatePacket.data().category = ActorControlType::DirectorEObjMod;
|
||||
eobjUpdatePacket.data().param1 = state;
|
||||
|
||||
player->queuePacket( eobjUpdatePacket );
|
||||
|
@ -90,7 +92,7 @@ void Core::Entity::EventObject::setAnimationFlag( uint32_t flag, uint32_t animat
|
|||
for( const auto& player : m_inRangePlayers )
|
||||
{
|
||||
ZoneChannelPacket< FFXIVIpcActorControl142 > eobjUpdatePacket( getId(), player->getId() );
|
||||
eobjUpdatePacket.data().category = Common::ActorControlType::EObjAnimation;
|
||||
eobjUpdatePacket.data().category = ActorControlType::EObjAnimation;
|
||||
eobjUpdatePacket.data().param1 = flag;
|
||||
eobjUpdatePacket.data().param2 = animationFlag;
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include <Logging/Logger.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Session.h"
|
||||
#include "Player.h"
|
||||
|
@ -45,6 +46,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
// player constructor
|
||||
Core::Entity::Player::Player() :
|
||||
|
@ -1336,7 +1338,7 @@ void Core::Entity::Player::setTitle( uint16_t titleId )
|
|||
|
||||
m_activeTitle = titleId;
|
||||
|
||||
sendToInRangeSet( ActorControlPacket142( getId(), SetTitle, titleId ), true );
|
||||
sendToInRangeSet( ActorControlPacket142( getId(), ActorControlType::SetTitle, titleId ), true );
|
||||
}
|
||||
|
||||
void Core::Entity::Player::setEquipDisplayFlags( uint8_t state )
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <Common.h>
|
||||
#include <Network/GamePacket.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Zone/Zone.h"
|
||||
|
||||
|
@ -18,6 +19,7 @@ extern Core::Framework g_framework;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::InventoryPtr Core::Entity::Player::getInventory() const
|
||||
{
|
||||
|
@ -26,7 +28,7 @@ Core::InventoryPtr Core::Entity::Player::getInventory() const
|
|||
|
||||
void Core::Entity::Player::sendItemLevel()
|
||||
{
|
||||
queuePacket( ActorControlPacket142( getId(), SetItemLevel, getItemLevel(), 0 ) );
|
||||
queuePacket( ActorControlPacket142( getId(), ActorControlType::SetItemLevel, getItemLevel(), 0 ) );
|
||||
}
|
||||
|
||||
// TODO: This has to be redone and simplified
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <Network/PacketDef/Ipcs.h>
|
||||
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Actor/Player.h"
|
||||
|
||||
|
@ -12,6 +13,7 @@
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::Event::Director::Director( Core::Event::Director::DirectorType type, uint16_t contentId ) :
|
||||
m_contentId( contentId ),
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
#include "ItemContainer.h"
|
||||
#include "Item.h"
|
||||
#include "Framework.h"
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
|
@ -22,6 +23,7 @@ using namespace Core::Common;
|
|||
using namespace Core::Network;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::Inventory::Inventory( Core::Entity::Player* pOwner )
|
||||
{
|
||||
|
|
|
@ -66,7 +66,7 @@ Core::Network::GameConnection::GameConnection( Core::Network::HivePtr pHive,
|
|||
setZoneHandler( ClientZoneIpcType::FcInfoReqHandler, "FcInfoReqHandler", &GameConnection::fcInfoReqHandler );
|
||||
|
||||
setZoneHandler( ClientZoneIpcType::ZoneLineHandler, "ZoneLineHandler", &GameConnection::zoneLineHandler );
|
||||
setZoneHandler( ClientZoneIpcType::ActionHandler, "ActionHandler", &GameConnection::actionHandler );
|
||||
setZoneHandler( ClientZoneIpcType::ClientActorControl, "ClientActorControl", &GameConnection::clientActorControlHandler );
|
||||
|
||||
setZoneHandler( ClientZoneIpcType::DiscoveryHandler, "DiscoveryHandler", &GameConnection::discoveryHandler );
|
||||
|
||||
|
|
|
@ -98,7 +98,7 @@ public:
|
|||
DECLARE_HANDLER( updatePositionHandler );
|
||||
DECLARE_HANDLER( chatHandler );
|
||||
DECLARE_HANDLER( zoneLineHandler );
|
||||
DECLARE_HANDLER( actionHandler );
|
||||
DECLARE_HANDLER( clientActorControlHandler );
|
||||
DECLARE_HANDLER( inventoryModifyHandler );
|
||||
DECLARE_HANDLER( discoveryHandler );
|
||||
DECLARE_HANDLER( eventHandlerTalk );
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
#include <Logging/Logger.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Zone/Zone.h"
|
||||
#include "Zone/ZonePosition.h"
|
||||
|
@ -17,11 +18,6 @@
|
|||
#include "Network/PacketWrappers/ChatPacket.h"
|
||||
#include "Network/PacketWrappers/ServerNoticePacket.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket142.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket143.h"
|
||||
#include "Network/PacketWrappers/ActorControlPacket144.h"
|
||||
#include "Network/PacketWrappers/EventStartPacket.h"
|
||||
#include "Network/PacketWrappers/EventFinishPacket.h"
|
||||
#include "Network/PacketWrappers/PlayerStateFlagsPacket.h"
|
||||
|
||||
#include "DebugCommand/DebugCommandHandler.h"
|
||||
|
||||
|
@ -34,81 +30,16 @@
|
|||
#include "ServerZone.h"
|
||||
#include "Forwards.h"
|
||||
#include "Framework.h"
|
||||
#include <Network/PacketDef/Lobby/ServerLobbyDef.h>
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
enum ClientTrigger
|
||||
{
|
||||
ToggleSeathe = 0x01,
|
||||
ToggleAutoAttack = 0x02,
|
||||
ChangeTarget = 0x03,
|
||||
|
||||
Dismount = 0x65,
|
||||
|
||||
RemoveStatusEffect = 0x68,
|
||||
CastCancel = 0x69,
|
||||
|
||||
Return = 0xC8, // return dead / accept raise
|
||||
FinishZoning = 0xC9,
|
||||
Teleport = 0xCA,
|
||||
|
||||
MarkPlayer = 0x12D, // Mark player, visible to party only
|
||||
SetTitle = 0x12E,
|
||||
TitleList = 0x12F,
|
||||
|
||||
UpdatedSeenHowTos = 0x133,
|
||||
AllotAttribute = 0x135,
|
||||
|
||||
ClearWaymarks = 0x13A,
|
||||
|
||||
HuntingLogDetails = 0x194,
|
||||
|
||||
Timers = 0x1AB,
|
||||
|
||||
DyeItem = 0x1B5,
|
||||
|
||||
RequestChocoboInventory = 0x1C4,
|
||||
|
||||
Emote = 0x1F4,
|
||||
PersistantEmoteCancel = 0x1F7,
|
||||
PoseChange = 0x1F9,
|
||||
PoseReapply = 0x1FA,
|
||||
PoseCancel = 0x1FB,
|
||||
|
||||
AchievementCrit = 0x202,
|
||||
AchievementComp = 0x203,
|
||||
AchievementCatChat = 0x206,
|
||||
|
||||
|
||||
DirectorInitFinish = 0x321,
|
||||
|
||||
SomeDirectorEvent = 0x328, // unsure what exactly triggers it, starts director when returning to instance though
|
||||
|
||||
EnterTerritoryEventFinished = 0x330,
|
||||
RequestInstanceLeave = 0x333, // df menu button
|
||||
|
||||
AchievementCritReq = 0x3E8,
|
||||
AchievementList = 0x3E9,
|
||||
|
||||
CompanionAction = 0x6A4,
|
||||
CompanionSetBarding = 0x6A5,
|
||||
CompanionActionUnlock = 0x6A6,
|
||||
|
||||
OpenPerformInstrumentUI = 0x71C,
|
||||
|
||||
StartReplay = 0x7BC,
|
||||
EndReplay = 0x7BD, // request for restoring the original player state (actor, buff, gauge, etc..)
|
||||
|
||||
OpenDuelUI = 0x898, // Open a duel ui
|
||||
DuelRequestResult = 0x899, // either accept/reject
|
||||
|
||||
};
|
||||
|
||||
void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& inPacket,
|
||||
void Core::Network::GameConnection::clientActorControlHandler( const Packets::GamePacket& inPacket,
|
||||
Entity::Player& player )
|
||||
{
|
||||
auto pLog = g_fw.get< Logger >();
|
||||
|
@ -131,7 +62,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
|
|||
|
||||
switch( commandId )
|
||||
{
|
||||
case ClientTrigger::ToggleSeathe: // Toggle sheathe
|
||||
case ClientActorControlType::ToggleSeathe: // Toggle sheathe
|
||||
{
|
||||
if ( param11 == 1 )
|
||||
player.setStance( Entity::Chara::Stance::Active );
|
||||
|
@ -145,7 +76,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
|
|||
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::ToggleAutoAttack: // Toggle auto-attack
|
||||
case ClientActorControlType::ToggleAutoAttack: // Toggle auto-attack
|
||||
{
|
||||
if ( param11 == 1 )
|
||||
{
|
||||
|
@ -159,51 +90,51 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
|
|||
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::ChangeTarget: // Change target
|
||||
case ClientActorControlType::ChangeTarget: // Change target
|
||||
{
|
||||
|
||||
uint64_t targetId = inPacket.getValAt< uint64_t >( 0x24 );
|
||||
player.changeTarget( targetId );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::Dismount:
|
||||
case ClientActorControlType::DismountReq:
|
||||
{
|
||||
player.dismount();
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::RemoveStatusEffect: // Remove status (clicking it off)
|
||||
case ClientActorControlType::RemoveStatusEffect: // Remove status (clicking it off)
|
||||
{
|
||||
// todo: check if status can be removed by client from exd
|
||||
player.removeSingleStatusEffectById( static_cast< uint32_t >( param1 ) );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::CastCancel: // Cancel cast
|
||||
case ClientActorControlType::CastCancel: // Cancel cast
|
||||
{
|
||||
if( player.getCurrentAction() )
|
||||
player.getCurrentAction()->setInterrupted();
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::MarkPlayer: // Mark player
|
||||
case ClientActorControlType::MarkPlayer: // Mark player
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::SetTitle: // Set player title
|
||||
case ClientActorControlType::SetTitleReq: // Set player title
|
||||
{
|
||||
player.setTitle( static_cast< uint16_t >( param1 ) );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::TitleList: // Get title list
|
||||
case ClientActorControlType::TitleList: // Get title list
|
||||
{
|
||||
player.sendTitleList();
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::UpdatedSeenHowTos: // Update howtos seen
|
||||
case ClientActorControlType::UpdatedSeenHowTos: // Update howtos seen
|
||||
{
|
||||
uint32_t howToId = param11;
|
||||
player.updateHowtosSeen( howToId );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::Emote: // emote
|
||||
case ClientActorControlType::EmoteReq: // emote
|
||||
{
|
||||
uint64_t targetId = player.getTargetId();
|
||||
uint32_t emoteId = inPacket.getValAt< uint32_t >( 0x24 );
|
||||
|
@ -211,23 +142,23 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
|
|||
player.emote( emoteId, targetId );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::PersistantEmoteCancel: // cancel persistant emote
|
||||
case ClientActorControlType::PersistantEmoteCancel: // cancel persistant emote
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::PoseChange: // change pose
|
||||
case ClientActorControlType::PoseChange: // change pose
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::PoseReapply: // reapply pose
|
||||
case ClientActorControlType::PoseReapply: // reapply pose
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::PoseCancel: // cancel pose
|
||||
case ClientActorControlType::PoseCancel: // cancel pose
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::Return: // return dead / accept raise
|
||||
case ClientActorControlType::Return: // return dead / accept raise
|
||||
{
|
||||
switch ( static_cast < ResurrectType >( param1 ) )
|
||||
{
|
||||
|
@ -243,38 +174,38 @@ void Core::Network::GameConnection::actionHandler( const Packets::GamePacket& in
|
|||
}
|
||||
|
||||
}
|
||||
case ClientTrigger::FinishZoning: // Finish zoning
|
||||
case ClientActorControlType::FinishZoning: // Finish zoning
|
||||
{
|
||||
player.finishZoning();
|
||||
break;
|
||||
}
|
||||
|
||||
case ClientTrigger::Teleport: // Teleport
|
||||
case ClientActorControlType::Teleport: // Teleport
|
||||
{
|
||||
|
||||
player.teleportQuery( param11 );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::DyeItem: // Dye item
|
||||
case ClientActorControlType::DyeItem: // Dye item
|
||||
{
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::DirectorInitFinish: // Director init finish
|
||||
case ClientActorControlType::DirectorInitFinish: // Director init finish
|
||||
{
|
||||
player.getCurrentZone()->onInitDirector( player );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::SomeDirectorEvent: // Director init finish
|
||||
case ClientActorControlType::SomeDirectorEvent: // Director init finish
|
||||
{
|
||||
player.getCurrentZone()->onSomeDirectorEvent( player );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
|
||||
case ClientActorControlType::EnterTerritoryEventFinished:// this may still be something else. I think i have seen it elsewhere
|
||||
{
|
||||
player.setOnEnterEventDone( true );
|
||||
break;
|
||||
}
|
||||
case ClientTrigger::RequestInstanceLeave:
|
||||
case ClientActorControlType::RequestInstanceLeave:
|
||||
{
|
||||
// todo: apply cf penalty if applicable, make sure player isnt in combat
|
||||
player.exitInstance();
|
|
@ -5,6 +5,7 @@
|
|||
#include <Network/GamePacketNew.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include <unordered_map>
|
||||
|
||||
|
@ -36,6 +37,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
enum GmCommand
|
||||
{
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
#include <Common.h>
|
||||
#include <Network/CommonNetwork.h>
|
||||
#include <Network/GamePacketNew.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
#include <Logging/Logger.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/PacketDef/Chat/ServerChatDef.h>
|
||||
|
@ -44,6 +45,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
void Core::Network::GameConnection::fcInfoReqHandler( const Packets::GamePacket& inPacket,
|
||||
Entity::Player& player )
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/GamePacketNew.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
#include <Logging/Logger.h>
|
||||
|
||||
#include "Network/GameConnection.h"
|
||||
|
@ -32,6 +33,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
void Core::Network::GameConnection::skillHandler( const Packets::GamePacket& inPacket,
|
||||
Entity::Player& player )
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include <Util/Util.h>
|
||||
#include <Util/UtilMath.h>
|
||||
#include <Exd/ExdDataGenerated.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
|
||||
#include "Event/Director.h"
|
||||
#include "Event/EventDefs.h"
|
||||
|
@ -26,6 +27,7 @@ extern Core::Framework g_fw;
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
Core::InstanceContent::InstanceContent( boost::shared_ptr< Core::Data::InstanceContent > pInstanceConfiguration,
|
||||
uint32_t guId,
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <Network/CommonNetwork.h>
|
||||
#include <Network/PacketDef/Zone/ServerZoneDef.h>
|
||||
#include <Network/PacketContainer.h>
|
||||
#include <Network/CommonActorControl.h>
|
||||
#include <Database/DatabaseDef.h>
|
||||
#include <Network/PacketWrappers/ActorControlPacket143.h>
|
||||
|
||||
|
@ -39,10 +40,10 @@
|
|||
using namespace Core::Common;
|
||||
using namespace Core::Network::Packets;
|
||||
using namespace Core::Network::Packets::Server;
|
||||
using namespace Core::Network::ActorControl;
|
||||
|
||||
extern Core::Framework g_fw;
|
||||
|
||||
|
||||
/**
|
||||
* \brief
|
||||
*/
|
||||
|
@ -142,7 +143,7 @@ void Core::Zone::setCurrentFestival( uint16_t festivalId )
|
|||
{
|
||||
auto player = playerEntry.second;
|
||||
|
||||
ActorControlPacket143 enableFestival( player->getId(), SetFestival, m_currentFestivalId );
|
||||
ActorControlPacket143 enableFestival( player->getId(), ActorControlType::SetFestival, m_currentFestivalId );
|
||||
playerEntry.second->queuePacket( enableFestival );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue