diff options
| -rw-r--r-- | src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp | 8 | ||||
| -rw-r--r-- | src/game/InstanceData.cpp | 36 | ||||
| -rw-r--r-- | src/game/InstanceData.h | 11 | 
3 files changed, 53 insertions, 2 deletions
diff --git a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp index 8a5b3541680..ea2929c6a7d 100644 --- a/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp +++ b/src/bindings/scripts/scripts/northrend/azjol_nerub/ahnkahet/boss_amanitar.cpp @@ -63,6 +63,8 @@ struct MANGOS_DLL_DECL boss_amanitarAI : public ScriptedAI          bolttimer,          spawntimer; +    bool FirstTime; +      void Reset()      {          roottimer = urand(5000,9000); @@ -73,11 +75,13 @@ struct MANGOS_DLL_DECL boss_amanitarAI : public ScriptedAI          m_creature->SetMeleeDamageSchool(SPELL_SCHOOL_NATURE);          m_creature->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true); -        if (pInstance && !FirstTime) pInstance->SetData(DATA_AMANITAR, FAIL); +        if (pInstance && !FirstTime) +            pInstance->SetData(DATA_AMANITAR, FAIL);          FirstTime = false; -        if (pInstance) pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MINI); +        if (pInstance) +            pInstance->DoRemoveAurasDueToSpellOnPlayers(SPELL_MINI);      }      void JustDied(Unit *Killer) diff --git a/src/game/InstanceData.cpp b/src/game/InstanceData.cpp index 567c06ac5ec..1398038d724 100644 --- a/src/game/InstanceData.cpp +++ b/src/game/InstanceData.cpp @@ -296,3 +296,39 @@ void InstanceData::DoUpdateWorldState(uint32 uiStateId, uint32 uiStateData)      else          debug_log("TSCR: DoUpdateWorldState attempt send data but no players in map.");  } + +/* Not used anywhere yet, not sure if they're needed: +// Send Notify to all players in instance +void InstanceData::DoSendNotifyToInstance(const char *format, ...) +{ +    InstanceMap::PlayerList const &PlayerList = instance->GetPlayers(); +    InstanceMap::PlayerList::const_iterator i; + +    if (!PlayerList.isEmpty()) +        for (i = PlayerList.begin(); i != PlayerList.end(); ++i) +            if ((*i).getSource() && (*i).getSource()->GetSession()) +                (*i).getSource()->GetSession()->SendNotification(format); +} + +// Complete Achievement for all players in instance +void InstanceData::DoCompleteAchievement(uint32 achievement) +{ +    AchievementEntry const* AE = GetAchievementStore()->LookupEntry(achievement); +    Map::PlayerList const &PlayerList = instance->GetPlayers(); + +    if (!PlayerList.isEmpty()) +        for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) +            if (i->getSource()) +                i->getSource()->CompletedAchievement(AE); +} +*/ + +// Remove Auras due to Spell on all players in instance +void InstanceData::DoRemoveAurasDueToSpellOnPlayers(uint32 spell) +{ +    Map::PlayerList const &PlayerList = instance->GetPlayers(); + +    if (!PlayerList.isEmpty()) +        for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i) +            if (i->getSource() && i->getSource()->HasAura(spell)) i->getSource()->RemoveAurasDueToSpell(spell); +} diff --git a/src/game/InstanceData.h b/src/game/InstanceData.h index 90be75fa5da..010a3d44d42 100644 --- a/src/game/InstanceData.h +++ b/src/game/InstanceData.h @@ -152,6 +152,17 @@ class TRINITY_DLL_SPEC InstanceData : public ZoneScript          //sends world state update to all players in instance          void DoUpdateWorldState(uint32 uiStateId, uint32 uiStateData); +        /* Not used anywhere yet, not sure if they're needed: +        // Send Notify to all players in instance +        void DoSendNotifyToInstance(const char *format,...); + +        // Complete Achievement for all players in instance +        void DoCompleteAchievement(uint32 achievement); +        */ + +        // Remove Auras due to Spell on all players in instance +        void DoRemoveAurasDueToSpellOnPlayers(uint32 spell); +          virtual bool SetBossState(uint32 id, EncounterState state);          EncounterState GetBossState(uint32 id) const { return id < bosses.size() ? bosses[id].state : TO_BE_DECIDED; }          const BossBoundaryMap * GetBossBoundary(uint32 id) const { return id < bosses.size() ? &bosses[id].boundary : NULL; }  | 
