From fae163eafa32ee9dc89a93aa0584d80d0f8546e9 Mon Sep 17 00:00:00 2001 From: Mordred Date: Wed, 28 Feb 2018 00:03:26 +0100 Subject: [PATCH] Fixed eobjects getting incorrect ids, fixed actors not properly removing from cells --- src/servers/sapphire_zone/Actor/EventObject.cpp | 4 ++-- src/servers/sapphire_zone/Actor/EventObject.h | 2 +- .../Script/Scripts/{quest => }/opening/OpeningGridania.cpp | 0 .../Script/Scripts/{quest => }/opening/OpeningLimsa.cpp | 0 .../Script/Scripts/{quest => }/opening/OpeningUldah.cpp | 0 src/servers/sapphire_zone/Zone/Zone.cpp | 6 ++++-- 6 files changed, 7 insertions(+), 5 deletions(-) rename src/servers/sapphire_zone/Script/Scripts/{quest => }/opening/OpeningGridania.cpp (100%) rename src/servers/sapphire_zone/Script/Scripts/{quest => }/opening/OpeningLimsa.cpp (100%) rename src/servers/sapphire_zone/Script/Scripts/{quest => }/opening/OpeningUldah.cpp (100%) diff --git a/src/servers/sapphire_zone/Actor/EventObject.cpp b/src/servers/sapphire_zone/Actor/EventObject.cpp index 26775c1b..e624c124 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.cpp +++ b/src/servers/sapphire_zone/Actor/EventObject.cpp @@ -17,7 +17,7 @@ using namespace Core::Network::Packets::Server; extern Core::Logger g_log; -Core::Entity::EventObject::EventObject( uint32_t objectId, uint32_t mapLinkId, +Core::Entity::EventObject::EventObject( uint32_t actorId, uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos, const std::string& givenName ) : Core::Entity::Actor( ObjKind::EventObj ), @@ -26,7 +26,7 @@ Core::Entity::EventObject::EventObject( uint32_t objectId, uint32_t mapLinkId, m_objectId( objectId ), m_name( givenName ) { - m_id = objectId; + m_id = actorId; m_pos.x = pos.x; m_pos.y = pos.y; m_pos.z = pos.z; diff --git a/src/servers/sapphire_zone/Actor/EventObject.h b/src/servers/sapphire_zone/Actor/EventObject.h index 42318787..2fd57a09 100644 --- a/src/servers/sapphire_zone/Actor/EventObject.h +++ b/src/servers/sapphire_zone/Actor/EventObject.h @@ -10,7 +10,7 @@ namespace Entity class EventObject : public Actor { public: - EventObject( uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos, + EventObject( uint32_t actorId, uint32_t objectId, uint32_t mapLinkId, uint8_t initialState, Common::FFXIVARR_POSITION3 pos, const std::string& givenName = "none" ); using OnTalkEventHandler = std::function< void( Entity::Player&, Entity::EventObjectPtr, InstanceContentPtr, uint64_t ) >; diff --git a/src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningGridania.cpp b/src/servers/sapphire_zone/Script/Scripts/opening/OpeningGridania.cpp similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningGridania.cpp rename to src/servers/sapphire_zone/Script/Scripts/opening/OpeningGridania.cpp diff --git a/src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningLimsa.cpp b/src/servers/sapphire_zone/Script/Scripts/opening/OpeningLimsa.cpp similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningLimsa.cpp rename to src/servers/sapphire_zone/Script/Scripts/opening/OpeningLimsa.cpp diff --git a/src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningUldah.cpp b/src/servers/sapphire_zone/Script/Scripts/opening/OpeningUldah.cpp similarity index 100% rename from src/servers/sapphire_zone/Script/Scripts/quest/opening/OpeningUldah.cpp rename to src/servers/sapphire_zone/Script/Scripts/opening/OpeningUldah.cpp diff --git a/src/servers/sapphire_zone/Zone/Zone.cpp b/src/servers/sapphire_zone/Zone/Zone.cpp index 0aa49852..1545a098 100644 --- a/src/servers/sapphire_zone/Zone/Zone.cpp +++ b/src/servers/sapphire_zone/Zone/Zone.cpp @@ -55,7 +55,8 @@ Core::Zone::Zone() : } Core::Zone::Zone( uint16_t territoryId, uint32_t guId, const std::string& internalName, const std::string& placeName ) : - m_currentWeather( Weather::FairSkies ) + m_currentWeather( Weather::FairSkies ), + m_nextEObjId( 0x400D0000 ) { m_guId = guId; @@ -539,6 +540,7 @@ void Core::Zone::updateActorPosition( Entity::Actor &actor ) pOldCell->removeActor( actor.shared_from_this() ); pCell->addActor( actor.shared_from_this() ); + actor.setCell( pCell ); pOldCell = pCell; // if player we need to update cell activity @@ -692,7 +694,7 @@ uint32_t Core::Zone::getNextEObjId() Core::Entity::EventObjectPtr Core::Zone::registerEObj( const std::string &name, uint32_t objectId, uint32_t mapLink, uint8_t state, FFXIVARR_POSITION3 pos, float scale ) { - auto eObj = Entity::make_EventObject( objectId, mapLink, state, pos, name ); + auto eObj = Entity::make_EventObject( getNextEObjId(), objectId, mapLink, state, pos, name ); eObj->setScale( scale ); registerEObj( eObj );