54 lines
2.3 KiB
C++
54 lines
2.3 KiB
C++
#include "BattleStatCalculator.hpp"
|
|
#include "../Models/Creature.hpp"
|
|
|
|
using namespace CreatureLib;
|
|
|
|
Core::StatisticSet<uint32_t>
|
|
Battling::BattleStatCalculator::CalculateFlatStats(Battling::Creature *creature) const {
|
|
return Core::StatisticSet<uint32_t>(
|
|
CalculateFlatStat(creature, Core::Statistic::Health),
|
|
CalculateFlatStat(creature, Core::Statistic::PhysicalAttack),
|
|
CalculateFlatStat(creature, Core::Statistic::PhysicalDefense),
|
|
CalculateFlatStat(creature, Core::Statistic::MagicalAttack),
|
|
CalculateFlatStat(creature, Core::Statistic::MagicalDefense),
|
|
CalculateFlatStat(creature, Core::Statistic::Speed)
|
|
);
|
|
}
|
|
|
|
Core::StatisticSet<uint32_t>
|
|
Battling::BattleStatCalculator::CalculateBoostedStats(Battling::Creature *creature) const {
|
|
return Core::StatisticSet<uint32_t>(
|
|
CalculateBoostedStat(creature, Core::Statistic::Health),
|
|
CalculateBoostedStat(creature, Core::Statistic::PhysicalAttack),
|
|
CalculateBoostedStat(creature, Core::Statistic::PhysicalDefense),
|
|
CalculateBoostedStat(creature, Core::Statistic::MagicalAttack),
|
|
CalculateBoostedStat(creature, Core::Statistic::MagicalDefense),
|
|
CalculateBoostedStat(creature, Core::Statistic::Speed)
|
|
);
|
|
}
|
|
|
|
uint32_t CalculateHealthStat(Battling::Creature *creature){
|
|
auto level = creature->GetLevel();
|
|
auto a = (creature->GetBaseStat(Core::Statistic::Health) + creature->GetStatPotential(Core::Statistic::Health)) * 2 +
|
|
floor(sqrt(creature->GetStatExperience(Core::Statistic::Health) / 4)) * level;
|
|
return floor(a / 100) + level + 10;
|
|
}
|
|
|
|
uint32_t CalculateOtherStat(Battling::Creature *creature, Core::Statistic stat){
|
|
auto level = creature->GetLevel();
|
|
auto a = (creature->GetBaseStat(stat) + creature->GetStatPotential(stat)) * 2 +
|
|
floor(sqrt(creature->GetStatExperience(stat) / 4)) * level;
|
|
return floor(a / 100) + 10;
|
|
}
|
|
|
|
|
|
uint32_t Battling::BattleStatCalculator::CalculateFlatStat(Battling::Creature *creature, Core::Statistic stat) const{
|
|
if (stat == Core::Statistic::Health)
|
|
return CalculateHealthStat(creature);
|
|
return CalculateOtherStat(creature, stat);
|
|
}
|
|
|
|
uint32_t Battling::BattleStatCalculator::CalculateBoostedStat(Battling::Creature *creature, Core::Statistic stat) const{
|
|
throw "TODO";
|
|
}
|