diff --git a/bin/web/news.xml b/bin/web/news.xml
index 89da9b09..77178c9f 100644
--- a/bin/web/news.xml
+++ b/bin/web/news.xml
@@ -1 +1 @@
-OK- It works14854473281485447484133a2a9464b7a1e1cb77ed6899fc8e813b273d294This is a Sapphire Test topic.
58342- Test Inquiry1111
\ No newline at end of file
+OK- It works14854473281485447484133a2a9464b7a1e1cb77ed6899fc8e813b273d294This is a Sapphire Test topic.
58342- Test Inquiry1111
\ No newline at end of file
diff --git a/src/servers/Server_Zone/Actor/Actor.cpp b/src/servers/Server_Zone/Actor/Actor.cpp
index d0b76564..bee3163e 100644
--- a/src/servers/Server_Zone/Actor/Actor.cpp
+++ b/src/servers/Server_Zone/Actor/Actor.cpp
@@ -649,4 +649,9 @@ void Core::Entity::Actor::addStatusEffectByIdIfNotExist( int32_t id, int32_t dur
void Core::Entity::Actor::removeSingleStatusEffectFromId( int32_t id )
{
m_pStatusEffectContainer->removeSingleStatusEffectFromId( id );
-}
\ No newline at end of file
+}
+
+Core::StatusEffect::StatusEffectContainerPtr Core::Entity::Actor::getStatusEffectContainer() const
+{
+ return m_pStatusEffectContainer;
+}
diff --git a/src/servers/Server_Zone/Actor/Actor.h b/src/servers/Server_Zone/Actor/Actor.h
index aab602be..125194e4 100644
--- a/src/servers/Server_Zone/Actor/Actor.h
+++ b/src/servers/Server_Zone/Actor/Actor.h
@@ -301,6 +301,8 @@ public:
// remove a status effect by id
void removeSingleStatusEffectFromId( int32_t id );
+ StatusEffect::StatusEffectContainerPtr getStatusEffectContainer() const;
+
// TODO: Why did i even declare them publicly here?!
std::set< ActorPtr > m_inRangeActors;
std::set< PlayerPtr > m_inRangePlayers;
diff --git a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h
index 9b076474..89c56860 100644
--- a/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h
+++ b/src/servers/Server_Zone/Network/PacketWrappers/ActorSpawnPacket.h
@@ -5,6 +5,8 @@
#include
#include "src/servers/Server_Zone/Actor/Player.h"
#include "src/servers/Server_Zone/Forwards.h"
+#include "src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h"
+#include "src/servers/Server_Zone/StatusEffect/StatusEffect.h"
namespace Core {
namespace Network {
diff --git a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h
index dbdbadec..91fac73d 100644
--- a/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h
+++ b/src/servers/Server_Zone/Network/PacketWrappers/PlayerSpawnPacket.h
@@ -93,6 +93,16 @@ namespace Server {
//m_data.unknown_60 = 3;
//m_data.unknown_61 = 7;
+ uint64_t currentTimeMs = Util::getTimeMs();
+
+ for( auto const& effect : pPlayer->getStatusEffectContainer()->getEffectMap() )
+ {
+ m_data.effect[effect.first].effect_id = effect.second->getId();
+ m_data.effect[effect.first].duration = static_cast< float >( effect.second->getDuration() - ( currentTimeMs - effect.second->getStartTimeMs() ) ) / 1000;
+ m_data.effect[effect.first].sourceActorId = effect.second->getSrcActorId();
+ m_data.effect[effect.first].unknown1 = effect.second->getParam();
+ }
+
};
};
diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp
index 77d43b5f..e0d891e5 100644
--- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp
+++ b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.cpp
@@ -40,6 +40,11 @@ void Core::StatusEffect::StatusEffectContainer::freeSlot( uint8_t slotId )
m_freeEffectSlotQueue.push( slotId );
}
+std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > Core::StatusEffect::StatusEffectContainer::getEffectMap() const
+{
+ return m_effectMap;
+}
+
Core::StatusEffect::StatusEffectContainer::~StatusEffectContainer()
{
diff --git a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h
index a6f2a01c..22a43aae 100644
--- a/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h
+++ b/src/servers/Server_Zone/StatusEffect/StatusEffectContainer.h
@@ -29,6 +29,8 @@ public:
int8_t getFreeSlot();
void freeSlot( uint8_t slotId );
+ std::map< uint8_t, Core::StatusEffect::StatusEffectPtr > getEffectMap() const;
+
void sendUpdate();
@@ -38,7 +40,6 @@ private:
Entity::ActorPtr m_pOwner;
std::queue< uint8_t > m_freeEffectSlotQueue;
- std::vector< StatusEffectPtr > m_effectList;
std::vector< std::pair< uint8_t, uint32_t> > m_tickEffectList;
std::map< uint8_t, StatusEffectPtr > m_effectMap;
};