diff --git a/server/gameserver/buff/callfunc.cc b/server/gameserver/buff/callfunc.cc index 2728d228..270a1ee1 100644 --- a/server/gameserver/buff/callfunc.cc +++ b/server/gameserver/buff/callfunc.cc @@ -731,6 +731,19 @@ void CallFuncBuff::SummonHeroSpecPoint() vars ); } + if (meta->_int_buff_param8) { + owner->GetTrigger()->AddListener + ( + kDieEvent, + [hero_ptr = hero->GetWeakPtrRef(), hero_id] (const a8::Args& args) mutable + { + if (hero_ptr.Get() && hero_ptr.Get()->AsHero()->master.Get()) { + if (!hero_ptr.Get()->room->IsGameOver()) { + hero_ptr.Get()->AsHero()->master.Get()->RemoveSurplusHero(hero_id, 0); + } + } + }); + } } } } @@ -772,6 +785,19 @@ void CallFuncBuff::SummonHeroSpecDistance() vars ); } + if (meta->_int_buff_param8) { + owner->GetTrigger()->AddListener + ( + kDieEvent, + [hero_ptr = hero->GetWeakPtrRef(), hero_id] (const a8::Args& args) mutable + { + if (hero_ptr.Get() && hero_ptr.Get()->AsHero()->master.Get()) { + if (!hero_ptr.Get()->room->IsGameOver()) { + hero_ptr.Get()->AsHero()->master.Get()->RemoveSurplusHero(hero_id, 0); + } + } + }); + } } } }