diff --git a/src/common/Common.h b/src/common/Common.h index d48aeec3..6551338c 100644 --- a/src/common/Common.h +++ b/src/common/Common.h @@ -63,6 +63,36 @@ namespace Common { CardStand = 0x0E, }; + enum Stance : uint8_t + { + Passive = 0, + Active = 1, + }; + + enum class DisplayFlags : uint16_t + { + ActiveStance = 0x001, + Invisible = 0x020, + HideHead = 0x040, + HideWeapon = 0x080, + Faded = 0x100, + Visor = 0x800, + }; + + 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, diff --git a/src/common/Network/GamePacketNew.h b/src/common/Network/GamePacketNew.h index 473b6e12..d0c09326 100644 --- a/src/common/Network/GamePacketNew.h +++ b/src/common/Network/GamePacketNew.h @@ -41,6 +41,12 @@ boost::shared_ptr< ZoneChannelPacket< T > > makeZonePacket( Args... args ) return boost::make_shared< ZoneChannelPacket< T > >( args... ); } +template< class T, typename... Args > +boost::shared_ptr< T > makeWrappedPacket( Args... args ) +{ + return boost::make_shared< T >( args... ); +} + template< class T, typename... Args > boost::shared_ptr< ChatChannelPacket< T > > makeChatPacket( Args... args ) { diff --git a/src/servers/sapphire_zone/Action/ActionCast.cpp b/src/servers/sapphire_zone/Action/ActionCast.cpp index 2b57af7a..46d0aad1 100644 --- a/src/servers/sapphire_zone/Action/ActionCast.cpp +++ b/src/servers/sapphire_zone/Action/ActionCast.cpp @@ -92,8 +92,7 @@ void Core::Action::ActionCast::onInterrupt() //m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Occupied1 ); m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Casting ); - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 1, m_id, 0 ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); // Note: When cast interrupt from taking too much damage, set the last value to 1. This enables the cast interrupt effect. Example: // auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); diff --git a/src/servers/sapphire_zone/Action/ActionMount.cpp b/src/servers/sapphire_zone/Action/ActionMount.cpp index 2b1ec0da..6d713c30 100644 --- a/src/servers/sapphire_zone/Action/ActionMount.cpp +++ b/src/servers/sapphire_zone/Action/ActionMount.cpp @@ -97,8 +97,7 @@ void Core::Action::ActionMount::onInterrupt() //m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Occupied1 ); m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Casting ); - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 1, m_id, 0 ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); // Note: When cast interrupt from taking too much damage, set the last value to 1. This enables the cast interrupt effect. Example: // auto control = ActorControlPacket142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, 0 ); diff --git a/src/servers/sapphire_zone/Action/ActionTeleport.cpp b/src/servers/sapphire_zone/Action/ActionTeleport.cpp index 257bc27d..47afcf63 100644 --- a/src/servers/sapphire_zone/Action/ActionTeleport.cpp +++ b/src/servers/sapphire_zone/Action/ActionTeleport.cpp @@ -81,7 +81,7 @@ void Core::Action::ActionTeleport::onFinish() pPlayer->unsetStateFlag( PlayerStateFlag::Casting ); // TODO: not sure if this ever gets sent - //auto control = Network::Packets::Server::ActorControlPacket142( m_pSource->getId(), Common::ActorControlType::TeleportDone ); + //auto control = makeActorControl142( m_pSource->getId(), Common::ActorControlType::TeleportDone ); //m_pSource->sendToInRangeSet( control, false ); pPlayer->setZoningType( ZoneingType::Teleport ); @@ -101,8 +101,7 @@ void Core::Action::ActionTeleport::onInterrupt() m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Casting ); - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 0x04, m_id, 0 ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 0x04, m_id, 0 ); m_pSource->sendToInRangeSet( control, true ); } diff --git a/src/servers/sapphire_zone/Action/EventAction.cpp b/src/servers/sapphire_zone/Action/EventAction.cpp index 30b69cd3..2a1d9efa 100644 --- a/src/servers/sapphire_zone/Action/EventAction.cpp +++ b/src/servers/sapphire_zone/Action/EventAction.cpp @@ -52,8 +52,7 @@ void Core::Action::EventAction::onStart() m_startTime = Util::getTimeMs(); - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastStart, - 1, m_id, 0x4000004E ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastStart, 1, m_id, 0x4000004E ); if( m_pSource->isPlayer() ) { @@ -79,8 +78,7 @@ void Core::Action::EventAction::onFinish() if( m_onActionFinishClb ) m_onActionFinishClb( *m_pSource->getAsPlayer(), m_eventId, m_additional ); - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastStart, - 0, m_id ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastStart, 0, m_id ); if( !pEvent->hasPlayedScene() ) m_pSource->getAsPlayer()->eventFinish( m_eventId, 1 ); @@ -111,13 +109,11 @@ void Core::Action::EventAction::onInterrupt() try { - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 0x04, m_id ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 0x04, m_id ); if( m_pSource->isPlayer() ) { - auto control1 = boost::make_shared< ActorControlPacket143 >( m_pSource->getId(), ActorControlType::FreeEventPos, - m_eventId ); + auto control1 = makeActorControl143( m_pSource->getId(), ActorControlType::FreeEventPos, m_eventId ); //m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::NoCombat ); //m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Occupied1 ); diff --git a/src/servers/sapphire_zone/Action/EventItemAction.cpp b/src/servers/sapphire_zone/Action/EventItemAction.cpp index f1ac74e3..f82d8645 100644 --- a/src/servers/sapphire_zone/Action/EventItemAction.cpp +++ b/src/servers/sapphire_zone/Action/EventItemAction.cpp @@ -96,8 +96,7 @@ void Core::Action::EventItemAction::onInterrupt() try { - auto control = boost::make_shared< ActorControlPacket142 >( m_pSource->getId(), ActorControlType::CastInterrupt, - 0x219, 0x04, m_id ); + auto control = makeActorControl142( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 0x04, m_id ); if( m_pSource->isPlayer() ) { m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::Casting ); diff --git a/src/servers/sapphire_zone/Actor/Chara.cpp b/src/servers/sapphire_zone/Actor/Chara.cpp index b6407e8c..bea55026 100644 --- a/src/servers/sapphire_zone/Actor/Chara.cpp +++ b/src/servers/sapphire_zone/Actor/Chara.cpp @@ -26,6 +26,7 @@ #include "Player.h" #include "Zone/TerritoryMgr.h" #include "Framework.h" +#include "Common.h" extern Core::Framework g_fw; @@ -57,7 +58,7 @@ std::string Core::Entity::Chara::getName() const /*! \return current stance of the actors */ -Core::Entity::Chara::Stance Core::Entity::Chara::getStance() const +Core::Common::Stance Core::Entity::Chara::getStance() const { return m_currentStance; } @@ -188,7 +189,7 @@ void Core::Entity::Chara::setInvincibilityType( Common::InvincibilityType type ) } /*! \return current status of the actor */ -Core::Entity::Chara::ActorStatus Core::Entity::Chara::getStatus() const +Core::Common::ActorStatus Core::Entity::Chara::getStatus() const { return m_status; } @@ -216,15 +217,13 @@ void Core::Entity::Chara::die() // if the actor is a player, the update needs to be send to himself too bool selfNeedsUpdate = isPlayer(); - FFXIVPacketBasePtr packet - = boost::make_shared< ActorControlPacket142 >( m_id, SetStatus, static_cast< uint8_t >( ActorStatus::Dead ) ); + FFXIVPacketBasePtr packet = makeActorControl142( m_id, SetStatus, static_cast< uint8_t >( ActorStatus::Dead ) ); sendToInRangeSet( packet, selfNeedsUpdate ); // TODO: not all actor show the death animation when they die, some quest npcs might just despawn // although that might be handled by setting the HP to 1 and doing some script magic - FFXIVPacketBasePtr packet1 - = boost::make_shared< ActorControlPacket142 >( m_id, DeathAnimation, 0, 0, 0, 0x20 ); + FFXIVPacketBasePtr packet1 = makeActorControl142( m_id, DeathAnimation, 0, 0, 0, 0x20 ); sendToInRangeSet( packet1, selfNeedsUpdate ); } @@ -258,7 +257,7 @@ void Core::Entity::Chara::setStance( Stance stance ) { m_currentStance = stance; - FFXIVPacketBasePtr packet = boost::make_shared< ActorControlPacket142 >( m_id, ToggleWeapon, stance, 0 ); + FFXIVPacketBasePtr packet = makeActorControl142( m_id, ToggleWeapon, stance, 0 ); sendToInRangeSet( packet ); } @@ -289,7 +288,7 @@ Change the current target and propagate to in range players void Core::Entity::Chara::changeTarget( uint64_t targetId ) { setTargetId( targetId ); - FFXIVPacketBasePtr packet = boost::make_shared< ActorControlPacket144 >( m_id, SetTarget, 0, 0, 0, 0, targetId ); + FFXIVPacketBasePtr packet = makeActorControl144( m_id, SetTarget, 0, 0, 0, 0, targetId ); sendToInRangeSet( packet ); } @@ -648,7 +647,7 @@ void Core::Entity::Chara::removeStatusEffect( uint8_t effectSlotId ) auto pEffect = pEffectIt->second; pEffect->removeStatus(); - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), StatusEffectLose, pEffect->getId() ), isPlayer() ); + sendToInRangeSet( makeActorControl142( getId(), StatusEffectLose, pEffect->getId() ), isPlayer() ); m_statusEffectMap.erase( effectSlotId ); @@ -744,15 +743,15 @@ void Core::Entity::Chara::updateStatusEffects() if( thisTickDmg != 0 ) { takeDamage( thisTickDmg ); - sendToInRangeSet( - boost::make_shared< ActorControlPacket142 >( getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Damage ), thisTickDmg ) ); + sendToInRangeSet( makeActorControl142( getId(), HPFloatingText, 0, + static_cast< uint8_t >( ActionEffectType::Damage ), thisTickDmg ) ); } if( thisTickHeal != 0 ) { heal( thisTickDmg ); - sendToInRangeSet( - boost::make_shared< ActorControlPacket142 >( getId(), HPFloatingText, 0, static_cast< uint8_t >( ActionEffectType::Heal ), thisTickHeal ) ); + sendToInRangeSet( makeActorControl142( getId(), HPFloatingText, 0, + static_cast< uint8_t >( ActionEffectType::Heal ), thisTickHeal ) ); } } @@ -763,7 +762,7 @@ bool Core::Entity::Chara::hasStatusEffect( uint32_t id ) return false; } -Core::Common::ObjKind Chara::getModelType() const +Core::Common::ObjKind Chara::getObjKind() const { return m_modelType; } diff --git a/src/servers/sapphire_zone/Actor/Chara.h b/src/servers/sapphire_zone/Actor/Chara.h index 4eba3873..e792199b 100644 --- a/src/servers/sapphire_zone/Actor/Chara.h +++ b/src/servers/sapphire_zone/Actor/Chara.h @@ -21,46 +21,6 @@ namespace Entity { class Chara : public Actor { public: - enum Stance : uint8_t - { - Passive = 0, - Active = 1, - }; - - enum DisplayFlags : uint16_t - { - ActiveStance = 0x001, - Invisible = 0x020, - HideHead = 0x040, - HideWeapon = 0x080, - Faded = 0x100, - Visor = 0x800, - }; - - 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 - }; - - /*! ModelType as found in eventsystemdefine.exd */ - enum ModelType : uint8_t - { - Human = 1, - DemiHuman = 2, - Monster = 3, - SharedGroup = 4, - Parts = 5 - }; - struct ActorStats { uint32_t max_mp = 0; @@ -115,9 +75,9 @@ protected: /*! Last time the actor was updated ( in ms ) */ uint64_t m_lastUpdate; /*! Current stance of the actor */ - Stance m_currentStance; + Common::Stance m_currentStance; /*! Current staus of the actor */ - ActorStatus m_status; + Common::ActorStatus m_status; /*! Max HP of the actor ( based on job / class ) */ uint32_t m_maxHp; /*! Max MP of the actor ( based on job / class ) */ @@ -184,9 +144,9 @@ public: bool face( const Common::FFXIVARR_POSITION3& p ); - Stance getStance() const; + Common::Stance getStance() const; - void setStance( Stance stance ); + void setStance( Common::Stance stance ); ActorStats getStats() const; @@ -199,7 +159,7 @@ public: Common::ClassJob getClass() const; - Common::ObjKind getModelType() const; + Common::ObjKind getObjKind() const; uint8_t getClassAsInt() const; @@ -225,9 +185,9 @@ public: void die(); - ActorStatus getStatus() const; + Common::ActorStatus getStatus() const; - void setStatus( ActorStatus status ); + void setStatus( Common::ActorStatus status ); void handleScriptSkill( uint32_t type, uint16_t actionId, uint64_t param1, uint64_t param2, Entity::Chara& target ); diff --git a/src/servers/sapphire_zone/Actor/EventObject.cpp b/src/servers/sapphire_zone/Actor/EventObject.cpp index 28a3728d..f7c32bc2 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.cpp +++ b/src/servers/sapphire_zone/Actor/EventObject.cpp @@ -83,14 +83,14 @@ void Core::Entity::EventObject::setState( uint8_t state ) for( const auto& player : m_inRangePlayers ) { - player->queuePacket( boost::make_shared< ActorControlPacket142 >( getId(), DirectorEObjMod, state ) ); + player->queuePacket( makeActorControl142( getId(), DirectorEObjMod, state ) ); } } void Core::Entity::EventObject::setAnimationFlag( uint32_t flag, uint32_t animationFlag ) { for( const auto& player : m_inRangePlayers ) { - player->queuePacket( boost::make_shared< ActorControlPacket142 >( getId(), EObjAnimation, flag, animationFlag ) ); + player->queuePacket( makeActorControl142( getId(), EObjAnimation, flag, animationFlag ) ); } } diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 9ff6632d..e1438a7e 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -358,19 +358,19 @@ void Core::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) if( type == 1 ) // teleport { prepareZoning( data->territory, true, 1, 112 ); // TODO: Really? - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorDespawnEffect, 0x04 ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorDespawnEffect, 0x04 ) ); setZoningType( Common::ZoneingType::Teleport ); } else if( type == 2 ) // aethernet { prepareZoning( data->territory, true, 1, 112 ); - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorDespawnEffect, 0x04 ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorDespawnEffect, 0x04 ) ); setZoningType( Common::ZoneingType::Teleport ); } else if( type == 3 ) // return { prepareZoning( data->territory, true, 1, 111 ); - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorDespawnEffect, 0x03 ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorDespawnEffect, 0x03 ) ); setZoningType( Common::ZoneingType::Return ); } @@ -496,7 +496,7 @@ void Core::Entity::Player::registerAetheryte( uint8_t aetheryteId ) Util::valueToFlagByteIndexValue( aetheryteId, value, index ); m_aetheryte[index] |= value; - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), LearnTeleport, aetheryteId, 1 ) ); + queuePacket( makeActorControl143( getId(), LearnTeleport, aetheryteId, 1 ) ); } bool Core::Entity::Player::isAetheryteRegistered( uint8_t aetheryteId ) const @@ -587,7 +587,7 @@ void Core::Entity::Player::learnAction( uint16_t actionId ) m_unlocks[index] |= value; - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), ToggleActionUnlock, actionId, 1 ) ); + queuePacket( makeActorControl143( getId(), ToggleActionUnlock, actionId, 1 ) ); } void Core::Entity::Player::learnSong( uint8_t songId, uint32_t itemId ) @@ -598,7 +598,7 @@ void Core::Entity::Player::learnSong( uint8_t songId, uint32_t itemId ) m_orchestrion[index] |= value; - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), ToggleOrchestrionUnlock, songId, 1, itemId ) ); + queuePacket( makeActorControl143( getId(), ToggleOrchestrionUnlock, songId, 1, itemId ) ); } bool Core::Entity::Player::isActionLearned( uint8_t actionId ) const @@ -622,11 +622,11 @@ void Core::Entity::Player::gainExp( uint32_t amount ) uint32_t neededExpToLevelplus1 = pExdData->get< Core::Data::ParamGrow >( level + 1 )->expToNext; - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), GainExpMsg, static_cast< uint8_t >( getClass() ), amount ) ); + queuePacket( makeActorControl143( getId(), GainExpMsg, static_cast< uint8_t >( getClass() ), amount ) ); if( level >= 70 ) // temporary fix for leveling over levelcap { - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), amount ) ); + queuePacket( makeActorControl143( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), amount ) ); return; } @@ -638,12 +638,12 @@ void Core::Entity::Player::gainExp( uint32_t amount ) ( currentExp + amount - neededExpToLevel ); setExp( amount ); gainLevel(); - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), amount ) ); + queuePacket( makeActorControl143( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), amount ) ); } else { - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), currentExp + amount ) ); + queuePacket( makeActorControl143( getId(), UpdateUiExp, static_cast< uint8_t >( getClass() ), currentExp + amount ) ); setExp( currentExp + amount ); } @@ -672,7 +672,7 @@ void Core::Entity::Player::gainLevel() effectListPacket->data().max_mp = getMaxMp(); sendToInRangeSet( effectListPacket, true ); - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), LevelUpEffect, static_cast< uint8_t >( getClass() ), + sendToInRangeSet( makeActorControl142( getId(), LevelUpEffect, static_cast< uint8_t >( getClass() ), getLevel(), getLevel() - 1 ), true ); auto classInfoPacket = makeZonePacket< FFXIVIpcUpdateClassInfo >( getId() ); @@ -752,7 +752,7 @@ void Core::Entity::Player::setClassJob( Common::ClassJob classJob ) classInfoPacket->data().level = getLevel(); queuePacket( classInfoPacket ); - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ClassJobChange, 0x04 ), true ); + sendToInRangeSet( makeActorControl142( getId(), ClassJobChange, 0x04 ), true ); sendStatusUpdate( true ); } @@ -857,7 +857,7 @@ void Core::Entity::Player::despawn( Entity::PlayerPtr pTarget ) pPlayer->freePlayerSpawnId( getId() ); - pPlayer->queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), DespawnZoneScreenMsg, 0x04, getId(), 0x01 ) ); + pPlayer->queuePacket( makeActorControl143( getId(), DespawnZoneScreenMsg, 0x04, getId(), 0x01 ) ); } Core::Entity::ActorPtr Core::Entity::Player::lookupTargetById( uint64_t targetId ) @@ -953,7 +953,7 @@ void Core::Entity::Player::setStateFlag( Common::PlayerStateFlag flag ) auto newOnlineStatus = getOnlineStatus(); if( prevOnlineStatus != newOnlineStatus ) - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), SetStatusIcon, + sendToInRangeSet( makeActorControl142( getId(), SetStatusIcon, static_cast< uint8_t >( getOnlineStatus() ) ), true ); } @@ -990,8 +990,7 @@ void Core::Entity::Player::unsetStateFlag( Common::PlayerStateFlag flag ) auto newOnlineStatus = getOnlineStatus(); if( prevOnlineStatus != newOnlineStatus ) - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), SetStatusIcon, - static_cast< uint8_t >( getOnlineStatus() ) ), true ); + sendToInRangeSet( makeActorControl142( getId(), SetStatusIcon, static_cast< uint8_t >( getOnlineStatus() ) ), true ); } void Core::Entity::Player::update( int64_t currTime ) @@ -1032,7 +1031,7 @@ void Core::Entity::Player::update( int64_t currTime ) if( !checkAction() ) { - if( m_targetId && m_currentStance == Entity::Chara::Stance::Active && isAutoattackOn() ) + if( m_targetId && m_currentStance == Common::Stance::Active && isAutoattackOn() ) { auto mainWeap = getItemAt( Common::GearSet0, Common::GearSetSlot::MainHand ); @@ -1104,7 +1103,7 @@ void Core::Entity::Player::setHomepoint( uint8_t aetheryteId ) { m_homePoint = aetheryteId; - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), SetHomepoint, aetheryteId ) ); + queuePacket( makeActorControl143( getId(), SetHomepoint, aetheryteId ) ); } /*! get homepoint */ @@ -1364,7 +1363,7 @@ void Core::Entity::Player::setTitle( uint16_t titleId ) m_activeTitle = titleId; - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), SetTitle, titleId ), true ); + sendToInRangeSet( makeActorControl142( getId(), SetTitle, titleId ), true ); } void Core::Entity::Player::setEquipDisplayFlags( uint8_t state ) @@ -1383,8 +1382,9 @@ uint8_t Core::Entity::Player::getEquipDisplayFlags() const void Core::Entity::Player::mount( uint32_t id ) { m_mount = id; - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorControlType::SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Mounted )), true ); - sendToInRangeSet( boost::make_shared< ActorControlPacket143 >( getId(), 0x39e, 12 ), true ); //? + sendToInRangeSet( makeActorControl142( getId(), ActorControlType::SetStatus, + static_cast< uint8_t >( Common::ActorStatus::Mounted ) ), true ); + sendToInRangeSet( makeActorControl143( getId(), 0x39e, 12 ), true ); //? auto mountPacket = makeZonePacket< FFXIVIpcMount >( getId() ); mountPacket->data().id = id; @@ -1393,9 +1393,9 @@ void Core::Entity::Player::mount( uint32_t id ) void Core::Entity::Player::dismount() { - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorControlType::SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle )), true ); - sendToInRangeSet( boost::make_shared< ActorControlPacket143 >( getId(), ActorControlType::Dismount, 1 ), true ); + sendToInRangeSet( makeActorControl142( getId(), ActorControlType::SetStatus, + static_cast< uint8_t >( Common::ActorStatus::Idle ) ), true ); + sendToInRangeSet( makeActorControl143( getId(), ActorControlType::Dismount, 1 ), true ); m_mount = 0; } @@ -1541,7 +1541,7 @@ void Core::Entity::Player::sendZonePackets() if( isLogin() ) { - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), SetCharaGearParamUI, m_equipDisplayFlags, 1 ) ); + queuePacket( makeActorControl143( getId(), SetCharaGearParamUI, m_equipDisplayFlags, 1 ) ); } // set flags, will be reset automatically by zoning ( only on client side though ) @@ -1623,8 +1623,8 @@ void Core::Entity::Player::sendTitleList() void Core::Entity::Player::sendZoneInPackets( uint32_t param1, uint32_t param2 = 0, uint32_t param3 = 0, uint32_t param4 = 0, bool shouldSetStatus = false ) { - auto zoneInPacket = boost::make_shared< ActorControlPacket143 >( getId(), ZoneIn, param1, param2, param3, param4 ); - auto SetStatusPacket = boost::make_shared< ActorControlPacket142 >( getId(), SetStatus, static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ); + auto zoneInPacket = makeActorControl143( getId(), ZoneIn, param1, param2, param3, param4 ); + auto SetStatusPacket = makeActorControl142( getId(), SetStatus, static_cast< uint8_t >( Common::ActorStatus::Idle ) ); if( !getGmInvis() ) sendToInRangeSet( zoneInPacket, true ); @@ -1654,11 +1654,11 @@ void Core::Entity::Player::finishZoning() case ZoneingType::Return: case ZoneingType::ReturnDead: { - if( getStatus() == Entity::Chara::ActorStatus::Dead ) + if( getStatus() == Common::ActorStatus::Dead ) { resetHp(); resetMp(); - setStatus( Entity::Chara::ActorStatus::Idle ); + setStatus( Common::ActorStatus::Idle ); sendZoneInPackets( 0x01, 0x01, 0, 111, true ); } else @@ -1673,13 +1673,13 @@ void Core::Entity::Player::finishZoning() void Core::Entity::Player::emote( uint32_t emoteId, uint64_t targetId, bool isSilent ) { - sendToInRangeSet( boost::make_shared< ActorControlPacket144 >( getId(), ActorControlType::Emote, - emoteId, 0, isSilent ? 1 : 0, 0, targetId ) ); + sendToInRangeSet( makeActorControl144( getId(), ActorControlType::Emote, + emoteId, 0, isSilent ? 1 : 0, 0, targetId ) ); } void Core::Entity::Player::emoteInterrupt() { - sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( getId(), ActorControlType::EmoteInterrupt ) ); + sendToInRangeSet( makeActorControl142( getId(), ActorControlType::EmoteInterrupt ) ); } void Core::Entity::Player::teleportQuery( uint16_t aetheryteId ) @@ -1702,7 +1702,7 @@ void Core::Entity::Player::teleportQuery( uint16_t aetheryteId ) bool insufficientGil = getCurrency( Common::CurrencyType::Gil ) < cost; // TODO: figure out what param1 really does - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), TeleportStart, insufficientGil ? 2 : 0, aetheryteId ) ); + queuePacket( makeActorControl143( getId(), TeleportStart, insufficientGil ? 2 : 0, aetheryteId ) ); if( !insufficientGil ) { diff --git a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp index 1305fcf2..87e13d5d 100644 --- a/src/servers/sapphire_zone/Actor/PlayerInventory.cpp +++ b/src/servers/sapphire_zone/Actor/PlayerInventory.cpp @@ -112,7 +112,7 @@ void Core::Entity::Player::initInventory() void Core::Entity::Player::sendItemLevel() { - queuePacket( boost::make_shared< ActorControlPacket142 >( getId(), SetItemLevel, getItemLevel(), 0 ) ); + queuePacket( makeActorControl142( getId(), SetItemLevel, getItemLevel(), 0 ) ); } void Core::Entity::Player::equipWeapon( ItemPtr pItem ) @@ -259,8 +259,7 @@ void Core::Entity::Player::addCrystal( Common::CrystalType type, uint32_t amount Common::InventoryType::Crystal, *currItem ); queuePacket( invUpdate ); - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), ItemObtainIcon, - static_cast< uint8_t >( type ) + 1, amount ) ); + queuePacket( makeActorControl143( getId(), ItemObtainIcon, static_cast< uint8_t >( type ) + 1, amount ) ); } void Core::Entity::Player::removeCrystal( Common::CrystalType type, uint32_t amount ) @@ -520,7 +519,7 @@ Core::ItemPtr Core::Entity::Player::addItem( uint32_t catalogId, uint32_t quanti // return existing stack if we have no overflow - items fit into a preexisting stack if( quantity == 0 ) { - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), ItemObtainIcon, catalogId, originalQuantity ) ); + queuePacket( makeActorControl143( getId(), ItemObtainIcon, catalogId, originalQuantity ) ); return item; } @@ -551,7 +550,7 @@ Core::ItemPtr Core::Entity::Player::addItem( uint32_t catalogId, uint32_t quanti auto invUpdate = boost::make_shared< UpdateInventorySlotPacket >( getId(), freeBagSlot.second, freeBagSlot.first, *item ); queuePacket( invUpdate ); - queuePacket( boost::make_shared< ActorControlPacket143 >( getId(), ItemObtainIcon, catalogId, originalQuantity ) ); + queuePacket( makeActorControl143( getId(), ItemObtainIcon, catalogId, originalQuantity ) ); } return item; diff --git a/src/servers/sapphire_zone/Event/Director.cpp b/src/servers/sapphire_zone/Event/Director.cpp index 297cbefd..3237c114 100644 --- a/src/servers/sapphire_zone/Event/Director.cpp +++ b/src/servers/sapphire_zone/Event/Director.cpp @@ -43,7 +43,7 @@ uint8_t Core::Event::Director::getSequence() const void Core::Event::Director::sendDirectorClear( Core::Entity::Player& player ) const { - player.queuePacket( boost::make_shared< ActorControlPacket143 >( player.getId(), DirectorClear, m_directorId ) ); + player.queuePacket( makeActorControl143( player.getId(), DirectorClear, m_directorId ) ); } void Core::Event::Director::sendDirectorVars( Core::Entity::Player& player ) const @@ -58,8 +58,7 @@ void Core::Event::Director::sendDirectorVars( Core::Entity::Player& player ) con void Core::Event::Director::sendDirectorInit( Core::Entity::Player& player ) const { - player.queuePacket( boost::make_shared< ActorControlPacket143 >( player.getId(), DirectorInit, - m_directorId, m_contentId ) ); + player.queuePacket( makeActorControl143( player.getId(), DirectorInit, m_directorId, m_contentId ) ); } Core::Event::Director::DirectorType Core::Event::Director::getType() const diff --git a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp index 8f69d406..ef654d9f 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ActionHandler.cpp @@ -63,7 +63,7 @@ void Core::Network::GameConnection::actionHandler( const Packets::FFXIVARR_PACKE pExdData->get< Core::Data::Action >( action )->name + " | " + std::to_string( targetId ) + " )" ); - player.queuePacket( boost::make_shared< ActorControlPacket142 >( player.getId(), ActorControlType::ActionStart, 0x01, action ) ); + player.queuePacket( makeActorControl142( player.getId(), ActorControlType::ActionStart, 0x01, action ) ); if( action == 5 ) { diff --git a/src/servers/sapphire_zone/Network/Handlers/CFHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/CFHandlers.cpp index c191dffd..dd49ed6d 100644 --- a/src/servers/sapphire_zone/Network/Handlers/CFHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/CFHandlers.cpp @@ -10,9 +10,6 @@ #include "Network/GameConnection.h" #include "Network/PacketWrappers/ServerNoticePacket.h" -#include "Network/PacketWrappers/ActorControlPacket142.h" -#include "Network/PacketWrappers/ActorControlPacket143.h" -#include "Network/PacketWrappers/ActorControlPacket144.h" #include "Network/PacketWrappers/PlayerStateFlagsPacket.h" #include "Framework.h" diff --git a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp index bcad5346..8da0b5ca 100644 --- a/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/ClientTriggerHandler.cpp @@ -69,14 +69,14 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR case ClientTriggerType::ToggleSheathe: // Toggle sheathe { if ( param11 == 1 ) - player.setStance( Entity::Chara::Stance::Active ); + player.setStance( Common::Stance::Active ); else { - player.setStance( Entity::Chara::Stance::Passive ); + player.setStance( Common::Stance::Passive ); player.setAutoattack( false ); } - player.sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( player.getId(), 0, param11, 1 ) ); + player.sendToInRangeSet( makeActorControl142( player.getId(), 0, param11, 1 ) ); break; } @@ -85,12 +85,12 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR if ( param11 == 1 ) { player.setAutoattack( true ); - player.setStance( Entity::Chara::Stance::Active ); + player.setStance( Common::Stance::Active ); } else player.setAutoattack( false ); - player.sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( player.getId(), 1, param11, 1 ) ); + player.sendToInRangeSet( makeActorControl142( player.getId(), 1, param11, 1 ) ); break; } @@ -156,19 +156,19 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR if( isPersistent ) { - player.setStance( Entity::Chara::Stance::Passive ); + player.setStance( Common::Stance::Passive ); player.setAutoattack( false ); player.setPersistentEmote( emoteData->emoteMode ); - player.setStatus( Entity::Chara::ActorStatus::EmoteMode ); + player.setStatus( Common::ActorStatus::EmoteMode ); - player.sendToInRangeSet( - boost::make_shared< ActorControlPacket142 >( player.getId(), ActorControlType::SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::EmoteMode ), emoteData->hasCancelEmote ? 1 : 0 ), true ); + player.sendToInRangeSet( makeActorControl142( player.getId(), ActorControlType::SetStatus, + static_cast< uint8_t >( Common::ActorStatus::EmoteMode ), + emoteData->hasCancelEmote ? 1 : 0 ), true ); } if( emoteData->drawsWeapon ) { - player.setStance( Entity::Chara::Stance::Active ); + player.setStance( Common::Stance::Active ); } break; @@ -182,10 +182,9 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR { player.setPersistentEmote( 0 ); player.emoteInterrupt(); - player.setStatus( Entity::Chara::ActorStatus::Idle ); - auto pSetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(), - SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ); + player.setStatus( Common::ActorStatus::Idle ); + auto pSetStatusPacket = makeActorControl142( player.getId(), SetStatus, + static_cast< uint8_t >( Common::ActorStatus::Idle ) ); player.sendToInRangeSet( pSetStatusPacket ); break; } @@ -193,18 +192,14 @@ void Core::Network::GameConnection::clientTriggerHandler( const Packets::FFXIVAR case ClientTriggerType::PoseReapply: // reapply pose { player.setPose( param12 ); - auto pSetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(), - SetPose, - param11, param12 ); + auto pSetStatusPacket = makeActorControl142( player.getId(), SetPose, param11, param12 ); player.sendToInRangeSet( pSetStatusPacket, true ); break; } case ClientTriggerType::PoseCancel: // cancel pose { player.setPose( param12 ); - auto pSetStatusPacket = boost::make_shared< ActorControlPacket142 >( player.getId(), - SetPose, - param11, param12 ); + auto pSetStatusPacket = makeActorControl142( player.getId(), SetPose, param11, param12 ); player.sendToInRangeSet( pSetStatusPacket, true ); break; } diff --git a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp index 69d2dd57..c2fb7132 100644 --- a/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/EventHandlers.cpp @@ -11,9 +11,6 @@ #include "Network/GameConnection.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" diff --git a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp index ab58ab39..f852ccdc 100644 --- a/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/GMCommandHandlers.cpp @@ -208,7 +208,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_R } case GmCommand::Speed: { - targetPlayer->queuePacket( boost::make_shared< ActorControlPacket143 >( player.getId(), Flee, param1 ) ); + targetPlayer->queuePacket( makeActorControl143( player.getId(), Flee, param1 ) ); player.sendNotice( "Speed for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); break; } @@ -245,7 +245,7 @@ void Core::Network::GameConnection::gm1Handler( const Packets::FFXIVARR_PACKET_R strcpy( searchInfoPacket->data().searchMessage, targetPlayer->getSearchMessage() ); targetPlayer->queuePacket( searchInfoPacket ); - targetPlayer->sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( player.getId(), SetStatusIcon, + targetPlayer->sendToInRangeSet( makeActorControl142( player.getId(), SetStatusIcon, static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); player.sendNotice( "Icon for " + targetPlayer->getName() + " was set to " + std::to_string( param1 ) ); @@ -529,13 +529,14 @@ void Core::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_R { targetPlayer->resetHp(); targetPlayer->resetMp(); - targetPlayer->setStatus( Entity::Chara::ActorStatus::Idle ); + targetPlayer->setStatus( Common::ActorStatus::Idle ); targetPlayer->sendZoneInPackets( 0x01, 0x01, 0, 113, true ); - targetPlayer->sendToInRangeSet( boost::make_shared< ActorControlPacket143 >( player.getId(), ZoneIn, 0x01, 0x01, 0, 113 ), true ); - targetPlayer->sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( player.getId(), SetStatus, - static_cast< uint8_t >( Entity::Chara::ActorStatus::Idle ) ), true ); - player.sendNotice( "Raised " + targetPlayer->getName() ); + + targetPlayer->sendToInRangeSet( makeActorControl143( player.getId(), ZoneIn, 0x01, 0x01, 0, 113 ), true ); + targetPlayer->sendToInRangeSet( makeActorControl142( player.getId(), SetStatus, + static_cast< uint8_t >( Common::ActorStatus::Idle ) ), true ); + player.sendNotice( "Raised " + targetPlayer->getName() ); break; } case GmCommand::Jump: @@ -545,7 +546,7 @@ void Core::Network::GameConnection::gm2Handler( const Packets::FFXIVARR_PACKET_R player.setZone( targetPlayer->getZoneId() ); } player.changePosition( targetActor->getPos().x, targetActor->getPos().y, targetActor->getPos().z, - targetActor->getRot() ); + targetActor->getRot() ); player.sendNotice( "Jumping to " + targetPlayer->getName() ); break; } diff --git a/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp b/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp index 91e962f2..8b58fbe9 100644 --- a/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/InventoryHandler.cpp @@ -9,9 +9,6 @@ #include "Network/GameConnection.h" #include "Network/PacketWrappers/ServerNoticePacket.h" -#include "Network/PacketWrappers/ActorControlPacket142.h" -#include "Network/PacketWrappers/ActorControlPacket143.h" -#include "Network/PacketWrappers/ActorControlPacket144.h" #include "Zone/Zone.h" #include "Zone/ZonePosition.h" diff --git a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp index f693b86d..0a093c81 100644 --- a/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp +++ b/src/servers/sapphire_zone/Network/Handlers/PacketHandlers.cpp @@ -91,8 +91,8 @@ void Core::Network::GameConnection::setSearchInfoHandler( const Packets::FFXIVAR strcpy( searchInfoPacket->data().searchMessage, player.getSearchMessage() ); queueOutPacket( searchInfoPacket ); - player.sendToInRangeSet( boost::make_shared< ActorControlPacket142 >( player.getId(), SetStatusIcon, - static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); + player.sendToInRangeSet( makeActorControl142( player.getId(), SetStatusIcon, + static_cast< uint8_t >( player.getOnlineStatus() ) ), true ); } void Core::Network::GameConnection::reqSearchInfoHandler( const Core::Network::Packets::FFXIVARR_PACKET_RAW& inPacket, diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket142.h b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket142.h index a453baa9..357f5eb5 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket142.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket142.h @@ -41,6 +41,12 @@ private: }; }; +template< typename... Args > +boost::shared_ptr< ActorControlPacket142 > makeActorControl142( Args... args ) +{ + return boost::make_shared< ActorControlPacket142 >( args... ); +} + } } } diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket143.h b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket143.h index 172a5ebc..fee5782d 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket143.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket143.h @@ -44,6 +44,12 @@ private: }; }; +template< typename... Args > +boost::shared_ptr< ActorControlPacket143 > makeActorControl143( Args... args ) +{ + return boost::make_shared< ActorControlPacket143 >( args... ); +} + } } } diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket144.h b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket144.h index 474aa463..07265ed5 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket144.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/ActorControlPacket144.h @@ -42,6 +42,12 @@ private: }; }; +template< typename... Args > +boost::shared_ptr< ActorControlPacket144 > makeActorControl144( Args... args ) +{ + return boost::make_shared< ActorControlPacket144 >( args... ); +} + } } } diff --git a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h index 0bb69151..fcf7e5a4 100644 --- a/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h +++ b/src/servers/sapphire_zone/Network/PacketWrappers/PlayerSpawnPacket.h @@ -76,7 +76,7 @@ namespace Server { //m_data.u23 = 0x04; //m_data.u24 = 256; m_data.state = static_cast< uint8_t >( player.getStatus() ); - m_data.modelType = player.getModelType(); + m_data.modelType = player.getObjKind(); if( target.getId() == player.getId() ) { m_data.spawnIndex = 0x00; @@ -93,22 +93,22 @@ namespace Server { if( player.getZoningType() != Common::ZoneingType::None || player.getGmInvis() == true ) { - m_data.displayFlags |= Entity::Chara::DisplayFlags::Invisible; + m_data.displayFlags |= static_cast< uint8_t >( Common::DisplayFlags::Invisible ); } if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideHead ) { - m_data.displayFlags |= Entity::Chara::DisplayFlags::HideHead; + m_data.displayFlags |= static_cast< uint8_t >( Common::DisplayFlags::HideHead ); } if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideWeapon ) { - m_data.displayFlags |= Entity::Chara::DisplayFlags::HideWeapon; + m_data.displayFlags |= static_cast< uint8_t >( Common::DisplayFlags::HideWeapon ); } if( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::Visor ) { - m_data.displayFlags |= Entity::Chara::DisplayFlags::Visor; + m_data.displayFlags |= static_cast< uint8_t >( Common::DisplayFlags::Visor ); } if( !( player.getEquipDisplayFlags() & Core::Common::EquipDisplayFlags::HideLegacyMark ) ) diff --git a/src/servers/sapphire_zone/Zone/InstanceContent.cpp b/src/servers/sapphire_zone/Zone/InstanceContent.cpp index c920b6b3..b267ab6d 100644 --- a/src/servers/sapphire_zone/Zone/InstanceContent.cpp +++ b/src/servers/sapphire_zone/Zone/InstanceContent.cpp @@ -134,9 +134,9 @@ void Core::InstanceContent::onUpdate( uint32_t currTime ) for( const auto& playerIt : m_playerMap ) { auto pPlayer = playerIt.second; - pPlayer->queuePacket( - boost::make_shared< ActorControlPacket143 >( pPlayer->getId(), DirectorUpdate, - getDirectorId(), 0x40000001, m_instanceConfiguration->timeLimitmin * 60u ) ); + pPlayer->queuePacket( makeActorControl143( pPlayer->getId(), DirectorUpdate, + getDirectorId(), 0x40000001, + m_instanceConfiguration->timeLimitmin * 60u ) ); } if( m_pEntranceEObj ) @@ -177,7 +177,7 @@ void Core::InstanceContent::onInitDirector( Entity::Player& player ) void Core::InstanceContent::onDirectorSync( Entity::Player& player ) { - player.queuePacket( boost::make_shared< ActorControlPacket143 >( player.getId(), DirectorUpdate, 0x00110001, 0x80000000, 1 ) ); + player.queuePacket( makeActorControl143( player.getId(), DirectorUpdate, 0x00110001, 0x80000000, 1 ) ); } @@ -283,7 +283,7 @@ void Core::InstanceContent::startQte() for( const auto& playerIt : m_playerMap ) { auto player = playerIt.second; - player->queuePacket( boost::make_shared< ActorControlPacket143 >( player->getId(), DirectorUpdate, getDirectorId(), 0x8000000A ) ); + player->queuePacket( makeActorControl143( player->getId(), DirectorUpdate, getDirectorId(), 0x8000000A ) ); } } @@ -293,7 +293,7 @@ void Core::InstanceContent::startEventCutscene() for( const auto& playerIt : m_playerMap ) { auto player = playerIt.second; - player->queuePacket( boost::make_shared< ActorControlPacket143 >( player->getId(), DirectorUpdate, getDirectorId(), 0x80000008 ) ); + player->queuePacket( makeActorControl143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000008 ) ); } } @@ -302,7 +302,7 @@ void Core::InstanceContent::endEventCutscene() for( const auto& playerIt : m_playerMap ) { auto player = playerIt.second; - player->queuePacket( boost::make_shared< ActorControlPacket143 >( player->getId(), DirectorUpdate, getDirectorId(), 0x80000009 ) ); + player->queuePacket( makeActorControl143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000009 ) ); } } @@ -411,13 +411,13 @@ void Core::InstanceContent::setCurrentBGM( uint16_t bgmIndex ) // note: retail do send a BGM_MUTE(1) first before any BGM transition, but YOLO in this case. // also do note that this code can't control the bgm granularly. (i.e. per player for WoD submap.) oops. // player->queuePacket( ActorControlPacket143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, 1 ) ); - player->queuePacket( boost::make_shared< ActorControlPacket143 >( player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmIndex ) ); + player->queuePacket( makeActorControl143( player->getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmIndex ) ); } } void Core::InstanceContent::setPlayerBGM( Core::Entity::Player& player, uint16_t bgmId ) { - player.queuePacket( boost::make_shared< ActorControlPacket143 >( player.getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmId ) ); + player.queuePacket( makeActorControl143( player.getId(), DirectorUpdate, getDirectorId(), 0x80000001, bgmId ) ); } uint16_t Core::InstanceContent::getCurrentBGM() const diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index f9cfb9a5..14cae262 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -142,7 +142,7 @@ void Core::Zone::setCurrentFestival( uint16_t festivalId ) { auto player = playerEntry.second; - auto enableFestival = boost::make_shared< ActorControlPacket143 >( player->getId(), SetFestival, m_currentFestivalId ); + auto enableFestival = makeActorControl143( player->getId(), SetFestival, m_currentFestivalId ); playerEntry.second->queuePacket( enableFestival ); } } diff --git a/src/tools/mob_parse/main.cpp b/src/tools/mob_parse/main.cpp index 84427731..5a1dfe4a 100644 --- a/src/tools/mob_parse/main.cpp +++ b/src/tools/mob_parse/main.cpp @@ -299,7 +299,7 @@ int main() //g_log.info( "|----> " + std::to_string( instance.bNPCBase ) + " " + std::to_string( instance.posX ) + ", " + std::to_string( instance.posY ) + ", " + std::to_string( instance.posZ ) ); - g_log.info( "|----> " + std::to_string( instance.bNPCBase ) + + /*g_log.info( "|----> " + std::to_string( instance.bNPCBase ) + " " + std::to_string( instance.mainWeaponModel ) + ", " + std::to_string( instance.secWeaponModel ) + ", " + std::to_string( instance.aggressionMode ) + @@ -307,7 +307,30 @@ int main() ", " + std::to_string( instance.onlineStatus ) + ", " + std::to_string( instance.pose ) + ", " + std::to_string( instance.modelChara ) + - ", " + std::to_string( instance.displayFlags ) + ", " + modelStr + ", " + cusStr + ", " + std::to_string( instance.gimmickId ) ); + ", " + std::to_string( instance.displayFlags ) + ", " + modelStr + ", " + cusStr + ", " + std::to_string( instance.gimmickId ) );*/ + + g_log.info( "|----> " + std::to_string( instance.bNPCBase ) + + " " + std::to_string( instance.u2ab ) + + ", " + std::to_string( instance.u2b ) + + ", " + std::to_string( instance.u3b ) + + ", " + std::to_string( instance.u3c ) + + ", " + std::to_string( instance.u4 ) + + ", " + std::to_string( instance.u6 ) + + ", " + std::to_string( instance.u7 ) + + ", " + std::to_string( instance.u14 ) + + ", " + std::to_string( instance.u15 ) + + ", " + std::to_string( instance.u18 ) + + ", " + std::to_string( instance.u19 ) + + ", " + std::to_string( instance.u25c) + + ", " + std::to_string( instance.u26d ) + + ", " + std::to_string( instance.u27a ) + + ", " + std::to_string( instance.u29b ) + + ", " + std::to_string( instance.u30b ) + + ", " + std::to_string( instance.unk30 ) + + ", " + std::to_string( instance.unk31 ) + + ", " + std::to_string( instance.unk32 ) + + ", " + std::to_string( instance.unk33 ) + + ", " + std::to_string( instance.unk34 )); } } nameToPacketList.clear();