fix battle mode level up on players close to level 200

This commit is contained in:
Martin Michelsen
2024-06-16 10:11:35 -07:00
parent a7a512682c
commit bbff30071e
+5 -2
View File
@@ -3864,14 +3864,17 @@ static void on_battle_level_up_bb(shared_ptr<Client> c, uint8_t, uint8_t, void*
if (lc) { if (lc) {
auto s = c->require_server_state(); auto s = c->require_server_state();
auto lp = lc->character(); auto lp = lc->character();
uint32_t target_level = lp->disp.stats.level + cmd.num_levels; uint32_t target_level = min<uint32_t>(lp->disp.stats.level + cmd.num_levels, 199);
uint32_t before_exp = lp->disp.stats.experience; uint32_t before_exp = lp->disp.stats.experience;
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); 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_give_experience(lc, exp_delta);
send_level_up(lc); send_level_up(lc);
} }
} }
} }
}
static void on_request_challenge_grave_recovery_item_bb(shared_ptr<Client> c, uint8_t, uint8_t, void* data, size_t size) { static void on_request_challenge_grave_recovery_item_bb(shared_ptr<Client> c, uint8_t, uint8_t, void* data, size_t size) {
auto l = c->require_lobby(); auto l = c->require_lobby();