添加被动技能处理
This commit is contained in:
parent
d13baac441
commit
a69205270c
@ -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
|
||||
};
|
||||
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user