From 51b7740a6fde785bc3eeab466e8f400c38607f95 Mon Sep 17 00:00:00 2001 From: Lucy <44952533+Skyliegirl33@users.noreply.github.com> Date: Tue, 7 Mar 2023 20:00:32 +0100 Subject: [PATCH] Basic dot/hot ticks implemented --- src/world/Actor/Chara.cpp | 4 ++-- src/world/StatusEffect/StatusEffect.cpp | 8 ++++++-- src/world/StatusEffect/StatusEffect.h | 6 +++--- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/world/Actor/Chara.cpp b/src/world/Actor/Chara.cpp index bb383efb..60936608 100644 --- a/src/world/Actor/Chara.cpp +++ b/src/world/Actor/Chara.cpp @@ -851,13 +851,13 @@ void Sapphire::Entity::Chara::onTick() auto thisEffect = effectIt.second->getTickEffect(); switch( thisEffect.first ) { - case 1: + case Common::ParamModifier::TickDamage: { thisTickDmg += thisEffect.second; break; } - case 2: + case Common::ParamModifier::TickHeal: { thisTickHeal += thisEffect.second; break; diff --git a/src/world/StatusEffect/StatusEffect.cpp b/src/world/StatusEffect/StatusEffect.cpp index da827fe7..b31a0829 100644 --- a/src/world/StatusEffect/StatusEffect.cpp +++ b/src/world/StatusEffect/StatusEffect.cpp @@ -55,12 +55,12 @@ Sapphire::StatusEffect::StatusEffect::~StatusEffect() { } -void Sapphire::StatusEffect::StatusEffect::registerTickEffect( uint8_t type, uint32_t param ) +void Sapphire::StatusEffect::StatusEffect::registerTickEffect( ParamModifier type, uint32_t param ) { m_currTickEffect = std::make_pair( type, param ); } -std::pair< uint8_t, uint32_t > Sapphire::StatusEffect::StatusEffect::getTickEffect() +std::pair< ParamModifier, uint32_t > Sapphire::StatusEffect::StatusEffect::getTickEffect() { return m_currTickEffect; } @@ -98,6 +98,10 @@ void Sapphire::StatusEffect::StatusEffect::applyStatus() // TODO: ticks if( mod.modifier != Common::ParamModifier::TickDamage && mod.modifier != Common::ParamModifier::TickHeal ) m_targetActor->addModifier( 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(); diff --git a/src/world/StatusEffect/StatusEffect.h b/src/world/StatusEffect/StatusEffect.h index bc8e4f47..f18ecbcf 100644 --- a/src/world/StatusEffect/StatusEffect.h +++ b/src/world/StatusEffect/StatusEffect.h @@ -45,9 +45,9 @@ public: void setParam( uint16_t param ); - void registerTickEffect( uint8_t type, uint32_t param ); + void registerTickEffect( Common::ParamModifier type, uint32_t param ); - std::pair< uint8_t, uint32_t > getTickEffect(); + std::pair< Common::ParamModifier, uint32_t > getTickEffect(); const std::string& getName() const; @@ -61,7 +61,7 @@ private: uint64_t m_lastTick; uint16_t m_param; std::string m_name; - std::pair< uint8_t, uint32_t > m_currTickEffect; + std::pair< Common::ParamModifier, uint32_t > m_currTickEffect; std::vector< World::Action::StatusModifier > m_modifiers; };