From 017d59721e862226f984abef723437a96f2f046c Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Fri, 19 Jul 2019 20:10:00 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 13 +++++++------ server/gameserver/human.h | 3 ++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index c8bfc0e..25d0685 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -583,7 +583,7 @@ void Human::DoSkill() std::set target_list; skill_target_pos = hum->pos; SelectSkillTargets(hum->pos, target_list); - TriggerBuff(target_list, BTT_UseSkill); + TriggerBuff(skill_meta, target_list, BTT_UseSkill); if (!skill_meta->phases.empty() && skill_meta->phases[0].time_offset <= 0) { UpdateSkill(); } @@ -1210,10 +1210,11 @@ int Human::GetSkillCd() return skill_meta ? skill_meta->i->skill_cd() * 1000 : 0; } -void Human::TriggerBuff(std::set& target_list, BuffTriggerType_e trigger_type) +void Human::TriggerBuff(MetaData::Skill* sender_skill_meta, + std::set& target_list, BuffTriggerType_e trigger_type) { - auto itr = skill_meta->trigger_type_buffs.find(trigger_type); - if (itr != skill_meta->trigger_type_buffs.end()) { + auto itr = sender_skill_meta->trigger_type_buffs.find(trigger_type); + if (itr != sender_skill_meta->trigger_type_buffs.end()) { for (MetaData::Buff* buff_meta : itr->second) { for (Entity* entity : target_list) { if (entity->entity_type != ET_Player) { @@ -1406,7 +1407,7 @@ void Human::OnSkillHit(MetaData::Skill* skill_meta) { std::set target_list; target_list.insert(this); - TriggerBuff(target_list, BTT_SkillHit); + TriggerBuff(skill_meta, target_list, BTT_SkillHit); } void Human::OnEnterGrass() @@ -1657,7 +1658,7 @@ void Human::_UpdateAssaultMove() } } } - TriggerBuff(target_list, BTT_SkillHit); + TriggerBuff(skill_meta, target_list, BTT_SkillHit); room->frame_event.AddExplosion(0, pos, 2); room->grid_service.MoveHuman(this); } diff --git a/server/gameserver/human.h b/server/gameserver/human.h index df6328f..02a674f 100644 --- a/server/gameserver/human.h +++ b/server/gameserver/human.h @@ -190,7 +190,8 @@ class Human : public Entity int SkinLv(); int GetSkillLeftTime(); int GetSkillCd(); - void TriggerBuff(std::set& target_list, BuffTriggerType_e trigger_type); + void TriggerBuff(MetaData::Skill* sender_skill_meta, + std::set& target_list, BuffTriggerType_e trigger_type); void AddBuff(MetaData::Buff* buff_meta); void RemoveBuffById(int buff_id); void RemoveBuffByEffectId(int buff_effect_id);