diff options
Diffstat (limited to 'src')
4 files changed, 22 insertions, 18 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundSA.cpp index c2586e8aa64..83ac056e831 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/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index eeb0faad6ca..c21d730b04c 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -103,7 +103,7 @@ void GossipMenu::AddMenuItem(uint32 menuId, uint32 menuItemId, uint32 sender, ui /// BoxText if (boxBroadcastText) - strBoxText = optionBroadcastText->GetText(GetLocale()); + strBoxText = boxBroadcastText->GetText(GetLocale()); else strBoxText = itr->second.BoxText; diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index e33ffb0c5eb..27250e6c82a 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -1905,6 +1905,7 @@ void GameObject::ModifyHealth(int32 change, Unit* attackerOrHealer /*= NULL*/, u if (newState == GetDestructibleState()) return; + /// @todo: pass attackerOrHealer instead of player SetDestructibleState(newState, player, false); } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a6366a1d84f..7a7f931e68f 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14493,7 +14493,7 @@ void Player::PrepareGossipMenu(WorldObject* source, uint32 menuId /*= 0*/, bool strOptionText = itr->second.OptionText; if (boxBroadcastText) - strBoxText = optionBroadcastText->GetText(locale, getGender()); + strBoxText = boxBroadcastText->GetText(locale, getGender()); else strBoxText = itr->second.BoxText; |