diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index 4c268f9d..8ec4ea60 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -41,6 +41,7 @@ struct CalcDmgContext int is_crit = 0; int is_block = 0; float crit_dmg = 0.0f; + int dmg_bp = 0; }; static CalcDmgContext g_calc_dmg_context = {0}; @@ -791,7 +792,6 @@ static float ProEffect(Creature* c, float p, float b){ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) { g_calc_dmg_context = {0}; - g_calc_dmg_context.is_crit = 0; #ifdef MYDEBUG std::vector dbg_strings; @@ -829,6 +829,7 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) E = ProEffect(owner_.Get(), X / vCritBon, vCritBon); //E >= 0 if (E > 0.00001f) { vEbc = 1 + E; + g_calc_dmg_context.dmg_bp = mt::Param::GetCritEffect(E); } } else if (X < -0.00001f) { //触发格挡 0,-1 @@ -836,6 +837,7 @@ float BattleDataContext::CalcDmg(Creature* target, IBullet* bullet) E = ProEffect(owner_.Get(), X / (-vBlock) , -vBlock); //E >= 0 if (E < 0.00001f) { vEbc = 1 + E; + g_calc_dmg_context.dmg_bp = mt::Param::GetBlockEffect(E); } } else { vEbc = 1.0f; @@ -1215,17 +1217,17 @@ float BattleDataContext::GetCritDmg() int BattleDataContext::GetCritBp() { - return 0; + return g_calc_dmg_context.dmg_bp; } int BattleDataContext::GetBlockBp() { - return 0; + return g_calc_dmg_context.dmg_bp; } int BattleDataContext::GetDmgBp() { - return 0; + return g_calc_dmg_context.dmg_bp; } int BattleDataContext::GetSkinId()