diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index 9a2ba6ad..f8210df9 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -642,11 +642,16 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) normal_dmg *= 1.5; } float finaly_dmg = normal_dmg; - float dmg_addition = owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg); + float dmg_addition = 0.0f; Buff* buff = owner_.Get()->GetBuffByEffectId(kBET_DistanceDmgAddition); if (buff) { DistanceDmgAdditionBuff* spec_buff = (DistanceDmgAdditionBuff*)buff; float distance = owner_.Get()->GetPos().Distance2D2(target->GetPos()); + if (spec_buff->distance > 0.0f) { + dmg_addition += std::max(10.0f, distance / spec_buff->distance) * spec_buff->add; + } else { + dmg_addition += spec_buff->min_add; + } } dmg_addition += owner_.Get()->GetAbility()->GetAttrAddition(kHVAT_Dmg); finaly_dmg *= (1 + dmg_addition); //连加