#include #include #include #include #include "../../../extern/catch.hpp" #include "../Macros/MoveMacros.hpp" TEST_CASE("Struggle - Damages by 1/4th of users max health", "[moves]") { auto library = Library::GetLibrary(); auto userMon = PkmnLib::Battling::CreatePokemon(library, "charizard"_cnc, 50).Build(); auto targetMon = PkmnLib::Battling::CreatePokemon(library, "venusaur"_cnc, 50).Build(); auto userParty = new CreatureLib::Battling::CreatureParty({userMon}); auto targetParty = new CreatureLib::Battling::CreatureParty({targetMon}); auto battle = new PkmnLib::Battling::Battle( library, { new CreatureLib::Battling::BattleParty(userParty, {CreatureLib::Battling::CreatureIndex(0, 0)}), new CreatureLib::Battling::BattleParty(targetParty, {CreatureLib::Battling::CreatureIndex(1, 0)}), }); userMon->SetBattleData(battle, battle->GetSides()[0]); targetMon->SetBattleData(battle, battle->GetSides()[1]); auto& script = ((CreatureLib::Battling::AttackTurnChoice*)library->GetMiscLibrary()->ReplacementAttack( userMon, CreatureLib::Battling::CreatureIndex(1, 0))) ->GetAttackScript(); REQUIRE(script != nullptr); auto choice = (CreatureLib::Battling::AttackTurnChoice*)library->GetMiscLibrary()->ReplacementAttack( userMon, CreatureLib::Battling::CreatureIndex(1, 0)); auto executingMove = new CreatureLib::Battling::ExecutingAttack({targetMon}, 1, userMon, choice->GetAttack(), choice->GetAttackScript()); script->OnSecondaryEffect(executingMove, targetMon, 0); CHECK(userMon->GetCurrentHealth() == userMon->GetMaxHealth() - (userMon->GetMaxHealth() / 4)); delete executingMove; delete targetParty; delete userParty; delete battle; }