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() 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(); Clear();
#else if (IsPassiveSkill()) {
if (owner->GetInventory(IS_BLUE_STONE) % 3 == 0) { for (int buff_id : GetCurrSkillMeta()->_buff_list) {
Clear(); hold_buffs_.push_back(owner->TryAddBuff(owner, buff_id, GetCurrSkillMeta()));
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));
}
}
} }
} }
#endif
} }
bool Skill::IsFullLevel() bool Skill::IsFullLevel()
@ -566,16 +558,7 @@ void Skill::Reset()
const mt::Skill* Skill::GetCurrSkillMeta() const mt::Skill* Skill::GetCurrSkillMeta()
{ {
if (level_ > 1) { return curr_meta_;
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();
}
} }
int Skill::GetSkillId() int Skill::GetSkillId()
@ -595,4 +578,10 @@ int Skill::GetBaseSkillId()
void Skill::SetMeta(const mt::Skill* meta) void Skill::SetMeta(const mt::Skill* meta)
{ {
meta_ = 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(); const mt::Skill* GetCurrSkillMeta();
int GetSkillId(); int GetSkillId();
int GetBaseSkillId(); int GetBaseSkillId();
bool IsPassiveSkill();
private: private:
void InitActiveSkill(); void InitActiveSkill();
@ -79,6 +80,7 @@ private:
private: private:
const mt::Skill* meta_ = nullptr; const mt::Skill* meta_ = nullptr;
const mt::Skill* curr_meta_ = nullptr;
bool actived_ = false; bool actived_ = false;
int level_ = 1; int level_ = 1;
int curr_times_ = 0; int curr_times_ = 0;