diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_netherspite.cpp | 16 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 12 | ||||
-rw-r--r-- | src/game/SpellHandler.cpp | 5 |
3 files changed, 15 insertions, 18 deletions
diff --git a/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_netherspite.cpp b/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_netherspite.cpp index 508823658f6..96c455d424e 100644 --- a/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_netherspite.cpp +++ b/src/bindings/scripts/scripts/eastern_kingdoms/karazhan/boss_netherspite.cpp @@ -147,17 +147,9 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI for(int i=0; i<3; ++i) { if(Creature *portal = Unit::GetCreature(*m_creature, PortalGUID[i])) - { - portal->SetVisibility(VISIBILITY_OFF); - portal->DealDamage(portal, portal->GetMaxHealth()); - portal->RemoveFromWorld(); - } + portal->DisappearAndDie(); if(Creature *portal = Unit::GetCreature(*m_creature, BeamerGUID[i])) - { - portal->SetVisibility(VISIBILITY_OFF); - portal->DealDamage(portal, portal->GetMaxHealth()); - portal->RemoveFromWorld(); - } + portal->DisappearAndDie(); PortalGUID[i] = 0; BeamTarget[i] = 0; } @@ -204,9 +196,7 @@ struct TRINITY_DLL_DECL boss_netherspiteAI : public ScriptedAI if(Creature *beamer = Unit::GetCreature(*portal, BeamerGUID[j])) { beamer->CastSpell(target, PortalBeam[j], false); - beamer->SetVisibility(VISIBILITY_OFF); - beamer->DealDamage(beamer, beamer->GetMaxHealth()); - beamer->RemoveFromWorld(); + beamer->DisappearAndDie(); BeamerGUID[j] = 0; } // create new one and start beaming on the target diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index e586061a61f..6952b9d7859 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -6735,11 +6735,15 @@ void AuraEffect::HandleModPossessPet(bool apply, bool Real, bool /*changeAmount* if(!caster || caster->GetTypeId() != TYPEID_PLAYER) return; - if(((Player*)caster)->GetPet() != m_target) - return; + //seems it may happen that when removing it is no longer owner's pet + //if(((Player*)caster)->GetPet() != m_target) + // return; if(apply) { + if(((Player*)caster)->GetPet() != m_target) + return; + m_target->SetCharmedBy(caster, CHARM_TYPE_POSSESS); } else @@ -6751,8 +6755,8 @@ void AuraEffect::HandleModPossessPet(bool apply, bool Real, bool /*changeAmount* if(!m_target->getVictim()) { m_target->GetMotionMaster()->MoveFollow(caster, PET_FOLLOW_DIST, m_target->GetFollowAngle()); - if(m_target->GetCharmInfo()) - m_target->GetCharmInfo()->SetCommandState(COMMAND_FOLLOW); + //if(m_target->GetCharmInfo()) + // m_target->GetCharmInfo()->SetCommandState(COMMAND_FOLLOW); } } } diff --git a/src/game/SpellHandler.cpp b/src/game/SpellHandler.cpp index c3be5007cdf..6dc55e6d114 100644 --- a/src/game/SpellHandler.cpp +++ b/src/game/SpellHandler.cpp @@ -526,8 +526,11 @@ void WorldSession::HandleSpellClick( WorldPacket & recv_data ) // TODO: Unit::SetCharmedBy: 28782 is not in world but 0 is trying to charm it! -> crash if(!unit->IsInWorld()) + { + sLog.outCrash("Spell click target %u is not in world!", unit->GetEntry()); + assert(false); return; - + } SpellClickInfoMapBounds clickPair = objmgr.GetSpellClickInfoMapBounds(unit->GetEntry()); for(SpellClickInfoMap::const_iterator itr = clickPair.first; itr != clickPair.second; ++itr) |