aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts/Northrend
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/Northrend
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/Northrend')
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp2
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp9
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp4
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_icecrown.cpp2
8 files changed, 16 insertions, 12 deletions
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
index a0f2665f910..482cf1cdd04 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp
@@ -981,7 +981,7 @@ class npc_high_overlord_saurfang_igb : public CreatureScript
return false;
}
- void DamageTaken(Unit* , uint32& damage) override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
if (me->HealthBelowPctDamaged(65, damage) && !me->HasAura(SPELL_TASTE_OF_BLOOD))
DoCast(me, SPELL_TASTE_OF_BLOOD, true);
@@ -1251,7 +1251,7 @@ class npc_muradin_bronzebeard_igb : public CreatureScript
return false;
}
- void DamageTaken(Unit* , uint32& damage) override
+ void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
if (me->HealthBelowPctDamaged(65, damage) && me->HasAura(SPELL_TASTE_OF_BLOOD))
DoCast(me, SPELL_TASTE_OF_BLOOD, true);
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
index e6931a423be..8a377da4acc 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_gothik.cpp
@@ -584,7 +584,7 @@ struct npc_gothik_minion_baseAI : public ScriptedAI
void DamageTaken(Unit* attacker, uint32 &damage) override
{ // do not allow minions to take damage before the gate is opened
- if (!_gateIsOpen && !isOnSameSide(attacker))
+ if (!_gateIsOpen && (!attacker || !isOnSameSide(attacker)))
damage = 0;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
index a4dfb9ef7d1..ce87a0c9a73 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp
@@ -713,7 +713,7 @@ class boss_flame_leviathan_defense_turret : public CreatureScript
bool CanAIAttack(Unit const* who) const override
{
- if (who->GetTypeId() != TYPEID_PLAYER || !who->GetVehicle() || who->GetVehicleBase()->GetEntry() != NPC_SEAT)
+ if (!who || who->GetTypeId() != TYPEID_PLAYER || !who->GetVehicle() || who->GetVehicleBase()->GetEntry() != NPC_SEAT)
return false;
return true;
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index d634963bf2b..35d886e485c 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -838,9 +838,10 @@ class boss_elder_stonebark : public CreatureScript
void DamageTaken(Unit* who, uint32& damage) override
{
- if (who == me)
+ if (!who || who == me)
return;
+ ///HACK: should be handled by proc
if (me->HasAura(SPELL_PETRIFIED_BARK))
{
CastSpellExtraArgs args(TRIGGERED_FULL_MASK);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
index 161287ccce8..301f6a90ebd 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp
@@ -716,7 +716,8 @@ class boss_leviathan_mk_ii : public CreatureScript
{
me->SetStandState(UNIT_STAND_STATE_DEAD);
- if (IsEncounterFinished(who))
+ Unit* ref = who ? who : me;
+ if (IsEncounterFinished(ref))
return;
me->CastStop();
@@ -960,7 +961,8 @@ class boss_vx_001 : public CreatureScript
me->SetStandState(UNIT_STAND_STATE_DEAD);
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- if (IsEncounterFinished(who))
+ Unit* ref = who ? who : me;
+ if (IsEncounterFinished(ref))
return;
me->CastStop();
@@ -1138,7 +1140,8 @@ class boss_aerial_command_unit : public CreatureScript
{
me->SetStandState(UNIT_STAND_STATE_DEAD);
- if (IsEncounterFinished(who))
+ Unit* ref = who ? who : me;
+ if (IsEncounterFinished(ref))
return;
me->CastStop();
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
index 837c14d9e02..c0e26fabda3 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp
@@ -912,7 +912,7 @@ class boss_thorim : public CreatureScript
bool CanStartPhase2(Unit* actor) const
{
- if (actor->GetTypeId() != TYPEID_PLAYER || !me->IsWithinDistInMap(actor, 10.0f))
+ if (!actor || actor->GetTypeId() != TYPEID_PLAYER || !me->IsWithinDistInMap(actor, 10.0f))
return false;
Creature* runicColossus = instance->GetCreature(DATA_RUNIC_COLOSSUS);
@@ -1171,7 +1171,7 @@ class npc_thorim_pre_phase : public CreatureScript
void DamageTaken(Unit* attacker, uint32& damage) override
{
// nullify spell damage
- if (!attacker->GetAffectingPlayer())
+ if (!attacker || !attacker->GetAffectingPlayer())
damage = 0;
}
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
index f6a04dcbb2e..07780da659b 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp
@@ -559,7 +559,7 @@ class npc_scourge_hulk : public CreatureScript
void DamageTaken(Unit* attacker, uint32 &damage) override
{
- if (damage >= me->GetHealth() && attacker->GetEntry() == NPC_SVALA_SORROWGRAVE)
+ if (damage >= me->GetHealth() && attacker && attacker->GetEntry() == NPC_SVALA_SORROWGRAVE)
killedByRitualStrike = true;
}
diff --git a/src/server/scripts/Northrend/zone_icecrown.cpp b/src/server/scripts/Northrend/zone_icecrown.cpp
index 1b810598edd..237e0ae6ef0 100644
--- a/src/server/scripts/Northrend/zone_icecrown.cpp
+++ b/src/server/scripts/Northrend/zone_icecrown.cpp
@@ -75,7 +75,7 @@ public:
void DamageTaken(Unit* pDoneBy, uint32& uiDamage) override
{
- if (uiDamage > me->GetHealth() && pDoneBy->GetTypeId() == TYPEID_PLAYER)
+ if (uiDamage > me->GetHealth() && pDoneBy && pDoneBy->GetTypeId() == TYPEID_PLAYER)
{
uiDamage = 0;
pDoneBy->CastSpell(pDoneBy, SPELL_KILL_CREDIT, true);