int32 Client::CalcBaseHP() { if(GetClientVersion() >= EQClientSoF && RuleB(Character, SoDClientUseSoDHPManaEnd)) { int stats = GetSTA(); if(stats > 255) { stats = (stats - 255) / 2; stats += 255; } base_hp = 5; auto base_data = database.GetBaseData(GetLevel(), GetClass()); if(base_data) { base_hp += base_data->base_hp + (base_data->hp_factor * stats); base_hp += (GetHeroicSTA() * 10); } } else { uint32 Post255; uint32 lm=GetClassLevelFactor(); if((GetSTA()-255)/2 > 0) Post255 = (GetSTA()-255)/2; else Post255 = 0; base_hp = (5)+(GetLevel()*lm/10) + (((GetSTA()-Post255)*GetLevel()*lm/3000)) + ((Post255*GetLevel())*lm/6000); } return base_hp; }
int32 Client::CalcBaseHP() { uint32 Post255; uint32 lm=GetClassLevelFactor(); if((GetSTA()-255)/2 > 0) Post255 = (GetSTA()-255)/2; else Post255 = 0; base_hp = (5)+(GetLevel()*lm/10) + (((GetSTA()-Post255)*GetLevel()*lm/3000)) + ((Post255*GetLevel())*lm/6000); return base_hp; }
int32 Client::CalcBaseHP() { if(GetClientVersion() >= EQClientSoD && RuleB(Character, SoDClientUseSoDHPManaEnd)) { float SoDPost255; uint16 NormalSTA = GetSTA(); if(((NormalSTA - 255) / 2) > 0) SoDPost255 = ((NormalSTA - 255) / 2); else SoDPost255 = 0; int hp_factor = GetClassHPFactor(); if (level < 41) { base_hp = (5 + (GetLevel() * hp_factor / 12) + ((NormalSTA - SoDPost255) * GetLevel() * hp_factor / 3600)); } else if (level < 81) { base_hp = (5 + (40 * hp_factor / 12) + ((GetLevel() - 40) * hp_factor / 6) + ((NormalSTA - SoDPost255) * hp_factor / 90) + ((NormalSTA - SoDPost255) * (GetLevel() - 40) * hp_factor / 1800)); } else { base_hp = (5 + (80 * hp_factor / 8) + ((GetLevel() - 80) * hp_factor / 10) + ((NormalSTA - SoDPost255) * hp_factor / 90) + ((NormalSTA - SoDPost255) * hp_factor / 45)); } base_hp += (GetHeroicSTA() * 10); } else { uint16 Post255; uint16 lm=GetClassLevelFactor(); if((GetSTA()-255)/2 > 0) Post255 = (GetSTA()-255)/2; else Post255 = 0; base_hp = (5)+(GetLevel()*lm/10) + (((GetSTA()-Post255)*GetLevel()*lm/3000)) + ((Post255*GetLevel())*lm/6000); } return base_hp; }