From 076cfc6b7efa94956b07b2ca68466fe7cbc7f3e5 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 28 Jul 2020 14:33:08 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 33 ++++++++++++++------------------- server/gameserver/human.h | 1 + 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index 9ffe068..feec2b3 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1931,26 +1931,14 @@ void Human::ChangeToRace(RaceType_e race, int level) abort(); } exp_ = meta->i->exp(); - skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill()); - ResetSkill(); - MetaData::Skill* passive_skill_meta = MetaMgr::Instance()->GetSkill(meta->i->passive_skill()); - ClearPassiveSkill(); - if (passive_skill_meta) { - AddPassiveSkill(passive_skill_meta); - } + OnMetaChange(); } else if (race_ == kZombieRace) { meta = MetaMgr::Instance()->GetPlayer(ZOMBIE_RACE_META_START_ID + level_ - 1); if (!meta) { abort(); } exp_ = meta->i->exp(); - skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill()); - ResetSkill(); - MetaData::Skill* passive_skill_meta = MetaMgr::Instance()->GetSkill(meta->i->passive_skill()); - ClearPassiveSkill(); - if (passive_skill_meta) { - AddPassiveSkill(passive_skill_meta); - } + OnMetaChange(); } else { abort(); } @@ -1988,11 +1976,7 @@ void Human::WinExp(Human* sender, int exp) } while (true); if (old_meta != meta) { room->frame_event.AddZombieIdChg(this); - MetaData::Skill* passive_skill_meta = MetaMgr::Instance()->GetSkill(meta->i->passive_skill()); - ClearPassiveSkill(); - if (passive_skill_meta) { - AddPassiveSkill(passive_skill_meta); - } + OnMetaChange(); if (GetRace() == kZombieRace && meta->i->level() == 3) { room->TouchPlayerList ( @@ -3786,3 +3770,14 @@ void Human::AddPassiveSkillBuff(MetaData::Skill* skill_meta) } } } + +void Human::OnMetaChange() +{ + skill_meta_ = MetaMgr::Instance()->GetSkill(meta->i->active_skill()); + ResetSkill(); + MetaData::Skill* passive_skill_meta = MetaMgr::Instance()->GetSkill(meta->i->passive_skill()); + ClearPassiveSkill(); + if (passive_skill_meta) { + AddPassiveSkill(passive_skill_meta); + } +} diff --git a/server/gameserver/human.h b/server/gameserver/human.h index d5d70e6..7e37cc7 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -330,6 +330,7 @@ private: bool HasPassiveSkill(MetaData::Skill* skill_meta); void ClearPassiveSkillBuff(MetaData::Skill* skill_meta); void AddPassiveSkillBuff(MetaData::Skill* skill_meta); + void OnMetaChange(); protected: int level_ = 0;