aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp35
-rw-r--r--src/server/game/Entities/GameObject/GameObject.cpp1
2 files changed, 20 insertions, 16 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
index 7af9c0a3fa5..0966ddd19bd 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp
@@ -552,8 +552,9 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject*
switch (go->GetGoType())
{
case GAMEOBJECT_TYPE_GOOBER:
- if (eventId == BG_SA_EVENT_TITAN_RELIC_ACTIVATED)
- TitanRelicActivated(invoker->ToPlayer());
+ if (invoker)
+ if (eventId == BG_SA_EVENT_TITAN_RELIC_ACTIVATED)
+ TitanRelicActivated(invoker->ToPlayer());
break;
case GAMEOBJECT_TYPE_DESTRUCTIBLE_BUILDING:
{
@@ -577,8 +578,15 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject*
GateStatus[gate->GateId] = BG_SA_GATE_DESTROYED;
_gateDestroyed = true;
- bool rewardHonor = true;
+ if (gateId < 5)
+ DelObject(gateId + 14);
+ if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f))
+ SendChatMessage(c, gate->DestroyedText, invoker);
+
+ PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_DESTROYED_ALLIANCE : SOUND_WALL_DESTROYED_HORDE);
+
+ bool rewardHonor = true;
switch (gateId)
{
case BG_SA_GREEN_GATE:
@@ -601,23 +609,18 @@ void BattlegroundSA::ProcessEvent(WorldObject* obj, uint32 eventId, WorldObject*
break;
}
- if (gateId < 5)
- DelObject(gateId + 14);
-
- if (Unit* unit = invoker->ToUnit())
+ if (invoker)
{
- if (Player* player = unit->GetCharmerOrOwnerPlayerOrPlayerItself())
+ if (Unit* unit = invoker->ToUnit())
{
- UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1);
- if (rewardHonor)
- UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1));
+ if (Player* player = unit->GetCharmerOrOwnerPlayerOrPlayerItself())
+ {
+ UpdatePlayerScore(player, SCORE_DESTROYED_WALL, 1);
+ if (rewardHonor)
+ UpdatePlayerScore(player, SCORE_BONUS_HONOR, GetBonusHonorFromKill(1));
+ }
}
}
-
- if (Creature* c = obj->FindNearestCreature(NPC_WORLD_TRIGGER, 500.0f))
- SendChatMessage(c, gate->DestroyedText, invoker);
-
- PlaySoundToAll(Attackers == TEAM_ALLIANCE ? SOUND_WALL_DESTROYED_ALLIANCE : SOUND_WALL_DESTROYED_HORDE);
}
else
break;
diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp
index de53385af9e..77f9ca59db4 100644
--- a/src/server/game/Entities/GameObject/GameObject.cpp
+++ b/src/server/game/Entities/GameObject/GameObject.cpp
@@ -1904,6 +1904,7 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= NULL*/, u
if (newState == GetDestructibleState())
return;
+ /// @todo: pass attackerOrHealer instead of player
SetDestructibleState(newState, player, false);
}