diff --git a/src/scripts/quest/ManFst002.cpp b/src/scripts/quest/ManFst002.cpp index 1f6fe286..2ddd435e 100644 --- a/src/scripts/quest/ManFst002.cpp +++ b/src/scripts/quest/ManFst002.cpp @@ -159,7 +159,7 @@ private: quest.setUI8CH( 1 ); // receive key item // teleport to real gridania - player.forceZoneing( TERRITORYTYPE0 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, TERRITORYTYPE0 ); } void Scene00051( World::Quest& quest, Entity::Player& player ) diff --git a/src/scripts/quest/ManFst003.cpp b/src/scripts/quest/ManFst003.cpp index 446a4882..5963da42 100644 --- a/src/scripts/quest/ManFst003.cpp +++ b/src/scripts/quest/ManFst003.cpp @@ -229,7 +229,7 @@ private: { quest.setSeq( Seq1 ); quest.setUI8CH( 1 ); - player.forceZoneing( 132 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, 132 ); } ////////////////////////////////////////////////////////////////////// diff --git a/src/scripts/quest/ManFst004.cpp b/src/scripts/quest/ManFst004.cpp index 6b0857be..c245e6fa 100644 --- a/src/scripts/quest/ManFst004.cpp +++ b/src/scripts/quest/ManFst004.cpp @@ -230,7 +230,7 @@ private: quest.setSeq( Seq1 ); quest.setUI8CH( 1 ); // receive key item // event is done, need to teleport to real zone. - player.forceZoneing( Territorytype0 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, Territorytype0 ); } ////////////////////////////////////////////////////////////////////// diff --git a/src/scripts/quest/ManWil002.cpp b/src/scripts/quest/ManWil002.cpp index 9983348f..2ef4534a 100644 --- a/src/scripts/quest/ManWil002.cpp +++ b/src/scripts/quest/ManWil002.cpp @@ -229,7 +229,7 @@ private: quest.setUI8CH( 1 ); // Receive key item // Teleport to real ul'dah - player.forceZoneing( 130 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, 130 ); } }; diff --git a/src/scripts/quest/ManWil003.cpp b/src/scripts/quest/ManWil003.cpp index 5ec411f6..39257a65 100644 --- a/src/scripts/quest/ManWil003.cpp +++ b/src/scripts/quest/ManWil003.cpp @@ -244,7 +244,7 @@ private: pQuest->setUI8CH( 1 ); // receive key item // teleport to real ul'dah - player.forceZoneing( 130 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, 130 ); } ); } }; diff --git a/src/scripts/quest/ManWil004.cpp b/src/scripts/quest/ManWil004.cpp index b559a6c9..a93af89c 100644 --- a/src/scripts/quest/ManWil004.cpp +++ b/src/scripts/quest/ManWil004.cpp @@ -233,7 +233,7 @@ private: quest.setUI8CH( 1 );// receive key item // teleport to real Uldah - player.forceZoneing( Territorytype0 ); + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, Territorytype0 ); } }; diff --git a/src/scripts/quest/subquest/limsa/SubSea001.cpp b/src/scripts/quest/subquest/limsa/SubSea001.cpp index 9ab9d279..1077b2be 100644 --- a/src/scripts/quest/subquest/limsa/SubSea001.cpp +++ b/src/scripts/quest/subquest/limsa/SubSea001.cpp @@ -218,7 +218,7 @@ private: { quest.setSeq( Seq2 ); player.changePosition( 10, 21, 13, -2 ); - player.forceZoneing( Territorytype0 ); //Teleport to real Limsa + warpMgr().requestMoveTerritory( player, Common::WarpType::WARP_TYPE_NORMAL, Territorytype0 ); } } else diff --git a/src/world/Action/Action.cpp b/src/world/Action/Action.cpp index 0e725a8c..a8cc74b3 100644 --- a/src/world/Action/Action.cpp +++ b/src/world/Action/Action.cpp @@ -15,6 +15,7 @@ #include "Territory/Territory.h" #include "Manager/PlayerMgr.h" +#include "Manager/MgrUtil.h" #include "Session.h" #include "Network/GameConnection.h" @@ -37,6 +38,7 @@ using namespace Sapphire::Network::Packets::WorldPackets; using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::World; +using namespace Sapphire::World::Manager; Action::Action::Action() = default; @@ -295,7 +297,6 @@ bool Action::Action::update() void Action::Action::start() { assert( m_pSource ); - auto& server = Common::Service< World::WorldServer >::ref(); m_startTime = Common::Util::getTimeMs(); auto player = m_pSource->getAsPlayer(); @@ -316,21 +317,21 @@ void Action::Action::start() data.TargetPos[ 2 ] = Common::Util::floatToUInt16( m_pSource->getPos().z ); data.Dir = m_pSource->getRot(); - m_pSource->sendToInRangeSet( castPacket, true ); + server().queueForPlayers( m_pSource->getInRangePlayerIds( true ), castPacket ); if( player ) { - Service< World::Manager::PlayerMgr >::ref().onSendStateFlags( *player, PlayerStateFlag::Casting ); + player->setStateFlag( PlayerStateFlag::Casting ); + Service< World::Manager::PlayerMgr >::ref().onSendStateFlags( *player, true ); } } // todo: m_recastTimeMs needs to be adjusted for player sks/sps - auto actionStartPkt = makeActorControlSelf( m_pSource->getId(), ActorControlType::ActionStart, m_cooldownGroup, getId(), - m_recastTimeMs / 10 ); + auto actionStartPkt = makeActorControlSelf( m_pSource->getId(), ActorControlType::ActionStart, m_cooldownGroup, getId(), m_recastTimeMs / 10 ); player->setRecastGroup( m_cooldownGroup, static_cast< float >( m_castTimeMs ) / 1000.f ); - server.queueForPlayer( player->getCharacterId(), actionStartPkt ); + server().queueForPlayer( player->getCharacterId(), actionStartPkt ); onStart(); @@ -389,7 +390,7 @@ void Action::Action::interrupt() auto control = makeActorControl( m_pSource->getId(), ActorControlType::CastInterrupt, 0x219, 1, m_id, interruptEffect ); - m_pSource->sendToInRangeSet( control, true ); + server().queueForPlayers( m_pSource->getInRangePlayerIds( true ), control ); } onInterrupt(); @@ -419,11 +420,6 @@ void Action::Action::execute() if( hasCastTime() ) { - // todo: what's this? - /*auto control = ActorControlSelfPacket( m_pTarget->getId(), ActorControlType::Unk7, - 0x219, m_id, m_id, m_id, m_id ); - m_pSource->sendToInRangeSet( control, true );*/ - if( auto pPlayer = m_pSource->getAsPlayer(); pPlayer ) { pPlayer->setLastActionTick( 0 ); diff --git a/src/world/Action/ItemAction.cpp b/src/world/Action/ItemAction.cpp index 1e8e5678..aeb5100a 100644 --- a/src/world/Action/ItemAction.cpp +++ b/src/world/Action/ItemAction.cpp @@ -7,9 +7,11 @@ #include #include "Manager/PlayerMgr.h" +#include "Manager/MgrUtil.h" using namespace Sapphire; using namespace Sapphire::World::Action; +using namespace Sapphire::World::Manager; using namespace Sapphire::Network::Packets::WorldPackets::Server; ItemAction::ItemAction( Sapphire::Entity::CharaPtr source, uint32_t itemId, @@ -84,8 +86,7 @@ void ItemAction::handleVFXItem() effectPacket->setAnimationId( Common::ItemActionType::ItemActionVFX ); effectPacket->setDisplayType( Common::ActionEffectDisplayType::ShowItemName ); effectPacket->addTargetEffect( effect, static_cast< uint64_t >( getSourceChara()->getId() ) ); - - m_pSource->sendToInRangeSet( effectPacket, true ); + server().queueForPlayers( m_pSource->getInRangePlayerIds( true ), effectPacket ); } void ItemAction::handleCompanionItem() diff --git a/src/world/Action/MountAction.cpp b/src/world/Action/MountAction.cpp index c5276d46..253c1839 100644 --- a/src/world/Action/MountAction.cpp +++ b/src/world/Action/MountAction.cpp @@ -1,10 +1,8 @@ #include "MountAction.h" - -#include - #include #include +#include #include #include @@ -21,6 +19,7 @@ using namespace Sapphire::Network::Packets; using namespace Sapphire::Network::Packets::WorldPackets::Server; using namespace Sapphire::Network::ActorControl; using namespace Sapphire::World::Action; +using namespace Sapphire::World::Manager; MountAction::MountAction( Sapphire::Entity::CharaPtr source, uint16_t mountId, uint16_t sequence, std::shared_ptr< Excel::ExcelStruct< Excel::Action > > actionData ) : @@ -58,15 +57,12 @@ void MountAction::start() data.TargetPos[ 1 ] = Common::Util::floatToUInt16( pos.y ); data.TargetPos[ 2 ] = Common::Util::floatToUInt16( pos.z ); data.Dir = m_pSource->getRot(); - - m_pSource->sendToInRangeSet( castPacket, true ); + server().queueForPlayers( m_pSource->getInRangePlayerIds( true ), castPacket ); Common::Service< World::Manager::PlayerMgr >::ref().onSetStateFlag( *player, Common::PlayerStateFlag::Casting ); auto actionStartPkt = makeActorControlSelf( m_pSource->getId(), ActorControlType::ActionStart, 1, getId(), m_recastTimeMs / 10 ); - - auto& server = Common::Service< World::WorldServer >::ref(); - server.queueForPlayer( m_pSource->getAsPlayer()->getCharacterId(), actionStartPkt ); + server().queueForPlayer( m_pSource->getAsPlayer()->getCharacterId(), actionStartPkt ); } void MountAction::execute() diff --git a/src/world/Actor/BNpc.cpp b/src/world/Actor/BNpc.cpp index f682502e..7f59cdca 100644 --- a/src/world/Actor/BNpc.cpp +++ b/src/world/Actor/BNpc.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include