This commit is contained in:
aozhiwei 2024-09-11 16:45:36 +08:00
parent bc9aab25c6
commit d8447a90c5

View File

@ -1169,10 +1169,11 @@ void Creature::Initialize()
} }
if (IsHuman()) { if (IsHuman()) {
a8::XTimerWp nature_recover_hp_timer; a8::XTimerWp nature_recover_hp_timer;
auto battling_state = std::make_shared<bool>(true);
nature_recover_hp_idle_timer = room->xtimer.SetIntervalWpEx nature_recover_hp_idle_timer = room->xtimer.SetIntervalWpEx
( (
SERVER_FRAME_RATE * mt::Param::s().nature_recover_hp_idletime, SERVER_FRAME_RATE * mt::Param::s().nature_recover_hp_idletime,
[this, nature_recover_hp_timer] (int event, const a8::Args* args) mutable [this, nature_recover_hp_timer, battling_state] (int event, const a8::Args* args) mutable
{ {
if (a8::TIMER_EXEC_EVENT == event) { if (a8::TIMER_EXEC_EVENT == event) {
if (nature_recover_hp_timer.expired() && !HasBuffEffect(kBET_Dive)) { if (nature_recover_hp_timer.expired() && !HasBuffEffect(kBET_Dive)) {
@ -1193,7 +1194,10 @@ void Creature::Initialize()
}, },
&xtimer_attacher); &xtimer_attacher);
} }
if (*battling_state) {
*battling_state = false;
GetTrigger()->LeaveBattleMode(); GetTrigger()->LeaveBattleMode();
}
} else if (kRemoveNatureRecoverTimerEvent == event) { } else if (kRemoveNatureRecoverTimerEvent == event) {
room->xtimer.ModifyTime room->xtimer.ModifyTime
(nature_recover_hp_idle_timer, (nature_recover_hp_idle_timer,
@ -1201,6 +1205,7 @@ void Creature::Initialize()
if (!nature_recover_hp_timer.expired()) { if (!nature_recover_hp_timer.expired()) {
room->xtimer.Delete(nature_recover_hp_timer); room->xtimer.Delete(nature_recover_hp_timer);
} }
*battling_state = true;
GetTrigger()->EnterBattleMode(); GetTrigger()->EnterBattleMode();
} }
}, },