This commit is contained in:
aozhiwei 2024-01-15 16:43:56 +08:00
parent b4554249bd
commit fd219ba95a
2 changed files with 22 additions and 31 deletions

View File

@ -524,30 +524,22 @@ void Skill::Clear()
void Skill::LevelUp()
{
#if 1
if (IsFullLevel()) {
return;
}
const mt::Skill* next_skill_meta = mt::Skill::GetById
(GetBaseSkillMeta()->_base_skill_meta->skill_id() + level_);
if (!next_skill_meta) {
return;
}
++level_;
curr_meta_ = next_skill_meta;
Clear();
#else
if (owner->GetInventory(IS_BLUE_STONE) % 3 == 0) {
Clear();
auto merge_item_meta = mt::MergeItem::GetById(mt::Equip::BLUE_STONE_ID);
if (merge_item_meta) {
int skill_lv = owner->GetInventory(IS_BLUE_STONE) / 3 + 1;
const mt::Skill* new_skill_meta = mt::Skill::GetById(meta->_base_skill_meta->skill_id());
if (new_skill_meta) {
if (mt::Skill::GetById(new_skill_meta->skill_id() + skill_lv - 1)) {
owner->skill_hash_[new_skill_meta->skill_id() + skill_lv - 1] = owner->skill_hash_[meta->skill_id()];
}
level_ = skill_lv;
}
std::set<int>* buffs = merge_item_meta->GetBuffs(owner->GetInventory(IS_BLUE_STONE));
if (buffs) {
for (int buff_id : *buffs) {
hold_buffs_.push_back(owner->TryAddBuff(owner, buff_id, nullptr));
}
}
if (IsPassiveSkill()) {
for (int buff_id : GetCurrSkillMeta()->_buff_list) {
hold_buffs_.push_back(owner->TryAddBuff(owner, buff_id, GetCurrSkillMeta()));
}
}
#endif
}
bool Skill::IsFullLevel()
@ -566,16 +558,7 @@ void Skill::Reset()
const mt::Skill* Skill::GetCurrSkillMeta()
{
if (level_ > 1) {
const mt::Skill* new_skill_meta = mt::Skill::GetById(GetBaseSkillMeta()->skill_id() + level_ - 1);
if (new_skill_meta) {
return new_skill_meta;
} else {
return GetBaseSkillMeta();
}
} else {
return GetBaseSkillMeta();
}
return curr_meta_;
}
int Skill::GetSkillId()
@ -595,4 +578,10 @@ int Skill::GetBaseSkillId()
void Skill::SetMeta(const mt::Skill* meta)
{
meta_ = meta;
curr_meta_ = meta;
}
bool Skill::IsPassiveSkill()
{
return GetBaseSkillMeta()->skill_type() == kPassiveSkill;
}

View File

@ -63,6 +63,7 @@ class Skill
const mt::Skill* GetCurrSkillMeta();
int GetSkillId();
int GetBaseSkillId();
bool IsPassiveSkill();
private:
void InitActiveSkill();
@ -79,6 +80,7 @@ private:
private:
const mt::Skill* meta_ = nullptr;
const mt::Skill* curr_meta_ = nullptr;
bool actived_ = false;
int level_ = 1;
int curr_times_ = 0;