diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Handlers/PetHandler.cpp | 6 | ||||
-rw-r--r-- | src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/zone_zuldrak.cpp | 12 |
3 files changed, 13 insertions, 8 deletions
diff --git a/src/server/game/Handlers/PetHandler.cpp b/src/server/game/Handlers/PetHandler.cpp index ad8cacbd3c0..d57308d359a 100644 --- a/src/server/game/Handlers/PetHandler.cpp +++ b/src/server/game/Handlers/PetHandler.cpp @@ -718,6 +718,12 @@ void WorldSession::HandlePetSpellAutocastOpcode(WorldPacket& recvPacket) } SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellid); + if (!spellInfo) + { + TC_LOG_ERROR("network", "WORLD: unknown PET spell id %u", spellid); + return; + } + // do not add not learned spells/ passive spells if (!pet->HasSpell(spellid) || !spellInfo->IsAutocastable()) return; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index 8efcbf29d30..91127f2db0d 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -614,7 +614,8 @@ public: } return 50000; case 15: - arca->DealDamage(arca, arca->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); + if (arca) + arca->DealDamage(arca, arca->GetHealth(), NULL, DIRECT_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, NULL, false); return 5000; default : return 9999999; } diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index 29d7c017748..00adfa59d8d 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -57,16 +57,15 @@ public: float x, y, z; me->GetClosePoint(x, y, z, me->GetObjectSize() / 3, 0.1f); - if (Unit* summon = me->SummonCreature(NPC_RAGECLAW, x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1000)) + if (Creature* summon = me->SummonCreature(NPC_RAGECLAW, x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 1000)) { _rageclawGUID = summon->GetGUID(); - LockRageclaw(); + LockRageclaw(summon); } } - void LockRageclaw() + void LockRageclaw(Creature* rageclaw) { - Unit* rageclaw = Unit::GetCreature(*me, _rageclawGUID); // pointer check not needed me->SetInFront(rageclaw); rageclaw->SetInFront(me); @@ -75,12 +74,11 @@ public: DoCast(rageclaw, SPELL_RIGHT_CHAIN, true); } - void UnlockRageclaw(Unit* who) + void UnlockRageclaw(Unit* who, Creature* rageclaw) { if (!who) return; - Creature* rageclaw = Unit::GetCreature(*me, _rageclawGUID); // pointer check not needed DoCast(rageclaw, SPELL_FREE_RAGECLAW, true); @@ -95,7 +93,7 @@ public: { if (Creature* rageclaw = Unit::GetCreature(*me, _rageclawGUID)) { - UnlockRageclaw(caster); + UnlockRageclaw(caster, rageclaw); caster->ToPlayer()->KilledMonster(rageclaw->GetCreatureTemplate(), _rageclawGUID); me->DespawnOrUnsummon(); } |