Dinoza

Эвента с пауками

Nov 9th, 2012
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 22.35 KB | None | 0 0
  1. diff --git a/sql/updates/SliceCore/world.sql b/sql/updates/SliceCore/world.sql
  2. index 9de7bf9..2e69ef3 100644
  3. --- a/sql/updates/SliceCore/world.sql
  4. +++ b/sql/updates/SliceCore/world.sql
  5. @@ -41,3 +41,38 @@ INSERT INTO `trinity_string`(`entry`,`content_default`, `content_loc8`) VALUES
  6.  (11009, 'You can\`t do this at the moment.', 'Вы не можете сделать это сейчас.'),
  7.  (11007,'You are not VIP.', 'Вы не владеете правами VIP аккаунта.'),
  8.  (11008,'You are not VIP.', 'Вам недоступна эта VIP команда.');
  9. +
  10. +-- Эфент перед Синдрагосой в ЦЛК
  11. +
  12. +UPDATE `creature_template` SET `modelid1` = 25455, `modelid2` = 0, `unit_flags` = 33555202, `flags_extra` = 129, `ScriptName` = 'npc_sindragosas_ward' WHERE `entry` = 37503;
  13. +DELETE FROM `creature` WHERE `id` = 37503;
  14. +INSERT INTO `creature` (id, map, spawnMask, phaseMask, modelid, equipment_id, position_x, position_y, position_z, orientation, spawntimesecs, spawndist, currentwaypoint, curhealth, curmana, MovementType, npcflag, unit_flags, dynamicflags) VALUES
  15. +(37503, 631, 15, 1, 0, 0, 4181.54, 2551.65, 211.033, 4.72777, 604800, 0, 0, 27890000, 8516000, 0, 0, 0, 0);
  16. +UPDATE `gameobject` SET `state` = 0 WHERE `id` = 201373;
  17. +DELETE FROM `areatrigger_scripts` WHERE `entry` = 5623;
  18. +INSERT INTO `areatrigger_scripts` (entry, ScriptName) VALUES
  19. +(5623, 'at_icc_start_sindragosa_gauntlet');
  20. +UPDATE `creature_template` SET `minlevel` = 80, `maxlevel` = 80, `exp` = 2, `faction_A` = 21, `faction_H` = 21, `mechanic_immune_mask` = 8388624 WHERE `entry` IN (37228, 37229, 37232, 37501, 37502, 38197, 38198, 38362, 38134, 38137);
  21. +UPDATE `creature_template` SET `mindmg` = 422, `maxdmg` = 586, `attackpower` = 642, `dmg_multiplier` = 7.5, `minrangedmg` = 345, `maxrangedmg` = 509, `rangedattackpower` = 103 WHERE `entry` IN (37228, 37229);
  22. +UPDATE `creature_template` SET `mindmg` = 422, `maxdmg` = 586, `attackpower` = 642, `dmg_multiplier` = 13, `lootid` = 100002, `minrangedmg` = 345, `maxrangedmg` = 509, `rangedattackpower` = 103 WHERE `entry` IN (38134, 38137);
  23. +UPDATE `creature_template` SET `dmg_multiplier` = 2 WHERE `entry` = 38362;
  24. +UPDATE `creature_template` SET `difficulty_entry_1` = 38134 WHERE `entry` = 37228;
  25. +UPDATE `creature_template` SET `difficulty_entry_1` = 38137 WHERE `entry` = 37229;
  26. +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (37228, 37229, 37501, 37502);
  27. +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (37228, 37229, 37501, 37502) AND `source_type` = 0;
  28. +INSERT INTO `smart_scripts` (entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o, comment) VALUES
  29. +-- Frostwarden Warrior: 37228 / 38134
  30. +(37228, 0, 0, 0, 0, 0, 100, 30, 5000, 15000, 10000, 25000, 11, 71323, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Warrior - Cast Frostblade'),
  31. +(37228, 0, 1, 0, 6, 0, 100, 30, 0, 0, 0, 0, 11, 71203, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Warrior - Cast Soul Feast On Death'),
  32. +-- Frostwarden Sorceress: 37229 / 38137
  33. +(37229, 0, 0, 0, 0, 0, 100, 20, 15000, 20000, 20000, 25000, 11, 71331, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Sorceress - Cast Ice Tomb (25 man only)'),
  34. +(37229, 0, 1, 0, 0, 0, 100, 30, 10000, 15000, 10000, 20000, 11, 71320, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Sorceress - Cast Frost Nova'),
  35. +(37229, 0, 2, 0, 0, 0, 100, 30, 3000, 5000, 3000, 4000, 11, 71318, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Sorceress - Cast Frostbolt'),
  36. +(37229, 0, 3, 0, 6, 0, 100, 30, 0, 0, 0, 0, 11, 71203, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Frostwarden Sorceress - Cast Soul Feast On Death'),
  37. +-- Nerub'ar Champion: 37501 / 38197
  38. +(37501, 0, 0, 0, 0, 0, 100, 30, 3000, 5000, 10000, 15000, 11, 71801, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nerub\'ar Champion - Cast Rush'),
  39. +(37501, 0, 1, 0, 6, 0, 100, 30, 0, 0, 0, 0, 11, 71203, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nerub\'ar Champion - Cast Soul Feast On Death'),
  40. +-- Nerub'ar Webweaver: 37502 / 38198
  41. +(37502, 0, 0, 0, 0, 0, 100, 30, 3000, 5000, 10000, 15000, 11, 71326, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 'Nerub\'ar Webweaver - Cast Crypt Scarabs'),  
  42. +(37502, 0, 1, 0, 0, 0, 100, 30, 10000, 15000, 10000, 20000, 11, 71327, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 'Nerub\'ar Webweaver - Cast Web'),
  43. +(37502, 0, 2, 0, 6, 0, 100, 30, 0, 0, 0, 0, 11, 71203, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Nerub\'ar Webweaver - Cast Soul Feast On Death');
  44. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
  45. index 17e3391..1974951 100644
  46. --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
  47. +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
  48. @@ -255,6 +255,11 @@ enum EventTypes
  49.  
  50.      // Invisible Stalker (Float, Uninteractible, LargeAOI)
  51.      EVENT_SOUL_MISSILE                  = 55,
  52. +
  53. +    // Sindragosas Ward   
  54. +    EVENT_SUB_WAVE_1                    = 56, 
  55. +    EVENT_SUB_WAVE_2                    = 57, 
  56. +    EVENT_UPDATE_CHECK                  = 58,
  57.  };
  58.  
  59.  enum DataTypesICC
  60. @@ -285,6 +290,22 @@ enum MovementPoints
  61.      POINT_LAND  = 1,
  62.  };
  63.  
  64. +const Position SindragosaGauntletSpawn[12] =  
  65. +{
  66. +    { 4130.71f, 2484.10f, 211.033f, 0 },  
  67. +    { 4137.93f, 2505.52f, 211.033f, 0 },  
  68. +    { 4160.64f, 2528.13f, 211.033f, 0 },  
  69. +    { 4180.81f, 2533.88f, 211.033f, 0 },  
  70. +    { 4200.92f, 2527.18f, 211.033f, 0 },  
  71. +    { 4222.23f, 2503.56f, 211.033f, 0 },  
  72. +    { 4229.40f, 2484.63f, 211.033f, 0 },
  73. +    { 4222.01f, 2464.93f, 211.033f, 0 },  
  74. +    { 4201.55f, 2441.03f, 211.033f, 0 },  
  75. +    { 4181.29f, 2433.38f, 211.033f, 0 },
  76. +    { 4161.86f, 2441.94f, 211.033f, 0 },
  77. +    { 4138.78f, 2463.95f, 211.033f, 0 },
  78. +};
  79. +
  80.  class FrostwingVrykulSearcher
  81.  {
  82.      public:
  83. @@ -2135,6 +2156,214 @@ class at_icc_start_frostwing_gauntlet : public AreaTriggerScript
  84.          }
  85.  };
  86.  
  87. +class npc_sindragosas_ward : public CreatureScript
  88. +{ 
  89. +    public:
  90. +        npc_sindragosas_ward() : CreatureScript("npc_sindragosas_ward") { }
  91. +
  92. +        struct npc_sindragosas_wardAI : public BossAI
  93. +        {
  94. +            npc_sindragosas_wardAI(Creature* creature) : BossAI(creature, DATA_SINDRAGOSA_GAUNTLET)
  95. +            { 
  96. +            } 
  97. +
  98. +            void Reset()  
  99. +            {
  100. +                _Reset(); 
  101. +                _isEventInProgressOrDone = false; 
  102. +                _spawnCountToBeSummonedInWave = 0;
  103. +                _waveNumber = 0;  
  104. +            }
  105. +
  106. +            void DoAction(int32 const action) 
  107. +            { 
  108. +                if (action == ACTION_START_GAUNTLET)  
  109. +                    if (!_isEventInProgressOrDone)
  110. +                        if (!IsAnyPlayerOutOfRange())
  111. +                            DoZoneInCombat(me, 150.0f);
  112. +            }
  113. +
  114. +            void EnterCombat(Unit* /*attacker*/)  
  115. +            {
  116. +                _EnterCombat();
  117. +                _isEventInProgressOrDone = true;
  118. +                _spawnCountToBeSummonedInWave = 32;
  119. +                _waveNumber = 1;
  120. +                DoSummonWave(_waveNumber);
  121. +                events.ScheduleEvent(EVENT_SUB_WAVE_1, 10000);
  122. +                events.ScheduleEvent(EVENT_SUB_WAVE_2, 25000);
  123. +                events.ScheduleEvent(EVENT_UPDATE_CHECK, 5000);
  124. +            }
  125. +
  126. +            void DoSummonWave(uint8 number)
  127. +            {
  128. +                switch (number)   
  129. +                {
  130. +                    case 1:   
  131. +                    case 3:
  132. +                        me->SummonCreature(NPC_NERUBAR_WEBWEAVER, SindragosaGauntletSpawn[1], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  133. +                        me->SummonCreature(NPC_NERUBAR_WEBWEAVER, SindragosaGauntletSpawn[4], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  134. +                        me->SummonCreature(NPC_NERUBAR_WEBWEAVER, SindragosaGauntletSpawn[7], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  135. +                        me->SummonCreature(NPC_NERUBAR_WEBWEAVER, SindragosaGauntletSpawn[10], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  136. +                        me->SummonCreature(NPC_NERUBAR_CHAMPION, SindragosaGauntletSpawn[2], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  137. +                        me->SummonCreature(NPC_NERUBAR_CHAMPION, SindragosaGauntletSpawn[5], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  138. +                        me->SummonCreature(NPC_NERUBAR_CHAMPION, SindragosaGauntletSpawn[8], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  139. +                        me->SummonCreature(NPC_NERUBAR_CHAMPION, SindragosaGauntletSpawn[11], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  140. +                        break;
  141. +                    case 2:
  142. +                        me->SummonCreature(NPC_FROSTWARDEN_SORCERESS, SindragosaGauntletSpawn[3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  143. +                        me->SummonCreature(NPC_FROSTWARDEN_SORCERESS, SindragosaGauntletSpawn[9], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  144. +                        me->SummonCreature(NPC_FROSTWARDEN_WARRIOR, SindragosaGauntletSpawn[3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  145. +                        me->SummonCreature(NPC_FROSTWARDEN_WARRIOR, SindragosaGauntletSpawn[9], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  146. +                        me->SummonCreature(NPC_FROSTWARDEN_WARRIOR, SindragosaGauntletSpawn[3], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  147. +                        me->SummonCreature(NPC_FROSTWARDEN_WARRIOR, SindragosaGauntletSpawn[9], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  148. +                        break;
  149. +                    case EVENT_SUB_WAVE_1:
  150. +                    case EVENT_SUB_WAVE_2:
  151. +                        for (uint8 i = 0; i < 12; i++)
  152. +                            me->SummonCreature(NPC_NERUBAR_BROODLING, SindragosaGauntletSpawn[i], TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
  153. +                        break;
  154. +                    default:
  155. +                        break;
  156. +                }
  157. +            }
  158. +
  159. +            bool IsAnyPlayerOutOfRange()  
  160. +            {
  161. +                if (!me->GetMap())
  162. +                    return true;
  163. +
  164. +                Map::PlayerList const& playerList = me->GetMap()->GetPlayers();
  165. +  
  166. +                if (playerList.isEmpty()) 
  167. +                    return true;
  168. +
  169. +                for (Map::PlayerList::const_iterator itr = playerList.begin(); itr != playerList.end(); ++itr)
  170. +                {
  171. +                    if (Player* player = itr->getSource())
  172. +                    {
  173. +                        if (player->isGameMaster())
  174. +                            continue;
  175. +
  176. +                        if (player->isAlive() && me->GetDistance(player) > 125.0f)
  177. +                            return true;
  178. +                    }
  179. +                }
  180. +
  181. +                return false;
  182. +            }
  183. +
  184. +            void JustSummoned(Creature* summon)
  185. +            {
  186. +                summons.Summon(summon);   
  187. +                DoZoneInCombat(summon, 150.0f);   
  188. +            }
  189. +
  190. +            void SummonedCreatureDies(Creature* summon, Unit* /*who*/)
  191. +            {
  192. +                _spawnCountToBeSummonedInWave--;
  193. +                summon->DespawnOrUnsummon(30000);
  194. +            } 
  195. +
  196. +            void SummonedCreatureDespawn(Creature* summon)
  197. +            {
  198. +                // This one should never happen, if summoned creature despawns alive, reset!
  199. +                if (summon->isAlive())
  200. +                {
  201. +                    EnterEvadeMode(); 
  202. +                    return;   
  203. +                } 
  204. +
  205. +                summons.Despawn(summon);
  206. +            } 
  207. +  
  208. +            void UpdateAI(uint32 const diff)  
  209. +            { 
  210. +                if (!UpdateVictim() || !_isEventInProgressOrDone)
  211. +                    return;
  212. +
  213. +                events.Update(diff);
  214. +  
  215. +                while (uint32 eventId = events.ExecuteEvent())
  216. +                {
  217. +                    switch (eventId)  
  218. +                    {
  219. +                        case EVENT_SUB_WAVE_1:
  220. +                            DoSummonWave(EVENT_SUB_WAVE_1);   
  221. +                            break;
  222. +                        case EVENT_SUB_WAVE_2:
  223. +                            DoSummonWave(EVENT_SUB_WAVE_2);
  224. +                            break;
  225. +                        case EVENT_UPDATE_CHECK:
  226. +                        {
  227. +                            if (_spawnCountToBeSummonedInWave <= 5)
  228. +                            {
  229. +                                if (summons.size() < _spawnCountToBeSummonedInWave)
  230. +                                    _spawnCountToBeSummonedInWave = summons.size();
  231. +
  232. +                                if (!_spawnCountToBeSummonedInWave)
  233. +                                {
  234. +                                    switch (_waveNumber)  
  235. +                                    {
  236. +                                        case 1:   
  237. +                                            _spawnCountToBeSummonedInWave += 30;  
  238. +                                            break;
  239. +                                        case 2:
  240. +                                            _spawnCountToBeSummonedInWave += 32;
  241. +                                            break;
  242. +                                        case 3:
  243. +                                            me->Kill(me);
  244. +                                            return;   
  245. +                                    }
  246. +  
  247. +                                    _waveNumber++;
  248. +                                    DoSummonWave(_waveNumber);
  249. +                                    events.ScheduleEvent(EVENT_SUB_WAVE_1, 10000);
  250. +                                    events.ScheduleEvent(EVENT_SUB_WAVE_2, 25000);
  251. +                                }
  252. +                            }
  253. +
  254. +                            if (IsAnyPlayerOutOfRange())  
  255. +                            {
  256. +                                EnterEvadeMode();
  257. +                                return;
  258. +                            }
  259. +
  260. +                            events.ScheduleEvent(EVENT_UPDATE_CHECK, 5000);
  261. +                            break;
  262. +                        } 
  263. +                        default:  
  264. +                            break;
  265. +                    } 
  266. +                } 
  267. +            } 
  268. +  
  269. +        private:  
  270. +            bool _isEventInProgressOrDone;
  271. +            uint32 _spawnCountToBeSummonedInWave; 
  272. +            uint8 _waveNumber;
  273. +        };
  274. +  
  275. +        CreatureAI* GetAI(Creature* creature) const   
  276. +        { 
  277. +            return GetIcecrownCitadelAI<npc_sindragosas_wardAI>(creature);
  278. +        } 
  279. +};
  280. +
  281. +class at_icc_start_sindragosa_gauntlet : public AreaTriggerScript 
  282. +{ 
  283. +    public:   
  284. +        at_icc_start_sindragosa_gauntlet() : AreaTriggerScript("at_icc_start_sindragosa_gauntlet") { }
  285. +  
  286. +        bool OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/)   
  287. +        { 
  288. +            if (InstanceScript* instance = player->GetInstanceScript())   
  289. +                if (Creature* ward = ObjectAccessor::GetCreature(*player, instance->GetData64(DATA_SINDRAGOSA_GAUNTLET))) 
  290. +                    ward->AI()->DoAction(ACTION_START_GAUNTLET);
  291. +            return true;
  292. +        }
  293. +};
  294. +
  295.  void AddSC_icecrown_citadel()
  296.  {
  297.      new npc_highlord_tirion_fordring_lh();
  298. @@ -2162,4 +2391,6 @@ void AddSC_icecrown_citadel()
  299.      new at_icc_shutdown_traps();
  300.      new at_icc_start_blood_quickening();
  301.      new at_icc_start_frostwing_gauntlet();
  302. +    new npc_sindragosas_ward();
  303. +    new at_icc_start_sindragosa_gauntlet();
  304.  }
  305. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
  306. index 31639a6..8e98145 100755
  307. --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
  308. +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
  309. @@ -24,7 +24,7 @@
  310.  
  311.  #define ICCScriptName "instance_icecrown_citadel"
  312.  
  313. -uint32 const EncounterCount = 13;
  314. +uint32 const EncounterCount = 14;
  315.  uint32 const WeeklyNPCs = 9;
  316.  uint32 const MaxHeroicAttempts = 50;
  317.  
  318. @@ -82,35 +82,36 @@ enum DataTypes
  319.      DATA_VALITHRIA_DREAMWALKER      = 10,
  320.      DATA_SINDRAGOSA                 = 11,
  321.      DATA_THE_LICH_KING              = 12,
  322. +    DATA_SINDRAGOSA_GAUNTLET        = 13,
  323.  
  324.      // Additional data
  325. -    DATA_SAURFANG_EVENT_NPC         = 13,
  326. -    DATA_BONED_ACHIEVEMENT          = 14,
  327. -    DATA_OOZE_DANCE_ACHIEVEMENT     = 15,
  328. -    DATA_PUTRICIDE_TABLE            = 16,
  329. -    DATA_NAUSEA_ACHIEVEMENT         = 17,
  330. -    DATA_ORB_WHISPERER_ACHIEVEMENT  = 18,
  331. -    DATA_PRINCE_KELESETH_GUID       = 19,
  332. -    DATA_PRINCE_TALDARAM_GUID       = 20,
  333. -    DATA_PRINCE_VALANAR_GUID        = 21,
  334. -    DATA_BLOOD_PRINCES_CONTROL      = 22,
  335. -    DATA_SINDRAGOSA_FROSTWYRMS      = 23,
  336. -    DATA_SPINESTALKER               = 24,
  337. -    DATA_RIMEFANG                   = 25,
  338. -    DATA_COLDFLAME_JETS             = 26,
  339. -    DATA_TEAM_IN_INSTANCE           = 27,
  340. -    DATA_BLOOD_QUICKENING_STATE     = 28,
  341. -    DATA_HEROIC_ATTEMPTS            = 29,
  342. -    DATA_CROK_SCOURGEBANE           = 30,
  343. -    DATA_CAPTAIN_ARNATH             = 31,
  344. -    DATA_CAPTAIN_BRANDON            = 32,
  345. -    DATA_CAPTAIN_GRONDEL            = 33,
  346. -    DATA_CAPTAIN_RUPERT             = 34,
  347. -    DATA_VALITHRIA_TRIGGER          = 35,
  348. -    DATA_VALITHRIA_LICH_KING        = 36,
  349. -    DATA_HIGHLORD_TIRION_FORDRING   = 37,
  350. -    DATA_ARTHAS_PLATFORM            = 38,
  351. -    DATA_TERENAS_MENETHIL           = 39,
  352. +    DATA_SAURFANG_EVENT_NPC         = 14,
  353. +    DATA_BONED_ACHIEVEMENT          = 15,
  354. +    DATA_OOZE_DANCE_ACHIEVEMENT     = 16,
  355. +    DATA_PUTRICIDE_TABLE            = 17, 
  356. +    DATA_NAUSEA_ACHIEVEMENT         = 18,
  357. +    DATA_ORB_WHISPERER_ACHIEVEMENT  = 19,
  358. +    DATA_PRINCE_KELESETH_GUID       = 20,
  359. +    DATA_PRINCE_TALDARAM_GUID       = 21,
  360. +    DATA_PRINCE_VALANAR_GUID        = 22,
  361. +    DATA_BLOOD_PRINCES_CONTROL      = 23,
  362. +    DATA_SINDRAGOSA_FROSTWYRMS      = 24,
  363. +    DATA_SPINESTALKER               = 25, 
  364. +    DATA_RIMEFANG                   = 26, 
  365. +    DATA_COLDFLAME_JETS             = 27,
  366. +    DATA_TEAM_IN_INSTANCE           = 28,
  367. +    DATA_BLOOD_QUICKENING_STATE     = 29, 
  368. +    DATA_HEROIC_ATTEMPTS            = 30, 
  369. +    DATA_CROK_SCOURGEBANE           = 31, 
  370. +    DATA_CAPTAIN_ARNATH             = 32, 
  371. +    DATA_CAPTAIN_BRANDON            = 33, 
  372. +    DATA_CAPTAIN_GRONDEL            = 34, 
  373. +    DATA_CAPTAIN_RUPERT             = 35, 
  374. +    DATA_VALITHRIA_TRIGGER          = 36, 
  375. +    DATA_VALITHRIA_LICH_KING        = 37,
  376. +    DATA_HIGHLORD_TIRION_FORDRING   = 38, 
  377. +    DATA_ARTHAS_PLATFORM            = 39,
  378. +    DATA_TERENAS_MENETHIL           = 40,
  379.  };
  380.  
  381.  enum CreaturesIds
  382. @@ -277,6 +278,14 @@ enum CreaturesIds
  383.      NPC_SPIRIT_BOMB                             = 39189,
  384.      NPC_FROSTMOURNE_TRIGGER                     = 38584,
  385.  
  386. +    // Sindragosas Ward   
  387. +    NPC_SINDRAGOSAS_WARD                        = 37503,  
  388. +    NPC_NERUBAR_WEBWEAVER                       = 37502,  
  389. +    NPC_NERUBAR_CHAMPION                        = 37501,  
  390. +    NPC_NERUBAR_BROODLING                       = 37232,  
  391. +    NPC_FROSTWARDEN_WARRIOR                     = 37228,  
  392. +    NPC_FROSTWARDEN_SORCERESS                   = 37229,
  393. +
  394.      // Generic
  395.      NPC_INVISIBLE_STALKER                       = 30298,
  396.  };
  397. diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
  398. index 650f426..9f54cfc 100755
  399. --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
  400. +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
  401. @@ -60,6 +60,7 @@ enum TimedEvents
  402.      {GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_02,  DATA_VALITHRIA_DREAMWALKER, DOOR_TYPE_SPAWN_HOLE, BOUNDARY_S   },
  403.      {GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_03,  DATA_VALITHRIA_DREAMWALKER, DOOR_TYPE_SPAWN_HOLE, BOUNDARY_N   },
  404.      {GO_DOODAD_ICECROWN_ROOSTPORTCULLIS_04,  DATA_VALITHRIA_DREAMWALKER, DOOR_TYPE_SPAWN_HOLE, BOUNDARY_S   },
  405. +    {GO_SINDRAGOSA_ENTRANCE_DOOR,            DATA_SINDRAGOSA_GAUNTLET,   DOOR_TYPE_PASSAGE,    BOUNDARY_N   },
  406.      {GO_SINDRAGOSA_ENTRANCE_DOOR,            DATA_SINDRAGOSA,            DOOR_TYPE_ROOM,       BOUNDARY_S   },
  407.      {GO_SINDRAGOSA_SHORTCUT_ENTRANCE_DOOR,   DATA_SINDRAGOSA,            DOOR_TYPE_PASSAGE,    BOUNDARY_E   },
  408.      {GO_SINDRAGOSA_SHORTCUT_EXIT_DOOR,       DATA_SINDRAGOSA,            DOOR_TYPE_PASSAGE,    BOUNDARY_NONE},
  409. @@ -146,6 +147,7 @@ class instance_icecrown_citadel : public InstanceMapScript
  410.                  ColdflameJetsState = NOT_STARTED;
  411.                  BloodQuickeningState = NOT_STARTED;
  412.                  BloodQuickeningMinutes = 0;
  413. +                SindragosasWardGUID = 0;
  414.              }
  415.  
  416.              void FillInitialWorldStates(WorldPacket& data)
  417. @@ -296,6 +298,9 @@ class instance_icecrown_citadel : public InstanceMapScript
  418.                      case NPC_TERENAS_MENETHIL_FROSTMOURNE_H:
  419.                          TerenasMenethilGUID = creature->GetGUID();
  420.                          break;
  421. +                    case NPC_SINDRAGOSAS_WARD:
  422. +                        SindragosasWardGUID = creature->GetGUID();
  423. +                        break;
  424.                      case NPC_WICKED_SPIRIT:
  425.                          // Remove corpse as soon as it dies (and respawn 10 seconds later)
  426.                          creature->SetCorpseDelay(0);
  427. @@ -672,7 +677,9 @@ class instance_icecrown_citadel : public InstanceMapScript
  428.                      case DATA_ARTHAS_PLATFORM:
  429.                          return ArthasPlatformGUID;
  430.                      case DATA_TERENAS_MENETHIL:
  431. -                        return TerenasMenethilGUID;
  432. +                        return TerenasMenethilGUID;   
  433. +                    case DATA_SINDRAGOSA_GAUNTLET:
  434. +                        return SindragosasWardGUID;
  435.                      default:
  436.                          break;
  437.                  }
  438. @@ -1309,6 +1316,7 @@ class instance_icecrown_citadel : public InstanceMapScript
  439.              bool IsOozeDanceEligible;
  440.              bool IsNauseaEligible;
  441.              bool IsOrbWhispererEligible;
  442. +            uint64 SindragosasWardGUID;
  443.          };
  444.  
  445.          InstanceScript* GetInstanceScript(InstanceMap* map) const
  446. --
  447. 1.7.10
Advertisement
Add Comment
Please, Sign In to add comment