#ifndef PKMNLIB_MISCLIBRARY_HPP #define PKMNLIB_MISCLIBRARY_HPP #include #include "../../Library/Moves/MoveData.hpp" #include "../Pokemon/LearnedMove.hpp" namespace PkmnLib::Battling { class MiscLibrary final : public CreatureLib::Battling::MiscLibrary { std::unique_ptr _struggleData = std::make_unique( "struggle"_cnc, 0, PkmnLib::Library::MoveCategory::Physical, 50, 255, 10, CreatureLib::Library::AttackTarget::Any, 0, new CreatureLib::Library::SecondaryEffect(-1, "struggle"_cnc, {}), std::unordered_set()); ; std::unique_ptr _struggle = std::make_unique(_struggleData, CreatureLib::Battling::AttackLearnMethod::Unknown); [[nodiscard]] ArbUt::BorrowedPtr GetReplacementAttack() const { _struggle->RestoreAllUses(); return _struggle; } public: ~MiscLibrary() override = default; bool IsCritical(CreatureLib::Battling::ExecutingAttack* attack, CreatureLib::Battling::Creature* target, uint8_t hit) const override; bool CanFlee(CreatureLib::Battling::FleeTurnChoice* switchChoice) const override; CreatureLib::Battling::BaseTurnChoice* ReplacementAttack(CreatureLib::Battling::Creature* user, CreatureLib::Battling::CreatureIndex target) const override; }; } #endif // PKMNLIB_MISCLIBRARY_HPP