This commit is contained in:
aozhiwei 2023-03-28 14:16:07 +08:00
parent d79b1d0d0b
commit 5f46eb1289
4 changed files with 25 additions and 14 deletions

View File

@ -902,3 +902,13 @@ float BattleDataContext::GetRescueTimePct()
{ {
return 0.0f; return 0.0f;
} }
float BattleDataContext::GetDrugTimePct()
{
return 0.0f;
}
float BattleDataContext::GetDrugEfficacyPct()
{
return 0.0f;
}

View File

@ -64,6 +64,8 @@ struct BattleDataContext
float GetBrainLifePct(); float GetBrainLifePct();
float GetSkillCdPct(); float GetSkillCdPct();
float GetRescueTimePct(); float GetRescueTimePct();
float GetDrugTimePct();
float GetDrugEfficacyPct();
void SetReviveCoin(int num); void SetReviveCoin(int num);
int GetReviveCoin(); int GetReviveCoin();

View File

@ -1767,19 +1767,16 @@ void Human::ProcUseItemAction()
case IS_HEALTHKIT: case IS_HEALTHKIT:
{ {
+stats->use_medicine_times; +stats->use_medicine_times;
float heal = std::get<1>(item_meta->_heal);
switch (std::get<0>(item_meta->_heal)) { switch (std::get<0>(item_meta->_heal)) {
case 1: case 1:
{ {
#if 1 AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
AddHp(std::get<1>(item_meta->_heal));
#else
AddHp(std::<>item_meta->heal() * (1 + GetAbility()->GetAttrRate(kHAT_DrugEfficacy)));
#endif
} }
break; break;
case 2: case 2:
{ {
AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
default: default:
@ -1813,15 +1810,16 @@ void Human::ProcUseItemAction()
[this, item_meta] (int event, const a8::Args* args) [this, item_meta] (int event, const a8::Args* args)
{ {
if (a8::TIMER_EXEC_EVENT == event) { if (a8::TIMER_EXEC_EVENT == event) {
float heal = std::get<1>(item_meta->_heal);
switch (std::get<0>(item_meta->_heal)) { switch (std::get<0>(item_meta->_heal)) {
case 1: case 1:
{ {
AddHp(std::get<1>(item_meta->_heal)); AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
case 2: case 2:
{ {
AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
default: default:
@ -1837,15 +1835,16 @@ void Human::ProcUseItemAction()
}, },
&xtimer_attacher); &xtimer_attacher);
} }
float heal = std::get<1>(item_meta->_heal);
switch (std::get<0>(item_meta->_heal)) { switch (std::get<0>(item_meta->_heal)) {
case 1: case 1:
{ {
AddHp(std::get<1>(item_meta->_heal)); AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
case 2: case 2:
{ {
AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
default: default:
@ -1872,15 +1871,16 @@ void Human::ProcUseItemAction()
RemoveBuffById(kDownBuffId); RemoveBuffById(kDownBuffId);
} }
SyncAroundPlayers(__FILE__, __LINE__, __func__); SyncAroundPlayers(__FILE__, __LINE__, __func__);
float heal = std::get<1>(item_meta->_heal);
switch (std::get<0>(item_meta->_heal)) { switch (std::get<0>(item_meta->_heal)) {
case 1: case 1:
{ {
AddHp(std::get<1>(item_meta->_heal)); AddHp(heal * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
case 2: case 2:
{ {
AddHp(std::get<1>(item_meta->_heal) * GetMaxHP()); AddHp((heal * GetMaxHP()) * (1.0f + GetBattleContext()->GetDrugEfficacyPct()));
} }
break; break;
default: default:

View File

@ -464,8 +464,7 @@ void Player::UpdateUseItemIdx()
#if 0 #if 0
GetTrigger()->UseItemAction(use_item_idx); GetTrigger()->UseItemAction(use_item_idx);
#endif #endif
use_time *= 1 - GetAbility()->GetAttrRate(kHAT_DrugTime); use_time *= 1.0f + GetBattleContext()->GetDrugTimePct();
use_time -= GetAbility()->GetAttrAbs(kHAT_DrugTime);
use_time = std::max(1, use_time); use_time = std::max(1, use_time);
StartAction( StartAction(
AT_UseItem, AT_UseItem,