aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Outland
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2018-01-18 13:58:40 -0300
committerShauren <shauren.trinity@gmail.com>2021-06-16 12:02:14 +0200
commit62c571076e5319c07c7222e139dbfc7c8bb4543f (patch)
tree234a3a61c51a3dec6517ab29f3904005f4cb66b8 /src/server/scripts/Outland
parentea79b5569809515e680d8e38dd8126f11f5fa666 (diff)
Core/Scripts: added nullptr checks to DamageTaken hooks
Since cb9e72e521d3cc415dd15bf6912c87f89e41b92a attacker may not be in world when hook is called (cherry picked from commit 0db5c2df3fe56f42293865e87ec781cd4d41598b)
Diffstat (limited to 'src/server/scripts/Outland')
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidan.cpp3
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp2
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp2
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp8
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp5
5 files changed, 11 insertions, 9 deletions
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index 0eb318acc6e..6abc09dee88 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
@@ -703,8 +703,7 @@ struct boss_illidan_stormrage : public BossAI
void DamageTaken(Unit* who, uint32 &damage) override
{
-
- if (damage >= me->GetHealth() && who->GetGUID() != me->GetGUID())
+ if (damage >= me->GetHealth() && (!who || who->GetGUID() != me->GetGUID()))
{
damage = me->GetHealth() - 1;
if (!_dead)
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
index 9594465ea83..1009106b426 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_illidari_council.cpp
@@ -275,7 +275,7 @@ struct IllidariCouncilBossAI : public BossAI
void DamageTaken(Unit* who, uint32 &damage) override
{
- if (damage >= me->GetHealth() && who->GetGUID() != me->GetGUID())
+ if (damage >= me->GetHealth() && (!who || who->GetGUID() != me->GetGUID()))
damage = me->GetHealth() - 1;
}
diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
index 57bd9af5500..829d211fd84 100644
--- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
+++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp
@@ -128,7 +128,7 @@ public:
void DamageTaken(Unit* done_by, uint32 &damage) override
{
- if (done_by->GetGUID() != victimGUID && done_by->GetGUID() != me->GetGUID())
+ if (!done_by || (done_by->GetGUID() != victimGUID && done_by->GetGUID() != me->GetGUID()))
{
damage = 0;
ModifyThreatByPercent(done_by, -100);
diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
index d6e88a17fab..7db59f845a3 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -368,7 +368,7 @@ struct advisorbase_ai : public ScriptedAI
}
}
- void DamageTaken(Unit* killer, uint32 &damage) override
+ void DamageTaken(Unit* /*killer*/, uint32 &damage) override
{
if (damage >= me->GetHealth() && !_inFakeDeath && !_hasRessurrected)
{
@@ -387,7 +387,7 @@ struct advisorbase_ai : public ScriptedAI
me->SetTarget(ObjectGuid::Empty);
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->GetMotionMaster()->Clear();
- JustDied(killer);
+ JustDied(nullptr);
}
}
@@ -572,7 +572,9 @@ class boss_kaelthas : public CreatureScript
if (_phase == PHASE_NONE)
{
DoAction(ACTION_START_ENCOUNTER);
- me->SetTarget(attacker->GetGUID());
+
+ if (attacker)
+ me->SetTarget(attacker->GetGUID());
}
if (!_hasFullPower && me->HealthBelowPctDamaged(50, damage))
diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp
index 590342d4a8f..4cf8b780204 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -99,9 +99,10 @@ public:
void DamageTaken(Unit* done_by, uint32 &damage) override
{
- Player* player = done_by->ToPlayer();
+ if (!done_by || !me->HealthBelowPctDamaged(30, damage))
+ return;
- if (player && me->HealthBelowPctDamaged(30, damage))
+ if (Player* player = done_by->ToPlayer())
{
if (Group* group = player->GetGroup())
{