diff --git a/server/gameserver/base_agent.cc b/server/gameserver/base_agent.cc index daf04df6..b23f9284 100644 --- a/server/gameserver/base_agent.cc +++ b/server/gameserver/base_agent.cc @@ -315,8 +315,6 @@ behaviac::EBTStatus BaseAgent::DoIdle(int min_time, int max_time) auto context = MAKE_BTCONTEXT ( a8::XTimerWp timer_ptr; - CreatureWeakPtr last_attacker; - long long last_attacked_frameno = 0; ); context->timer_ptr = GetOwner()->room->xtimer.SetTimeoutWpEx ( @@ -333,8 +331,20 @@ behaviac::EBTStatus BaseAgent::DoIdle(int min_time, int max_time) if (!context_wp.expired()) { auto context = context_wp.lock(); Creature* c = args.Get(0); - context->last_attacker = c->GetWeakPtrRef(); - context->last_attacked_frameno = c->room->GetFrameNo(); + context->events.push_back + ( + BtEvent::Create + ( + kBetOnAttack, + a8::Args({ + c->GetUniId(), + kBetOnAttack + }), + [c_wp = c->GetWeakPtrRef(), frameno = c->room->GetFrameNo()] () mutable + { + return c_wp.Get() && !c_wp.Get()->dead; + }) + ); } }));