From 496f14071d27260da8f456bb46ba92ce09e13768 Mon Sep 17 00:00:00 2001 From: Rushi <44952533+Skyliegirl33@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:05:34 +0100 Subject: [PATCH] Add status refreshing --- src/world/StatusEffect/StatusEffect.cpp | 30 ++++++++++++++++++------- src/world/StatusEffect/StatusEffect.h | 3 +++ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/world/StatusEffect/StatusEffect.cpp b/src/world/StatusEffect/StatusEffect.cpp index 0bb160a0..98be7dbe 100644 --- a/src/world/StatusEffect/StatusEffect.cpp +++ b/src/world/StatusEffect/StatusEffect.cpp @@ -147,14 +147,17 @@ void Sapphire::StatusEffect::StatusEffect::applyStatus() m_startTime = Util::getTimeMs(); auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); - for( const auto& mod : m_statusModifiers ) - { - if( mod.modifier != Common::ParamModifier::TickDamage && mod.modifier != Common::ParamModifier::TickHeal ) - setModifier( mod.modifier, mod.value ); - else if( mod.modifier == Common::ParamModifier::TickDamage ) - registerTickEffect( mod.modifier, mod.value ); - else if( mod.modifier == Common::ParamModifier::TickHeal ) - registerTickEffect( mod.modifier, mod.value ); + if( m_modifiers.empty() ) + { + for( const auto& mod : m_statusModifiers ) + { + if( mod.modifier != Common::ParamModifier::TickDamage && mod.modifier != Common::ParamModifier::TickHeal ) + setModifier( mod.modifier, mod.value ); + else if( mod.modifier == Common::ParamModifier::TickDamage ) + registerTickEffect( mod.modifier, mod.value ); + else if( mod.modifier == Common::ParamModifier::TickHeal ) + registerTickEffect( mod.modifier, mod.value ); + } } m_targetActor->calculateStats(); @@ -237,3 +240,14 @@ void Sapphire::StatusEffect::StatusEffect::setSlot( uint8_t slot ) { m_slot = slot; } + +void Sapphire::StatusEffect::StatusEffect::refresh() +{ + applyStatus(); +} + +void Sapphire::StatusEffect::StatusEffect::refresh( uint32_t newDuration ) +{ + m_duration = newDuration; + refresh(); +} \ No newline at end of file diff --git a/src/world/StatusEffect/StatusEffect.h b/src/world/StatusEffect/StatusEffect.h index f8a24dde..b72e7058 100644 --- a/src/world/StatusEffect/StatusEffect.h +++ b/src/world/StatusEffect/StatusEffect.h @@ -67,6 +67,8 @@ public: uint8_t getSlot() const; void setSlot( uint8_t slot ); + void refresh( uint32_t newDuration ); + private: uint32_t m_id; Entity::CharaPtr m_sourceActor; @@ -83,6 +85,7 @@ private: std::unordered_map< Common::ParamModifier, int32_t > m_modifiers; uint8_t m_slot; + void refresh(); }; }