diff --git a/server/gameserver/buff.cc b/server/gameserver/buff.cc index 1cb619ac..3b9ac3c5 100644 --- a/server/gameserver/buff.cc +++ b/server/gameserver/buff.cc @@ -1008,7 +1008,7 @@ void Buff::ProcMachineGun() { owner->room->xtimer.ModifyTimer (remover_timer, - skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS); + skill_meta->number_meta->float_time * 1000 * 10/ FRAME_RATE_MS); } break; case MAGIC_HJHX: @@ -1016,6 +1016,7 @@ void Buff::ProcMachineGun() owner->room->xtimer.ModifyTimer (remover_timer, skill_meta->number_meta->float_time * 1000 / FRAME_RATE_MS); + owner->GetTrigger()->DispatchEvent(kStartSwitchWeaponBuffEvent, {this}); } break; case MAGIC_FG: @@ -1108,6 +1109,7 @@ void Buff::ProcMachineGun() void Buff::ProcRemoveMachineGun() { + owner->GetTrigger()->DispatchEvent(kEndSwitchWeaponBuffEvent, {this}); RecoverHoldWeapons(); } diff --git a/server/gameserver/trigger.h b/server/gameserver/trigger.h index ae397850..92eb3b8f 100644 --- a/server/gameserver/trigger.h +++ b/server/gameserver/trigger.h @@ -74,6 +74,7 @@ public: std::weak_ptr AddListener(int event_id, CommonCbProc cb); void RemoveEventHandler(std::weak_ptr handler_ptr); + void DispatchEvent(int event_id, const std::vector& params); private: void TraverseCondBuffs(int cond, std::function func); @@ -81,7 +82,7 @@ public: void TryAddBuffs(int cond, std::vector& buffids); void AddBuffs(int cond, std::vector& buffids); void RemoveBuffs(int cond, std::vector& buffids); - void DispatchEvent(int event_id, const std::vector& params); + private: Creature* owner_ = nullptr;