2019-07-25 22:46:10 +10:00
|
|
|
#ifndef SAPPHIRE_EFFECTBUILDER_H
|
|
|
|
#define SAPPHIRE_EFFECTBUILDER_H
|
|
|
|
|
|
|
|
#include <ForwardsZone.h>
|
|
|
|
#include <Common.h>
|
|
|
|
|
|
|
|
namespace Sapphire::World::Action
|
|
|
|
{
|
|
|
|
class EffectBuilder
|
|
|
|
{
|
|
|
|
public:
|
2019-07-26 20:28:01 +10:00
|
|
|
EffectBuilder( Entity::CharaPtr source, uint32_t actionId, uint16_t sequence );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
|
|
|
|
|
|
|
void healTarget( Entity::CharaPtr& target, uint32_t amount,
|
|
|
|
Common::ActionHitSeverityType severity = Common::ActionHitSeverityType::NormalHeal );
|
|
|
|
|
2020-01-05 17:09:27 +09:00
|
|
|
void selfHeal( Entity::CharaPtr& target, Entity::CharaPtr& source, uint32_t amount,
|
|
|
|
Common::ActionHitSeverityType severity = Common::ActionHitSeverityType::NormalHeal );
|
|
|
|
|
|
|
|
void restoreMP( Entity::CharaPtr& target, Entity::CharaPtr& source, uint32_t amount );
|
|
|
|
|
2019-07-25 22:46:10 +10:00
|
|
|
void damageTarget( Entity::CharaPtr& target, uint32_t amount,
|
|
|
|
Common::ActionHitSeverityType severity = Common::ActionHitSeverityType::NormalDamage );
|
|
|
|
|
2020-01-05 17:09:27 +09:00
|
|
|
void startCombo( Entity::CharaPtr& target, uint16_t actionId );
|
|
|
|
|
|
|
|
void comboVisualEffect( Entity::CharaPtr& target );
|
|
|
|
|
2019-07-25 22:46:10 +10:00
|
|
|
void buildAndSendPackets();
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
2020-01-05 17:09:27 +09:00
|
|
|
std::shared_ptr< std::vector< EffectResultPtr > > getResultList( Entity::CharaPtr& chara );
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2019-07-27 13:59:35 +10:00
|
|
|
uint64_t getResultDelayMs();
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2020-01-05 17:09:27 +09:00
|
|
|
std::shared_ptr< Sapphire::Network::Packets::FFXIVPacketBase > buildNextEffectPacket( uint32_t globalSequence );
|
|
|
|
|
2019-07-26 20:28:01 +10:00
|
|
|
private:
|
2019-07-25 22:46:10 +10:00
|
|
|
uint32_t m_actionId;
|
2019-07-26 20:28:01 +10:00
|
|
|
uint16_t m_sequence;
|
2019-07-25 22:46:10 +10:00
|
|
|
|
2019-07-26 20:28:01 +10:00
|
|
|
Entity::CharaPtr m_sourceChara;
|
2020-01-05 17:09:27 +09:00
|
|
|
std::unordered_map< uint32_t, std::shared_ptr< std::vector< EffectResultPtr > > > m_resolvedEffects;
|
2019-07-25 22:46:10 +10:00
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif //SAPPHIRE_EFFECTBUILDER_H
|