2021-11-27 00:53:57 +01:00
|
|
|
#pragma once
|
2019-07-25 22:46:10 +10:00
|
|
|
|
|
|
|
#include <ForwardsZone.h>
|
|
|
|
#include <Common.h>
|
|
|
|
|
|
|
|
namespace Sapphire::World::Action
|
|
|
|
{
|
2023-03-09 21:54:30 +01:00
|
|
|
class ActionResultBuilder
|
2019-07-25 22:46:10 +10:00
|
|
|
{
|
|
|
|
public:
|
2023-03-09 21:54:30 +01:00
|
|
|
ActionResultBuilder( Entity::CharaPtr source, uint32_t actionId, uint32_t resultId, uint16_t requestId );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-05 20:49:50 +09:00
|
|
|
void heal( Entity::CharaPtr& effectTarget, Entity::CharaPtr& healingTarget, uint32_t amount,
|
2023-03-15 15:21:03 +01:00
|
|
|
Common::CalcResultType hitType = Common::CalcResultType::TypeRecoverMp,
|
2023-03-09 21:54:30 +01:00
|
|
|
Common::ActionResultFlag flag = Common::ActionResultFlag::None );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-05 20:49:50 +09:00
|
|
|
void restoreMP( Entity::CharaPtr& effectTarget, Entity::CharaPtr& restoringTarget, uint32_t amount,
|
2023-03-09 21:54:30 +01:00
|
|
|
Common::ActionResultFlag flag = Common::ActionResultFlag::None );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-05 20:49:50 +09:00
|
|
|
void damage( Entity::CharaPtr& effectTarget, Entity::CharaPtr& damagingTarget, uint32_t amount,
|
2023-03-15 15:21:03 +01:00
|
|
|
Common::CalcResultType hitType = Common::CalcResultType::TypeDamageHp,
|
2023-03-09 21:54:30 +01:00
|
|
|
Common::ActionResultFlag flag = Common::ActionResultFlag::None );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-05 17:09:27 +09:00
|
|
|
void startCombo( Entity::CharaPtr& target, uint16_t actionId );
|
|
|
|
|
2020-01-05 20:49:50 +09:00
|
|
|
void comboSucceed( Entity::CharaPtr& target );
|
2020-01-05 17:09:27 +09:00
|
|
|
|
2023-03-10 22:34:12 +01:00
|
|
|
void applyStatusEffect( Entity::CharaPtr& target, uint16_t statusId, uint32_t duration, uint8_t param, bool shouldOverride );
|
2023-03-13 11:21:42 +01:00
|
|
|
void applyStatusEffectSelf( uint16_t statusId, uint32_t duration, uint8_t param, bool shouldOverride );
|
2020-01-06 19:25:01 +09:00
|
|
|
|
2020-01-23 22:36:01 +09:00
|
|
|
void mount( Entity::CharaPtr& target, uint16_t mountId );
|
|
|
|
|
2023-03-09 21:54:30 +01:00
|
|
|
void sendActionResults( const std::vector< Entity::CharaPtr >& targetList );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
|
|
|
private:
|
2023-03-09 21:54:30 +01:00
|
|
|
void addResultToActor( Entity::CharaPtr& chara, ActionResultPtr result );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2023-03-09 21:54:30 +01:00
|
|
|
Network::Packets::FFXIVPacketBasePtr createActionResultPacket( const std::vector< Entity::CharaPtr >& targetList );
|
2020-01-05 17:09:27 +09:00
|
|
|
|
2019-07-26 20:28:01 +10:00
|
|
|
private:
|
2019-07-25 22:46:10 +10:00
|
|
|
uint32_t m_actionId;
|
2023-02-28 10:31:59 +01:00
|
|
|
uint16_t m_requestId;
|
2023-03-09 21:54:30 +01:00
|
|
|
uint32_t m_resultId;
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2019-07-26 20:28:01 +10:00
|
|
|
Entity::CharaPtr m_sourceChara;
|
2023-03-10 17:32:52 +01:00
|
|
|
std::unordered_map< Entity::CharaPtr, std::vector< ActionResultPtr > > m_actorResultsMap;
|
2019-07-25 22:46:10 +10:00
|
|
|
};
|
|
|
|
|
2021-11-27 00:53:57 +01:00
|
|
|
}
|