Support for attack when other attacks can't be used in MiscLibrary.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2020-03-12 11:15:00 +01:00
parent 7435a2a678
commit 5672f2d2a7
4 changed files with 60 additions and 4 deletions

View File

@@ -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);
}

View File

@@ -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;
};
}