1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-23 10:17:44 +00:00

Add status refreshing

This commit is contained in:
Rushi 2025-01-20 23:05:34 +01:00
parent f2ab5d5304
commit 496f14071d
2 changed files with 25 additions and 8 deletions

View file

@ -147,14 +147,17 @@ void Sapphire::StatusEffect::StatusEffect::applyStatus()
m_startTime = Util::getTimeMs(); m_startTime = Util::getTimeMs();
auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref(); auto& scriptMgr = Common::Service< Scripting::ScriptMgr >::ref();
for( const auto& mod : m_statusModifiers ) if( m_modifiers.empty() )
{ {
if( mod.modifier != Common::ParamModifier::TickDamage && mod.modifier != Common::ParamModifier::TickHeal ) for( const auto& mod : m_statusModifiers )
setModifier( mod.modifier, mod.value ); {
else if( mod.modifier == Common::ParamModifier::TickDamage ) if( mod.modifier != Common::ParamModifier::TickDamage && mod.modifier != Common::ParamModifier::TickHeal )
registerTickEffect( mod.modifier, mod.value ); setModifier( mod.modifier, mod.value );
else if( mod.modifier == Common::ParamModifier::TickHeal ) else if( mod.modifier == Common::ParamModifier::TickDamage )
registerTickEffect( mod.modifier, mod.value ); registerTickEffect( mod.modifier, mod.value );
else if( mod.modifier == Common::ParamModifier::TickHeal )
registerTickEffect( mod.modifier, mod.value );
}
} }
m_targetActor->calculateStats(); m_targetActor->calculateStats();
@ -237,3 +240,14 @@ void Sapphire::StatusEffect::StatusEffect::setSlot( uint8_t slot )
{ {
m_slot = slot; m_slot = slot;
} }
void Sapphire::StatusEffect::StatusEffect::refresh()
{
applyStatus();
}
void Sapphire::StatusEffect::StatusEffect::refresh( uint32_t newDuration )
{
m_duration = newDuration;
refresh();
}

View file

@ -67,6 +67,8 @@ public:
uint8_t getSlot() const; uint8_t getSlot() const;
void setSlot( uint8_t slot ); void setSlot( uint8_t slot );
void refresh( uint32_t newDuration );
private: private:
uint32_t m_id; uint32_t m_id;
Entity::CharaPtr m_sourceActor; Entity::CharaPtr m_sourceActor;
@ -83,6 +85,7 @@ private:
std::unordered_map< Common::ParamModifier, int32_t > m_modifiers; std::unordered_map< Common::ParamModifier, int32_t > m_modifiers;
uint8_t m_slot; uint8_t m_slot;
void refresh();
}; };
} }