#ifndef CREATURELIB_EXECUTINGATTACK_HPP #define CREATURELIB_EXECUTINGATTACK_HPP #include "Creature.hpp" namespace CreatureLib::Battling { class ExecutingAttack : public ScriptSource { public: class HitData { bool _critical = false; uint8_t _basePower = 0; float _effectiveness = 1; uint32_t _damage = 0; uint8_t _type = 0; public: HitData() noexcept {} [[nodiscard]] inline bool IsCritical() const noexcept { return _critical; } [[nodiscard]] inline uint8_t GetBasePower() const noexcept { return _basePower; } [[nodiscard]] inline float GetEffectiveness() const noexcept { return _effectiveness; } [[nodiscard]] inline uint32_t GetDamage() const noexcept { return _damage; } [[nodiscard]] inline uint8_t GetType() const noexcept { return _type; } inline void SetCritical(bool value) noexcept { _critical = value; } inline void SetBasePower(uint8_t value) noexcept { _basePower = value; } inline void SetEffectiveness(float value) noexcept { _effectiveness = value; } inline void SetDamage(uint32_t value) noexcept { _damage = value; } inline void SetType(uint8_t value) noexcept { _type = value; } }; private: uint8_t _numberHits; std::unique_ptr _hits; ArbUt::BorrowedPtr _user; ArbUt::BorrowedPtr _attack; std::unique_ptr