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
committerariel- <ariel-@users.noreply.github.com>2018-01-18 13:58:40 -0300
commit0db5c2df3fe56f42293865e87ec781cd4d41598b (patch)
treedf671abc0631637261038f17841adc7c417caf16 /src/server/scripts/Outland
parentd9d26200f7ffc07507dfca4a2c17fdfcde0194c8 (diff)
Core/Scripts: added nullptr checks to DamageTaken hooks
Since cb9e72e521d3cc415dd15bf6912c87f89e41b92a attacker may not be in world when hook is called
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.cpp4
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp5
5 files changed, 9 insertions, 7 deletions
diff --git a/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp b/src/server/scripts/Outland/BlackTemple/boss_illidan.cpp
index 6c890d8aa6d..540cbee00e4 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 b1d05f81d84..f097546321b 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 b429eda5aee..4604799a890 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
@@ -129,7 +129,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 aeec57dc0a2..2815084ec8b 100644
--- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
+++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp
@@ -573,7 +573,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 eab6d460fe5..b79fcda139d 100644
--- a/src/server/scripts/Outland/zone_terokkar_forest.cpp
+++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp
@@ -100,9 +100,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())
{