From 2fc4a8d9aab579f2a898636024b9025676d0ad7c Mon Sep 17 00:00:00 2001 From: timokoesters Date: Sat, 5 Oct 2019 13:38:33 +0200 Subject: [PATCH] fix(exp): crash when gaining many levels at once --- common/src/sys/stats.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/common/src/sys/stats.rs b/common/src/sys/stats.rs index 5355cc5120..6a6ebc8bf7 100644 --- a/common/src/sys/stats.rs +++ b/common/src/sys/stats.rs @@ -40,9 +40,11 @@ impl<'a> System<'a> for Sys { } if stat.exp.current() >= stat.exp.maximum() { - stat.exp.change_by(-(stat.exp.maximum() as i64)); - stat.exp.change_maximum_by(25); - stat.level.change_by(1); + while stat.exp.current() >= stat.exp.maximum() { + stat.exp.change_by(-(stat.exp.maximum() as i64)); + stat.exp.change_maximum_by(25); + stat.level.change_by(1); + } stat.update_hp_bonus(stat.level.level()); stat.health .set_to(stat.health.maximum(), HealthSource::LevelUp)