From 35aededcf4669fba660803e0118c289a989dfc1d Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Mon, 15 Jan 2024 14:36:39 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 96126dad..ac8e8c15 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -2446,6 +2446,7 @@ void Creature::WinExp(int win_exp) if (hero_grow_meta_->IsFullLevel()) { return; } + int old_level = GetHeroLevel(); int add_exp = win_exp; while ( hero_grow_meta_->GetNextMeta() && @@ -2456,8 +2457,29 @@ void Creature::WinExp(int win_exp) add_exp -= hero_grow_meta_->levelExp(); hero_grow_meta_ = hero_grow_meta_->GetNextMeta(); hero_level_ = hero_grow_meta_->level(); + hero_exp_ = 0; GenLevelAttr(); } + if (hero_grow_meta_->levelExp() <= 0) { + hero_exp_ = 0; + return; + } + if (hero_grow_meta_->IsFullLevel()) { + hero_exp_ = 0; + return; + } + hero_exp_ = std::max(hero_exp_ + add_exp, hero_grow_meta_->levelExp() - 1); + if (GetHeroLevel() > old_level) { + room->frame_event.AddPropChgEx + ( + GetWeakPtrRef(), + kPropLevelUp, + GetUniId(), + old_level, + GetHeroLevel(), + 0, + false); + } } void Creature::RecalcDtoAttr()