2019-07-25 22:46:10 +10:00
|
|
|
#ifndef SAPPHIRE_EFFECTRESULT_H
|
|
|
|
#define SAPPHIRE_EFFECTRESULT_H
|
|
|
|
|
|
|
|
#include <ForwardsZone.h>
|
|
|
|
#include <Common.h>
|
|
|
|
|
2020-01-13 03:05:54 +09:00
|
|
|
#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:
|
2020-01-10 21:24:35 +09:00
|
|
|
explicit EffectResult( Entity::CharaPtr target, Entity::CharaPtr source, uint64_t delayMs );
|
2020-01-19 20:53:56 +09:00
|
|
|
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 );
|
2020-01-13 03:05:54 +09:00
|
|
|
void applyStatusEffect( StatusEffect::StatusEffectPtr pStatusEffect );
|
|
|
|
void statusNoEffect( uint16_t statusId );
|
2020-01-23 22:27:05 +09:00
|
|
|
void mount( uint16_t moundId );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-10 21:24:35 +09:00
|
|
|
Entity::CharaPtr getSource() const;
|
2019-07-25 22:46:10 +10:00
|
|
|
Entity::CharaPtr getTarget() const;
|
|
|
|
|
|
|
|
uint32_t getValue() const;
|
|
|
|
|
2019-07-27 13:59:35 +10:00
|
|
|
uint64_t getDelay();
|
|
|
|
|
2019-07-25 22:46:10 +10:00
|
|
|
Common::EffectEntry buildEffectEntry() const;
|
|
|
|
|
2019-07-27 13:59:35 +10:00
|
|
|
void execute();
|
|
|
|
|
2019-07-25 22:46:10 +10:00
|
|
|
private:
|
2019-07-27 13:59:35 +10:00
|
|
|
uint64_t m_delayMs;
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-10 21:24:35 +09: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;
|
2020-01-13 03:05:54 +09:00
|
|
|
|
|
|
|
StatusEffect::StatusEffectPtr m_pPreBuiltStatusEffect;
|
2019-07-25 22:46:10 +10:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif //SAPPHIRE_EFFECTRESULT_H
|