1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-05-28 20:27:46 +00:00
sapphire/src/world/Action/EffectResult.h

63 lines
1.8 KiB
C
Raw Normal View History

2019-07-25 22:46:10 +10:00
#ifndef SAPPHIRE_EFFECTRESULT_H
#define SAPPHIRE_EFFECTRESULT_H
#include <ForwardsZone.h>
#include <Common.h>
#include "StatusEffect/StatusEffect.h"
2019-07-25 22:46:10 +10:00
namespace Sapphire::World::Action
{
/*!
* @brief A container for the computed result of an effect on a single actor. Used to apply damage/healing dealt
* at a later point in time.
*/
class EffectResult
{
public:
explicit EffectResult( Entity::CharaPtr target, Entity::CharaPtr source, uint64_t delayMs );
explicit EffectResult( Entity::CharaPtr target, uint64_t delayMs );
2019-07-25 22:46:10 +10:00
2020-01-05 20:49:50 +09:00
void damage( uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::None );
void heal( uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::None );
void restoreMP( uint32_t amount, Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::None );
2020-01-05 17:09:27 +09:00
void startCombo( uint16_t actionId );
2020-01-05 20:49:50 +09:00
void comboSucceed();
2020-01-17 18:37:09 +09:00
void applyStatusEffect( uint16_t statusId, uint32_t duration, uint16_t param );
void applyStatusEffect( StatusEffect::StatusEffectPtr pStatusEffect );
void statusNoEffect( uint16_t statusId );
void mount( uint16_t moundId );
2019-07-25 22:46:10 +10:00
Entity::CharaPtr getSource() const;
2019-07-25 22:46:10 +10:00
Entity::CharaPtr getTarget() const;
uint32_t getValue() const;
uint64_t getDelay();
2019-07-25 22:46:10 +10:00
Common::EffectEntry buildEffectEntry() const;
void execute();
2019-07-25 22:46:10 +10:00
private:
uint64_t m_delayMs;
2019-07-25 22:46:10 +10:00
Entity::CharaPtr m_source;
2019-07-25 22:46:10 +10:00
Entity::CharaPtr m_target;
Common::ActionEffectType m_type;
2020-01-08 17:21:01 +09:00
uint8_t m_param0;
uint8_t m_param1;
2020-01-17 18:37:09 +09:00
uint16_t m_param2;
2020-01-08 17:21:01 +09:00
2019-07-25 22:46:10 +10:00
uint32_t m_value;
2020-01-15 00:42:31 +09:00
uint32_t m_statusDuration;
2020-01-05 20:49:50 +09:00
Common::ActionEffectResultFlag m_flag;
StatusEffect::StatusEffectPtr m_pPreBuiltStatusEffect;
2019-07-25 22:46:10 +10:00
};
}
#endif //SAPPHIRE_EFFECTRESULT_H