diff --git a/server/gameserver/buff/cond_add.cc b/server/gameserver/buff/cond_add.cc index 36ca6891..7a5f34ab 100644 --- a/server/gameserver/buff/cond_add.cc +++ b/server/gameserver/buff/cond_add.cc @@ -15,9 +15,56 @@ void CondAddBuff::Activate() { + switch ((CondAddBuff_e)meta->_int_buff_param1) { + case CondAddBuff_e::kBulletHit: + { + ProcBulletHit(); + } + break; + case CondAddBuff_e::kBulletKill: + { + ProcBulletKill(); + } + break; + case CondAddBuff_e::kBulletEnd: + { + ProcBulletEnd(); + } + break; + } } void CondAddBuff::Deactivate() +{ + for (auto handler : handlers_) { + if (!handler.expired()) { + owner->GetTrigger()->RemoveEventHandler(handler); + } + } + handlers_.clear(); +} + + +void CondAddBuff::ProcBulletHit() +{ + handlers_.push_back + ( + owner->GetTrigger()->AddListener + ( + kBulletHitEvent, + [] (const a8::Args& args) + { + + }) + ); +} + +void CondAddBuff::ProcBulletKill() +{ + +} + +void CondAddBuff::ProcBulletEnd() { } diff --git a/server/gameserver/buff/cond_add.h b/server/gameserver/buff/cond_add.h index fe20edc5..10b53645 100644 --- a/server/gameserver/buff/cond_add.h +++ b/server/gameserver/buff/cond_add.h @@ -1,7 +1,7 @@ #pragma once #include "buff.h" - +#include "trigger.h" A8_DECLARE_CLASS_ENUM(CondAddBuff_e, int, kBulletHit = 11, @@ -17,4 +17,13 @@ class CondAddBuff : public Buff virtual void Activate() override; virtual void Deactivate() override; + private: + + void ProcBulletHit(); + void ProcBulletKill(); + void ProcBulletEnd(); + + private: + std::vector> handlers_; + };