58 lines
2.4 KiB
C++
58 lines
2.4 KiB
C++
#include <CreatureLib/Battling/Models/ExecutingAttack.hpp>
|
|
#include <PkmnLib/Battling/Pokemon/CreatePokemon.hpp>
|
|
#include "../../../extern/catch.hpp"
|
|
#include "../../Library.hpp"
|
|
|
|
TEST_CASE("Absorb - Heals on use", "[moves]") {
|
|
auto library = Library::GetLibrary();
|
|
auto userMon = PkmnLib::Battling::CreatePokemon(library, "charizard", 50)
|
|
.LearnMove("absorb", CreatureLib::Battling::AttackLearnMethod::Unknown)
|
|
->Build();
|
|
userMon->Damage(50, CreatureLib::Battling::DamageSource::AttackDamage);
|
|
auto targetMon = PkmnLib::Battling::CreatePokemon(library, "venusaur", 50).Build();
|
|
auto executingMove =
|
|
new CreatureLib::Battling::ExecutingAttack({targetMon}, 1, userMon, userMon->GetMoves()[0], nullptr);
|
|
executingMove->GetAttackDataForTarget(targetMon)->GetHit(0)->SetDamage(50);
|
|
|
|
auto script = library->LoadScript(CreatureLib::Battling::ScriptResolver::ScriptCategory::Attack, "Absorb");
|
|
REQUIRE(script != nullptr);
|
|
try{
|
|
script->OnSecondaryEffect(executingMove, targetMon, 0);
|
|
}
|
|
catch (const CreatureException& e){
|
|
FAIL(e.what());
|
|
}
|
|
CHECK(userMon->GetCurrentHealth() == userMon->GetMaxHealth() - 25);
|
|
delete script;
|
|
delete executingMove;
|
|
delete targetMon;
|
|
delete userMon;
|
|
}
|
|
|
|
TEST_CASE("Absorb - Heals more with big root", "[moves]") {
|
|
auto library = Library::GetLibrary();
|
|
auto userMon = PkmnLib::Battling::CreatePokemon(library, "charizard", 50)
|
|
.LearnMove("absorb", CreatureLib::Battling::AttackLearnMethod::Unknown)
|
|
->WithHeldItem("big_root")
|
|
->Build();
|
|
userMon->Damage(50, CreatureLib::Battling::DamageSource::AttackDamage);
|
|
auto targetMon = PkmnLib::Battling::CreatePokemon(library, "venusaur", 50).Build();
|
|
auto executingMove =
|
|
new CreatureLib::Battling::ExecutingAttack({targetMon}, 1, userMon, userMon->GetMoves()[0], nullptr);
|
|
executingMove->GetAttackDataForTarget(targetMon)->GetHit(0)->SetDamage(50);
|
|
|
|
auto script = library->LoadScript(CreatureLib::Battling::ScriptResolver::ScriptCategory::Attack, "Absorb");
|
|
REQUIRE(script != nullptr);
|
|
try{
|
|
script->OnSecondaryEffect(executingMove, targetMon, 0);
|
|
}
|
|
catch (const CreatureException& e){
|
|
FAIL(e.what());
|
|
}
|
|
CHECK(userMon->GetCurrentHealth() == userMon->GetMaxHealth() - 18);
|
|
delete script;
|
|
delete executingMove;
|
|
delete targetMon;
|
|
delete userMon;
|
|
}
|