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();
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();
}

View file

@ -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();
};
}