添加被动技能处理
This commit is contained in:
parent
d13baac441
commit
a69205270c
@ -135,6 +135,9 @@ enum BuffEffectType_e
|
|||||||
kBET_DecHp = 16, //扣血
|
kBET_DecHp = 16, //扣血
|
||||||
kBET_PullDone = 17, //拖拽到目的地
|
kBET_PullDone = 17, //拖拽到目的地
|
||||||
kBET_DelayAddBuff = 18, //延迟加buff
|
kBET_DelayAddBuff = 18, //延迟加buff
|
||||||
|
kBET_CliEffect1 = 19, //僵尸被动光环减速(客户端表现用)
|
||||||
|
kBET_CliEffect2 = 20, //僵尸被动光环毒物(客户端表现用)
|
||||||
|
kBET_CliEffect3 = 21, //僵尸被动光环地震(客户端表现用)
|
||||||
kBET_End
|
kBET_End
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -3810,6 +3810,10 @@ void Human::AddPassiveSkill(MetaData::Skill* skill_meta)
|
|||||||
&xtimer_attacher.timer_list_);
|
&xtimer_attacher.timer_list_);
|
||||||
passive_skill_metas_[skill_meta] = tmp_timer;
|
passive_skill_metas_[skill_meta] = tmp_timer;
|
||||||
AddPassiveSkillBuff(skill_meta);
|
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);
|
auto itr = passive_skill_metas_.find(skill_meta);
|
||||||
if (itr != passive_skill_metas_.end()) {
|
if (itr != passive_skill_metas_.end()) {
|
||||||
ClearPassiveSkillBuff(skill_meta);
|
ClearPassiveSkillBuff(skill_meta);
|
||||||
|
room->xtimer.DeleteTimer(itr->second);
|
||||||
passive_skill_metas_.erase(itr);
|
passive_skill_metas_.erase(itr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3842,18 +3847,35 @@ bool Human::HasPassiveSkill(MetaData::Skill* skill_meta)
|
|||||||
void Human::ClearPassiveSkillBuff(MetaData::Skill* skill_meta)
|
void Human::ClearPassiveSkillBuff(MetaData::Skill* skill_meta)
|
||||||
{
|
{
|
||||||
for (int buff_id : skill_meta->buff_list) {
|
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)
|
void Human::AddPassiveSkillBuff(MetaData::Skill* skill_meta)
|
||||||
{
|
{
|
||||||
for (int buff_id : skill_meta->buff_list) {
|
if (!skill_meta) {
|
||||||
MetaData::Buff* buff_meta = MetaMgr::Instance()->GetBuff(buff_id);
|
return;
|
||||||
if (buff_meta) {
|
|
||||||
AddBuff(this, buff_meta, buff_id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
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()
|
void Human::OnMetaChange()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user