diff --git a/server/gameserver/constant.h b/server/gameserver/constant.h index 77d239b6..7ad2f400 100644 --- a/server/gameserver/constant.h +++ b/server/gameserver/constant.h @@ -374,6 +374,8 @@ enum EventAddBuff_e kEventBuffLimitTimeKillTarget = 17, kEventBuffRevive = 18, kEventBuffDmgOut = 19, + kEventEnterBattleMode = 20, + kEventLeaveBattleMode = 21, kEventBuffEnd }; diff --git a/server/gameserver/creature.cc b/server/gameserver/creature.cc index b1040ede..c81188cc 100644 --- a/server/gameserver/creature.cc +++ b/server/gameserver/creature.cc @@ -1176,6 +1176,7 @@ void Creature::Initialize() }, &xtimer_attacher); } + GetTrigger()->LeaveBattleMode(); } else if (kRemoveNatureRecoverTimerEvent == event) { room->xtimer.ModifyTime (nature_recover_hp_idle_timer, @@ -1183,6 +1184,7 @@ void Creature::Initialize() if (!nature_recover_hp_timer.expired()) { room->xtimer.Delete(nature_recover_hp_timer); } + GetTrigger()->EnterBattleMode(); } }, &xtimer_attacher); diff --git a/server/gameserver/trigger.cc b/server/gameserver/trigger.cc index 8dd11805..739f74fc 100644 --- a/server/gameserver/trigger.cc +++ b/server/gameserver/trigger.cc @@ -670,3 +670,21 @@ void Trigger::ClearDelayDelHandlers() e->holder = nullptr; } } + +void Trigger::EnterBattleMode() +{ + TraverseCondBuffs + (kEventEnterBattleMode, + [this] (Buff* buff, bool& stop) + { + }); +} + +void Trigger::LeaveBattleMode() +{ + TraverseCondBuffs + (kEventLeaveBattleMode, + [this] (Buff* buff, bool& stop) + { + }); +} diff --git a/server/gameserver/trigger.h b/server/gameserver/trigger.h index 99ebf3cd..de3cf071 100644 --- a/server/gameserver/trigger.h +++ b/server/gameserver/trigger.h @@ -36,7 +36,7 @@ enum EventId_e kDownedEvent, kUpdateEnergyShieldEvent, kDestoryEnergyShieldEvent, - kCrazeModeEvent + kCrazeModeEvent, }; class Weapon; @@ -87,6 +87,8 @@ public: void UpdateEnergyShield(int value, int new_time); void DestoryEnergyShield(); void EnterCrazeMode(); + void EnterBattleMode(); + void LeaveBattleMode(); std::weak_ptr AddListener(int event_id, a8::CommonCbProc cb); void RemoveEventHandler(std::weak_ptr handler_ptr);