#ifndef PKMNLIB_MISCLIBRARY_HPP #define PKMNLIB_MISCLIBRARY_HPP #include #include "../../Library/Moves/MoveData.hpp" #include "../Pokemon/LearnedMove.hpp" namespace PkmnLib::Battling { class MiscLibrary : public CreatureLib::Battling::MiscLibrary { PkmnLib::Library::MoveData* _struggleData = new PkmnLib::Library::MoveData("struggle"_cnc, 0, PkmnLib::Library::MoveCategory::Physical, 50, 255, 10, CreatureLib::Library::AttackTarget::Any, 0, new CreatureLib::Library::SecondaryEffect(-1, "struggle"_cnc, {}), {}); ; CreatureLib::Battling::LearnedAttack* _struggle = new PkmnLib::Battling::LearnedMove(_struggleData, CreatureLib::Battling::AttackLearnMethod::Unknown); [[nodiscard]] CreatureLib::Battling::LearnedAttack* GetReplacementAttack() const { _struggle->RestoreAllUses(); return _struggle; } public: ~MiscLibrary() override { delete _struggle; delete _struggleData; }; 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