This commit is contained in:
aozhiwei 2020-07-28 14:33:08 +08:00
parent bbc1fc7b93
commit 076cfc6b7e
2 changed files with 15 additions and 19 deletions

View File

@ -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);
}
}

View File

@ -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;