This commit is contained in:
aozhiwei 2024-01-05 15:43:46 +08:00
parent cb9a52f6c9
commit ed80cb3fe8

View File

@ -842,7 +842,37 @@ float BattleDataContext::CalcReceiveDmg(Creature* sender, float normal_dmg)
float BattleDataContext::CalcSkillReceiveDmg(Creature* sender, float normal_dmg) float BattleDataContext::CalcSkillReceiveDmg(Creature* sender, float normal_dmg)
{ {
g_calc_dmg_context = {0};
g_calc_dmg_context.is_crit = 0;
float vEbc = 1.0f;
float vEd = 1 - GetDef();
float X = (1 + sender->GetNetData()->GetHeroAbility()->GetCrit()) * (1 - GetBlock()) - 1;
if (X > 0.00001f) {
//触发暴击
float vCritBon = sender->GetNetData()->GetHeroAbility()->hero_meta->GetBasicMeta()->vOrigCriBon();
float E = ProEffect(X, vCritBon); //E >= 0
if (E > 0.00001f) {
vEbc = 1 + E;
}
} else {
//触发格挡 0,-1
float vBlock = GetHeroAbility()->hero_meta->GetBasicMeta()->vOrigBloDef();
float E = ProEffect(X, -vBlock); //E >= 0
if (E < 0.00001f) {
vEbc = 1 + E;
}
}
float BDM = 100;
float vSkillDamageDealtRateIn = 0.0f;
float vSkillDamageTakenRateIn = 0.0f;
float vDmg = normal_dmg * (1 + vSkillDamageDealtRateIn) * (1 + vSkillDamageTakenRateIn);
float DDR = 0.0f;
float DTR = 0.0f;
float finaly_dmg = vDmg * vEbc * vEd * (1 + DDR) * (1 + DTR);
return std::max(1.0f, std::round(finaly_dmg));
} }
float BattleDataContext::CalcDmg(Explosion* e) float BattleDataContext::CalcDmg(Explosion* e)