aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/scripts/world_scripts_full.sql19
-rw-r--r--sql/updates/world/2011_02_18_0_world_pool_quest.sql4
-rw-r--r--sql/updates/world/2011_02_19_0_world_conditions.sql4
-rw-r--r--sql/updates/world/2011_02_19_0_world_creature_template.sql2
-rw-r--r--sql/updates/world/2011_02_19_0_world_scriptname.sql1
-rw-r--r--sql/updates/world/2011_02_19_0_world_spell_script_names.sql22
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp2
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp37
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp39
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp69
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h10
-rwxr-xr-xsrc/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp14
12 files changed, 202 insertions, 21 deletions
diff --git a/sql/scripts/world_scripts_full.sql b/sql/scripts/world_scripts_full.sql
index 2b5dce0e3de..606688c44de 100644
--- a/sql/scripts/world_scripts_full.sql
+++ b/sql/scripts/world_scripts_full.sql
@@ -850,6 +850,7 @@ UPDATE `creature_template` SET `ScriptName`='npc_high_overlord_saurfang_icc' WHE
UPDATE `creature_template` SET `ScriptName`='npc_muradin_bronzebeard_icc' WHERE `entry`=37200;
UPDATE `creature_template` SET `ScriptName`='npc_saurfang_event' WHERE `entry` IN (37920,37830);
UPDATE `creature_template` SET `ScriptName`='npc_frost_freeze_trap' WHERE `entry`=37744;
+UPDATE `creature_template` SET `ScriptName`='npc_alchemist_adrianna' WHERE `entry`=38501;
UPDATE `creature_template` SET `ScriptName`='boss_festergut' WHERE `entry`=36626;
UPDATE `creature_template` SET `ScriptName`='npc_stinky_icc' WHERE `entry`=37025;
UPDATE `creature_template` SET `ScriptName`='boss_rotface' WHERE `entry`=36627;
@@ -1915,6 +1916,8 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 72444, 'spell_deathbringer_mark_of_the_fallen_champion'),
( 72445, 'spell_deathbringer_mark_of_the_fallen_champion'),
( 72446, 'spell_deathbringer_mark_of_the_fallen_champion'),
+( 72155, 'spell_icc_harvest_blight_specimen'),
+( 72162, 'spell_icc_harvest_blight_specimen'),
( 71123, 'spell_stinky_precious_decimate'),
( 73032, 'spell_festergut_pungent_blight'),
( 73031, 'spell_festergut_pungent_blight'),
@@ -1928,6 +1931,18 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 71222, 'spell_festergut_blighted_spores'),
( 73033, 'spell_festergut_blighted_spores'),
( 73034, 'spell_festergut_blighted_spores'),
+( 69159, 'spell_festergut_gaseous_blight'),
+( 70135, 'spell_festergut_gaseous_blight'),
+( 70136, 'spell_festergut_gaseous_blight'),
+( 70137, 'spell_festergut_gaseous_blight'),
+( 69161, 'spell_festergut_gaseous_blight'),
+( 70138, 'spell_festergut_gaseous_blight'),
+( 70139, 'spell_festergut_gaseous_blight'),
+( 70140, 'spell_festergut_gaseous_blight'),
+( 69163, 'spell_festergut_gaseous_blight'),
+( 70468, 'spell_festergut_gaseous_blight'),
+( 70469, 'spell_festergut_gaseous_blight'),
+( 70470, 'spell_festergut_gaseous_blight'),
( 69782, 'spell_rotface_ooze_flood'),
( 69796, 'spell_rotface_ooze_flood'),
( 69798, 'spell_rotface_ooze_flood'),
@@ -1938,6 +1953,10 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 69839, 'spell_rotface_unstable_ooze_explosion_init'),
( 69832, 'spell_rotface_unstable_ooze_explosion'),
( 71441, 'spell_rotface_unstable_ooze_explosion_suicide'),
+( 69507, 'spell_rotface_slime_spray'),
+( 71213, 'spell_rotface_slime_spray'),
+( 73189, 'spell_rotface_slime_spray'),
+( 73190, 'spell_rotface_slime_spray'),
( 70701, 'spell_putricide_expunged_gas'),
( 70343, 'spell_putricide_slime_puddle'),
( 70351, 'spell_putricide_unstable_experiment'),
diff --git a/sql/updates/world/2011_02_18_0_world_pool_quest.sql b/sql/updates/world/2011_02_18_0_world_pool_quest.sql
index 0ea5d42026e..6c386e8b77b 100644
--- a/sql/updates/world/2011_02_18_0_world_pool_quest.sql
+++ b/sql/updates/world/2011_02_18_0_world_pool_quest.sql
@@ -1,6 +1,6 @@
-- ICC Quest pools (also deletes old pool data)
SET @pool := 5662;
-DELETE FROM `pool_quest` WHERE `pool_entry` BETWEEN @pool+18 AND @pool+22;
+DELETE FROM `pool_quest` WHERE `pool_entry` BETWEEN @pool+17 AND @pool+22;
INSERT INTO `pool_quest` (`entry`,`pool_entry`,`description`) VALUES
(24874,@pool+17, 'Blood Quickening (10)'),
(24869,@pool+17, 'Deprogramming (10)'),
@@ -15,7 +15,7 @@ INSERT INTO `pool_quest` (`entry`,`pool_entry`,`description`) VALUES
(24876,@pool+20, 'Securing the Ramparts ALLY (25)'),
(24877,@pool+20, 'Securing the Ramparts HORDE (25)');
-DELETE FROM `pool_template` WHERE `entry` BETWEEN @pool+18 AND @pool+22;
+DELETE FROM `pool_template` WHERE `entry` BETWEEN @pool+17 AND @pool+22;
INSERT INTO `pool_template` (`entry`,`max_limit`,`description`) VALUES
(@pool+17,1, 'ICC weeklies (10)'),
(@pool+18,1, 'ICC weeklies (25)'),
diff --git a/sql/updates/world/2011_02_19_0_world_conditions.sql b/sql/updates/world/2011_02_19_0_world_conditions.sql
new file mode 100644
index 00000000000..23ca7bb5766
--- /dev/null
+++ b/sql/updates/world/2011_02_19_0_world_conditions.sql
@@ -0,0 +1,4 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (72155,72162);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,0,72155,0,18,1,0,0,0, '', 'Harvest Blight Specimen - player target'),
+(13,0,72162,0,18,1,0,0,0, '', 'Harvest Blight Specimen - player target');
diff --git a/sql/updates/world/2011_02_19_0_world_creature_template.sql b/sql/updates/world/2011_02_19_0_world_creature_template.sql
new file mode 100644
index 00000000000..edfa570115a
--- /dev/null
+++ b/sql/updates/world/2011_02_19_0_world_creature_template.sql
@@ -0,0 +1,2 @@
+UPDATE `creature_template` SET `difficulty_entry_1`=38717 WHERE `entry`=38501;
+UPDATE `creature_template` SET `minlevel`=80,`maxlevel`=80,`exp`=2,`unit_class`=1,`faction_A`=2070,`faction_H`=2070,`npcflag`=2,`dynamicflags`=8,`unit_flags`=33280,`unit_class`=8 WHERE `entry`=38717; -- Alchemist Adrianna (1)
diff --git a/sql/updates/world/2011_02_19_0_world_scriptname.sql b/sql/updates/world/2011_02_19_0_world_scriptname.sql
new file mode 100644
index 00000000000..4901cb763ae
--- /dev/null
+++ b/sql/updates/world/2011_02_19_0_world_scriptname.sql
@@ -0,0 +1 @@
+UPDATE `creature_template` SET `ScriptName`='npc_alchemist_adrianna' WHERE `entry`=38501;
diff --git a/sql/updates/world/2011_02_19_0_world_spell_script_names.sql b/sql/updates/world/2011_02_19_0_world_spell_script_names.sql
new file mode 100644
index 00000000000..709344ae76d
--- /dev/null
+++ b/sql/updates/world/2011_02_19_0_world_spell_script_names.sql
@@ -0,0 +1,22 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_icc_harvest_blight_specimen';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_festergut_gaseous_blight';
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_rotface_slime_spray';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(72155,'spell_icc_harvest_blight_specimen'),
+(72162,'spell_icc_harvest_blight_specimen'),
+(69159,'spell_festergut_gaseous_blight'),
+(70135,'spell_festergut_gaseous_blight'),
+(70136,'spell_festergut_gaseous_blight'),
+(70137,'spell_festergut_gaseous_blight'),
+(69161,'spell_festergut_gaseous_blight'),
+(70138,'spell_festergut_gaseous_blight'),
+(70139,'spell_festergut_gaseous_blight'),
+(70140,'spell_festergut_gaseous_blight'),
+(69163,'spell_festergut_gaseous_blight'),
+(70468,'spell_festergut_gaseous_blight'),
+(70469,'spell_festergut_gaseous_blight'),
+(70470,'spell_festergut_gaseous_blight'),
+(69507,'spell_rotface_slime_spray'),
+(71213,'spell_rotface_slime_spray'),
+(73189,'spell_rotface_slime_spray'),
+(73190,'spell_rotface_slime_spray');
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 5ae6328a63a..a24ffc5711e 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -7856,7 +7856,7 @@ void ObjectMgr::LoadQuestRelationsHelper(QuestRelations& map, std::string table,
if (mQuestTemplates.find(quest) == mQuestTemplates.end())
{
- sLog->outErrorDb("Table `%s: Quest %u listed for entry %u does not exist.", table.c_str(), quest, id);
+ sLog->outErrorDb("Table `%s`: Quest %u listed for entry %u does not exist.", table.c_str(), quest, id);
continue;
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
index 576ac2db454..9b85b568a95 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_festergut.cpp
@@ -463,6 +463,42 @@ class spell_festergut_blighted_spores : public SpellScriptLoader
}
};
+class spell_festergut_gaseous_blight : public SpellScriptLoader
+{
+ public:
+ spell_festergut_gaseous_blight() : SpellScriptLoader("spell_festergut_gaseous_blight") { }
+
+ class spell_festergut_gaseous_blight_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_festergut_gaseous_blight_SpellScript);
+
+ bool Validate(SpellEntry const* /*spell*/)
+ {
+ if (!sSpellStore.LookupEntry(SPELL_ORANGE_BLIGHT_RESIDUE))
+ return false;
+ return true;
+ }
+
+ void ExtraEffect()
+ {
+ if (GetHitUnit()->HasAura(SPELL_ORANGE_BLIGHT_RESIDUE))
+ return;
+
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_ORANGE_BLIGHT_RESIDUE, true);
+ }
+
+ void Register()
+ {
+ AfterHit += SpellHitFn(spell_festergut_gaseous_blight_SpellScript::ExtraEffect);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_festergut_gaseous_blight_SpellScript();
+ }
+};
+
class achievement_flu_shot_shortage : public AchievementCriteriaScript
{
public:
@@ -484,5 +520,6 @@ void AddSC_boss_festergut()
new spell_festergut_pungent_blight();
new spell_festergut_gastric_bloat();
new spell_festergut_blighted_spores();
+ new spell_festergut_gaseous_blight();
new achievement_flu_shot_shortage();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
index efe33f6bd74..306e00bbbe7 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp
@@ -208,7 +208,7 @@ class boss_rotface : public CreatureScript
events.ScheduleEvent(EVENT_SLIME_SPRAY, 20000);
break;
case EVENT_HASTEN_INFECTIONS:
- if (infectionStage < 4)
+ if (infectionStage++ < 4)
{
infectionCooldown -= 2000;
events.ScheduleEvent(EVENT_HASTEN_INFECTIONS, 90000);
@@ -722,6 +722,42 @@ class spell_rotface_unstable_ooze_explosion_suicide : public SpellScriptLoader
}
};
+class spell_rotface_slime_spray : public SpellScriptLoader
+{
+ public:
+ spell_rotface_slime_spray() : SpellScriptLoader("spell_rotface_slime_spray") { }
+
+ class spell_rotface_slime_spray_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_rotface_slime_spray_SpellScript);
+
+ bool Validate(SpellEntry const* /*spell*/)
+ {
+ if (!sSpellStore.LookupEntry(SPELL_GREEN_BLIGHT_RESIDUE))
+ return false;
+ return true;
+ }
+
+ void ExtraEffect()
+ {
+ if (GetHitUnit()->HasAura(SPELL_GREEN_BLIGHT_RESIDUE))
+ return;
+
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_GREEN_BLIGHT_RESIDUE, true);
+ }
+
+ void Register()
+ {
+ AfterHit += SpellHitFn(spell_rotface_slime_spray_SpellScript::ExtraEffect);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_rotface_slime_spray_SpellScript();
+ }
+};
+
void AddSC_boss_rotface()
{
new boss_rotface();
@@ -735,4 +771,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_slime_spray();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
index 826a3638a2a..badbbcc5ac4 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp
@@ -25,7 +25,7 @@
// Weekly quest support
//* Deprogramming (DONE)
//* Securing the Ramparts (DONE)
-//* Residue Rendezvous
+//* Residue Rendezvous (DONE)
//* Blood Quickening // AreaTrigger 5729 starts the timer, pulling BQ before it runs out means success
//* Respite for a Tormented Soul
@@ -38,15 +38,19 @@ enum Texts
enum Spells
{
// Rotting Frost Giant
- SPELL_DEATH_PLAGUE = 72879,
- SPELL_DEATH_PLAGUE_AURA = 72865,
- SPELL_RECENTLY_INFECTED = 72884,
- SPELL_DEATH_PLAGUE_KILL = 72867,
- SPELL_STOMP = 64652,
- SPELL_ARCTIC_BREATH = 72848,
+ SPELL_DEATH_PLAGUE = 72879,
+ SPELL_DEATH_PLAGUE_AURA = 72865,
+ SPELL_RECENTLY_INFECTED = 72884,
+ SPELL_DEATH_PLAGUE_KILL = 72867,
+ SPELL_STOMP = 64652,
+ SPELL_ARCTIC_BREATH = 72848,
// Frost Freeze Trap
- SPELL_COLDFLAME_JETS = 70460,
+ SPELL_COLDFLAME_JETS = 70460,
+
+ // Alchemist Adrianna
+ SPELL_HARVEST_BLIGHT_SPECIMEN = 72155,
+ SPELL_HARVEST_BLIGHT_SPECIMEN25 = 72162,
};
enum Events
@@ -181,6 +185,20 @@ class npc_frost_freeze_trap : public CreatureScript
}
};
+class npc_alchemist_adrianna : public CreatureScript
+{
+ public:
+ npc_alchemist_adrianna() : CreatureScript("npc_alchemist_adrianna") { }
+
+ bool OnGossipHello(Player* player, Creature* creature)
+ {
+ if (!creature->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN) && !creature->FindCurrentSpellBySpellId(SPELL_HARVEST_BLIGHT_SPECIMEN25))
+ if (player->HasAura(SPELL_ORANGE_BLIGHT_RESIDUE) && player->HasAura(SPELL_GREEN_BLIGHT_RESIDUE))
+ creature->CastSpell(creature, SPELL_HARVEST_BLIGHT_SPECIMEN, false);
+ return false;
+ }
+};
+
class DeathPlagueTargetSelector
{
public:
@@ -267,6 +285,39 @@ class spell_frost_giant_death_plague : public SpellScriptLoader
}
};
+class spell_icc_harvest_blight_specimen : public SpellScriptLoader
+{
+ public:
+ spell_icc_harvest_blight_specimen() : SpellScriptLoader("spell_icc_harvest_blight_specimen") { }
+
+ class spell_icc_harvest_blight_specimen_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_icc_harvest_blight_specimen_SpellScript);
+
+ void HandleScript(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue()));
+ }
+
+ void HandleQuestComplete(SpellEffIndex effIndex)
+ {
+ GetHitUnit()->RemoveAurasDueToSpell(uint32(GetEffectValue()));
+ }
+
+ void Register()
+ {
+ OnEffect += SpellEffectFn(spell_icc_harvest_blight_specimen_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ OnEffect += SpellEffectFn(spell_icc_harvest_blight_specimen_SpellScript::HandleQuestComplete, EFFECT_1, SPELL_EFFECT_QUEST_COMPLETE);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_icc_harvest_blight_specimen_SpellScript();
+ }
+};
+
class at_icc_saurfang_portal : public AreaTriggerScript
{
public:
@@ -318,7 +369,9 @@ void AddSC_icecrown_citadel()
{
new npc_rotting_frost_giant();
new npc_frost_freeze_trap();
+ new npc_alchemist_adrianna();
new spell_frost_giant_death_plague();
+ new spell_icc_harvest_blight_specimen();
new at_icc_saurfang_portal();
new at_icc_shutdown_traps();
}
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
index 3624e5b916b..b9fd8d5ca3f 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
+++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h
@@ -20,11 +20,15 @@
#define ICCScriptName "instance_icecrown_citadel"
-// Shared spells used by every boss
+// Shared spells used by more than one script
enum SharedSpells
{
- SPELL_BERSERK = 26662,
- SPELL_BERSERK2 = 47008
+ SPELL_BERSERK = 26662,
+ SPELL_BERSERK2 = 47008,
+
+ // Residue Rendezvous
+ SPELL_ORANGE_BLIGHT_RESIDUE = 72144,
+ SPELL_GREEN_BLIGHT_RESIDUE = 72145,
};
enum TeleporterSpells
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
index 9d8349c84cb..cd9ee220c6b 100755
--- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp
@@ -227,14 +227,16 @@ class instance_icecrown_citadel : public InstanceMapScript
case NPC_ALRIN_THE_AGILE:
case NPC_VALITHRIA_DREAMWALKER_QUEST:
{
- uint8 questIndex = 0;
- for (; questIndex < 5; ++questIndex)
+ for (uint8 questIndex = 0; questIndex < 5; ++questIndex)
+ {
if (WeeklyQuestData[questIndex].npcStart == entry)
+ {
+ uint8 diffIndex = instance->GetSpawnMode() & 1;
+ if (!sPoolMgr->IsSpawnedObject<Quest>(WeeklyQuestData[questIndex].questId[diffIndex]))
+ entry = 0;
break;
-
- uint8 diffIndex = instance->GetSpawnMode() & 1;
- if (!sPoolMgr->IsSpawnedObject<Quest>(WeeklyQuestData[questIndex].questId[diffIndex]))
- entry = 0;
+ }
+ }
break;
}
default: