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;
}
float BattleDataContext::GetDrugTimePct()
{
return 0.0f;
}
float BattleDataContext::GetDrugEfficacyPct()
{
return 0.0f;
}

View File

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

View File

@ -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:

View File

@ -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,