From 081ee8f5d8ac9bf73c1b54a56f5fbda2fb365609 Mon Sep 17 00:00:00 2001 From: Vincent-Michael Date: Fri, 30 Aug 2013 22:14:24 +0200 Subject: SQL: Fix typo --- sql/updates/world/2013_08_30_06_world_eai_sai.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sql') diff --git a/sql/updates/world/2013_08_30_06_world_eai_sai.sql b/sql/updates/world/2013_08_30_06_world_eai_sai.sql index 33814d2cc36..f0f16330486 100644 --- a/sql/updates/world/2013_08_30_06_world_eai_sai.sql +++ b/sql/updates/world/2013_08_30_06_world_eai_sai.sql @@ -11,7 +11,7 @@ DELETE FROM `creature_ai_scripts` WHERE `action1_type`=27; UPDATE `smart_scripts` SET `action_type`=33, `action_param2`=0 WHERE `source_type`=0 AND `action_type`=27; -- by VM -- all quests that used RequiredSpellCastX fields -UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|32 WHERE `entry` IN +UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|32 WHERE `Id` IN (28,29,532,553,849,877,905,974,2118,2932,2994,3825,5096,5163,5165,5441, 6124,6129,6381,6395,6661,8346,8889,9066,9169,9193,9275,9294,9391,9440, 9444,9447,9489,9526,9600,9629,9667,9685,9720,9805,9824,9874,9910,10011, -- cgit v1.2.3 From dd7802c0ec7e42cf6943140b86f7687eb2e730cf Mon Sep 17 00:00:00 2001 From: Filip Date: Fri, 30 Aug 2013 22:17:19 +0200 Subject: SQL: Rename wrong named SQL file. --- sql/updates/world/2013_08_30_06_world_eai_sai.sql | 25 ----------------------- sql/updates/world/2013_08_30_07_world_eai_sai.sql | 25 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 sql/updates/world/2013_08_30_06_world_eai_sai.sql create mode 100644 sql/updates/world/2013_08_30_07_world_eai_sai.sql (limited to 'sql') diff --git a/sql/updates/world/2013_08_30_06_world_eai_sai.sql b/sql/updates/world/2013_08_30_06_world_eai_sai.sql deleted file mode 100644 index f0f16330486..00000000000 --- a/sql/updates/world/2013_08_30_06_world_eai_sai.sql +++ /dev/null @@ -1,25 +0,0 @@ -DELETE FROM `creature_ai_scripts` WHERE `action1_type`=27; - --- INSERT INTO `creature_ai_scripts` (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`) VALUES --- ('343001', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5043', '17013', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Agility on Quest Complete'), --- ('343002', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5042', '16612', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Strength on Quest Complete'), --- ('343003', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5046', '16610', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Razorhide on Quest Complete'), --- ('343004', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5045', '10767', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Rising Spirit on Quest Complete'), --- ('343005', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '889', '16618', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Spirit of the Wind on Quest Complete'), --- ('343006', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5044', '7764', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Wisdom of Agamaggan on Quest Complete'); - -UPDATE `smart_scripts` SET `action_type`=33, `action_param2`=0 WHERE `source_type`=0 AND `action_type`=27; -- by VM - --- all quests that used RequiredSpellCastX fields -UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|32 WHERE `Id` IN -(28,29,532,553,849,877,905,974,2118,2932,2994,3825,5096,5163,5165,5441, -6124,6129,6381,6395,6661,8346,8889,9066,9169,9193,9275,9294,9391,9440, -9444,9447,9489,9526,9600,9629,9667,9685,9720,9805,9824,9874,9910,10011, -10078,10087,10129,10144,10146,10182,10208,10233,10240,10305,10306,10307, -10313,10335,10345,10392,10426,10446,10447,10488,10545,10564,10598,10637, -10688,10714,10771,10792,10802,10808,10813,10833,10859,10866,10895,10913, -10923,10935,11055,11150,11205,11232,11245,11247,11258,11259,11285,11330, -11332,11421,11496,11515,11523,11542,11543,11547,11568,11576,11582,11610, -11617,11637,11656,11677,11684,11694,11713,11880,12092,12094,12096,12154, -12172,12173,12180,12213,12232,12267,12417,12449,12502,12588,12591,12598, -12641,12669,12728,12859,13110,13119,13211); diff --git a/sql/updates/world/2013_08_30_07_world_eai_sai.sql b/sql/updates/world/2013_08_30_07_world_eai_sai.sql new file mode 100644 index 00000000000..f0f16330486 --- /dev/null +++ b/sql/updates/world/2013_08_30_07_world_eai_sai.sql @@ -0,0 +1,25 @@ +DELETE FROM `creature_ai_scripts` WHERE `action1_type`=27; + +-- INSERT INTO `creature_ai_scripts` (`id`, `creature_id`, `event_type`, `event_inverse_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action1_type`, `action1_param1`, `action1_param2`, `action1_param3`, `action2_type`, `action2_param1`, `action2_param2`, `action2_param3`, `action3_type`, `action3_param1`, `action3_param2`, `action3_param3`, `comment`) VALUES +-- ('343001', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5043', '17013', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Agility on Quest Complete'), +-- ('343002', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5042', '16612', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Agamaggan''s Strength on Quest Complete'), +-- ('343003', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5046', '16610', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Razorhide on Quest Complete'), +-- ('343004', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5045', '10767', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Rising Spirit on Quest Complete'), +-- ('343005', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '889', '16618', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Spirit of the Wind on Quest Complete'), +-- ('343006', '3430', '0', '0', '100', '0', '0', '0', '0', '0', '27', '5044', '7764', '0', '0', '0', '0', '0', '0', '0', '0', '0', 'Mangletooth - Cast Wisdom of Agamaggan on Quest Complete'); + +UPDATE `smart_scripts` SET `action_type`=33, `action_param2`=0 WHERE `source_type`=0 AND `action_type`=27; -- by VM + +-- all quests that used RequiredSpellCastX fields +UPDATE `quest_template` SET `SpecialFlags`=`SpecialFlags`|32 WHERE `Id` IN +(28,29,532,553,849,877,905,974,2118,2932,2994,3825,5096,5163,5165,5441, +6124,6129,6381,6395,6661,8346,8889,9066,9169,9193,9275,9294,9391,9440, +9444,9447,9489,9526,9600,9629,9667,9685,9720,9805,9824,9874,9910,10011, +10078,10087,10129,10144,10146,10182,10208,10233,10240,10305,10306,10307, +10313,10335,10345,10392,10426,10446,10447,10488,10545,10564,10598,10637, +10688,10714,10771,10792,10802,10808,10813,10833,10859,10866,10895,10913, +10923,10935,11055,11150,11205,11232,11245,11247,11258,11259,11285,11330, +11332,11421,11496,11515,11523,11542,11543,11547,11568,11576,11582,11610, +11617,11637,11656,11677,11684,11694,11713,11880,12092,12094,12096,12154, +12172,12173,12180,12213,12232,12267,12417,12449,12502,12588,12591,12598, +12641,12669,12728,12859,13110,13119,13211); -- cgit v1.2.3 From 157eb82ab17049d257f0bc86edb5a656c05c5ddf Mon Sep 17 00:00:00 2001 From: Filip Date: Fri, 30 Aug 2013 22:57:23 +0200 Subject: DB/SAI: Deeprun Rat Roundup (6661) --- sql/updates/world/2013_08_30_08_world_sai.sql | 42 +++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 sql/updates/world/2013_08_30_08_world_sai.sql (limited to 'sql') diff --git a/sql/updates/world/2013_08_30_08_world_sai.sql b/sql/updates/world/2013_08_30_08_world_sai.sql new file mode 100644 index 00000000000..1c29787edb7 --- /dev/null +++ b/sql/updates/world/2013_08_30_08_world_sai.sql @@ -0,0 +1,42 @@ +-- Deeprun Rat Roundup (6661) + +SET @QUEST := 6661; -- Random Comment +SET @NPC_RAT := 13016; -- Deeprun Rat +SET @NPC_ENTHRALLED_RAT := 13017; -- Enthralled Deeprun Rat +SET @NPC_MONTY := 12997; -- Monty +SET @SPELL_FLUTE := 21050; -- Melodious Rapture +SET @SPELL_FLUTE_VISUAL := 21051; -- Melodious Rapture Visual (DND) +SET @SPELL_BASH := 21052; -- Monty Bashes Rats (DND) + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@NPC_RAT; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@NPC_ENTHRALLED_RAT; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@NPC_MONTY; + +UPDATE `creature_model_info` SET `bounding_radius`=1,`combat_reach`=1,`gender`=2 WHERE `modelid`=1141; -- Deeprun Rat +-- Addon data for creature 13016 (Deeprun Rat) +DELETE FROM `creature_template_addon` WHERE `entry`=@NPC_RAT; +INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES +(@NPC_RAT,0,0,1,0, ''); -- Deeprun Rat + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_RAT,@NPC_ENTHRALLED_RAT,@NPC_MONTY); +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 +(@NPC_RAT,0,0,1,8,0,100,1,@SPELL_FLUTE,0,0,0,12,@NPC_ENTHRALLED_RAT,2,120000,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - On Spellhit - Summon Enthralled Rat'), +(@NPC_RAT,0,1,0,61,0,100,0,0,0,0,0,41,100,1,0,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - On link - Despawn'), +-- +(@NPC_ENTHRALLED_RAT,0,0,1,54,0,100,0,0,0,0,0,2,35,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - Just summoned - Update Faction'), +(@NPC_ENTHRALLED_RAT,0,1,2,61,0,100,0,0,0,0,0,33,@NPC_ENTHRALLED_RAT,0,0,0,0,0,21,5,0,0,0,0,0,0,'Deeprun Rat - On Link - Give Q credit'), +(@NPC_ENTHRALLED_RAT,0,2,3,61,0,100,0,0,0,0,0,11,@SPELL_FLUTE_VISUAL,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - On Link - Set Flute Visual'), +(@NPC_ENTHRALLED_RAT,0,3,4,61,0,100,0,0,0,0,0,29,0,0,0,0,0,0,21,5,0,0,0,0,0,0,'Deeprun Rat - On Link - Follow Player'), +(@NPC_ENTHRALLED_RAT,0,4,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - On LInk- Set Phase 1'), +(@NPC_ENTHRALLED_RAT,0,5,0,8,1,100,0,@SPELL_BASH,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Deeprun Rat - On Spellhit - Despawn'), +-- +(@NPC_MONTY,0,0,1,20,0,100,0,@QUEST,0,0,0,11,@SPELL_BASH,0,0,0,0,0,1,0,0,0,0,0,0,0,'Monty - On Reward Quest - Cast Bash'), +(@NPC_MONTY,0,1,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Monty - On Reward Quest - Talk'); + +DELETE FROM `creature_text` WHERE `entry`=@NPC_MONTY; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES +(@NPC_MONTY,0,0,'Into the box me pretties! Thats it. One by one ye go.',12,0,0,0,0,0,'Monty'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=@SPELL_BASH; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,1,@SPELL_BASH,0,0,31,0,3,@NPC_ENTHRALLED_RAT,0,0,0,'','Spell Bash target rats'); -- cgit v1.2.3 From 16eefd18fa942f9317b0eb22249b0e13a77622eb Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 30 Aug 2013 23:00:43 +0200 Subject: Scripts/Icecrown Citaldel: Fixed spells cast by Professor Putricide during heroic Festergut and Rotface encounters Closes #7641 Closes #8243 --- .../2013_08_30_07_world_spell_script_names.sql | 4 + src/server/game/Spells/SpellEffects.cpp | 3 + .../Northrend/IcecrownCitadel/boss_festergut.cpp | 26 ++++-- .../IcecrownCitadel/boss_professor_putricide.cpp | 24 ++---- .../Northrend/IcecrownCitadel/boss_rotface.cpp | 98 ++++++++++++++++++++-- .../Northrend/IcecrownCitadel/icecrown_citadel.h | 2 + 6 files changed, 129 insertions(+), 28 deletions(-) create mode 100644 sql/updates/world/2013_08_30_07_world_spell_script_names.sql (limited to 'sql') diff --git a/sql/updates/world/2013_08_30_07_world_spell_script_names.sql b/sql/updates/world/2013_08_30_07_world_spell_script_names.sql new file mode 100644 index 00000000000..d9857b0e789 --- /dev/null +++ b/sql/updates/world/2013_08_30_07_world_spell_script_names.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rotface_vile_gas_trigger'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(72285, 'spell_rotface_vile_gas_trigger'), +(72288, 'spell_rotface_vile_gas_trigger'); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index ac3f12ed8c5..91a5c35955a 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -1034,6 +1034,9 @@ void Spell::EffectForceCast(SpellEffIndex effIndex) case 52349: // Overtake unitTarget->CastCustomSpell(unitTarget, spellInfo->Id, &damage, NULL, NULL, true, NULL, NULL, m_originalCasterGUID); return; + case 72299: // Malleable Goo Summon Trigger + unitTarget->CastSpell(unitTarget, spellInfo->Id, true, NULL, NULL, m_originalCasterGUID); + return; } } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp index bf85fe455c7..68df37f0fdd 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp @@ -206,15 +206,27 @@ class boss_festergut : public CreatureScript } case EVENT_VILE_GAS: { - std::list targets; + std::list ranged, melee; uint32 minTargets = RAID_MODE(3, 8, 3, 8); - SelectTargetList(targets, minTargets, SELECT_TARGET_RANDOM, -5.0f, true); - float minDist = 0.0f; - if (targets.size() >= minTargets) - minDist = -5.0f; + SelectTargetList(ranged, 25, SELECT_TARGET_RANDOM, -5.0f, true); + SelectTargetList(melee, 25, SELECT_TARGET_RANDOM, 5.0f, true); + while (ranged.size() < minTargets) + { + if (melee.empty()) + break; + + Unit* target = Trinity::Containers::SelectRandomContainerElement(melee); + ranged.push_back(target); + melee.remove(target); + } + + if (!ranged.empty()) + { + Trinity::Containers::RandomResizeList(ranged, RAID_MODE(1, 3, 1, 3)); + for (std::list::iterator itr = ranged.begin(); itr != ranged.end(); ++itr) + DoCast(*itr, SPELL_VILE_GAS); + } - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, minDist, true)) - DoCast(target, SPELL_VILE_GAS); events.ScheduleEvent(EVENT_VILE_GAS, urand(28000, 35000)); break; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 927b3dfe467..96627548848 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -55,10 +55,8 @@ enum Spells SPELL_GASEOUS_BLIGHT_LARGE = 69157, SPELL_GASEOUS_BLIGHT_MEDIUM = 69162, SPELL_GASEOUS_BLIGHT_SMALL = 69164, - SPELL_MALLABLE_GOO_H = 70852, - - // Rotface - SPELL_VILE_GAS_H = 69240, + SPELL_MALLEABLE_GOO_H = 72296, + SPELL_MALLEABLE_GOO_SUMMON = 72299, // Professor Putricide SPELL_SLIME_PUDDLE_TRIGGER = 70341, @@ -122,7 +120,6 @@ enum Events // Rotface EVENT_ROTFACE_DIES = 3, - EVENT_ROTFACE_VILE_GAS = 4, EVENT_ROTFACE_OOZE_FLOOD = 5, // Professor Putricide @@ -305,6 +302,9 @@ class boss_professor_putricide : public CreatureScript summons.Summon(summon); switch (summon->GetEntry()) { + case NPC_MALLEABLE_OOZE_STALKER: + DoCast(summon, SPELL_MALLEABLE_GOO_H); + return; case NPC_GROWING_OOZE_PUDDLE: summon->CastSpell(summon, SPELL_GROW_STACKER, true); summon->CastSpell(summon, SPELL_SLIME_PUDDLE_AURA, true); @@ -424,7 +424,7 @@ class boss_professor_putricide : public CreatureScript me->SetReactState(REACT_PASSIVE); DoZoneInCombat(me); if (IsHeroic()) - events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000), 0, PHASE_FESTERGUT); + events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(13000, 18000), 0, PHASE_FESTERGUT); break; case ACTION_FESTERGUT_GAS: Talk(SAY_FESTERGUT_GASEOUS_BLIGHT); @@ -441,8 +441,6 @@ class boss_professor_putricide : public CreatureScript me->SetReactState(REACT_PASSIVE); _oozeFloodStage = 0; DoZoneInCombat(me); - if (IsHeroic()) - events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000), 0, PHASE_ROTFACE); // init random sequence of floods if (Creature* rotface = Unit::GetCreature(*me, instance->GetData64(DATA_ROTFACE))) { @@ -582,19 +580,13 @@ class boss_professor_putricide : public CreatureScript EnterEvadeMode(); break; case EVENT_FESTERGUT_GOO: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me))) - DoCast(target, SPELL_MALLABLE_GOO_H, true); // triggered, to skip LoS check - events.ScheduleEvent(EVENT_FESTERGUT_GOO, urand(15000, 20000), 0, PHASE_FESTERGUT); + me->CastCustomSpell(SPELL_MALLEABLE_GOO_SUMMON, SPELLVALUE_MAX_TARGETS, 1, NULL, true); + events.ScheduleEvent(EVENT_FESTERGUT_GOO, (Is25ManRaid() ? 10000 : 30000) + urand(0, 5000), 0, PHASE_FESTERGUT); break; case EVENT_ROTFACE_DIES: Talk(SAY_ROTFACE_DEATH); EnterEvadeMode(); break; - case EVENT_ROTFACE_VILE_GAS: - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, NonTankTargetSelector(me))) - DoCast(target, SPELL_VILE_GAS_H, true); // triggered, to skip LoS check - events.ScheduleEvent(EVENT_ROTFACE_VILE_GAS, urand(15000, 20000), 0, PHASE_ROTFACE); - break; case EVENT_ROTFACE_OOZE_FLOOD: DoAction(ACTION_ROTFACE_OOZE); events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000, 0, PHASE_ROTFACE); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 97385b108b6..eddc67b5f5e 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -46,6 +46,7 @@ enum Spells // Rotface SPELL_SLIME_SPRAY = 69508, // every 20 seconds SPELL_MUTATED_INFECTION = 69674, // hastens every 1:30 + SPELL_VILE_GAS_TRIGGER_SUMMON = 72287, // Oozes SPELL_LITTLE_OOZE_COMBINE = 69537, // combine 2 Small Oozes @@ -64,6 +65,10 @@ enum Spells SPELL_MORTAL_WOUND = 71127, SPELL_DECIMATE = 71123, SPELL_AWAKEN_PLAGUED_ZOMBIES = 71159, + + // Professor Putricide + SPELL_VILE_GAS_H = 72272, + SPELL_VILE_GAS_TRIGGER = 72285, }; #define MUTATED_INFECTION RAID_MODE(69674, 71224, 73022, 73023) @@ -74,13 +79,14 @@ enum Events EVENT_SLIME_SPRAY = 1, EVENT_HASTEN_INFECTIONS = 2, EVENT_MUTATED_INFECTION = 3, + EVENT_VILE_GAS = 4, // Precious - EVENT_DECIMATE = 4, - EVENT_MORTAL_WOUND = 5, - EVENT_SUMMON_ZOMBIES = 6, + EVENT_DECIMATE = 5, + EVENT_MORTAL_WOUND = 6, + EVENT_SUMMON_ZOMBIES = 7, - EVENT_STICKY_OOZE = 7, + EVENT_STICKY_OOZE = 8, }; class boss_rotface : public CreatureScript @@ -102,6 +108,9 @@ class boss_rotface : public CreatureScript events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000); events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000); events.ScheduleEvent(EVENT_MUTATED_INFECTION, 14000); + if (IsHeroic()) + events.ScheduleEvent(EVENT_VILE_GAS, urand(22000, 27000)); + infectionStage = 0; infectionCooldown = 14000; } @@ -119,7 +128,9 @@ class boss_rotface : public CreatureScript Talk(SAY_AGGRO); if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) professor->AI()->DoAction(ACTION_ROTFACE_COMBAT); + DoZoneInCombat(); + DoCast(me, SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC, true); } void JustDied(Unit* /*killer*/) OVERRIDE @@ -158,11 +169,17 @@ class boss_rotface : public CreatureScript } void MoveInLineOfSight(Unit* /*who*/) OVERRIDE - { // don't enter combat } + void JustSummoned(Creature* summon) OVERRIDE + { + if (summon->GetEntry() == NPC_VILE_GAS_STALKER) + if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE))) + professor->CastSpell(summon, SPELL_VILE_GAS_H, true); + } + void UpdateAI(uint32 diff) OVERRIDE { if (!UpdateVictim() || !CheckInRoom()) @@ -197,6 +214,10 @@ class boss_rotface : public CreatureScript me->CastCustomSpell(SPELL_MUTATED_INFECTION, SPELLVALUE_MAX_TARGETS, 1, NULL, false); events.ScheduleEvent(EVENT_MUTATED_INFECTION, infectionCooldown); break; + case EVENT_VILE_GAS: + DoCastAOE(SPELL_VILE_GAS_TRIGGER); + events.ScheduleEvent(EVENT_VILE_GAS, urand(30000, 35000)); + break; default: break; } @@ -231,6 +252,7 @@ class npc_little_ooze : public CreatureScript { DoCast(me, SPELL_LITTLE_OOZE_COMBINE, true); DoCast(me, SPELL_WEAK_RADIATING_OOZE, true); + DoCast(me, SPELL_GREEN_ABOMINATION_HITTIN__YA_PROC, true); events.ScheduleEvent(EVENT_STICKY_OOZE, 5000); me->AddThreat(summoner, 500000.0f); } @@ -775,6 +797,71 @@ class spell_rotface_unstable_ooze_explosion_suicide : public SpellScriptLoader } }; +class spell_rotface_vile_gas_trigger : public SpellScriptLoader +{ + public: + spell_rotface_vile_gas_trigger() : SpellScriptLoader("spell_rotface_vile_gas_trigger") { } + + class spell_rotface_vile_gas_trigger_SpellScript : public SpellScript + { + PrepareSpellScript(spell_rotface_vile_gas_trigger_SpellScript); + + void FilterTargets(std::list& targets) + { + targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster())); + if (targets.empty()) + return; + + std::list ranged, melee; + std::list::iterator itr = targets.begin(); + while (itr != targets.end() && (*itr)->GetDistance(GetCaster()) < 5.0f) + { + melee.push_back((*itr)->ToUnit()); + ++itr; + } + + while (itr != targets.end()) + { + ranged.push_back((*itr)->ToUnit()); + ++itr; + } + + uint32 minTargets = GetCaster()->GetMap()->Is25ManRaid() ? 8 : 3; + while (ranged.size() < minTargets) + { + if (melee.empty()) + break; + + WorldObject* target = Trinity::Containers::SelectRandomContainerElement(melee); + ranged.push_back(target); + melee.remove(target); + } + + if (!ranged.empty()) + Trinity::Containers::RandomResizeList(ranged, GetCaster()->GetMap()->Is25ManRaid() ? 3 : 1); + + targets.swap(ranged); + } + + void HandleDummy(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + GetCaster()->CastSpell(GetHitUnit(), SPELL_VILE_GAS_TRIGGER_SUMMON); + } + + void Register() + { + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_rotface_vile_gas_trigger_SpellScript::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_rotface_vile_gas_trigger_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_rotface_vile_gas_trigger_SpellScript(); + } +}; + void AddSC_boss_rotface() { new boss_rotface(); @@ -789,4 +876,5 @@ void AddSC_boss_rotface() new spell_rotface_unstable_ooze_explosion_init(); new spell_rotface_unstable_ooze_explosion(); new spell_rotface_unstable_ooze_explosion_suicide(); + new spell_rotface_vile_gas_trigger(); } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index e328658b9af..6090d4b8368 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -183,12 +183,14 @@ enum CreaturesIds // Festergut NPC_FESTERGUT = 36626, NPC_GAS_DUMMY = 36659, + NPC_MALLEABLE_OOZE_STALKER = 38556, // Rotface NPC_ROTFACE = 36627, NPC_OOZE_SPRAY_STALKER = 37986, NPC_PUDDLE_STALKER = 37013, NPC_UNSTABLE_EXPLOSION_STALKER = 38107, + NPC_VILE_GAS_STALKER = 38548, // Professor Putricide NPC_PROFESSOR_PUTRICIDE = 36678, -- cgit v1.2.3 From 4f10e6b89ab95e76e9f0de3f8ad4b8bd4ac1de84 Mon Sep 17 00:00:00 2001 From: Shauren Date: Fri, 30 Aug 2013 23:02:16 +0200 Subject: SQL: Fixed file name --- sql/updates/world/2013_08_30_07_world_spell_script_names.sql | 4 ---- sql/updates/world/2013_08_30_09_world_spell_script_names.sql | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) delete mode 100644 sql/updates/world/2013_08_30_07_world_spell_script_names.sql create mode 100644 sql/updates/world/2013_08_30_09_world_spell_script_names.sql (limited to 'sql') diff --git a/sql/updates/world/2013_08_30_07_world_spell_script_names.sql b/sql/updates/world/2013_08_30_07_world_spell_script_names.sql deleted file mode 100644 index d9857b0e789..00000000000 --- a/sql/updates/world/2013_08_30_07_world_spell_script_names.sql +++ /dev/null @@ -1,4 +0,0 @@ -DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rotface_vile_gas_trigger'; -INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES -(72285, 'spell_rotface_vile_gas_trigger'), -(72288, 'spell_rotface_vile_gas_trigger'); diff --git a/sql/updates/world/2013_08_30_09_world_spell_script_names.sql b/sql/updates/world/2013_08_30_09_world_spell_script_names.sql new file mode 100644 index 00000000000..d9857b0e789 --- /dev/null +++ b/sql/updates/world/2013_08_30_09_world_spell_script_names.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rotface_vile_gas_trigger'; +INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES +(72285, 'spell_rotface_vile_gas_trigger'), +(72288, 'spell_rotface_vile_gas_trigger'); -- cgit v1.2.3