From 4abe8e7f8b15f47cbcae76c9b344396520ee6798 Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 16 Jan 2024 13:24:40 +0800 Subject: [PATCH] 1 --- server/gameserver/human.cc | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index fabc70ff..8db8eefb 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -1581,9 +1581,22 @@ void Human::OnDie() SyncAroundPlayers(__FILE__, __LINE__, __func__); { Creature* killer = room->GetCreatureByUniId(stats->killer_id); - if (killer && killer->GetHeroGrowMeta() && killer->IsHuman() && - killer->GetHeroGrowMeta()->lootExp() > 0) { - killer->WinExp(killer->GetHeroGrowMeta()->lootExp() * mt::Param::s().battle_gain_exp_rate_killer); + if (killer && GetHeroGrowMeta() && killer->IsHuman() && + GetHeroGrowMeta()->lootExp() > 0) { + killer->WinExp(GetHeroGrowMeta()->lootExp() * mt::Param::s().battle_gain_exp_rate_killer); + killer->AsHuman()->GetTeam()->TraverseMembers + ( + [this, killer] (Human* hum) -> bool + { + if (killer != hum) { + if (GetPos().Distance2D2(hum->GetPos().ToGlmVec3()) < + mt::Param::s().battle_gain_exp_radium) { + hum->WinExp(GetHeroGrowMeta()->lootExp() * + mt::Param::s().battle_gain_exp_rate_teammate); + } + } + return true; + }); } } if (GetTeam()) {