#ifndef ITEMUSESCRIPT_HPP #define ITEMUSESCRIPT_HPP #include #include "../../Library/EffectParameter.hpp" namespace CreatureLib::Battling { class Creature; class Battle; class ItemUseScript { public: virtual ~ItemUseScript() = default; virtual void OnInitialize( [[maybe_unused]] const ArbUt::List& parameters){}; /// @brief Is the item an item we are able to use? [[nodiscard]] virtual bool IsItemUsable() const { return false; } /// @brief Do we need to use the item on a creature? [[nodiscard]] virtual bool IsCreatureUseItem() const { return false; } /// @brief Can the item be used on the given creature. [[nodiscard]] virtual bool IsUseValidForCreature([[maybe_unused]] Creature* non_null creature) const { return false; } /// @brief Can the item be held? [[nodiscard]] virtual bool IsHoldable() const { return false; } virtual void OnUse([[maybe_unused]] Battle* non_null battle) const {} virtual void OnCreatureUse([[maybe_unused]] Creature* non_null creature, [[maybe_unused]] bool isBattle) const { } }; } #endif // ITEMUSESCRIPT_HPP