diff --git a/server/gameserver/netdata.cc b/server/gameserver/netdata.cc index 6da8a847..078fafb8 100644 --- a/server/gameserver/netdata.cc +++ b/server/gameserver/netdata.cc @@ -51,6 +51,7 @@ public: std::shared_ptr hero_dto; int spec_skill_id = 0; int main_skill_id = 0; + const mt::NpcStandard* standard_meta = nullptr; float GetHP() { @@ -155,7 +156,6 @@ private: #endif } } else { - const mt::NpcStandard* standard_meta = nullptr; auto match_conf = c->room->GetRankMatchConf(); if (match_conf) { standard_meta = mt::NpcStandard::GetByHeroAndLv @@ -1146,6 +1146,9 @@ float BattleDataContext::GetRecoverHpAdd() int BattleDataContext::GetHeroLevel() { + if (!owner_.Get()->IsPlayer() && hero_ability_ && hero_ability_->standard_meta) { + return hero_ability_->standard_meta->level(); + } return std::max(hero_lv_, 1); } diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index a810bb46..59a2c5a4 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -110,6 +110,7 @@ void Room::InitData(RoomInitInfo& init_info) map_meta_ = init_info.map_meta; poly_ext_datas_ = map_instance->GetPolyExtDatas(); custom_battle_ = init_info.custom_battle; + rank_match_conf_ = mt::Param::GetRankModeConfByRoomType(room_type_); } void Room::Init()