diff options
author | Keader <keader.android@gmail.com> | 2018-02-08 10:05:08 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-06-19 23:33:24 +0200 |
commit | ad5b0fa9cd6c5e6f3a0b5975c50b1bfc2a1f32de (patch) | |
tree | ca6801eee7da7e076cd7427f5011961de2197a45 /src | |
parent | 4ae29e38eee94c6dcfee3355cbab7099ffc93bc3 (diff) |
Core/Scripts: Fixed possible crashs related with JustDied
(cherry picked from commit 5bef3e426aea37b0e7555f146037c58e7be6352d)
Diffstat (limited to 'src')
33 files changed, 82 insertions, 49 deletions
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp index e76d3e6504b..1a924bdb849 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp @@ -434,7 +434,7 @@ public: Talk(SAY_RANDOM); } - void JustDied(Unit* /*Killer*/) override + void JustDied(Unit* /*killer*/) override { _JustDied(); Talk(SAY_DEATH); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp index cd8444f9159..b5182ae0e47 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_midnight.cpp @@ -198,13 +198,13 @@ public: } } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); if (Unit* midnight = ObjectAccessor::GetUnit(*me, _midnightGUID)) midnight->KillSelf(); - BossAI::JustDied(killer); + _JustDied(); } void SetGUID(ObjectGuid const& guid, int32 id) override diff --git a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp index 4e776b83208..58c07769dd3 100644 --- a/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp +++ b/src/server/scripts/EasternKingdoms/MagistersTerrace/boss_vexallus.cpp @@ -208,7 +208,8 @@ class npc_pure_energy : public CreatureScript void JustDied(Unit* killer) override { - killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true); + if (killer) + killer->CastSpell(killer, SPELL_ENERGY_FEEDBACK, true); me->RemoveAurasDueToSpell(SPELL_PURE_ENERGY_PASSIVE); } }; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 83a19eb2527..ef4f541d58b 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -872,7 +872,7 @@ public: void JustDied(Unit* killer) override { Creature* deathcharger = me->FindNearestCreature(28782, 30); - if (!deathcharger) + if (!deathcharger || !killer) return; if (killer->GetTypeId() == TYPEID_PLAYER && deathcharger->GetTypeId() == TYPEID_UNIT && deathcharger->IsVehicle()) diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp index f9c2d609406..e00431dcc89 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter2.cpp @@ -550,7 +550,8 @@ public: void JustDied(Unit* killer) override { Talk(SAY_VALROTH_DEATH); - killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); + if (killer) + killer->CastSpell(me, SPELL_SUMMON_VALROTH_REMAINS, true); } }; diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp index 65303b527b7..54e0a72d4c2 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/boss_apothecary_hummel.cpp @@ -321,7 +321,7 @@ class npc_apothecary_frye : public CreatureScript { npc_apothecary_fryeAI(Creature* creature) : npc_apothecary_genericAI(creature, FryeMovePos) { } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_FRYE_DEATH); } @@ -349,7 +349,7 @@ class npc_apothecary_baxter : public CreatureScript _events.ScheduleEvent(EVENT_CHAIN_REACTION, Seconds(12)); } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { _events.Reset(); Talk(SAY_BAXTER_DEATH); diff --git a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp index 8e7c71cc83c..49457a30244 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/boss_order_of_silver_hand.cpp @@ -129,7 +129,7 @@ public: break; } - if (instance->GetData(TYPE_SH_QUEST)) + if (killer && instance->GetData(TYPE_SH_QUEST)) { if (Player* player = killer->ToPlayer()) player->KilledMonsterCredit(SH_QUEST_CREDIT); diff --git a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp index 8ab7cfd3a80..4436e4a9b49 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/boss_archaedas.cpp @@ -375,7 +375,7 @@ class npc_stonekeepers : public CreatureScript DoMeleeAttackIfReady(); } - void JustDied(Unit* /*attacker*/) override + void JustDied(Unit* /*killer*/) override { DoCast (me, SPELL_SELF_DESTRUCT, true); instance->SetData(DATA_STONE_KEEPERS, IN_PROGRESS); // activate next stonekeeper diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp index aa915223ee2..3c3e5f78fc3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/old_hillsbrad.cpp @@ -441,12 +441,12 @@ public: { Talk(SAY_TH_RANDOM_KILL); } - void JustDied(Unit* slayer) override + void JustDied(Unit* killer) override { instance->SetData(TYPE_THRALL_EVENT, FAIL); // Don't do a yell if he kills self (if player goes too far or at the end). - if (slayer == me) + if (killer == me) return; Talk(SAY_TH_RANDOM_DIE); diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp index d83e071d564..d93def8252f 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.cpp @@ -136,7 +136,7 @@ public: Talk(SAY_ATTACKED, who); } - void JustDied(Unit* /*slayer*/) override + void JustDied(Unit* /*killer*/) override { instance->SetData(TYPE_NARALEX_EVENT, FAIL); instance->SetData(TYPE_NARALEX_PART1, FAIL); diff --git a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp index 9d45eb42a69..156756960ea 100644 --- a/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_bloodmyst_isle.cpp @@ -67,6 +67,9 @@ public: void JustDied(Unit* killer) override { + if (!killer) + return; + uint32 spawnCreatureID = 0; switch (urand(0, 2)) @@ -261,6 +264,10 @@ public: { me->SetObjectScale(1.0f); _events.Reset(); + + if (!killer) + return; + if (Creature* legoso = me->FindNearestCreature(NPC_LEGOSO, SIZE_OF_GRIDS)) { Group* group = me->GetLootRecipientGroup(); diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp index 7e20bb9410f..5f7c1745a22 100644 --- a/src/server/scripts/Kalimdor/zone_silithus.cpp +++ b/src/server/scripts/Kalimdor/zone_silithus.cpp @@ -697,7 +697,7 @@ public: } void JustEngagedWith(Unit* /*who*/) override { } - void JustDied(Unit* /*slayer*/) override; + void JustDied(Unit* /*killer*/) override; void UpdateAI(uint32 diff) override { @@ -933,7 +933,7 @@ public: }; -void npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::JustDied(Unit* /*slayer*/) +void npc_qiraj_war_spawn::npc_qiraj_war_spawnAI::JustDied(Unit* /*killer*/) { me->DespawnOrUnsummon(); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp index ae0427b45d1..daa43d95348 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_krikthir_the_gatewatcher.cpp @@ -169,10 +169,10 @@ class boss_krik_thir : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { summons.clear(); - BossAI::JustDied(killer); + _JustDied(); Talk(SAY_DEATH); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index 48f6cc63f20..6286c29c311 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -486,7 +486,8 @@ class npc_swarm_scarab : public CreatureScript void JustDied(Unit* killer) override { - DoCast(killer, SPELL_TRAITOR_KING); + if (killer) + DoCast(killer, SPELL_TRAITOR_KING); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp index 18c53996bc7..f84eb9cdd19 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_queen_lana_thel.cpp @@ -202,6 +202,10 @@ class boss_blood_queen_lana_thel : public CreatureScript DoCastAOE(SPELL_BLOOD_INFUSION_CREDIT, true); CleanAuras(); + + if (!killer) + return; + // Blah, credit the quest if (_creditBloodQuickening) { diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index e635d0fa73e..ae8ca6f2f14 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -367,6 +367,10 @@ class boss_lady_deathwhisper : public CreatureScript darnavan->SetReactState(REACT_PASSIVE); darnavan->m_Events.AddEvent(new DaranavanMoveEvent(*darnavan), darnavan->m_Events.CalculateTime(10000)); darnavan->AI()->Talk(SAY_DARNAVAN_RESCUED); + + if (!killer) + return; + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) @@ -889,6 +893,10 @@ class npc_darnavan : public CreatureScript void JustDied(Unit* killer) override { _events.Reset(); + + if (!killer) + return; + if (Player* owner = killer->GetCharmerOrOwnerPlayerOrPlayerItself()) { if (Group* group = owner->GetGroup()) diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 16835d41efc..250e2f64cac 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -437,7 +437,7 @@ class boss_mimiron : public CreatureScript events.ScheduleEvent(EVENT_INTRO_1, 1500); } - void JustDied(Unit* /*who*/) override + void JustDied(Unit* /*killer*/) override { instance->SetBossState(BOSS_MIMIRON, DONE); events.Reset(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index ba93019b049..1cec6c70ad2 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -1138,7 +1138,7 @@ class npc_thorim_pre_phase : public CreatureScript SetCombatMovement(false); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { if (Creature* thorim = _instance->GetCreature(BOSS_THORIM)) thorim->AI()->DoAction(ACTION_INCREASE_PREADDS_COUNT); @@ -1397,7 +1397,7 @@ class npc_runic_colossus : public CreatureScript } } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { // open the Runic Door _instance->HandleGameObject(_instance->GetGuidData(DATA_RUNIC_DOOR), true); @@ -1508,7 +1508,7 @@ class npc_ancient_rune_giant : public CreatureScript _events.ScheduleEvent(EVENT_RUNE_DETONATION, 25000); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { // opem the Stone Door _instance->HandleGameObject(_instance->GetGuidData(DATA_STONE_DOOR), true); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index a27a0606a9b..9488e4f5b7f 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -526,13 +526,13 @@ class boss_voice_of_yogg_saron : public CreatureScript events.ScheduleEvent(EVENT_EXTINGUISH_ALL_LIFE, 900000); // 15 minutes } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { // don't despawn Yogg-Saron's corpse, remove him from SummonList! if (Creature* yogg = instance->GetCreature(BOSS_YOGG_SARON)) summons.Despawn(yogg); - BossAI::JustDied(killer); + _JustDied(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index 8a0ba50a8dc..332480d7be3 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -64,10 +64,10 @@ class boss_cyanigosa : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void MoveInLineOfSight(Unit* /*who*/) override { } diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index d664ef36fb1..b9e6314f6bc 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -93,10 +93,10 @@ class boss_erekem : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } bool CheckGuardAuras(Creature* guard) const diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 0ce6a4f6e81..3f56443ee97 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -164,10 +164,10 @@ class boss_ichoron : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void JustSummoned(Creature* summon) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index fd6fbb48de5..2ac2b548815 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -115,10 +115,10 @@ class boss_xevozz : public CreatureScript Talk(SAY_SLAY); } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void SpellHit(Unit* /*who*/, SpellInfo const* spell) override diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index b8a5c9fe814..015b0d19c1b 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -104,10 +104,10 @@ class boss_zuramat : public CreatureScript return 0; } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { - BossAI::JustDied(killer); Talk(SAY_DEATH); + _JustDied(); } void KilledUnit(Unit* victim) override diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 2f41372df6d..7eb0420dc1c 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -370,9 +370,10 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; if (player->GetQuestStatus(QUEST_TAKEN_BY_THE_SCOURGE) == QUEST_STATUS_INCOMPLETE) { @@ -1270,9 +1271,9 @@ public: leryssa->ClearUnitState(UNIT_STATE_STUNNED); leryssa->SetWalk(false); leryssa->GetMotionMaster()->MovePoint(0, 3722.114502f, 3564.201660f, 477.441437f); - - if (Player* player = killer->ToPlayer()) - player->RewardPlayerAndGroupAtEvent(NPC_PRINCE_VALANAR, nullptr); + + if (killer && killer->GetTypeId() == TYPEID_PLAYER) + killer->ToPlayer()->RewardPlayerAndGroupAtEvent(NPC_PRINCE_VALANAR, nullptr); } }; @@ -1941,9 +1942,10 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; if (player->GetQuestStatus(QUEST_YOU_RE_NOT_SO_BIG_NOW) == QUEST_STATUS_INCOMPLETE && (me->HasAura(SPELL_AURA_NOTSOBIG_1) || me->HasAura(SPELL_AURA_NOTSOBIG_2) || diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 401c112e03f..7bcc0a4bc56 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -637,11 +637,11 @@ public: void JustDied(Unit* killer) override { + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) + return; + Player* player = killer->ToPlayer(); - if (!player) - return; - if (roll_chance_i(20)) { player->CastSpell(me, SPELL_SUMMON_FREED_MIST_WHISPER_SCOUT, true); diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp index d2323404161..14834ce8b1c 100644 --- a/src/server/scripts/Northrend/zone_wintergrasp.cpp +++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp @@ -409,7 +409,7 @@ class npc_wg_give_promotion_credit : public CreatureScript void JustDied(Unit* killer) override { - if (killer->GetTypeId() != TYPEID_PLAYER) + if (!killer || killer->GetTypeId() != TYPEID_PLAYER) return; BattlefieldWG* wintergrasp = static_cast<BattlefieldWG*>(sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG)); diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 1c28c3795b4..0f7c4ec6e09 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -312,6 +312,9 @@ class npc_shadowmoon_channeler : public CreatureScript void JustDied(Unit* killer) override { + if (!killer) + return; + if (Creature* Kelidan = me->FindNearestCreature(ENTRY_KELIDAN, 100)) ENSURE_AI(boss_kelidan_the_breaker::boss_kelidan_the_breakerAI, Kelidan->AI())->ChannelerDied(killer); } diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp index 81af9793526..524740afcb9 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/boss_vazruden_the_herald.cpp @@ -486,6 +486,9 @@ class npc_hellfire_sentry : public CreatureScript void JustDied(Unit* killer) override { + if (!killer) + return; + if (Creature* herald = me->FindNearestCreature(NPC_VAZRUDEN_HERALD, 150)) ENSURE_AI(boss_vazruden_the_herald::boss_vazruden_the_heraldAI, herald->AI())->SentryDownBy(killer); } diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp index 4cceca72229..e5ba669aa7d 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/shattered_halls.cpp @@ -103,7 +103,7 @@ class boss_shattered_executioner : public CreatureScript void JustSummoned(Creature*) override { } // avoid despawn of prisoners on death/reset - void JustDied(Unit*) override + void JustDied(Unit* /*killer*/) override { _JustDied(); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp index 7db59f845a3..0da8ce27afa 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/boss_kaelthas.cpp @@ -653,10 +653,10 @@ class boss_kaelthas : public CreatureScript } } - void JustDied(Unit* killer) override + void JustDied(Unit* /*killer*/) override { Talk(SAY_DEATH); - BossAI::JustDied(killer); + _JustDied(); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp index e48cc486797..0e35f4625e3 100644 --- a/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp +++ b/src/server/scripts/Outland/TempestKeep/Mechanar/boss_mechano_lord_capacitus.cpp @@ -93,7 +93,7 @@ class boss_mechano_lord_capacitus : public CreatureScript Talk(YELL_KILL); } - void JustDied(Unit* /*victim*/) override + void JustDied(Unit* /*killer*/) override { _JustDied(); Talk(YELL_DEATH); diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index d9e5e030a86..efcc0778919 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -972,6 +972,9 @@ public: void JustDied(Unit* killer) override { + if (!killer) + return; + switch (killer->GetTypeId()) { case TYPEID_UNIT: |