1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-30 08:07:46 +00:00
sapphire/src/world/Action/ActionResult.h

50 lines
1.7 KiB
C
Raw Normal View History

#pragma once
2019-07-25 22:46:10 +10:00
#include <ForwardsZone.h>
#include <Common.h>
#include "ActionLut.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 ActionResult
2019-07-25 22:46:10 +10:00
{
public:
explicit ActionResult( Entity::CharaPtr target, uint64_t delayMs );
2019-07-25 22:46:10 +10:00
void damage( uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionResultFlag flag = Common::ActionResultFlag::None );
void heal( uint32_t amount, Common::ActionHitSeverityType severity, Common::ActionResultFlag flag = Common::ActionResultFlag::None );
void restoreMP( uint32_t amount, Common::ActionResultFlag flag = Common::ActionResultFlag::None );
2020-01-05 17:09:27 +09:00
void startCombo( uint16_t actionId );
2020-01-05 20:49:50 +09:00
void comboSucceed();
void applyStatusEffect( uint32_t id, int32_t duration, Entity::Chara& source, uint8_t param, bool shouldOverride, bool forSelf );
void applyStatusEffect( uint32_t id, int32_t duration, Entity::Chara& source, uint8_t param,
std::vector< World::Action::StatusModifier > modifiers, uint32_t flag, bool shouldOverride, bool forSelf );
2020-01-26 21:16:41 +11:00
void mount( uint16_t mountId );
2019-07-25 22:46:10 +10:00
Entity::CharaPtr getTarget() const;
uint64_t getDelay();
const Common::CalcResultParam& getCalcResultParam() const;
const Sapphire::StatusEffect::StatusEffectPtr getStatusEffect() const;
2019-07-25 22:46:10 +10:00
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_target;
Common::CalcResultParam m_result;
2020-01-08 17:21:01 +09:00
bool m_bOverrideStatus { false };
Sapphire::StatusEffect::StatusEffectPtr m_pStatus;
2019-07-25 22:46:10 +10:00
};
using ActionResultList = std::vector< ActionResultPtr >;
}