From 5f46eb1289c0cffa637410703adf13eac09bcd18 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Mar 2023 14:16:07 +0800 Subject: [PATCH] 1 --- server/gameserver/battledatacontext.cc | 10 ++++++++++ server/gameserver/battledatacontext.h | 2 ++ server/gameserver/human.cc | 24 ++++++++++++------------ server/gameserver/player.cc | 3 +-- 4 files changed, 25 insertions(+), 14 deletions(-) diff --git a/server/gameserver/battledatacontext.cc b/server/gameserver/battledatacontext.cc index a24304c3..e4712cec 100644 --- a/server/gameserver/battledatacontext.cc +++ b/server/gameserver/battledatacontext.cc @@ -902,3 +902,13 @@ float BattleDataContext::GetRescueTimePct() { return 0.0f; } + +float BattleDataContext::GetDrugTimePct() +{ + return 0.0f; +} + +float BattleDataContext::GetDrugEfficacyPct() +{ + return 0.0f; +} diff --git a/server/gameserver/battledatacontext.h b/server/gameserver/battledatacontext.h index 8433a42f..43f60ec9 100644 --- a/server/gameserver/battledatacontext.h +++ b/server/gameserver/battledatacontext.h @@ -64,6 +64,8 @@ struct BattleDataContext float GetBrainLifePct(); float GetSkillCdPct(); float GetRescueTimePct(); + float GetDrugTimePct(); + float GetDrugEfficacyPct(); void SetReviveCoin(int num); int GetReviveCoin(); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 2c01b610..1e3cdac7 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1767,19 +1767,16 @@ void Human::ProcUseItemAction() case IS_HEALTHKIT: { +stats->use_medicine_times; + float heal = std::get<1>(item_meta->_heal); switch (std::get<0>(item_meta->_heal)) { case 1: { - #if 1 - AddHp(std::get<1>(item_meta->_heal)); - #else - AddHp(std::<>item_meta->heal() * (1 + GetAbility()->GetAttrRate(kHAT_DrugEfficacy))); - #endif + AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; case 2: { - AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); + AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; default: @@ -1813,15 +1810,16 @@ void Human::ProcUseItemAction() [this, item_meta] (int event, const a8::Args* args) { if (a8::TIMER_EXEC_EVENT == event) { + float heal = std::get<1>(item_meta->_heal); switch (std::get<0>(item_meta->_heal)) { case 1: { - AddHp(std::get<1>(item_meta->_heal)); + AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; case 2: { - AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); + AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; default: @@ -1837,15 +1835,16 @@ void Human::ProcUseItemAction() }, &xtimer_attacher); } + float heal = std::get<1>(item_meta->_heal); switch (std::get<0>(item_meta->_heal)) { case 1: { - AddHp(std::get<1>(item_meta->_heal)); + AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; case 2: { - AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); + AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; default: @@ -1872,15 +1871,16 @@ void Human::ProcUseItemAction() RemoveBuffById(kDownBuffId); } SyncAroundPlayers(__FILE__, __LINE__, __func__); + float heal = std::get<1>(item_meta->_heal); switch (std::get<0>(item_meta->_heal)) { case 1: { - AddHp(std::get<1>(item_meta->_heal)); + AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; case 2: { - AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); + AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct())); } break; default: diff --git a/server/gameserver/player.cc b/server/gameserver/player.cc index c663f880..afef0ab0 100644 --- a/server/gameserver/player.cc +++ b/server/gameserver/player.cc @@ -464,8 +464,7 @@ void Player::UpdateUseItemIdx() #if 0 GetTrigger()->UseItemAction(use_item_idx); #endif - use_time *= 1 - GetAbility()->GetAttrRate(kHAT_DrugTime); - use_time -= GetAbility()->GetAttrAbs(kHAT_DrugTime); + use_time *= 1.0f + GetBattleContext()->GetDrugTimePct(); use_time = std::max(1, use_time); StartAction( AT_UseItem,