diff options
| author | ariel- <ariel-@users.noreply.github.com> | 2018-01-18 13:58:40 -0300 |
|---|---|---|
| committer | ariel- <ariel-@users.noreply.github.com> | 2018-01-18 13:58:40 -0300 |
| commit | 0db5c2df3fe56f42293865e87ec781cd4d41598b (patch) | |
| tree | df671abc0631637261038f17841adc7c417caf16 /src/server/scripts/Kalimdor | |
| parent | d9d26200f7ffc07507dfca4a2c17fdfcde0194c8 (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/Kalimdor')
4 files changed, 6 insertions, 5 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp index 6b2deab32c8..42daef4ca52 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal_trash.cpp @@ -194,7 +194,7 @@ hyjal_trashAI::hyjal_trashAI(Creature* creature) : EscortAI(creature) void hyjal_trashAI::DamageTaken(Unit* done_by, uint32 &damage) { - if (done_by->GetTypeId() == TYPEID_PLAYER || done_by->IsPet()) + if (!done_by || done_by->GetTypeId() == TYPEID_PLAYER || done_by->IsPet()) { damageTaken += damage; instance->SetData(DATA_RAIDDAMAGE, damage);//store raid's damage diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp index daf33fb3c79..662d637d546 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_viscidus.cpp @@ -119,7 +119,7 @@ class boss_viscidus : public CreatureScript ++_hitcounter; - if (attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && _hitcounter >= HITCOUNTER_EXPLODE) + if (attacker && attacker->HasUnitState(UNIT_STATE_MELEE_ATTACKING) && _hitcounter >= HITCOUNTER_EXPLODE) { Talk(EMOTE_EXPLODE); events.Reset(); diff --git a/src/server/scripts/Kalimdor/zone_durotar.cpp b/src/server/scripts/Kalimdor/zone_durotar.cpp index 34776c7eb8c..7ed3b05e7b8 100644 --- a/src/server/scripts/Kalimdor/zone_durotar.cpp +++ b/src/server/scripts/Kalimdor/zone_durotar.cpp @@ -196,7 +196,7 @@ class npc_tiger_matriarch : public CreatureScript void DamageTaken(Unit* attacker, uint32& damage) override { - if (!attacker->IsSummon()) + if (!attacker || !attacker->IsSummon()) return; if (HealthBelowPct(20)) diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index c6035f05b40..78fe8fad55a 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -129,8 +129,9 @@ public: { Damage = 0; - if (Player* player = pDoneBy->GetCharmerOrOwnerPlayerOrPlayerItself()) - player->GroupEventHappens(QUEST_MISSING_DIPLO_PT16, me); + if (pDoneBy) + if (Player* player = pDoneBy->GetCharmerOrOwnerPlayerOrPlayerItself()) + player->GroupEventHappens(QUEST_MISSING_DIPLO_PT16, me); Talk(EMOTE_SURRENDER); EnterEvadeMode(); |
