From b806535f11d1c3ce061b9290847340b8f61a1e07 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 21 Feb 2018 23:30:35 +0100 Subject: [PATCH] Fixed an issue with teleport not picking the correct target position, eventaction unlocks player now --- src/common/Exd/ExdDataGenerated.cpp | 1 + src/common/Exd/ExdDataGenerated.h | 1 + src/servers/sapphire_zone/Action/EventAction.cpp | 3 ++- src/servers/sapphire_zone/Actor/Player.cpp | 13 +------------ .../DebugCommand/DebugCommandHandler.cpp | 6 ------ .../Script/Scripts/common/Aethernet.cpp | 1 - .../Script/Scripts/quest/ManFst002.cpp | 1 - 7 files changed, 5 insertions(+), 21 deletions(-) diff --git a/src/common/Exd/ExdDataGenerated.cpp b/src/common/Exd/ExdDataGenerated.cpp index 859998d2..eda4a919 100644 --- a/src/common/Exd/ExdDataGenerated.cpp +++ b/src/common/Exd/ExdDataGenerated.cpp @@ -172,6 +172,7 @@ Core::Data::Aetheryte::Aetheryte( uint32_t row_id, Core::Data::ExdDataGenerated* placeName = exdData->getField< uint16_t >( row, 8 ); aethernetName = exdData->getField< uint16_t >( row, 9 ); territory = exdData->getField< uint16_t >( row, 10 ); + levelId = exdData->getField< uint32_t >( row, 11 ); isAetheryte = exdData->getField< bool >( row, 15 ); aethernetGroup = exdData->getField< uint8_t >( row, 16 ); map = exdData->getField< uint16_t >( row, 19 ); diff --git a/src/common/Exd/ExdDataGenerated.h b/src/common/Exd/ExdDataGenerated.h index 0cc29084..d17edf4a 100644 --- a/src/common/Exd/ExdDataGenerated.h +++ b/src/common/Exd/ExdDataGenerated.h @@ -496,6 +496,7 @@ struct Aetheryte uint16_t placeName; uint16_t aethernetName; uint16_t territory; + uint32_t levelId; bool isAetheryte; uint8_t aethernetGroup; uint16_t map; diff --git a/src/servers/sapphire_zone/Action/EventAction.cpp b/src/servers/sapphire_zone/Action/EventAction.cpp index 5bdef79c..3d5b80e8 100644 --- a/src/servers/sapphire_zone/Action/EventAction.cpp +++ b/src/servers/sapphire_zone/Action/EventAction.cpp @@ -53,7 +53,8 @@ void Core::Action::EventAction::onStart() if( m_pSource->isPlayer() ) { m_pSource->sendToInRangeSet( control, true ); - //m_pSource->getAsPlayer()->setStateFlag( PlayerStateFlag::Occupied2 ); + if( m_pSource->getAsPlayer()->hasStateFlag( PlayerStateFlag::InNpcEvent ) ) + m_pSource->getAsPlayer()->unsetStateFlag( PlayerStateFlag::InNpcEvent ); } else m_pSource->sendToInRangeSet( control ); diff --git a/src/servers/sapphire_zone/Actor/Player.cpp b/src/servers/sapphire_zone/Actor/Player.cpp index 347e4add..941ba949 100644 --- a/src/servers/sapphire_zone/Actor/Player.cpp +++ b/src/servers/sapphire_zone/Actor/Player.cpp @@ -300,7 +300,7 @@ void Core::Entity::Player::teleport( uint16_t aetheryteId, uint8_t type ) setStateFlag( PlayerStateFlag::BetweenAreas ); - auto targetPos = g_territoryMgr.getTerritoryPosition( data->territory ); + auto targetPos = g_territoryMgr.getTerritoryPosition( data->levelId ); Common::FFXIVARR_POSITION3 pos; pos.x = 0; @@ -652,17 +652,6 @@ void Core::Entity::Player::gainLevel() classInfoPacket.data().currentExp = getExp(); queuePacket( classInfoPacket ); - - - - - - -} - -void Core::Entity::Player::unlock() -{ - queuePacket( PlayerStateFlagsPacket( *getAsPlayer(), PlayerStateFlagList{} ) ); } void Core::Entity::Player::sendStatusUpdate( bool toSelf ) diff --git a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp index 0fde5dce..736e87c5 100644 --- a/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp +++ b/src/servers/sapphire_zone/DebugCommand/DebugCommandHandler.cpp @@ -56,7 +56,6 @@ Core::DebugCommandHandler::DebugCommandHandler() registerCommand( "replay", &DebugCommandHandler::replay, "Replays a saved capture folder.", 1 ); registerCommand( "nudge", &DebugCommandHandler::nudge, "Nudges you forward/up/down.", 1 ); registerCommand( "info", &DebugCommandHandler::serverInfo, "Show server info.", 0 ); - registerCommand( "unlock", &DebugCommandHandler::unlockCharacter, "Unlock character.", 1 ); registerCommand( "help", &DebugCommandHandler::help, "Shows registered commands.", 0 ); registerCommand( "script", &DebugCommandHandler::script, "Server script utilities.", 1 ); registerCommand( "instance", &DebugCommandHandler::instance, "Instance utilities", 1 ); @@ -574,11 +573,6 @@ void Core::DebugCommandHandler::serverInfo( char * data, Entity::Player& player, player.sendDebug( "Sessions: " + std::to_string( g_serverZone.getSessionCount() ) ); } -void Core::DebugCommandHandler::unlockCharacter( char* data, Entity::Player& player, boost::shared_ptr< DebugCommand > command ) -{ - player.unlock(); -} - void Core::DebugCommandHandler::script( char* data, Entity::Player &player, boost::shared_ptr< DebugCommand > command ) { std::string subCommand; diff --git a/src/servers/sapphire_zone/Script/Scripts/common/Aethernet.cpp b/src/servers/sapphire_zone/Script/Scripts/common/Aethernet.cpp index 9a3ccd8f..45b57f1b 100644 --- a/src/servers/sapphire_zone/Script/Scripts/common/Aethernet.cpp +++ b/src/servers/sapphire_zone/Script/Scripts/common/Aethernet.cpp @@ -39,7 +39,6 @@ public: }, 0 ); - player.unlock(); } } diff --git a/src/servers/sapphire_zone/Script/Scripts/quest/ManFst002.cpp b/src/servers/sapphire_zone/Script/Scripts/quest/ManFst002.cpp index 707150cb..a2348a7e 100644 --- a/src/servers/sapphire_zone/Script/Scripts/quest/ManFst002.cpp +++ b/src/servers/sapphire_zone/Script/Scripts/quest/ManFst002.cpp @@ -211,7 +211,6 @@ public: player.eventActionStart( 0x050002, 0x13, event, nullptr, 0x050002 ); - player.unlock(); } else if( actor == ACTOR2 ) Scene00002( player );