From 8a3a6246f76bb595c455f298080512c217805b39 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 11 Aug 2021 02:29:30 +0000 Subject: [PATCH] 1 --- server/gameserver/creature.cc | 4 +++- server/gameserver/creature.h | 3 +-- server/gameserver/human.cc | 4 +--- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index 1e3c9e1..23450ea 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -587,7 +587,9 @@ void Creature::RecalcBuffAttr() void Creature::OnBuffRemove(Buff& buff) { - + if (!buff.meta->i->only_server()) { + room->frame_event.RemoveBuff(GetWeakPtrRef(), buff.meta->i->buff_id()); + } } void Creature::RemoveBuffByEffectId(int buff_effect_id) diff --git a/server/gameserver/creature.h b/server/gameserver/creature.h index 55c8128..2319c42 100644 --- a/server/gameserver/creature.h +++ b/server/gameserver/creature.h @@ -214,12 +214,11 @@ class Creature : public MoveableEntity std::string DebugOutBuffList(); protected: - + virtual void OnBuffRemove(Buff& buff); private: virtual void AddBuffPostProc(Creature* caster, Buff* buff); - virtual void OnBuffRemove(Buff& buff); virtual void DoSkillPreProc(int skill_id, int target_id, const a8::Vec2& target_pos); virtual void DoSkillPostProc(bool used, int skill_id, int target_id, const a8::Vec2& target_pos); diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index a935467..d1a11ed 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3202,6 +3202,7 @@ void Human::ProcReliveAction() void Human::OnBuffRemove(Buff& buff) { + Creature::OnBuffRemove(buff); switch (buff.meta->i->buff_effect()) { case kBET_Jump: { @@ -3264,9 +3265,6 @@ void Human::OnBuffRemove(Buff& buff) } break; } - if (!buff.meta->i->only_server()) { - room->frame_event.RemoveBuff(GetWeakPtrRef(), buff.meta->i->buff_id()); - } } void Human::OnLand()