diff --git a/conanfile.py b/conanfile.py index 8c3edf9..9b883c6 100644 --- a/conanfile.py +++ b/conanfile.py @@ -44,7 +44,7 @@ class PkmnLibConan(ConanFile): self.options["AngelScript"].link_std_statically = True def requirements(self): - self.requires("CreatureLib/2dcb197191f8e26a106c032f09476073cce0f2df@creaturelib/master") + self.requires("CreatureLib/8d4860f5534b105c35e2b2a640163461076f321d@creaturelib/master") if self.options.script_handler == "angelscript": self.requires("AngelScript/2.34@AngelScript/Deukhoofd") else: diff --git a/src/ScriptResolving/AngelScript/TypeRegistry/Battling/RegisterPokemonClass.cpp b/src/ScriptResolving/AngelScript/TypeRegistry/Battling/RegisterPokemonClass.cpp index 3a02adc..83b26e5 100644 --- a/src/ScriptResolving/AngelScript/TypeRegistry/Battling/RegisterPokemonClass.cpp +++ b/src/ScriptResolving/AngelScript/TypeRegistry/Battling/RegisterPokemonClass.cpp @@ -129,9 +129,15 @@ void RegisterPokemonClass::RegisterPokemonType(asIScriptEngine* engine) { r = engine->RegisterObjectMethod("Pokemon", "bool HasType(uint8 type) const", asMETHOD(PkmnLib::Battling::Pokemon, HasType), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectMethod("Pokemon", "uint32 get_MaxHealth() const property", + asMETHOD(PkmnLib::Battling::Pokemon, GetMaxHealth), asCALL_THISCALL); + assert(r >= 0); r = engine->RegisterObjectMethod("Pokemon", "void Damage(uint32 type, DamageSource source)", asMETHOD(PkmnLib::Battling::Pokemon, Damage), asCALL_THISCALL); assert(r >= 0); + r = engine->RegisterObjectMethod("Pokemon", "void Heal(uint32 type)", + asMETHOD(PkmnLib::Battling::Pokemon, Heal), asCALL_THISCALL); + assert(r >= 0); r = engine->RegisterObjectMethod("Pokemon", "void OverrideActiveAbility(const string &in ability)", asMETHOD(PkmnLib::Battling::Pokemon, OverrideActiveTalent), asCALL_THISCALL); assert(r >= 0); diff --git a/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp b/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp index 06515ac..edf7da6 100644 --- a/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp +++ b/tests/ScriptTests/ScriptTypeTests/Battle/PokemonTests.cpp @@ -21,6 +21,7 @@ class testScript1 { bool testType(Pokemon@ p, uint index, uint8 type){ return p.GetTypes()[index] == type; } bool testHasType(Pokemon@ p, uint8 type){ return p.HasType(type); } void testDamage(Pokemon@ p, uint32 damage, DamageSource source){ p.Damage(damage, source); } + void testHeal(Pokemon@ p, uint32 amount){ p.Heal(amount); } bool testMove(Pokemon@ p, uint index, LearnedMove@ move){ return p.GetMoves()[index] is move; } } @@ -292,6 +293,25 @@ TEST_CASE("Validate Pokemon Damage in Script") { delete mon; } +TEST_CASE("Validate Pokemon Heal in Script") { + auto mainLib = TestLibrary::GetLibrary(); + + auto mon = PkmnLib::Battling::CreatePokemon(mainLib, "testSpecies3", 30) + .WithForme("default") + ->WithGender(CreatureLib::Library::Gender::Male) + ->Build(); + mon->Damage(50, CreatureLib::Battling::DamageSource::AttackDamage); + auto data = GetScript(mainLib, "testHeal"); + + data.Context->SetArgObject(0, const_cast(mon)); + data.Context->SetArgDWord(1, 30); + + REQUIRE(data.Context->Execute() == asEXECUTION_FINISHED); + REQUIRE(mon->GetCurrentHealth() == mon->GetBoostedStat(PkmnLib::Library::Statistic::HealthPoints) - 20); + + delete mon; +} + TEST_CASE("Validate Pokemon GetMoves in Script") { auto mainLib = TestLibrary::GetLibrary();