1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-26 14:37:44 +00:00
sapphire/src/world/Action/EffectBuilder.h

52 lines
1.8 KiB
C
Raw Normal View History

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
2020-01-05 20:49:50 +09:00
void heal( Entity::CharaPtr& effectTarget, Entity::CharaPtr& healingTarget, uint32_t amount,
Common::ActionHitSeverityType severity = Common::ActionHitSeverityType::NormalHeal,
Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::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,
Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::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,
Common::ActionHitSeverityType severity = Common::ActionHitSeverityType::NormalDamage,
Common::ActionEffectResultFlag flag = Common::ActionEffectResultFlag::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
2020-01-06 19:25:01 +09:00
void applyStatusEffect( Entity::CharaPtr& target, uint16_t statusId, uint8_t param );
2019-07-25 22:46:10 +10:00
void buildAndSendPackets();
private:
2020-01-06 17:52:45 +09:00
void moveToResultList( Entity::CharaPtr& chara, EffectResultPtr result );
2019-07-25 22:46:10 +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