72 lines
3.4 KiB
C++
72 lines
3.4 KiB
C++
#include "Creature.hpp"
|
|
|
|
CreatureLib::Library::Creature::Creature(const CreatureLib::Library::DataLibrary *library,
|
|
const CreatureLib::Library::CreatureSpecies *species,
|
|
const CreatureLib::Library::SpeciesVariant *variant, uint8_t level,
|
|
std::string nickname, int8_t talentIndex,
|
|
CreatureLib::Core::StatisticSet<uint8_t > statExperience,
|
|
CreatureLib::Core::StatisticSet<uint8_t > statPotential,
|
|
uint32_t identifier, CreatureLib::Library::Gender gender, uint8_t coloring,
|
|
const CreatureLib::Library::Item *heldItem)
|
|
:
|
|
__Library(library),
|
|
__Species(species),
|
|
__Variant(variant),
|
|
__Level(level),
|
|
__StatExperience(statExperience),
|
|
__StatPotential(statPotential),
|
|
__UniqueIdentifier(identifier),
|
|
__Gender(gender),
|
|
__Coloring(coloring),
|
|
__HeldItem(heldItem),
|
|
_nickname(nickname),
|
|
_talentIndex(talentIndex)
|
|
{
|
|
|
|
}
|
|
|
|
std::string CreatureLib::Library::Creature::GetTalent() const {
|
|
return __Variant->GetTalent(_talentIndex);
|
|
}
|
|
|
|
std::string CreatureLib::Library::Creature::GetNickname() const {
|
|
if (_nickname.empty())
|
|
return __Species->GetName();
|
|
return _nickname;
|
|
}
|
|
|
|
int32_t CalculateHealth(const CreatureLib::Library::Creature* creature){
|
|
auto baseStat = creature->GetVariant()->GetStatistic(CreatureLib::Core::Statistic::Health);
|
|
auto statPotential = creature->GetStatPotential().GetHealth();
|
|
auto statExperience = creature->GetStatExperience().GetHealth();
|
|
auto level = creature->GetLevel();
|
|
return ((2 * baseStat + statPotential + (statExperience / 4) * level) / 100) + level + 10;
|
|
}
|
|
|
|
int32_t CalculateStat(const CreatureLib::Library::Creature* creature, CreatureLib::Core::Statistic stat){
|
|
auto baseStat = creature->GetVariant()->GetStatistic(stat);
|
|
auto statPotential = creature->GetStatPotential().GetStat(stat);
|
|
auto statExperience = creature->GetStatExperience().GetStat(stat);
|
|
auto level = creature->GetLevel();
|
|
return ((2 * baseStat + statPotential + (statExperience / 4) * level) / 100) + 5;
|
|
}
|
|
|
|
|
|
uint32_t CreatureLib::Library::Creature::CalculateFullStat(CreatureLib::Core::Statistic stat) const {
|
|
if (stat == Core::Statistic::Health)
|
|
return CalculateHealth(this);
|
|
return CalculateStat(this, stat);
|
|
}
|
|
|
|
uint16_t CreatureLib::Library::Creature::GetBaseStat(CreatureLib::Core::Statistic stat) const {
|
|
return this->GetVariant()->GetStatistic(stat);
|
|
}
|
|
|
|
uint8_t CreatureLib::Library::Creature::GetStatPotential(CreatureLib::Core::Statistic stat) const {
|
|
return this->__StatPotential.GetStat(stat);
|
|
}
|
|
|
|
uint8_t CreatureLib::Library::Creature::GetStatExperience(CreatureLib::Core::Statistic stat) const {
|
|
return this->__StatExperience.GetStat(stat);
|
|
}
|