diff options
author | _manuel_ <manue.l@live.com.ar> | 2010-03-01 21:39:07 -0300 |
---|---|---|
committer | _manuel_ <manue.l@live.com.ar> | 2010-03-01 21:39:07 -0300 |
commit | 22d7ceaabb13d86d30986fe37808c38b98a74ff6 (patch) | |
tree | 0a0af05bbaf01c9d7ebd26b5ef3fb05a1f8d027c /src | |
parent | 57f1b2524a93e18987c0a0f29e3bd97b6970e5a8 (diff) |
Implemented script for npcs 32369,32371,32372. By Malcrom.
For a full fix apply http://trinitydatabase.org/index.php?/topic/14699-fix-transitus-shield-invisible-bunny-positions-violet-stand/
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/ScriptLoader.cpp | 2 | ||||
-rw-r--r-- | src/scripts/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/scripts/northrend/crystalsong_forest.cpp | 114 |
3 files changed, 117 insertions, 0 deletions
diff --git a/src/game/ScriptLoader.cpp b/src/game/ScriptLoader.cpp index ce2df8c2f5a..cd28fd10c27 100644 --- a/src/game/ScriptLoader.cpp +++ b/src/game/ScriptLoader.cpp @@ -385,6 +385,7 @@ void AddSC_icecrown(); void AddSC_sholazar_basin(); void AddSC_storm_peaks(); void AddSC_zuldrak(); +void AddSC_crystalsong_forest(); //outland void AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts @@ -851,6 +852,7 @@ void AddScripts() AddSC_sholazar_basin(); AddSC_storm_peaks(); AddSC_zuldrak(); + AddSC_crystalsong_forest(); //outland AddSC_boss_exarch_maladaar(); //Auchindoun Auchenai Crypts diff --git a/src/scripts/CMakeLists.txt b/src/scripts/CMakeLists.txt index e7e3cfe9b5f..9d118443962 100644 --- a/src/scripts/CMakeLists.txt +++ b/src/scripts/CMakeLists.txt @@ -444,6 +444,7 @@ SET(scripts_STAT_SRCS northrend/sholazar_basin.cpp northrend/storm_peaks.cpp northrend/zuldrak.cpp + northrend/crystalsong_forest.cpp outland/auchindoun/auchenai_crypts/boss_exarch_maladaar.cpp outland/auchindoun/auchenai_crypts/boss_shirrak_the_dead_watcher.cpp outland/auchindoun/mana_tombs/boss_nexusprince_shaffar.cpp diff --git a/src/scripts/northrend/crystalsong_forest.cpp b/src/scripts/northrend/crystalsong_forest.cpp new file mode 100644 index 00000000000..00a70003b54 --- /dev/null +++ b/src/scripts/northrend/crystalsong_forest.cpp @@ -0,0 +1,114 @@ +/* + * Copyright (C) 2010 Trinity <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* Script Data Start +SDName: CrystalSongForest +SDAuthor: Malcrom +SD%Complete: 99% +SDComment: +SDCategory: CrystalsongForest +Script Data End */ + +#include "ScriptedPch.h" + +/******************************************************* + * npc_warmage_violetstand + *******************************************************/ + +enum Spells +{ + SPELL_TRANSITUS_SHIELD_BEAM = 48310 +}; + +enum NPCs +{ + NPC_TRANSITUS_SHIELD_DUMMY = 27306, + NPC_WARMAGE_SARINA = 32369, + NPC_WARMAGE_HALISTER = 32371, + NPC_WARMAGE_ILSUDRIA = 32372 +}; + +struct npc_warmage_violetstandAI : public Scripted_NoMovementAI +{ + npc_warmage_violetstandAI(Creature* pCreature) : Scripted_NoMovementAI(pCreature){} + + uint32 m_uiTimer; //Timer until recast + std::list<Creature *> orbList; + + void Reset() + { + m_uiTimer = 0; + } + + void Aggro(Unit* pWho){} + + void AttackStart(Unit* pWho){} + + void UpdateAI(const uint32 uiDiff) + { + if (m_uiTimer <= uiDiff) + { + m_creature->CastStop(); + Creature* pTarget = GetClosestCreatureWithEntry(me,NPC_TRANSITUS_SHIELD_DUMMY,32.0f); + + switch(me->GetEntry()) + { + case NPC_WARMAGE_SARINA: + GetCreatureListWithEntryInGrid(orbList, m_creature, NPC_TRANSITUS_SHIELD_DUMMY, 32.0f); + if (!orbList.empty()) + { + for (std::list<Creature*>::iterator itr = orbList.begin(); itr != orbList.end(); ++itr) + { + if (Creature* pOrb = *itr) + if (pOrb->GetPositionY() < 1000) + DoCast(pOrb,SPELL_TRANSITUS_SHIELD_BEAM); + } + } + m_uiTimer = 90000; + break; + case NPC_WARMAGE_HALISTER: + case NPC_WARMAGE_ILSUDRIA: + if (pTarget) + DoCast(pTarget,SPELL_TRANSITUS_SHIELD_BEAM); + m_uiTimer = 90000; + break; + } + } + else m_uiTimer -= uiDiff; + + ScriptedAI::UpdateAI(uiDiff); + + if (!UpdateVictim()) + return; + } +}; + +CreatureAI* GetAI_npc_warmage_violetstand(Creature* pCreature) +{ + return new npc_warmage_violetstandAI(pCreature); +} + +void AddSC_crystalsong_forest() +{ + Script *newscript; + + newscript = new Script; + newscript->Name = "npc_warmage_violetstand"; + newscript->GetAI = &GetAI_npc_warmage_violetstand; + newscript->RegisterSelf(); +}
\ No newline at end of file |