From bbff30071ecb6eb23b4f12cdadc6b54689dfc131 Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Sun, 16 Jun 2024 10:11:35 -0700 Subject: [PATCH] fix battle mode level up on players close to level 200 --- src/ReceiveSubcommands.cc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ReceiveSubcommands.cc b/src/ReceiveSubcommands.cc index 694a249b..72094b29 100644 --- a/src/ReceiveSubcommands.cc +++ b/src/ReceiveSubcommands.cc @@ -3864,11 +3864,14 @@ static void on_battle_level_up_bb(shared_ptr c, uint8_t, uint8_t, void* if (lc) { auto s = c->require_server_state(); auto lp = lc->character(); - uint32_t target_level = lp->disp.stats.level + cmd.num_levels; + uint32_t target_level = min(lp->disp.stats.level + cmd.num_levels, 199); uint32_t before_exp = lp->disp.stats.experience; - s->level_table(lc->version())->advance_to_level(lp->disp.stats, target_level, lp->disp.visual.char_class); - send_give_experience(lc, lp->disp.stats.experience - before_exp); - send_level_up(lc); + int32_t exp_delta = lp->disp.stats.experience - before_exp; + if (exp_delta > 0) { + s->level_table(lc->version())->advance_to_level(lp->disp.stats, target_level, lp->disp.visual.char_class); + send_give_experience(lc, exp_delta); + send_level_up(lc); + } } } }