diff options
Diffstat (limited to 'src')
66 files changed, 153 insertions, 194 deletions
diff --git a/src/server/game/AI/CoreAI/CombatAI.cpp b/src/server/game/AI/CoreAI/CombatAI.cpp index ebda538c692..1aedf41cd47 100755 --- a/src/server/game/AI/CoreAI/CombatAI.cpp +++ b/src/server/game/AI/CoreAI/CombatAI.cpp @@ -310,7 +310,7 @@ void VehicleAI::UpdateAI(const uint32 diff) { m_DoDismiss = false; me->SetVisible(false); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); }else m_DismissTimer -= diff; } } diff --git a/src/server/game/AI/EventAI/CreatureEventAI.cpp b/src/server/game/AI/EventAI/CreatureEventAI.cpp index b66c97e9fb5..fefd89a16a5 100755 --- a/src/server/game/AI/EventAI/CreatureEventAI.cpp +++ b/src/server/game/AI/EventAI/CreatureEventAI.cpp @@ -813,7 +813,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32 } case ACTION_T_FORCE_DESPAWN: { - me->ForcedDespawn(action.forced_despawn.msDelay); + me->DespawnOrUnsummon(action.forced_despawn.msDelay); break; } case ACTION_T_SET_INVINCIBILITY_HP_LEVEL: diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp index 330c13ba01e..c41ce1881d8 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp @@ -246,7 +246,7 @@ void npc_escortAI::UpdateAI(const uint32 uiDiff) me->Respawn(); } else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -287,7 +287,7 @@ void npc_escortAI::UpdateAI(const uint32 uiDiff) me->Respawn(); } else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } diff --git a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp index 415d4dcc07a..06fb3bc667a 100644 --- a/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp +++ b/src/server/game/AI/ScriptedAI/ScriptedFollowerAI.cpp @@ -192,7 +192,7 @@ void FollowerAI::UpdateAI(const uint32 uiDiff) if (HasFollowState(STATE_FOLLOW_COMPLETE) && !HasFollowState(STATE_FOLLOW_POSTEVENT)) { sLog->outDebug("TSCR: FollowerAI is set completed, despawns."); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -232,7 +232,7 @@ void FollowerAI::UpdateAI(const uint32 uiDiff) if (bIsMaxRangeExceeded) { sLog->outDebug("TSCR: FollowerAI failed because player/group was to far away or not found"); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -266,7 +266,7 @@ void FollowerAI::MovementInform(uint32 uiMotionType, uint32 uiPointId) AddFollowState(STATE_FOLLOW_RETURNING); } else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } } diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 245837b5fc6..90faf524ead 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -84,7 +84,7 @@ void SmartAI::UpdateDespawn(const uint32 diff) mDespawnState++; } else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } else mDespawnTime -= diff; } diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 2a5e956cc6d..13e3234412f 100755 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -1656,6 +1656,14 @@ void Creature::ForcedDespawn(uint32 timeMSToDespawn) RemoveCorpse(false); } +void Creature::DespawnOrUnsummon(uint32 msTimeToDespawn /*= 0*/) +{ + if (TempSummon* summon = this->ToTempSummon()) + summon->UnSummon(); + else + ForcedDespawn(msTimeToDespawn); +} + bool Creature::IsImmunedToSpell(SpellEntry const* spellInfo) { if (!spellInfo) diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index b37440e2706..57941675c79 100755 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -596,6 +596,7 @@ class Creature : public Unit, public GridObject<Creature> bool isDeadByDefault() const { return m_isDeadByDefault; }; void ForcedDespawn(uint32 timeMSToDespawn = 0); + void DespawnOrUnsummon(uint32 msTimeToDespawn = 0); time_t const& GetRespawnTime() const { return m_respawnTime; } time_t GetRespawnTimeEx() const; diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index c7aadd0f868..c31f4c40221 100755 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -199,7 +199,7 @@ void Vehicle::RemoveAllPassengers() // creature passengers mounted on player mounts should be despawned at dismount if (GetBase()->GetTypeId() == TYPEID_PLAYER && passenger->ToCreature()) - passenger->ToCreature()->ForcedDespawn(); + passenger->ToCreature()->DespawnOrUnsummon(); } } diff --git a/src/server/game/Scripting/MapScripts.cpp b/src/server/game/Scripting/MapScripts.cpp index fd1ad5fa1e3..41396215156 100755 --- a/src/server/game/Scripting/MapScripts.cpp +++ b/src/server/game/Scripting/MapScripts.cpp @@ -801,7 +801,7 @@ void Map::ScriptsProcess() case SCRIPT_COMMAND_DESPAWN_SELF: // Target or source must be Creature. if (Creature* cSource = _GetScriptCreatureSourceOrTarget(source, target, step.script, true)) - cSource->ForcedDespawn(step.script->DespawnSelf.DespawnDelay); + cSource->DespawnOrUnsummon(step.script->DespawnSelf.DespawnDelay); break; case SCRIPT_COMMAND_LOAD_PATH: diff --git a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp index c7483f1044b..adab71211bb 100755 --- a/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/MovementHandler.cpp @@ -660,7 +660,7 @@ void WorldSession::HandleEjectPassenger(WorldPacket &data) { ASSERT(GetPlayer() == vehicle->GetBase()); unit->ExitVehicle(); - unit->ToCreature()->ForcedDespawn(1000); + unit->ToCreature()->DespawnOrUnsummon(1000); ASSERT(!unit->IsOnVehicle(vehicle->GetBase())); } else diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 5f646153fad..ffb5d162e89 100755 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -2229,7 +2229,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const player->AutoStoreLoot(creature->GetCreatureInfo()->SkinLootId,LootTemplates_Skinning,true); - creature->ForcedDespawn(); + creature->DespawnOrUnsummon(); } return; } @@ -2279,7 +2279,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const Creature* creatureTarget = target->ToCreature(); - creatureTarget->ForcedDespawn(); + creatureTarget->DespawnOrUnsummon(); return; } // Tear of Azzinoth Summon Channel - it's not really supposed to do anything,and this only prevents the console spam @@ -2375,7 +2375,7 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const if (permafrostCaster) { if (Creature *permafrostCasterAsCreature = permafrostCaster->ToCreature()) - permafrostCasterAsCreature->ForcedDespawn(3000); + permafrostCasterAsCreature->DespawnOrUnsummon(3000); caster->CastSpell(caster, 66181, false); caster->RemoveAllAuras(); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 0f90f9bdbd4..7ddb0459313 100755 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -879,7 +879,7 @@ void Spell::EffectDummy(SpellEffIndex effIndex) m_caster->SummonGameObject(179644, creatureTarget->GetPositionX(), creatureTarget->GetPositionY(), creatureTarget->GetPositionZ(), creatureTarget->GetOrientation(), 0, 0, 0, 0, uint32(creatureTarget->GetRespawnTime()-time(NULL))); sLog->outDebug("SummonGameObject at SpellEfects.cpp EffectDummy for Spell 23019"); - creatureTarget->ForcedDespawn(); + creatureTarget->DespawnOrUnsummon(); return; } @@ -1044,7 +1044,7 @@ void Spell::EffectDummy(SpellEffIndex effIndex) if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT) return; - unitTarget->ToCreature()->ForcedDespawn(); + unitTarget->ToCreature()->DespawnOrUnsummon(); //cast spell Raptor Capture Credit m_caster->CastSpell(m_caster, 42337, true, NULL); @@ -3681,7 +3681,7 @@ void Spell::EffectTameCreature(SpellEffIndex /*effIndex*/) return; // "kill" original creature - creatureTarget->ForcedDespawn(); + creatureTarget->DespawnOrUnsummon(); uint8 level = (creatureTarget->getLevel() < (m_caster->getLevel() - 5)) ? (m_caster->getLevel() - 5) : creatureTarget->getLevel(); diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp index 443766f949b..b57417f323a 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_nefarian.cpp @@ -123,7 +123,7 @@ public: if (DespawnTimer <= diff) { if (!UpdateVictim()) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); DespawnTimer = 5000; } else DespawnTimer -= diff; diff --git a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp index 4fdb9f0ad03..1c3b68afb43 100644 --- a/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp +++ b/src/server/scripts/EasternKingdoms/BlackwingLair/boss_victor_nefarius.cpp @@ -370,7 +370,7 @@ public: if (!Nefarian || !Nefarian->isAlive()) { NefarianGUID = 0; - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } NefCheckTime = 2000; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp index 46acdacf72f..97b6bdbb5f9 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/boss_terestian_illhoof.cpp @@ -287,7 +287,7 @@ public: if (Creature* pPortal = Unit::GetCreature(*me, PortalGUID[i])) { CAST_AI(mob_fiendish_portal::mob_fiendish_portalAI, pPortal->AI())->DespawnAllImp(); - pPortal->ForcedDespawn(); + pPortal->DespawnOrUnsummon(); } PortalGUID[i] = 0; @@ -351,7 +351,7 @@ public: if (PortalGUID[i]) { if (Creature* pPortal = Unit::GetCreature((*me), PortalGUID[i])) - pPortal->ForcedDespawn(); + pPortal->DespawnOrUnsummon(); PortalGUID[i] = 0; } diff --git a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp index 47eb09eb5ee..cde236b8ca7 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/bosses_opera.cpp @@ -149,7 +149,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void SummonTito(); @@ -337,7 +337,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void SpellHit(Unit* /*caster*/, const SpellEntry *Spell) @@ -440,7 +440,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void AttackStart(Unit* who) @@ -564,7 +564,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void JustDied(Unit* /*killer*/) @@ -648,7 +648,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void EnterCombat(Unit* /*who*/) @@ -784,7 +784,7 @@ public: if (Creature* pBigBadWolf = pCreature->SummonCreature(CREATURE_BIG_BAD_WOLF, 0.0f, 0.0f, 0.0f, 0.0f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR*2*IN_MILLISECONDS)) pBigBadWolf->AI()->AttackStart(pPlayer); - pCreature->ForcedDespawn(); + pCreature->DespawnOrUnsummon(); } return true; @@ -848,7 +848,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void JustDied(Unit* /*killer*/) @@ -1086,7 +1086,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void SpellHit(Unit* /*caster*/, const SpellEntry *Spell) @@ -1176,7 +1176,7 @@ public: void JustReachedHome() { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void DamageTaken(Unit* /*done_by*/, uint32 &damage) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index c42ef75cf95..9ae5cca4cc0 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -274,7 +274,7 @@ public: if (TalkCount > 3) { if (Creature* pSpotlight = Unit::GetCreature(*me, m_uiSpotlightGUID)) - pSpotlight->ForcedDespawn(); + pSpotlight->DespawnOrUnsummon(); SetEscortPaused(false); return; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index df4ebfe1639..eeef3d373a5 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -579,7 +579,7 @@ public: Phase = 3; break; case 3: - me->ForcedDespawn(); + me->DespawnOrUnsummon(); break; default: break; diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp index 2cf1dd9e736..f0efca78876 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter5.cpp @@ -1331,7 +1331,7 @@ public: break; case 73: - me->ForcedDespawn(); + me->DespawnOrUnsummon(); break; } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp index 236d7a944f0..c4c6f53e444 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp @@ -114,7 +114,7 @@ class boss_arlokk : public CreatureScript m_pInstance->SetData(TYPE_ARLOKK, NOT_STARTED); //we should be summoned, so despawn - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void JustDied(Unit* /*pKiller*/) diff --git a/src/server/scripts/EasternKingdoms/hinterlands.cpp b/src/server/scripts/EasternKingdoms/hinterlands.cpp index 62cd5990182..363e7f68e87 100644 --- a/src/server/scripts/EasternKingdoms/hinterlands.cpp +++ b/src/server/scripts/EasternKingdoms/hinterlands.cpp @@ -333,7 +333,7 @@ public: } else { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index af900d84185..08bfd7128f5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -411,9 +411,9 @@ public: case PHASE_CTHUN_DONE: Creature* pPortal= me->FindNearestCreature(MOB_CTHUN_PORTAL, 10); if (pPortal) - pPortal->ForcedDespawn(); + pPortal->DespawnOrUnsummon(); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); break; } } diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index 9d653b993a3..5acc80b3438 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -371,7 +371,7 @@ public: { pInstance->DoUseDoorOrButton(pInstance->GetData64(GO_END_DOOR)); //TODO: leave the area... - me->ForcedDespawn(); + me->DespawnOrUnsummon(); }; } } diff --git a/src/server/scripts/Kalimdor/azshara.cpp b/src/server/scripts/Kalimdor/azshara.cpp index 6498282b4a6..af47fe61a78 100644 --- a/src/server/scripts/Kalimdor/azshara.cpp +++ b/src/server/scripts/Kalimdor/azshara.cpp @@ -80,7 +80,7 @@ public: // we mustn't remove the Creature in the same round in which we cast the summon spell, otherwise there will be no summons if (spellhit && morphtimer >= 5000) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } // walk 5 seconds before summoning @@ -335,7 +335,7 @@ public: { if (Must_Die_Timer <= diff) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } else Must_Die_Timer -= diff; } @@ -396,7 +396,7 @@ public: Player* pPlayer = Unit::GetPlayer(*me, PlayerGUID); if (!pPlayer) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -445,7 +445,7 @@ public: if (id == 57) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -489,7 +489,7 @@ public: { if (must_die_timer <= diff) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } else must_die_timer -= diff; } return; diff --git a/src/server/scripts/Kalimdor/azuremyst_isle.cpp b/src/server/scripts/Kalimdor/azuremyst_isle.cpp index 15d5bab1f93..45be69b22ec 100644 --- a/src/server/scripts/Kalimdor/azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/azuremyst_isle.cpp @@ -155,7 +155,7 @@ public: if (RunAwayTimer) { if (RunAwayTimer <= diff) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else RunAwayTimer -= diff; @@ -611,7 +611,7 @@ public: if (DespawnTimer <= diff) { //once we are able to, despawn us - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } else DespawnTimer -= diff; } @@ -768,7 +768,7 @@ public: if(FleeTimer) { if(FleeTimer <= diff) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else FleeTimer -= diff; } } 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 b80a6e55227..4c67249751d 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -445,7 +445,7 @@ public: { case ACTION_SCARAB_SUBMERGE: DoCast(SPELL_SUBMERGE_EFFECT); - me->ForcedDespawn(1000); + me->DespawnOrUnsummon(1000); break; } } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp index 40d4c56aa80..2b4733a8ce8 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_faction_champions.cpp @@ -216,7 +216,7 @@ public: { m_pInstance->SetData(TYPE_CRUSADERS, FAIL); Summons.DespawnAll(); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } break; case IN_PROGRESS: @@ -238,7 +238,7 @@ public: { m_pInstance->SetData(TYPE_CRUSADERS, DONE); Summons.DespawnAll(); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } break; } @@ -277,7 +277,7 @@ struct boss_faction_championsAI : public ScriptedAI if (m_pInstance) if (Creature* pChampionController = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_CHAMPIONS_CONTROLLER))) pChampionController->AI()->SetData(2, FAIL); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } float CalculateThreat(float distance, float armor, uint32 health) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp index 7b6ec8d15dc..4cc4c82a767 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_lord_jaraxxus.cpp @@ -332,7 +332,7 @@ public: void JustDied(Unit* /*pKiller*/) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void UpdateAI(const uint32 uiDiff) @@ -340,7 +340,7 @@ public: if (m_Timer <= uiDiff) { if (m_CountMax && m_CountMax == m_Count) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else { DoCast(SPELL_INFERNAL_ERUPTION); @@ -394,7 +394,7 @@ public: return; if (m_pInstance && m_pInstance->GetData(TYPE_JARAXXUS) != IN_PROGRESS) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); if (m_uiFelStreakTimer <= uiDiff) { @@ -464,7 +464,7 @@ public: if (m_Timer <= uiDiff) { if (m_CountMax && m_CountMax == m_Count) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else { DoCast(SPELL_NETHER_PORTAL); @@ -524,7 +524,7 @@ public: return; if (m_pInstance && m_pInstance->GetData(TYPE_JARAXXUS) != IN_PROGRESS) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); if (m_uiShivanSlashTimer <= uiDiff) { diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp index 019370c4df7..5f60ae822fc 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_northrend_beasts.cpp @@ -159,7 +159,7 @@ public: { if (m_pInstance) m_pInstance->SetData(TYPE_NORTHREND_BEASTS, FAIL); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void EnterCombat(Unit* /*pWho*/) @@ -287,12 +287,7 @@ public: { case 0: // JUMP!? Fuck! THAT'S BEEZARR! Would someone PLEASE make MotionMaster->Move* work better? if (m_bTargetDied) - { - if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); - else - me->ForcedDespawn(); - } + me->DespawnOrUnsummon(); break; } } @@ -392,15 +387,8 @@ struct boss_jormungarAI : public ScriptedAI { instanceScript->SetData(TYPE_NORTHREND_BEASTS, SNAKES_DONE); - if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); - else - me->ForcedDespawn(); - - if (TempSummon* summ = otherWorm->ToTempSummon()) - summ->UnSummon(); - else - otherWorm->ForcedDespawn(); + me->DespawnOrUnsummon(); + otherWorm->DespawnOrUnsummon(); } else instanceScript->SetData(TYPE_NORTHREND_BEASTS, SNAKES_SPECIAL); @@ -413,10 +401,7 @@ struct boss_jormungarAI : public ScriptedAI if (instanceScript && instanceScript->GetData(TYPE_NORTHREND_BEASTS) != FAIL) instanceScript->SetData(TYPE_NORTHREND_BEASTS, FAIL); - if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); - else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void KilledUnit(Unit *pWho) @@ -674,7 +659,7 @@ public: { casted = false; me->SetReactState(REACT_PASSIVE); - me->ForcedDespawn(60*IN_MILLISECONDS); + me->DespawnOrUnsummon(60*IN_MILLISECONDS); } void UpdateAI(const uint32 /*uiDiff*/) @@ -775,7 +760,7 @@ public: { if (m_pInstance) m_pInstance->SetData(TYPE_NORTHREND_BEASTS, FAIL); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void KilledUnit(Unit *pWho) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index 2a81ff31632..62d18c394ab 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -169,7 +169,7 @@ struct boss_twin_baseAI : public ScriptedAI m_pInstance->SetData(TYPE_VALKIRIES, FAIL); m_pInstance->SetData(DATA_HEALTH_TWIN_SHARED, me->GetMaxHealth()); } - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void MovementInform(uint32 uiType, uint32 uiId) @@ -623,7 +623,7 @@ public: { DoCastAOE(SPELL_UNLEASHED_DARK); me->GetMotionMaster()->MoveIdle(); - me->ForcedDespawn(500); + me->DespawnOrUnsummon(500); } m_uiRangeCheckTimer = IN_MILLISECONDS; } @@ -657,7 +657,7 @@ public: { DoCastAOE(SPELL_UNLEASHED_LIGHT); me->GetMotionMaster()->MoveIdle(); - me->ForcedDespawn(500); + me->DespawnOrUnsummon(500); } m_uiRangeCheckTimer = IN_MILLISECONDS; } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp index a250cee19eb..8aa05c87c6c 100755 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.cpp @@ -325,7 +325,7 @@ class boss_lich_king_toc : public CreatureScript Creature* pTemp = Unit::GetCreature((*me), m_pInstance->GetData64(NPC_ANUBARAK)); if (!pTemp || !pTemp->isAlive()) pTemp = me->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); m_pInstance->SetData(TYPE_EVENT, 0); m_uiUpdateTimer = 20000; break; @@ -472,9 +472,9 @@ class npc_fizzlebang_toc : public CreatureScript if (Creature* pTemp = Unit::GetCreature(*me, m_pInstance->GetData64(NPC_JARAXXUS))) pTemp->SetUInt64Value(UNIT_FIELD_TARGET, me->GetGUID()); if (Creature* pTrigger = Unit::GetCreature(*me, m_uiTriggerGUID)) - pTrigger->ForcedDespawn(); + pTrigger->DespawnOrUnsummon(); if (Creature* pPortal = Unit::GetCreature(*me, m_uiPortalGUID)) - pPortal->ForcedDespawn(); + pPortal->DespawnOrUnsummon(); m_pInstance->SetData(TYPE_EVENT, 1144); m_uiUpdateTimer = 10000; break; @@ -806,7 +806,7 @@ class npc_tirion_toc : public CreatureScript } else m_pInstance->SetData(TYPE_EVENT, 6030); break; case 6020: - me->ForcedDespawn(); + me->DespawnOrUnsummon(); m_uiUpdateTimer = 5000; m_pInstance->SetData(TYPE_EVENT, 6030); break; diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index 24831c97e9d..59663e812d1 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -379,7 +379,7 @@ class boss_krick : public CreatureScript case EVENT_OUTRO_1: { if (Creature* temp = me->GetCreature(*me, _instanceScript->GetData64(DATA_JAINA_SYLVANAS_1))) - temp->ForcedDespawn(); + temp->DespawnOrUnsummon(); Creature* jainaOrSylvanas = NULL; if (_instanceScript->GetData(DATA_TEAM_IN_INSTANCE) == TEAM_ALLIANCE) @@ -599,7 +599,7 @@ class spell_exploding_orb_hasty_grow : public SpellScriptLoader GetTarget()->RemoveAurasDueToSpell(SPELL_AUTO_GROW); GetTarget()->RemoveAurasDueToSpell(SPELL_EXPLODING_ORB); if (Creature* creature = GetTarget()->ToCreature()) - creature->ForcedDespawn(1000); + creature->DespawnOrUnsummon(1000); } } diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index fd2c5dff9d5..d61300adc92 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -166,7 +166,7 @@ class boss_tyrannus : public CreatureScript if (Creature* rimefang = GetRimefang()) rimefang->AI()->EnterEvadeMode(); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void KilledUnit(Unit * victim) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index 3c45bc1e7a9..edde915b73c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -1373,12 +1373,7 @@ class spell_taldaram_flame_ball_visual : public SpellScriptLoader target->AI()->DoAction(ACTION_FLAME_BALL_CHASE); } else // SPELL_FLAME_SPHERE_DEATH_EFFECT - { - if (TempSummon* summ = target->ToTempSummon()) - summ->UnSummon(); - else - target->ForcedDespawn(); - } + target->DespawnOrUnsummon(); } void Register() diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 5ed62438429..6f312c3e99b 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -643,8 +643,8 @@ class npc_high_overlord_saurfang_icc : public CreatureScript else if (id == POINT_FINAL) { if (Creature* deathbringer = ObjectAccessor::GetCreature(*me, deathbringerSaurfangGUID)) - deathbringer->ForcedDespawn(); - me->ForcedDespawn(); + deathbringer->DespawnOrUnsummon(); + me->DespawnOrUnsummon(); } } @@ -908,7 +908,7 @@ class npc_saurfang_event : public CreatureScript if (action == ACTION_CHARGE && uiNPCindex) me->GetMotionMaster()->MoveCharge(chargePos[uiNPCindex].GetPositionX(), chargePos[uiNPCindex].GetPositionY(), chargePos[uiNPCindex].GetPositionZ(), 13.0f, POINT_CHARGE); else if (action == ACTION_DESPAWN) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } private: diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 6cf12245382..72e514bbe29 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -291,10 +291,7 @@ class npc_coldflame : public CreatureScript target = creOwner->AI()->SelectTarget(SELECT_TARGET_RANDOM, 0, 40.0f, true); // or the tank if its solo if (!target) { - if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); - else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -363,17 +360,15 @@ class npc_bone_spike : public CreatureScript void JustDied(Unit* /*killer*/) { if (TempSummon* summ = me->ToTempSummon()) - { if (Unit* trapped = summ->GetSummoner()) trapped->RemoveAurasDueToSpell(SPELL_IMPALED); - summ->UnSummon(); - } + + me->DespawnOrUnsummon(); } void KilledUnit(Unit* victim) { - if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); + me->DespawnOrUnsummon(); victim->RemoveAurasDueToSpell(SPELL_IMPALED); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index d5a3647fc05..17c326cf891 100755 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -717,10 +717,8 @@ class npc_volatile_ooze : public CreatureScript AttackStart(target); me->CastCustomSpell(SPELL_VOLATILE_OOZE_ADHESIVE, SPELLVALUE_MAX_TARGETS, 1, target, false); } - else if (TempSummon* summ = me->ToTempSummon()) - summ->UnSummon(); else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } else newTargetSelectTimer -= diff; @@ -815,10 +813,8 @@ class spell_putricide_expunged_gas : public SpellScriptLoader for (uint8 i = 1; i < stack; ++i) dmg += mod * stack; } - else if (TempSummon* summ = GetCaster()->ToTempSummon()) - summ->UnSummon(); else - GetCaster()->ToCreature()->ForcedDespawn(); + GetCaster()->ToCreature()->DespawnOrUnsummon(); SetHitDamage(dmg); } @@ -1091,10 +1087,7 @@ class spell_putricide_eat_ooze : public SpellScriptLoader { target->RemoveAurasDueToSpell(SPELL_GROW_STACKER); target->RemoveAura(grow); - if (TempSummon* summ = target->ToTempSummon()) - summ->UnSummon(); - else - target->ForcedDespawn(); + target->DespawnOrUnsummon(); } else grow->ModStackAmount(-4); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 5498d715088..f71f7ce1b5c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -270,13 +270,10 @@ class npc_little_ooze : public CreatureScript void JustDied(Unit* /*killer*/) { - if (TempSummon* summ = me->ToTempSummon()) - { - summ->UnSummon(); - if (InstanceScript* instance = me->GetInstanceScript()) - if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) - rotface->AI()->SummonedCreatureDespawn(me); - } + me->DespawnOrUnsummon(); + if (InstanceScript* instance = me->GetInstanceScript()) + if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) + rotface->AI()->SummonedCreatureDespawn(me); } void UpdateAI(const uint32 diff) @@ -332,13 +329,10 @@ class npc_big_ooze : public CreatureScript void JustDied(Unit* /*killer*/) { - if (TempSummon* summ = me->ToTempSummon()) - { - summ->UnSummon(); - if (InstanceScript* instance = me->GetInstanceScript()) - if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) - rotface->AI()->SummonedCreatureDespawn(me); - } + me->DespawnOrUnsummon(); + if (InstanceScript* instance = me->GetInstanceScript()) + if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) + rotface->AI()->SummonedCreatureDespawn(me); } void DoAction(const int32 action) @@ -501,16 +495,13 @@ class spell_rotface_little_ooze_combine : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - if (!(GetHitUnit() && GetHitUnit()->isAlive())) + if (!(GetHitCreature() && GetHitUnit()->isAlive())) return; GetCaster()->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE); - GetHitUnit()->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE); - GetHitUnit()->CastSpell(GetCaster(), SPELL_OOZE_MERGE, true); - if (TempSummon* summ = GetHitUnit()->ToTempSummon()) - summ->UnSummon(); - else - GetHitCreature()->ForcedDespawn(); + GetHitCreature()->RemoveAurasDueToSpell(SPELL_LITTLE_OOZE_COMBINE); + GetHitCreature()->CastSpell(GetCaster(), SPELL_OOZE_MERGE, true); + GetHitCreature()->DespawnOrUnsummon(); } void Register() @@ -536,12 +527,12 @@ class spell_rotface_large_ooze_combine : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - if (!(GetHitUnit() && GetHitUnit()->isAlive())) + if (!(GetHitCreature() && GetHitCreature()->isAlive())) return; if (Aura* unstable = GetCaster()->GetAura(SPELL_UNSTABLE_OOZE)) { - if (Aura* targetAura = GetHitUnit()->GetAura(SPELL_UNSTABLE_OOZE)) + if (Aura* targetAura = GetHitCreature()->GetAura(SPELL_UNSTABLE_OOZE)) unstable->ModStackAmount(targetAura->GetStackAmount()); else unstable->ModStackAmount(1); @@ -550,13 +541,9 @@ class spell_rotface_large_ooze_combine : public SpellScriptLoader } // just for safety - GetHitUnit()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE); - GetHitUnit()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE); - - if (TempSummon* summ = GetHitUnit()->ToTempSummon()) - summ->UnSummon(); - else if (GetHitCreature()) - GetHitCreature()->ForcedDespawn(); + GetHitCreature()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_BUFF_COMBINE); + GetHitCreature()->RemoveAurasDueToSpell(SPELL_LARGE_OOZE_COMBINE); + GetHitCreature()->DespawnOrUnsummon(); } void Register() @@ -582,7 +569,7 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader void HandleScript(SpellEffIndex /*effIndex*/) { - if (!(GetHitUnit() && GetHitUnit()->isAlive())) + if (!(GetHitCreature() && GetHitCreature()->isAlive())) return; if (Aura* unstable = GetCaster()->GetAura(SPELL_UNSTABLE_OOZE)) @@ -611,10 +598,7 @@ class spell_rotface_large_ooze_buff_combine : public SpellScriptLoader } } - if (TempSummon* summ = GetHitUnit()->ToTempSummon()) - summ->UnSummon(); - else if (GetHitCreature()) - GetHitCreature()->ForcedDespawn(); + GetHitCreature()->DespawnOrUnsummon(); } void Register() diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp index 2eda1a7d857..c8702ca3d90 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_ionar.cpp @@ -180,7 +180,7 @@ public: pSpark->GetMotionMaster()->MovePoint(DATA_POINT_CALLBACK, pos); } else - pSpark->ForcedDespawn(); + pSpark->DespawnOrUnsummon(); } } } @@ -331,7 +331,7 @@ public: return; if (uiPointId == DATA_POINT_CALLBACK) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void DamageTaken(Unit * /*pDoneBy*/, uint32 &uiDamage) @@ -344,7 +344,7 @@ public: // Despawn if the encounter is not running if (pInstance && pInstance->GetData(TYPE_IONAR) != IN_PROGRESS) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } @@ -367,7 +367,7 @@ public: } } else - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } uiCheckTimer = 2*IN_MILLISECONDS; } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp index 693c40b618f..b2772393a2a 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_volkhan.cpp @@ -185,7 +185,7 @@ public: if (Creature* pTemp = Unit::GetCreature(*me, *itr)) { if (pTemp->isAlive()) - pTemp->ForcedDespawn(); + pTemp->DespawnOrUnsummon(); } } @@ -432,7 +432,7 @@ public: // This is the dummy effect of the spells if (pSpell->Id == SPELL_SHATTER_N || pSpell->Id == SPELL_SHATTER_H) if (me->GetEntry() == NPC_BRITTLE_GOLEM) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } void UpdateAI(const uint32 uiDiff) diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp index fe7061f024b..885462ea8d8 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp @@ -343,7 +343,7 @@ public: { Creature* pTemp = Unit::GetCreature(*me, pInstance ? (*itr) : 0); if (pTemp && pTemp->isAlive()) - pTemp->ForcedDespawn(); + pTemp->DespawnOrUnsummon(); } lDwarfGUIDList.clear(); } diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_algalon.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_algalon.cpp index caee75d546d..7479d4d3a98 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_algalon.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_algalon.cpp @@ -167,7 +167,7 @@ public: if (Creature* pTemp = Unit::GetCreature(*me, *itr)) { if (pTemp->isAlive()) - pTemp->ForcedDespawn(); + pTemp->DespawnOrUnsummon(); } } m_lCollapsingStarGUIDList.clear(); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_assembly_of_iron.cpp index 7075c35809a..a8af8e4ed41 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_assembly_of_iron.cpp @@ -511,7 +511,7 @@ public: me->setFaction(16); // Same faction as bosses DoCast(SPELL_RUNE_OF_POWER); - me->ForcedDespawn(60000); + me->DespawnOrUnsummon(60000); } }; }; @@ -572,7 +572,7 @@ public: { me->CastSpell(me, SPELL_RUNE_OF_SUMMONING_SUMMON, false); if (++summonCount == 10) // TODO: Find out if this amount is right - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else summonTimer = 2000; // TODO: Find out of timer is right } diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp index 36435a20670..838413d9c9f 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_general_vezax.cpp @@ -400,7 +400,7 @@ public: me->SetHealth(me->GetMaxHealth()); me->RemoveAllAuras(); DoCast(me, SPELL_SARONITE_VAPORS); - me->ForcedDespawn(30000); + me->DespawnOrUnsummon(30000); if (Creature * pVezax = me->GetCreature(*me, pInstance ? pInstance->GetData64(TYPE_VEZAX) : 0)) pVezax->AI()->DoAction(ACTION_VAPORS_DIE); diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp index 4c2a1257501..1960ff2e4fa 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_ignis.cpp @@ -330,7 +330,7 @@ public: if (pIgnis->AI()) pIgnis->AI()->DoAction(ACTION_REMOVE_BUFF); - me->ForcedDespawn(1000); + me->DespawnOrUnsummon(1000); } } diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_xt002.cpp index 2ea6cdfe7b8..a6b9f228620 100644 --- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_xt002.cpp @@ -616,7 +616,7 @@ public: pXT002->ModifyHealth(int32(pXT002->CountPctFromMaxHealth(1))); // Despawns the scrapbot - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } } } @@ -739,7 +739,7 @@ public: DoCast(me, SPELL_BOOM); //Despawns the boombot - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } } } diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 1b52f682043..5dc022edf30 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -263,7 +263,7 @@ public: break; case CREATURE_TRIGGER: pSummoned->CastSpell((Unit*)NULL, SPELL_FREEZING_CLOUD, true); - pSummoned->ForcedDespawn(10*IN_MILLISECONDS); + pSummoned->DespawnOrUnsummon(10*IN_MILLISECONDS); break; } Summons.Summon(pSummoned); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp index 05eb0aaba04..c1970aaadb4 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_svala.cpp @@ -193,7 +193,7 @@ public: { me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE); me->SetDisplayId(DATA_SVALA_DISPLAY_ID); - pArthas->ToTempSummon()->UnSummon(); + pArthas->DespawnOrUnsummon(); uiArthasGUID = 0; Phase = FINISHED; } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp index 14cb69592a6..e06c4018f0f 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_emalon.cpp @@ -243,7 +243,7 @@ class mob_tempest_minion : public CreatureScript if (overchargedAura->GetStackAmount() == 10) { DoCast(me, SPELL_OVERCHARGED_BLAST); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); DoScriptText(EMOTE_MINION_RESPAWN, me); } } diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp index fe1c48cae73..6213a1cd82c 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_toravon.cpp @@ -207,7 +207,7 @@ public: if (killTimer <= diff) { if (!UpdateVictim()) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); killTimer = 10000; } else diff --git a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp index b6f7c137329..6387cfc8727 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_cyanigosa.cpp @@ -95,7 +95,7 @@ public: { if (pInstance && pInstance->GetData(DATA_REMOVE_NPC) == 1) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); pInstance->SetData(DATA_REMOVE_NPC, 0); } diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index 09f555950a5..7b8d72194bd 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -376,7 +376,7 @@ public: { if (pIchoron->AI()) pIchoron->AI()->DoAction(ACTION_WATER_ELEMENT_HIT); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } } } diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index bdf073e5911..012d67f1846 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -586,7 +586,7 @@ public: if (pInstance->GetData(DATA_REMOVE_NPC) == 1) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); pInstance->SetData(DATA_REMOVE_NPC, 0); } diff --git a/src/server/scripts/Northrend/borean_tundra.cpp b/src/server/scripts/Northrend/borean_tundra.cpp index 07a348326a0..1f10da283ae 100644 --- a/src/server/scripts/Northrend/borean_tundra.cpp +++ b/src/server/scripts/Northrend/borean_tundra.cpp @@ -775,7 +775,7 @@ public: break; case 7: - me->ForcedDespawn(); + me->DespawnOrUnsummon(); IntroPhase = 0; IntroTimer = 0; break; diff --git a/src/server/scripts/Northrend/grizzly_hills.cpp b/src/server/scripts/Northrend/grizzly_hills.cpp index c030c6058da..67e0ad5d776 100644 --- a/src/server/scripts/Northrend/grizzly_hills.cpp +++ b/src/server/scripts/Northrend/grizzly_hills.cpp @@ -591,7 +591,7 @@ public: void MovementInform(uint32, uint32 id) { if (id == 1) - me->ForcedDespawn(DespawnTimer); + me->DespawnOrUnsummon(DespawnTimer); } void SpellHit(Unit *caster, const SpellEntry *spell) @@ -606,7 +606,7 @@ public: else { me->SetStandState(UNIT_STAND_STATE_STAND); - me->ForcedDespawn(DespawnTimer); + me->DespawnOrUnsummon(DespawnTimer); } } diff --git a/src/server/scripts/Northrend/howling_fjord.cpp b/src/server/scripts/Northrend/howling_fjord.cpp index 57c46659336..1729f5f55d5 100644 --- a/src/server/scripts/Northrend/howling_fjord.cpp +++ b/src/server/scripts/Northrend/howling_fjord.cpp @@ -111,7 +111,7 @@ public: case 23: if (pPlayer) pPlayer->GroupEventHappens(QUEST_TRAIL_OF_FIRE, me); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); break; case 5: if (Unit* Trigger = me->FindNearestCreature(NPC_HANES_FIRE_TRIGGER,10.0f)) @@ -205,7 +205,7 @@ public: switch(i) { case 26: - me->ForcedDespawn(); + me->DespawnOrUnsummon(); break; } } diff --git a/src/server/scripts/Northrend/icecrown.cpp b/src/server/scripts/Northrend/icecrown.cpp index a5226e7cfd7..808717ab6c9 100644 --- a/src/server/scripts/Northrend/icecrown.cpp +++ b/src/server/scripts/Northrend/icecrown.cpp @@ -242,7 +242,7 @@ public: uiDamage = 0; CAST_PLR(pDoneBy)->KilledMonsterCredit(NPC_ARGENT_VALIANT_CREDIT,0); me->setFaction(35); - me->ForcedDespawn(5000); + me->DespawnOrUnsummon(5000); me->SetHomePosition(me->GetPositionX(),me->GetPositionY(),me->GetPositionZ(),me->GetOrientation()); EnterEvadeMode(); } diff --git a/src/server/scripts/Northrend/sholazar_basin.cpp b/src/server/scripts/Northrend/sholazar_basin.cpp index 929647ec130..d18a00c7644 100644 --- a/src/server/scripts/Northrend/sholazar_basin.cpp +++ b/src/server/scripts/Northrend/sholazar_basin.cpp @@ -514,7 +514,7 @@ public: if (spellId) pPlayer->CastSpell(pPlayer, spellId, true); DoScriptText(SAY_DWARF_HELP, pCreature); - pCreature->ForcedDespawn(); + pCreature->DespawnOrUnsummon(); return true; } }; diff --git a/src/server/scripts/Northrend/zuldrak.cpp b/src/server/scripts/Northrend/zuldrak.cpp index 7b2eb80e91d..f7bb2464817 100644 --- a/src/server/scripts/Northrend/zuldrak.cpp +++ b/src/server/scripts/Northrend/zuldrak.cpp @@ -1153,10 +1153,8 @@ public: { if (!SummonList.empty()) for (std::list<uint64>::const_iterator itr = SummonList.begin(); itr != SummonList.end(); ++itr) - { if (Creature* pTemp = Unit::GetCreature(*me, *itr)) - pTemp->ForcedDespawn(); - } + pTemp->DespawnOrUnsummon(); if (Player* pPlayer = pKiller->GetCharmerOrOwnerPlayerOrPlayerItself()) pPlayer->GetCharmerOrOwnerPlayerOrPlayerItself()->GroupEventHappens(QUEST_AMPHITHEATER_ANGUISH_FROM_BEYOND, pKiller); diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 2d43628841a..e67cec43b0e 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -300,7 +300,7 @@ public: me->InterruptNonMeleeSpells(true); DoCast(me, SPELL_ETHEREAL_APPRENTICE, true); - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } else Apprentice_Timer -= diff; } diff --git a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp index e1bb175be62..30889ff69ad 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_reliquary_of_souls.cpp @@ -168,7 +168,7 @@ public: { if (Creature* Essence = Unit::GetCreature(*me, EssenceGUID)) { - Essence->ForcedDespawn(); + Essence->DespawnOrUnsummon(); } EssenceGUID = 0; } @@ -324,7 +324,7 @@ public: { DoScriptText(DESI_SAY_AFTER, Essence); } - Essence->ForcedDespawn(); + Essence->DespawnOrUnsummon(); me->SetUInt32Value(UNIT_NPC_EMOTESTATE,0); EssenceGUID = 0; SoulCount = 0; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 0ed1e6718d4..bb2f006c366 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -338,7 +338,7 @@ public: Creature* pCreature = Unit::GetCreature((*me), InnderDemon[i]); if (pCreature && pCreature->isAlive()) { - pCreature->ForcedDespawn(); + pCreature->DespawnOrUnsummon(); } InnderDemon[i] = 0; } @@ -390,7 +390,7 @@ public: if (Demon) { if (Creature* pDemon = Unit::GetCreature(*me, Demon)) - pDemon->ForcedDespawn(); + pDemon->DespawnOrUnsummon(); } if (pInstance) pInstance->SetData(DATA_LEOTHERASTHEBLINDEVENT, DONE); diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp index 9f5c80eaf9a..b89fa7af86b 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_morogrim_tidewalker.cpp @@ -337,7 +337,7 @@ public: DoCast(me->getVictim(), SPELL_GLOBULE_EXPLOSION); //despawn - me->ForcedDespawn(); + me->DespawnOrUnsummon(); return; } Check_Timer = 500; diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp index 03376be7056..fb2ef71c576 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/boss_magtheridon.cpp @@ -180,7 +180,7 @@ class mob_abyssal : public CreatureScript if (Despawn_Timer <= diff) { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } else Despawn_Timer -= diff; diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 303eb9fa123..a9fa3a4928e 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -49,7 +49,7 @@ public: pCreatureTarget->AI()->AttackStart(GetCaster()); if (_despawnTime) - pCreatureTarget->ForcedDespawn(_despawnTime); + pCreatureTarget->DespawnOrUnsummon(_despawnTime); } } @@ -166,7 +166,7 @@ public: if (uiNewEntry) { pCreatureTarget->UpdateEntry(uiNewEntry); - pCreatureTarget->ForcedDespawn(DESPAWN_TIME); + pCreatureTarget->DespawnOrUnsummon(DESPAWN_TIME); } } } @@ -460,7 +460,7 @@ public: } pCaster->CastSpell(pCaster, spellId, true, castItem); pCaster->CastSpell(pCaster, SPELL_ROBOT_KILL_CREDIT, true); - pTarget->ForcedDespawn(); + pTarget->DespawnOrUnsummon(); } void Register() @@ -652,7 +652,7 @@ public: { pPlayer->CastSpell(pPlayer, SPELL_TRIGGER_AID_OF_THE_EARTHEN, true, NULL); pPlayer->KilledMonsterCredit(NPC_FALLEN_EARTHEN_DEFENDER, 0); - pTarget->ForcedDespawn(); + pTarget->DespawnOrUnsummon(); } } } diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 87ce6d43751..e9b5e36d8bf 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1965,7 +1965,7 @@ public: despawnTimer -= diff; else { - me->ForcedDespawn(); + me->DespawnOrUnsummon(); } return; } @@ -2073,7 +2073,7 @@ public: else { if (uiDespawnTimer <= uiDiff) - me->ForcedDespawn(); + me->DespawnOrUnsummon(); else uiDespawnTimer -= uiDiff; } |