diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index e38fbe58..8e214742 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -20,6 +20,7 @@ void Skill::Initialzie() Skill* skill = (Skill*)param.sender.GetUserData(); if (skill->GetCurrTimes() < skill->GetMaxTimes()) { skill->curr_times_++; + skill->NotifySkillState(); } }, &xtimer_attacher.timer_list_); @@ -119,3 +120,11 @@ int Skill::GetMaxTimes() { return meta->i->max_times(); } + +void Skill::NotifySkillState() +{ + if (owner->IsHuman()) { + owner->room->frame_event.AddSkillCdChg(owner->AllocWeakPtr(), meta->i->skill_id(), GetLeftTime()); + owner->room->frame_event.AddSkillCurrTimesChg(owner->AllocWeakPtr(), meta->i->skill_id(), GetCurrTimes()); + } +} diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index de6ee563..117f8b7a 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -38,6 +38,8 @@ class Skill void ClearPassiveSkillBuff(); void AddPassiveSkillBuff(); +private: + void NotifySkillState(); private: int curr_times_ = 0; xtimer_list* inc_times_timer_ = nullptr;