From 3ff9589c9afe72c270db28f58a0476a23f766351 Mon Sep 17 00:00:00 2001 From: joschiwald Date: Thu, 1 May 2014 15:14:42 +0200 Subject: [PATCH 1/3] Core/Battleground: fixed possible crash in BattlegroundSA Closes #11969 --- .../Battlegrounds/Zones/BattlegroundSA.cpp | 35 ++++++++++--------- .../game/Entities/GameObject/GameObject.cpp | 1 + 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 7af9c0a3fa..0966ddd19b 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 de53385af9..77f9ca59db 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); } From 92e47777466f3a3122f248ba8666f3969fc232ca Mon Sep 17 00:00:00 2001 From: Aokromes Date: Thu, 1 May 2014 18:06:52 +0200 Subject: [PATCH 2/3] DB/Creature Fix incorrect trigger flags on Enchanted Tiki Warrior By dr-j closes #11973 --- sql/updates/world/2014_05_01_00_world_creature_template.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 sql/updates/world/2014_05_01_00_world_creature_template.sql diff --git a/sql/updates/world/2014_05_01_00_world_creature_template.sql b/sql/updates/world/2014_05_01_00_world_creature_template.sql new file mode 100644 index 0000000000..6bdc3f2f4a --- /dev/null +++ b/sql/updates/world/2014_05_01_00_world_creature_template.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra`=0 WHERE `entry`=28882; From 0faf4b1b24cefaf83a6bcc6156e1ea35a034e0ee Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Thu, 1 May 2014 21:59:00 +0200 Subject: [PATCH 3/3] Core/Text: Fix typo in 5caf6aad98eba766017b6a3acc04dd0e30086142 --- src/server/game/Entities/Creature/GossipDef.cpp | 2 +- src/server/game/Entities/Player/Player.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index d335a9a592..492d82c5a0 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/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 13aae30153..a701e6fc38 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14438,7 +14438,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;