From d8bceb939870b39201b442dd0c2188fc51eea449 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 14 Apr 2021 11:24:09 +0800 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 7 +++++++ server/gameserver/creature.h | 1 + server/gameserver/room.cc | 1 + server/gameserver/skill.cc | 8 ++++++++ server/gameserver/skill.h | 1 + 5 files changed, 18 insertions(+) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 04ef1854..6d8ba0d4 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1466,3 +1466,10 @@ void Creature::SetCurrWeapon(Weapon* weapon) #endif curr_weapon_ = weapon; } + +void Creature::ResetAllSkillCd() +{ + for (auto& pair : skill_hash_) { + pair.second->ResetSkillCd(); + } +} diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index 1c4d5c37..f947c9e8 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -139,6 +139,7 @@ class Creature : public MoveableEntity Weapon* ChooseNextWeapon(int curr_weapon_slot_id, int begin_slot_id, int end_slot_id); Weapon* GetCurrWeapon() { return curr_weapon_; }; void SetCurrWeapon(Weapon* weapon); + void ResetAllSkillCd(); private: diff --git a/server/gameserver/room.cc b/server/gameserver/room.cc index d872b612..ceb0197b 100644 --- a/server/gameserver/room.cc +++ b/server/gameserver/room.cc @@ -1706,6 +1706,7 @@ void Room::ShuaPlane() for (auto& pair : human_hash_) { pair.second->MustBeAddBuff(pair.second, FLY_BUFFID); + pair.second->ResetAllSkillCd(); pair.second->SetPos(plane.curr_pos); pair.second->attack_dir = plane.dir; pair.second->SetMoveDir(plane.dir); diff --git a/server/gameserver/skill.cc b/server/gameserver/skill.cc index 971770fc..4a59ad89 100644 --- a/server/gameserver/skill.cc +++ b/server/gameserver/skill.cc @@ -132,3 +132,11 @@ void Skill::NotifySkillState() owner->room->frame_event.AddSkillCurrTimesChg(owner->AllocWeakPtr(), meta->i->skill_id(), GetCurrTimes()); } } + +void Skill::ResetSkillCd() +{ + curr_times_ = 0; + if (inc_times_timer_) { + owner->room->xtimer.ModifyTimer(inc_times_timer_, GetCd() / FRAME_RATE_MS); + } +} diff --git a/server/gameserver/skill.h b/server/gameserver/skill.h index 117f8b7a..56949d96 100644 --- a/server/gameserver/skill.h +++ b/server/gameserver/skill.h @@ -34,6 +34,7 @@ class Skill int GetMaxTimes(); void DecTimes(); void FillMFSkill(cs::MFSkill* skill_pb); + void ResetSkillCd(); void ClearPassiveSkillBuff(); void AddPassiveSkillBuff();