From 0e64687bebfaaf370c6250c793c21c9c082613bb Mon Sep 17 00:00:00 2001 From: Peisong Xiao Date: Sun, 21 Jul 2024 14:38:31 -0400 Subject: [PATCH] fixed potion of BL being erased by other potions --- src/potions/continuous_restoration.cc | 5 +++++ src/potions/echoing_resilience.cc | 4 +++- src/potions/fine_booze.cc | 3 ++- src/potions/restore_health.cc | 5 +++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/potions/continuous_restoration.cc b/src/potions/continuous_restoration.cc index 1078ddb..377f62f 100644 --- a/src/potions/continuous_restoration.cc +++ b/src/potions/continuous_restoration.cc @@ -9,6 +9,11 @@ continuous_restoration::continuous_restoration(const position &pos): void continuous_restoration::apply(const enum race &race, int &HP, int &ATK, int &DEF, fraction &base_hit_rate) { if (remaining_duration != 0) { + if (HP >= MAX_HP[race]) { + --remaining_duration; + return; + } + int tmp = GAIN_HEALTH; if (race == DROW) diff --git a/src/potions/echoing_resilience.cc b/src/potions/echoing_resilience.cc index 9c4b2a6..35dc3da 100644 --- a/src/potions/echoing_resilience.cc +++ b/src/potions/echoing_resilience.cc @@ -11,7 +11,9 @@ void echoing_resilience::apply(const enum race &race, int &HP, int &ATK, if (remaining_duration != 0) { int tmp = GAIN_HEALTH * (race == DROW ? DROW_POTION_MUL : 1); - HP = std::min(HP + tmp, MAX_HP[race]); + if (HP < MAX_HP[race]) + HP = std::min(HP + tmp, MAX_HP[race]); + ATK -= LOSE_ATK * (race == DROW ? DROW_POTION_MUL : 1); DEF -= LOSE_DEF * (race == DROW ? DROW_POTION_MUL : 1); diff --git a/src/potions/fine_booze.cc b/src/potions/fine_booze.cc index 9e57e15..ecc9381 100644 --- a/src/potions/fine_booze.cc +++ b/src/potions/fine_booze.cc @@ -14,7 +14,8 @@ void fine_booze::apply(const enum race &race, int &HP, int &ATK, if (race == DROW) tmp *= DROW_POTION_MUL; - HP = std::min(HP + tmp, MAX_HP[race]); + if (HP < MAX_HP[race]) + HP = std::min(HP + tmp, MAX_HP[race]); if (race == BRAWLER) base_hit_rate = HR_TB; diff --git a/src/potions/restore_health.cc b/src/potions/restore_health.cc index 6d15909..5124f9d 100644 --- a/src/potions/restore_health.cc +++ b/src/potions/restore_health.cc @@ -9,6 +9,11 @@ restore_health::restore_health(const position &pos): void restore_health::apply(const enum race &race, int &HP, int &ATK, int &DEF, fraction &base_hit_rate) { if (remaining_duration != 0) { + if (HP >= MAX_HP[race]) { + --remaining_duration; + return; + } + int tmp = GAIN_HEALTH; if (race == DROW)