diff --git a/bin/scripts/chai/skill/skillDef_3.chai b/bin/scripts/chai/skill/skillDef_3.chai index a05967ab..fc1543a4 100644 --- a/bin/scripts/chai/skill/skillDef_3.chai +++ b/bin/scripts/chai/skill/skillDef_3.chai @@ -10,7 +10,7 @@ class skillDef_3Def def onFinish( player, target ) { - player.addStatusEffectById(50, 20000); + player.addStatusEffectById(50, 20000, 3791585310); } }; diff --git a/src/servers/Server_Zone/Actor.cpp b/src/servers/Server_Zone/Actor.cpp index 077d8df9..1512e22f 100644 --- a/src/servers/Server_Zone/Actor.cpp +++ b/src/servers/Server_Zone/Actor.cpp @@ -605,9 +605,10 @@ void Core::Entity::Actor::addStatusEffect( StatusEffect::StatusEffectPtr pEffect } /*! \param StatusEffectPtr to be applied to the actor */ -void Core::Entity::Actor::addStatusEffectById( int32_t id, int32_t duration ) +void Core::Entity::Actor::addStatusEffectById( int32_t id, int32_t duration, uint32_t power ) { StatusEffect::StatusEffectPtr effect( new StatusEffect::StatusEffect( id, shared_from_this(), shared_from_this(), duration, 3000 ) ); + effect->setPower( power ); addStatusEffect( effect ); } diff --git a/src/servers/Server_Zone/Actor.h b/src/servers/Server_Zone/Actor.h index de27049d..0ea3acf8 100644 --- a/src/servers/Server_Zone/Actor.h +++ b/src/servers/Server_Zone/Actor.h @@ -290,7 +290,7 @@ public: void addStatusEffect( StatusEffect::StatusEffectPtr pEffect ); // add a status effect by id - void addStatusEffectById( int32_t id, int32_t duration ); + void addStatusEffectById( int32_t id, int32_t duration, uint32_t power = 0 ); // TODO: Why did i even declare them publicly here?! std::set< ActorPtr > m_inRangeActors; diff --git a/src/servers/Server_Zone/StatusEffect.cpp b/src/servers/Server_Zone/StatusEffect.cpp index c4c0f765..f5ec4a05 100644 --- a/src/servers/Server_Zone/StatusEffect.cpp +++ b/src/servers/Server_Zone/StatusEffect.cpp @@ -67,6 +67,11 @@ uint32_t Core::StatusEffect::StatusEffect::getTargetActorId() const return m_targetActor->getId(); } +uint32_t Core::StatusEffect::StatusEffect::getPower() const +{ + return m_power; +} + void Core::StatusEffect::StatusEffect::applyStatus() { m_startTime = Util::getTimeMs(); @@ -129,6 +134,12 @@ void Core::StatusEffect::StatusEffect::setLastTick( uint64_t lastTick ) m_lastTick = lastTick; } +void Core::StatusEffect::StatusEffect::setPower( uint32_t power ) +{ + m_power = power; +} + + const std::string& Core::StatusEffect::StatusEffect::getName() const { return m_name; diff --git a/src/servers/Server_Zone/StatusEffect.h b/src/servers/Server_Zone/StatusEffect.h index 7b9d88f7..4c6cc500 100644 --- a/src/servers/Server_Zone/StatusEffect.h +++ b/src/servers/Server_Zone/StatusEffect.h @@ -30,7 +30,9 @@ public: uint32_t getTargetActorId() const; uint64_t getLastTickMs() const; uint64_t getStartTimeMs() const; + uint32_t getPower() const; void setLastTick( uint64_t lastTick ); + void setPower( uint32_t power ); const std::string& getName() const; private: @@ -41,6 +43,7 @@ private: uint64_t m_startTime; uint32_t m_tickRate; uint64_t m_lastTick; + uint32_t m_power; //Figure out what this actually is supposed to be std::string m_name; }; diff --git a/src/servers/Server_Zone/StatusEffectContainer.cpp b/src/servers/Server_Zone/StatusEffectContainer.cpp index 25799233..ba381f17 100644 --- a/src/servers/Server_Zone/StatusEffectContainer.cpp +++ b/src/servers/Server_Zone/StatusEffectContainer.cpp @@ -68,6 +68,8 @@ void Core::StatusEffect::StatusEffectContainer::addStatusEffect( StatusEffectPtr statusEffectAdd.data().max_hp = m_pOwner->getMaxHp(); statusEffectAdd.data().max_mp = m_pOwner->getMaxMp(); statusEffectAdd.data().max_something = 1; + //statusEffectAdd.data().unknown2 = 28; + statusEffectAdd.data().power = pEffect->getPower(); bool sendToSelf = m_pOwner->isPlayer() ? true : false; m_pOwner->sendToInRangeSet( statusEffectAdd, sendToSelf );