36 lines
1.7 KiB
C++
36 lines
1.7 KiB
C++
#ifndef PKMNLIB_MISCLIBRARY_HPP
|
|
#define PKMNLIB_MISCLIBRARY_HPP
|
|
|
|
#include <CreatureLib/Battling/Library/MiscLibrary.hpp>
|
|
#include "../../Library/Moves/MoveData.hpp"
|
|
#include "../Pokemon/LearnedMove.hpp"
|
|
|
|
namespace PkmnLib::Battling {
|
|
class MiscLibrary final : public CreatureLib::Battling::MiscLibrary {
|
|
std::unique_ptr<const PkmnLib::Library::MoveData> _struggleData = std::make_unique<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, {}), std::unordered_set<uint32_t>());
|
|
;
|
|
std::unique_ptr<CreatureLib::Battling::LearnedAttack> _struggle =
|
|
std::make_unique<PkmnLib::Battling::LearnedMove>(_struggleData,
|
|
CreatureLib::Battling::AttackLearnMethod::Unknown);
|
|
|
|
[[nodiscard]] ArbUt::BorrowedPtr<CreatureLib::Battling::LearnedAttack> 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
|