mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
* Initial int64 work * Hate 64 bit * Update special_attacks.cpp * Aggro / Damage / Hate int64 * NPC edit adjustments * Fix bot compile * More int64 adjustments * More int64 references * npcedit references * aggrozone * More int64 changes * More int64 changes for damage * Many more damage int64 references * More spell damage int64 conversions * HealDamage * Damage fully working * Remove debug * Add migration * More int64 adjustments * Much wow, many int64 * More int64 * PR adjustments
61 lines
1.3 KiB
C++
61 lines
1.3 KiB
C++
#include "combat_record.h"
|
|
#include "../common/eqemu_logsys.h"
|
|
#include "../common/string_util.h"
|
|
|
|
void CombatRecord::Start(std::string in_mob_name)
|
|
{
|
|
start_time = std::time(nullptr);
|
|
end_time = 0;
|
|
damage_received = 0;
|
|
heal_received = 0;
|
|
mob_name = in_mob_name;
|
|
}
|
|
|
|
void CombatRecord::Stop()
|
|
{
|
|
end_time = std::time(nullptr);
|
|
|
|
double time_in_combat = TimeInCombat();
|
|
|
|
LogCombatRecord(
|
|
"[Summary] Mob [{}] [Received] DPS [{:.0f}] Heal/s [{:.0f}] Duration [{}] ({}s)",
|
|
mob_name,
|
|
time_in_combat > 0 ? (damage_received / time_in_combat) : damage_received,
|
|
time_in_combat > 0 ? (heal_received / time_in_combat) : heal_received,
|
|
time_in_combat > 0 ? ConvertSecondsToTime(time_in_combat) : "",
|
|
time_in_combat
|
|
);
|
|
}
|
|
|
|
bool CombatRecord::InCombat()
|
|
{
|
|
return start_time > 0;
|
|
}
|
|
|
|
void CombatRecord::ProcessHPEvent(int64 hp, int64 current_hp)
|
|
{
|
|
// damage
|
|
if (hp < current_hp) {
|
|
damage_received = damage_received + std::llabs(current_hp - hp);
|
|
}
|
|
|
|
// heal
|
|
if (hp > current_hp && current_hp > 0) {
|
|
heal_received = heal_received + std::llabs(current_hp - hp);
|
|
}
|
|
|
|
LogCombatRecordDetail(
|
|
"damage_received [{}] heal_received [{}] current_hp [{}] hp [{}] calc [{}]",
|
|
damage_received,
|
|
heal_received,
|
|
current_hp,
|
|
hp,
|
|
std::llabs(current_hp - hp)
|
|
);
|
|
}
|
|
|
|
double CombatRecord::TimeInCombat() const
|
|
{
|
|
return difftime(end_time, start_time);
|
|
}
|