#ifndef CREATURELIB_BATTLECREATURE_HPP #define CREATURELIB_BATTLECREATURE_HPP #include "../../Defines.hpp" #include "../../Library/ClampedStatisticSet.hpp" #include "../../Library/CreatureData/CreatureSpecies.hpp" #include "../../Library/Items/Item.hpp" #include "../ScriptHandling/ScriptAggregator.hpp" #include "../ScriptHandling/ScriptSet.hpp" #include "../ScriptHandling/ScriptSource.hpp" #include "DamageSource.hpp" #include "LearnedAttack.hpp" namespace CreatureLib::Battling { // Forward declare battle class class Battle; class BattleSide; class BattleLibrary; class Creature : public ScriptSource { protected: ArbUt::BorrowedPtr _library; ArbUt::BorrowedPtr _species; ArbUt::BorrowedPtr _variant; ArbUt::BorrowedPtr _displaySpecies = nullptr; ArbUt::BorrowedPtr _displayVariant = nullptr; level_int_t _level; uint32_t _experience; uint32_t _uniqueIdentifier; Library::Gender _gender; uint8_t _coloring; ArbUt::BorrowedPtr _heldItem; uint32_t _currentHealth = -1; Library::ClampedStatisticSet _statBoost; Library::StatisticSet _flatStats; Library::StatisticSet _boostedStats; ArbUt::BorrowedPtr _battle = nullptr; ArbUt::BorrowedPtr _side = nullptr; bool _onBattleField = false; std::string _nickname = ""; CreatureLib::Library::TalentIndex _talentIndex; std::unique_ptr