Support for attack when other attacks can't be used in MiscLibrary.
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -1,9 +1,38 @@
|
||||
#include "MiscLibrary.hpp"
|
||||
#include "../Models/Battle.hpp"
|
||||
#include "../TurnChoices/AttackTurnChoice.hpp"
|
||||
|
||||
bool CreatureLib::Battling::MiscLibrary::IsCritical(CreatureLib::Battling::ExecutingAttack* attack,
|
||||
CreatureLib::Battling::Creature* target, uint8_t hit) const {
|
||||
auto rand = target->GetBattle()->GetRandom();
|
||||
return rand->Get(10) <= 0;
|
||||
}
|
||||
|
||||
static CreatureLib::Battling::LearnedAttack* _replacementAttack = nullptr;
|
||||
static CreatureLib::Library::AttackData* _replacementAttackData = nullptr;
|
||||
|
||||
static CreatureLib::Library::AttackData* GetReplacementAttackData() {
|
||||
if (_replacementAttackData == nullptr) {
|
||||
_replacementAttackData =
|
||||
new CreatureLib::Library::AttackData("replacement"_cnc, 0, CreatureLib::Library::AttackCategory::Physical,
|
||||
30, 255, 255, CreatureLib::Library::AttackTarget::Any, 0, {});
|
||||
}
|
||||
return _replacementAttackData;
|
||||
}
|
||||
|
||||
static CreatureLib::Battling::LearnedAttack* GetReplacementAttack() {
|
||||
if (_replacementAttack == nullptr) {
|
||||
_replacementAttack = new CreatureLib::Battling::LearnedAttack(
|
||||
GetReplacementAttackData(), CreatureLib::Battling::AttackLearnMethod::Unknown);
|
||||
}
|
||||
return _replacementAttack;
|
||||
}
|
||||
|
||||
bool CreatureLib::Battling::MiscLibrary::CanFlee(FleeTurnChoice* switchChoice) const { return true; }
|
||||
CreatureLib::Battling::BaseTurnChoice*
|
||||
CreatureLib::Battling::MiscLibrary::ReplacementAttack(Creature* user, CreatureIndex target) const {
|
||||
auto sideTarget = 0;
|
||||
if (user->GetBattleSide()->GetSideIndex() == 0)
|
||||
sideTarget = 1;
|
||||
return new AttackTurnChoice(user, GetReplacementAttack(), target);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#ifndef CREATURELIB_MISCLIBRARY_HPP
|
||||
#define CREATURELIB_MISCLIBRARY_HPP
|
||||
|
||||
#include "../Models/CreatureIndex.hpp"
|
||||
#include "../Models/ExecutingAttack.hpp"
|
||||
#include "../TurnChoices/FleeTurnChoice.hpp"
|
||||
|
||||
@@ -10,6 +11,7 @@ namespace CreatureLib::Battling {
|
||||
virtual ~MiscLibrary() = default;
|
||||
virtual bool IsCritical(ExecutingAttack* attack, Creature* target, uint8_t hit) const;
|
||||
virtual bool CanFlee(FleeTurnChoice* switchChoice) const;
|
||||
virtual BaseTurnChoice* ReplacementAttack(Creature* user, CreatureIndex target) const;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user