diff --git a/src/Battling/Models/Creature.cpp b/src/Battling/Models/Creature.cpp index e3c00f6..10e029b 100644 --- a/src/Battling/Models/Creature.cpp +++ b/src/Battling/Models/Creature.cpp @@ -178,3 +178,10 @@ const Library::SpeciesVariant* Battling::Creature::GetDisplayVariant() const { variant = _variant; return variant; } +void Battling::Creature::SetHeldItem(const std::string& itemName) { + const Library::Item* item; + if (!_library->GetItemLibrary()->TryGet(itemName, item)) { + throw CreatureException("Item not found."); + } + _heldItem = item; +} diff --git a/src/Battling/Models/Creature.hpp b/src/Battling/Models/Creature.hpp index f9ccc19..63c573a 100644 --- a/src/Battling/Models/Creature.hpp +++ b/src/Battling/Models/Creature.hpp @@ -82,7 +82,13 @@ namespace CreatureLib::Battling { inline uint32_t GetExperience() const { return _experience; } inline Library::Gender GetGender() const { return _gender; } inline uint8_t GetColoring() const { return _coloring; } + inline const bool HasHeldItem(const std::string& name) const { + return _heldItem != nullptr && _heldItem->GetName() == name; + } inline const Library::Item* GetHeldItem() const { return _heldItem; } + void SetHeldItem(const std::string& itemName); + inline void SetHeldItem(Library::Item* item) { _heldItem = item; }; + inline uint32_t GetCurrentHealth() const { return _currentHealth; } void SetBattleData(Battle* battle, BattleSide* side);