Core/Battleground: Changed HandleKillUnit hook to accept any Unit as killer

Port From (https://github.com/TrinityCore/TrinityCore/commit/bf107e0581c58f767b21f15fe7f75cb7eac95d97)
This commit is contained in:
hondacrx
2024-02-05 13:31:24 -05:00
parent 49cf411e04
commit 35f46bea57
3 changed files with 20 additions and 12 deletions
+2 -1
View File
@@ -1614,7 +1614,8 @@ namespace Game.BattleGrounds
RewardXPAtKill(killer, victim); RewardXPAtKill(killer, victim);
} }
} }
public virtual void HandleKillUnit(Creature creature, Player killer) { }
public virtual void HandleKillUnit(Creature creature, Unit killer) { }
// Return the player's team based on Battlegroundplayer info // Return the player's team based on Battlegroundplayer info
// Used in same faction arena matches mainly // Used in same faction arena matches mainly
@@ -580,11 +580,14 @@ namespace Game.BattleGrounds.Zones
} }
} }
public override void HandleKillUnit(Creature creature, Player killer) public override void HandleKillUnit(Creature creature, Unit killer)
{ {
if (creature.GetEntry() == SACreatureIds.Demolisher) if (creature.GetEntry() == SACreatureIds.Demolisher)
{ {
UpdatePvpStat(killer, (uint)StrandOfTheAncientsPvpStats.DemolishersDestroyed, 1); Player killerPlayer = killer.GetCharmerOrOwnerPlayerOrPlayerItself();
if (killerPlayer != null)
UpdatePvpStat(killerPlayer, (uint)StrandOfTheAncientsPvpStats.DemolishersDestroyed, 1);
uint worldStateId = Attackers == BatttleGroundTeamId.Horde ? SAWorldStateIds.DestroyedHordeVehicles : SAWorldStateIds.DestroyedAllianceVehicles; uint worldStateId = Attackers == BatttleGroundTeamId.Horde ? SAWorldStateIds.DestroyedHordeVehicles : SAWorldStateIds.DestroyedAllianceVehicles;
int currentDestroyedVehicles = Global.WorldStateMgr.GetValue((int)worldStateId, GetBgMap()); int currentDestroyedVehicles = Global.WorldStateMgr.GetValue((int)worldStateId, GetBgMap());
UpdateWorldState(worldStateId, currentDestroyedVehicles + 1); UpdateWorldState(worldStateId, currentDestroyedVehicles + 1);
+7 -3
View File
@@ -998,10 +998,13 @@ namespace Game.Entities
bf.HandleKill(player, victim); bf.HandleKill(player, victim);
} }
// Battlegroundthings (do this at the end, so the death state flag will be properly set to handle in the bg.handlekill) // battleground things (do this at the end, so the death state flag will be properly set to handle in the bg->handlekill)
if (player != null && player.InBattleground()) if (attacker != null)
{ {
Battleground bg = player.GetBattleground(); BattlegroundMap bgMap = victim.GetMap().ToBattlegroundMap();
if (bgMap != null)
{
Battleground bg = bgMap.GetBG();
if (bg != null) if (bg != null)
{ {
Player playerVictim = victim.ToPlayer(); Player playerVictim = victim.ToPlayer();
@@ -1011,6 +1014,7 @@ namespace Game.Entities
bg.HandleKillUnit(victim.ToCreature(), player); bg.HandleKillUnit(victim.ToCreature(), player);
} }
} }
}
// achievement stuff // achievement stuff
if (attacker != null && victim.IsPlayer()) if (attacker != null && victim.IsPlayer())