#include "BattleStatCalculator.hpp" #include "../Models/BattleCreature.hpp" using namespace CreatureLib; Core::StatisticSet Battling::BattleStatCalculator::CalculateStats(Battling::BattleCreature *creature) const { return Core::StatisticSet( CalculateStat(creature, Core::Statistic::Health), CalculateStat(creature, Core::Statistic::PhysicalAttack), CalculateStat(creature, Core::Statistic::PhysicalDefense), CalculateStat(creature, Core::Statistic::MagicalAttack), CalculateStat(creature, Core::Statistic::MagicalDefense), CalculateStat(creature, Core::Statistic::Speed) ); } uint32_t CalculateHealthStat(Battling::BattleCreature *creature){ auto base = creature->GetBackingCreature(); auto level = creature->GetLevel(); auto a = (base->GetBaseStat(Core::Statistic::Health) + base->GetStatPotential(Core::Statistic::Health)) * 2 + floor(sqrt(base->GetStatExperience(Core::Statistic::Health) / 4)) * level; return floor(a / 100) + level + 10; } uint32_t CalculateOtherStat(Battling::BattleCreature *creature, Core::Statistic stat){ auto base = creature->GetBackingCreature(); auto level = creature->GetLevel(); auto a = (base->GetBaseStat(stat) + base->GetStatPotential(stat)) * 2 + floor(sqrt(base->GetStatExperience(stat) / 4)) * level; return floor(a / 100) + 10; } uint32_t Battling::BattleStatCalculator::CalculateStat(Battling::BattleCreature *creature, Core::Statistic stat) const{ if (stat == Core::Statistic::Health) return CalculateHealthStat(creature); return CalculateOtherStat(creature, stat); }