添加被动技能处理

This commit is contained in:
aozhiwei 2020-07-31 15:10:20 +08:00
parent d13baac441
commit a69205270c
2 changed files with 31 additions and 6 deletions

View File

@ -135,6 +135,9 @@ enum BuffEffectType_e
kBET_DecHp = 16, //扣血
kBET_PullDone = 17, //拖拽到目的地
kBET_DelayAddBuff = 18, //延迟加buff
kBET_CliEffect1 = 19, //僵尸被动光环减速(客户端表现用)
kBET_CliEffect2 = 20, //僵尸被动光环毒物(客户端表现用)
kBET_CliEffect3 = 21, //僵尸被动光环地震(客户端表现用)
kBET_End
};

View File

@ -3810,6 +3810,10 @@ void Human::AddPassiveSkill(MetaData::Skill* skill_meta)
&xtimer_attacher.timer_list_);
passive_skill_metas_[skill_meta] = tmp_timer;
AddPassiveSkillBuff(skill_meta);
if (skill_meta->i->skill_cd() > 10000) {
//永久被动被动技能
AddPassiveSkillBuff(skill_meta);
}
}
}
@ -3818,6 +3822,7 @@ void Human::RemovePassiveSkill(MetaData::Skill* skill_meta)
auto itr = passive_skill_metas_.find(skill_meta);
if (itr != passive_skill_metas_.end()) {
ClearPassiveSkillBuff(skill_meta);
room->xtimer.DeleteTimer(itr->second);
passive_skill_metas_.erase(itr);
}
}
@ -3842,18 +3847,35 @@ bool Human::HasPassiveSkill(MetaData::Skill* skill_meta)
void Human::ClearPassiveSkillBuff(MetaData::Skill* skill_meta)
{
for (int buff_id : skill_meta->buff_list) {
RemoveBuffById(buff_id);
Buff* buff = GetBuffById(buff_id);
if (buff &&
(buff->meta->i->buff_target() == kBuffTargetSelf ||
buff->meta->i->buff_target() == kBuffTargetFriendly)) {
RemoveBuffById(buff_id);
}
}
}
void Human::AddPassiveSkillBuff(MetaData::Skill* skill_meta)
{
for (int buff_id : skill_meta->buff_list) {
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
if (buff_meta) {
AddBuff(this, buff_meta, buff_id);
}
if (!skill_meta) {
return;
}
MetaData::Skill* old_curr_skill = skill_meta_;
int old_skill_target_id = skill_target_id;
a8::Vec2 old_skill_target_pos = skill_target_pos;
skill_meta_ = skill_meta;
skill_target_id = GetEntityUniId();
skill_target_pos = GetPos();
std::set<Entity*> target_list;
SelectSkillTargets(GetPos(), target_list);
TriggerBuff(target_list, kBTT_UseSkill);
skill_meta_= old_curr_skill;
skill_target_id = old_skill_target_id;
skill_target_pos = old_skill_target_pos;
}
void Human::OnMetaChange()