mirror of
https://github.com/SapphireServer/Sapphire.git
synced 2025-05-01 00:27:44 +00:00
Apply modifiers in applyStatus
This commit is contained in:
parent
df9c51f27b
commit
ff0a1c8be0
3 changed files with 13 additions and 15 deletions
|
@ -507,8 +507,8 @@ void Sapphire::Entity::Chara::addStatusEffect( StatusEffect::StatusEffectPtr pEf
|
|||
if( nextSlot == -1 )
|
||||
return;
|
||||
|
||||
pEffect->applyStatus();
|
||||
m_statusEffectMap[ nextSlot ] = pEffect;
|
||||
pEffect->applyStatus();
|
||||
|
||||
auto statusEffectAdd = makeZonePacket< FFXIVIpcActionIntegrity >( getId() );
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ Sapphire::StatusEffect::StatusEffect::StatusEffect( uint32_t id, Entity::CharaPt
|
|||
uint32_t duration, std::vector< World::Action::StatusModifier >& modifiers, uint32_t tickRate ) :
|
||||
StatusEffect( id, sourceActor, targetActor, duration, tickRate )
|
||||
{
|
||||
setModifiers( modifiers );
|
||||
m_statusModifiers = std::move( modifiers );
|
||||
}
|
||||
|
||||
Sapphire::StatusEffect::StatusEffect::StatusEffect( uint32_t id, Entity::CharaPtr sourceActor, Entity::CharaPtr targetActor,
|
||||
|
@ -97,19 +97,6 @@ std::unordered_map< Common::ParamModifier, int32_t >& Sapphire::StatusEffect::St
|
|||
return m_modifiers;
|
||||
}
|
||||
|
||||
void Sapphire::StatusEffect::StatusEffect::setModifiers( std::vector< World::Action::StatusModifier > modifiers )
|
||||
{
|
||||
for( const auto& mod : modifiers )
|
||||
{
|
||||
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 );
|
||||
}
|
||||
}
|
||||
|
||||
void Sapphire::StatusEffect::StatusEffect::setModifier( Common::ParamModifier paramModifier, int32_t value )
|
||||
{
|
||||
m_modifiers[ paramModifier ] = value;
|
||||
|
@ -136,6 +123,16 @@ 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 );
|
||||
}
|
||||
|
||||
m_targetActor->calculateStats();
|
||||
|
||||
// this is only right when an action is being used by the player
|
||||
|
|
|
@ -70,6 +70,7 @@ private:
|
|||
uint16_t m_param;
|
||||
std::string m_name;
|
||||
std::pair< Common::ParamModifier, uint32_t > m_currTickEffect;
|
||||
std::vector< World::Action::StatusModifier > m_statusModifiers;
|
||||
std::unordered_map< Common::ParamModifier, int32_t > m_modifiers;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue