Scripts/Icecrown Citadel: Added Blood Prince Council script

Scripts/Icecrown Citadel: Festergut will not cast Vile Gas on melee targets if there are at least 3 (25 man: 8) ranged targets
Scripts/Icecrown Citadel: Festergut and Rotface gates will close with delay (when Putricide reaches the balcony)
Scripts/Icecrown Citadel: Replaced ASSERT(instance) with code disabling the AI if not inside instance
Core/Spells: Fixed TARGET_DEST_TARGET_RANDOM usage
Core/Scripts: Extended DamageDealt in AI to accept damage type as 3rd parameter
Scripts/Quests: Fixed quest "Unholy Infusion" (24749)

--HG--
branch : trunk
This commit is contained in:
Shauren
2010-10-24 21:27:02 +02:00
parent 07fa1bcbdf
commit d03aeab9ad
26 changed files with 1879 additions and 87 deletions
+14
View File
@@ -26871,6 +26871,20 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 72457, 'spell_putricide_regurgitated_ooze'),
( 72875, 'spell_putricide_regurgitated_ooze'),
( 72876, 'spell_putricide_regurgitated_ooze'),
( 71598, 'spell_creature_permanent_feign_death'),
( 71806, 'spell_taldaram_glittering_sparks'),
( 71718, 'spell_taldaram_summon_flame_ball'),
( 72040, 'spell_taldaram_summon_flame_ball'),
( 55891, 'spell_taldaram_flame_ball_visual'),
( 55947, 'spell_taldaram_flame_ball_visual'),
( 71756, 'spell_taldaram_ball_of_inferno_flame'),
( 72782, 'spell_taldaram_ball_of_inferno_flame'),
( 72783, 'spell_taldaram_ball_of_inferno_flame'),
( 72784, 'spell_taldaram_ball_of_inferno_flame'),
( 72080, 'spell_valanar_kinetic_bomb'),
( 72087, 'spell_valanar_kinetic_bomb_knockback'),
( 73001, 'spell_blood_council_shadow_prison'),
( 72999, 'spell_blood_council_shadow_prison_damage'),
-- Ulduar
( 62717, 'spell_ignis_slag_pot'),
( 63477, 'spell_ignis_slag_pot'),
+27
View File
@@ -2909,6 +2909,33 @@ INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1`
(36678,-1631113,'Great news, everyone!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17118,1,0,0,'SAY_BERSERK'),
(36678,-1631114,'Bad news, everyone! I don''t think I''m going to make it.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,17117,1,0,0,'SAY_DEATH'),
-- Blood Prince Council
(38004,-1631115,'Foolish mortals. You thought us defeated so easily? The San''layn are the Lich King''s immortal soldiers! Now you shall face their might combined!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16795,1,0,1,'SAY_INTRO_1'),
(38004,-1631116,'Rise up, brothers, and destroy our enemies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16796,1,0,0,'SAY_INTRO_2'),
(37972,-1631117,'Such wondrous power! The Darkfallen Orb has made me INVINCIBLE!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16727,1,0,0,'SAY_KELESETH_INVOCATION'),
(37972,-1631118,'Invocation of Blood jumps to Prince Keleseth!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_KELESETH_INVOCATION'),
(37972,-1631119,'Blood will flow!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16728,1,0,0,'SAY_KELESETH_SPECIAL'),
(37972,-1631120,'Were you ever a threat?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16723,1,0,0,'SAY_KELESETH_KILL_1'),
(37972,-1631121,'Truth is found in death.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16724,1,0,0,'SAY_KELESETH_KILL_2'),
(37972,-1631122,'%s cackles maniacally!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16726,2,0,0,'EMOTE_KELESETH_BERSERK'),
(37972,-1631123,'My queen... they come...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16725,1,0,0,'SAY_KELESETH_DEATH'),
(37973,-1631124,'Tremble before Taldaram, mortals, for the power of the orb flows through me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16857,1,0,0,'SAY_TALDARAM_INVOCATION'),
(37973,-1631125,'Invocation of Blood jumps to Prince Taldaram!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_INVOCATION'),
(37973,-1631126,'Delight in the pain!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16858,1,0,0,'SAY_TALDARAM_SPECIAL'),
(37973,-1631127,'Inferno Flames speed toward $N!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_FLAME'),
(37973,-1631128,'Worm food.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16853,1,0,0,'SAY_TALDARAM_KILL_1'),
(37973,-1631129,'Beg for mercy!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16854,1,0,0,'SAY_TALDARAM_KILL_2'),
(37973,-1631130,'%s laughs.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16856,2,0,0,'EMOTE_TALDARAM_BERSERK'),
(37973,-1631131,'%s gurgles and dies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16855,2,0,0,'EMOTE_TALDARAM_DEATH'),
(37970,-1631132,'Naxxanar was merely a setback! With the power of the orb, Valanar will have his vengeance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16685,1,0,0,'SAY_VALANAR_INVOCATION'),
(37970,-1631133,'Invocation of Blood jumps to Prince Valanar!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_INVOCATION'),
(37970,-1631134,'My cup runneth over.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16686,1,0,0,'SAY_VALANAR_SPECIAL'),
(37970,-1631135,'%s begins casting Empowered Schock Vortex!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_SHOCK_VORTEX'),
(37970,-1631136,'Dinner... is served.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16681,1,0,0,'SAY_VALANAR_KILL_1'),
(37970,-1631137,'Do you see NOW the power of the Darkfallen?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16682,1,0,0,'SAY_VALANAR_KILL_2'),
(37970,-1631138,'BOW DOWN BEFORE THE SAN''LAYN!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16684,1,0,0,'SAY_VALANAR_BERSERK'),
(37970,-1631139,'...why...?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16683,1,0,0,'SAY_VALANAR_DEATH'),
-- -1 632 000 ICECROWN CITADEL: FROZEN HALLS: FORGE OF SOULS
-- Bronjham
(36497,-1632001,'Finally...a captive audience!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16595,1,0,0,'Bronjham SAY_AGGRO'),
+8
View File
@@ -850,6 +850,14 @@ UPDATE `creature_template` SET `ScriptName`='npc_big_ooze' WHERE `entry`=36899;
UPDATE `creature_template` SET `ScriptName`='npc_precious_icc' WHERE `entry`=37217;
UPDATE `creature_template` SET `ScriptName`='boss_professor_putricide' WHERE `entry`=36678;
UPDATE `creature_template` SET `ScriptName`='npc_volatile_ooze' WHERE `entry`=37697;
UPDATE `creature_template` SET `ScriptName`='boss_blood_council_controller' WHERE `entry`=38008;
UPDATE `creature_template` SET `ScriptName`='boss_prince_keleseth_icc' WHERE `entry`=37972;
UPDATE `creature_template` SET `ScriptName`='boss_prince_taldaram_icc' WHERE `entry`=37973;
UPDATE `creature_template` SET `ScriptName`='boss_prince_valanar_icc' WHERE `entry`=37970;
UPDATE `creature_template` SET `ScriptName`='npc_blood_queen_lana_thel' WHERE `entry`=38004;
UPDATE `creature_template` SET `ScriptName`='npc_kinetic_bomb' WHERE `entry`=38454;
UPDATE `creature_template` SET `ScriptName`='npc_dark_nucleus' WHERE `entry`=38369;
UPDATE `creature_template` SET `ScriptName`='npc_ball_of_flame' WHERE `entry` IN (38332,38451);
/* IRONFORGE */
UPDATE `creature_template` SET `ScriptName`='npc_royal_historian_archesonus' WHERE `entry`=8879;
+27
View File
@@ -0,0 +1,27 @@
DELETE FROM `script_texts` WHERE `entry` BETWEEN -1631139 AND -1631115;
INSERT INTO `script_texts` (`npc_entry`,`entry`,`content_default`,`content_loc1`,`content_loc2`,`content_loc3`,`content_loc4`,`content_loc5`,`content_loc6`,`content_loc7`,`content_loc8`,`sound`,`type`,`language`,`emote`,`comment`) VALUES
(38004,-1631115,'Foolish mortals. You thought us defeated so easily? The San''layn are the Lich King''s immortal soldiers! Now you shall face their might combined!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16795,1,0,1,'SAY_INTRO_1'),
(38004,-1631116,'Rise up, brothers, and destroy our enemies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16796,1,0,0,'SAY_INTRO_2'),
(37972,-1631117,'Such wondrous power! The Darkfallen Orb has made me INVINCIBLE!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16727,1,0,0,'SAY_KELESETH_INVOCATION'),
(37972,-1631118,'Invocation of Blood jumps to Prince Keleseth!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_KELESETH_INVOCATION'),
(37972,-1631119,'Blood will flow!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16728,1,0,0,'SAY_KELESETH_SPECIAL'),
(37972,-1631120,'Were you ever a threat?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16723,1,0,0,'SAY_KELESETH_KILL_1'),
(37972,-1631121,'Truth is found in death.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16724,1,0,0,'SAY_KELESETH_KILL_2'),
(37972,-1631122,'%s cackles maniacally!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16726,2,0,0,'EMOTE_KELESETH_BERSERK'),
(37972,-1631123,'My queen... they come...',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16725,1,0,0,'SAY_KELESETH_DEATH'),
(37973,-1631124,'Tremble before Taldaram, mortals, for the power of the orb flows through me!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16857,1,0,0,'SAY_TALDARAM_INVOCATION'),
(37973,-1631125,'Invocation of Blood jumps to Prince Taldaram!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_INVOCATION'),
(37973,-1631126,'Delight in the pain!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16858,1,0,0,'SAY_TALDARAM_SPECIAL'),
(37973,-1631127,'Inferno Flames speed toward $N!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_TALDARAM_FLAME'),
(37973,-1631128,'Worm food.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16853,1,0,0,'SAY_TALDARAM_KILL_1'),
(37973,-1631129,'Beg for mercy!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16854,1,0,0,'SAY_TALDARAM_KILL_2'),
(37973,-1631130,'%s laughs.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16856,2,0,0,'EMOTE_TALDARAM_BERSERK'),
(37973,-1631131,'%s gurgles and dies.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16855,2,0,0,'EMOTE_TALDARAM_DEATH'),
(37970,-1631132,'Naxxanar was merely a setback! With the power of the orb, Valanar will have his vengeance!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16685,1,0,0,'SAY_VALANAR_INVOCATION'),
(37970,-1631133,'Invocation of Blood jumps to Prince Valanar!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_INVOCATION'),
(37970,-1631134,'My cup runneth over.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16686,1,0,0,'SAY_VALANAR_SPECIAL'),
(37970,-1631135,'%s begins casting Empowered Schock Vortex!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,3,0,0,'EMOTE_VALANAR_SHOCK_VORTEX'),
(37970,-1631136,'Dinner... is served.',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16681,1,0,0,'SAY_VALANAR_KILL_1'),
(37970,-1631137,'Do you see NOW the power of the Darkfallen?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16682,1,0,0,'SAY_VALANAR_KILL_2'),
(37970,-1631138,'BOW DOWN BEFORE THE SAN''LAYN!',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16684,1,0,0,'SAY_VALANAR_BERSERK'),
(37970,-1631139,'...why...?',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,16683,1,0,0,'SAY_VALANAR_DEATH');
+8
View File
@@ -0,0 +1,8 @@
UPDATE `creature_template` SET `ScriptName`='boss_blood_council_controller' WHERE `entry`=38008;
UPDATE `creature_template` SET `ScriptName`='boss_prince_keleseth_icc' WHERE `entry`=37972;
UPDATE `creature_template` SET `ScriptName`='boss_prince_taldaram_icc' WHERE `entry`=37973;
UPDATE `creature_template` SET `ScriptName`='boss_prince_valanar_icc' WHERE `entry`=37970;
UPDATE `creature_template` SET `ScriptName`='npc_blood_queen_lana_thel' WHERE `entry`=38004;
UPDATE `creature_template` SET `ScriptName`='npc_kinetic_bomb' WHERE `entry`=38454;
UPDATE `creature_template` SET `ScriptName`='npc_dark_nucleus' WHERE `entry`=38369;
UPDATE `creature_template` SET `ScriptName`='npc_ball_of_flame' WHERE `entry` IN (38332,38451);
@@ -0,0 +1,25 @@
DELETE FROM `spell_script_names` WHERE `spell_id`=71598 AND `ScriptName`='spell_creature_permanent_feign_death';
DELETE FROM `spell_script_names` WHERE `spell_id`=71806 AND `ScriptName`='spell_taldaram_glittering_sparks';
DELETE FROM `spell_script_names` WHERE `spell_id` IN (71718,72040) AND `ScriptName`='spell_taldaram_summon_flame_ball';
DELETE FROM `spell_script_names` WHERE `spell_id` IN (55891,55947) AND `ScriptName`='spell_taldaram_flame_ball_visual';
DELETE FROM `spell_script_names` WHERE `spell_id` IN (71756,72782,72783,72783) AND `ScriptName`='spell_taldaram_ball_of_inferno_flame';
DELETE FROM `spell_script_names` WHERE `spell_id`=72080 AND `ScriptName`='spell_valanar_kinetic_bomb';
DELETE FROM `spell_script_names` WHERE `spell_id`=72087 AND `ScriptName`='spell_valanar_kinetic_bomb_knockback';
DELETE FROM `spell_script_names` WHERE `spell_id`=73001 AND `ScriptName`='spell_blood_council_shadow_prison';
DELETE FROM `spell_script_names` WHERE `spell_id`=72999 AND `ScriptName`='spell_blood_council_shadow_prison_damage';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(71598,'spell_creature_permanent_feign_death'),
(71806,'spell_taldaram_glittering_sparks'),
(71718,'spell_taldaram_summon_flame_ball'),
(72040,'spell_taldaram_summon_flame_ball'),
(55891,'spell_taldaram_flame_ball_visual'),
(55947,'spell_taldaram_flame_ball_visual'),
(71756,'spell_taldaram_ball_of_inferno_flame'),
(72782,'spell_taldaram_ball_of_inferno_flame'),
(72783,'spell_taldaram_ball_of_inferno_flame'),
(72784,'spell_taldaram_ball_of_inferno_flame'),
(72080,'spell_valanar_kinetic_bomb'),
(72087,'spell_valanar_kinetic_bomb_knockback'),
(73001,'spell_blood_council_shadow_prison'),
(72999,'spell_blood_council_shadow_prison_damage');
+1 -1
View File
@@ -94,7 +94,7 @@ class CreatureAI : public UnitAI
virtual void EnterCombat(Unit* /*enemy*/) {}
// Called at any Damage to any victim (before damage apply)
virtual void DamageDealt(Unit * /*done_to*/, uint32 & /*damage*/) { }
virtual void DamageDealt(Unit * /*done_to*/, uint32 & /*damage*/, DamageEffectType /*damagetype*/) { }
// Called at any Damage from any attacker (before damage apply)
// Note: it for recalculation damage or special reaction at damage
+1 -1
View File
@@ -98,7 +98,7 @@ void SmartAI::SpellHitTarget(Unit* /*target*/, const SpellEntry* /*pSpell*/)
{
}
void SmartAI::DamageTaken(Unit* /*done_by*/, uint32& /*damage*/)
void SmartAI::DamageTaken(Unit* /*done_by*/, uint32& /*damage*/, DamageEffectType /*damagetype*/)
{
}
+1 -1
View File
@@ -289,7 +289,7 @@ class SmartAI : public CreatureAI
void SpellHitTarget(Unit* target, const SpellEntry*);
// Called at any Damage from any attacker (before damage apply)
void DamageTaken(Unit* done_by, uint32& damage);
void DamageTaken(Unit* done_by, uint32& damage, DamageEffectType damagetype);
// Called when the creature receives heal
void HealReceived(Unit* done_by, uint32& addhealth);
+8 -1
View File
@@ -549,7 +549,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
pVictim->ToCreature()->AI()->DamageTaken(this, damage);
if (GetTypeId() == TYPEID_UNIT && this->ToCreature()->IsAIEnabled)
this->ToCreature()->AI()->DamageDealt(pVictim, damage);
this->ToCreature()->AI()->DamageDealt(pVictim, damage, damagetype);
if (damagetype != NODAMAGE)
{
@@ -7930,6 +7930,13 @@ bool Unit::HandleAuraProc(Unit * pVictim, uint32 damage, Aura * triggeredByAura,
RemoveAuraFromStack(71564);
*handled = true;
break;
case 71756:
case 72782:
case 72783:
case 72784:
RemoveAuraFromStack(dummySpell->Id);
*handled = true;
break;
}
break;
case SPELLFAMILY_PALADIN:
-1
View File
@@ -5259,7 +5259,6 @@ void ObjectMgr::ValidateSpellScripts()
SpellEntry const * spellEntry = sSpellStore.LookupEntry(itr->first);
std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> > SpellScriptLoaders;
sScriptMgr.CreateSpellScriptLoaders(itr->first, SpellScriptLoaders);
SpellScriptsMap::iterator bitr;
itr = mSpellScripts.upper_bound(itr->first);
for (std::vector<std::pair<SpellScriptLoader *, SpellScriptsMap::iterator> >::iterator sitr = SpellScriptLoaders.begin(); sitr != SpellScriptLoaders.end(); ++sitr)
@@ -448,6 +448,7 @@ void AddSC_boss_deathbringer_saurfang();
void AddSC_boss_festergut();
void AddSC_boss_rotface();
void AddSC_boss_professor_putricide();
void AddSC_boss_blood_prince_council();
void AddSC_icecrown_citadel_teleport();
void AddSC_instance_icecrown_citadel();
@@ -1108,6 +1109,7 @@ void AddNorthrendScripts()
AddSC_boss_festergut();
AddSC_boss_rotface();
AddSC_boss_professor_putricide();
AddSC_boss_blood_prince_council();
AddSC_icecrown_citadel_teleport();
AddSC_instance_icecrown_citadel();
@@ -2245,9 +2245,16 @@ void AuraEffect::TriggerSpell(Unit * target, Unit * caster) const
return;
}
// Tear of Azzinoth Summon Channel - it's not really supposed to do anything,and this only prevents the console spam
case 39857: triggerSpellId = 39856; break;
case 39857:
triggerSpellId = 39856;
break;
// Personalized Weather
case 46736: triggerSpellId = 46737; break;
case 46736:
triggerSpellId = 46737;
break;
// Ball of Flames Visual
case 71706:
return;
}
break;
}
+1 -1
View File
@@ -2207,7 +2207,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
dist = (float)target->GetSpellRadiusForTarget(target, sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i]));
if (dist < objSize)
dist = objSize;
else if (cur == TARGET_DEST_CASTER_RANDOM)
else if (cur == TARGET_DEST_TARGET_RANDOM)
dist = objSize + (dist - objSize) * (float)rand_norm();
switch(cur)
+7
View File
@@ -3928,6 +3928,13 @@ void SpellMgr::LoadSpellCustomAttr()
spellInfo->EffectImplicitTargetB[0] = TARGET_UNIT_TARGET_ENEMY;
count++;
break;
case 71708: // Empowered Flare
case 72785: // Empowered Flare
case 72786: // Empowered Flare
case 72787: // Empowered Flare
spellInfo->AttributesEx3 |= SPELL_ATTR_EX3_NO_DONE_BONUS;
count++;
break;
default:
break;
}
@@ -187,7 +187,7 @@ class boss_janalai : public CreatureScript
// DoZoneInCombat();
}
void DamageDealt(Unit *pTarget, uint32 &damage)
void DamageDealt(Unit *pTarget, uint32 &damage, DamageEffectType /*damagetype*/)
{
if (isFlameBreathing)
{
@@ -151,6 +151,7 @@ set(scripts_STAT_SRCS
Northrend/IcecrownCitadel/boss_festergut.cpp
Northrend/IcecrownCitadel/boss_rotface.cpp
Northrend/IcecrownCitadel/boss_professor_putricide.cpp
Northrend/IcecrownCitadel/boss_blood_prince_council.cpp
Northrend/zuldrak.cpp
Northrend/icecrown.cpp
Northrend/Gundrak/boss_slad_ran.cpp
File diff suppressed because it is too large Load Diff
@@ -233,12 +233,19 @@ class boss_deathbringer_saurfang : public CreatureScript
{
boss_deathbringer_saurfangAI(Creature* pCreature) : BossAI(pCreature, DATA_DEATHBRINGER_SAURFANG)
{
ASSERT(instance);
ASSERT(pCreature->GetVehicleKit()); // we dont actually use it, just check if exists
bIntroDone = false;
uiFallenChampionCount = 0;
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
events.Reset();
@@ -80,12 +80,19 @@ class boss_festergut : public CreatureScript
{
boss_festergutAI(Creature* pCreature) : BossAI(pCreature, DATA_FESTERGUT)
{
ASSERT(instance);
uiMaxInoculatedStack = 0;
uiInhaleCounter = 0;
gasDummyGUID = 0;
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
events.Reset();
@@ -115,7 +122,6 @@ class boss_festergut : public CreatureScript
DoScriptText(SAY_AGGRO, me);
if (Creature* gasDummy = GetClosestCreatureWithEntry(me, NPC_GAS_DUMMY, 100.0f, true))
gasDummyGUID = gasDummy->GetGUID();
instance->SetBossState(DATA_FESTERGUT, IN_PROGRESS);
if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
professor->AI()->DoAction(ACTION_FESTERGUT_COMBAT);
@@ -202,10 +208,19 @@ class boss_festergut : public CreatureScript
return;
}
case EVENT_VILE_GAS:
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, -5.0f, true))
{
std::list<Unit*> targets;
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;
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0, minDist, true))
DoCast(target, SPELL_VILE_GAS);
events.ScheduleEvent(EVENT_VILE_GAS, urand(28000, 35000));
break;
}
case EVENT_GAS_SPORE:
DoScriptText(EMOTE_WARN_GAS_SPORE, me);
me->CastCustomSpell(SPELL_GAS_SPORE, SPELLVALUE_MAX_TARGETS, RAID_MODE<int32>(2,3,2,3), me);
@@ -160,11 +160,18 @@ class boss_lady_deathwhisper : public CreatureScript
{
boss_lady_deathwhisperAI(Creature* pCreature) : BossAI(pCreature, DATA_LADY_DEATHWHISPER)
{
ASSERT(instance);
bIntroDone = false;
uiDominateMindCount = RAID_MODE(0,1,1,3);
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
me->SetPower(POWER_MANA, me->GetMaxPower(POWER_MANA));
@@ -81,7 +81,6 @@ class boss_lord_marrowgar : public CreatureScript
{
boss_lord_marrowgarAI(Creature *pCreature) : BossAI(pCreature, DATA_LORD_MARROWGAR)
{
ASSERT(instance);
bIntroDone = false;
uiBoneStormDuration = RAID_MODE(20000,30000,20000,30000);
fBaseSpeed = pCreature->GetSpeedRate(MOVE_RUN);
@@ -89,6 +88,14 @@ class boss_lord_marrowgar : public CreatureScript
coldflameLastPos.Relocate(pCreature);
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
me->SetSpeed(MOVE_RUN, fBaseSpeed, true);
@@ -349,7 +356,7 @@ class npc_bone_spike : public CreatureScript
void JustDied(Unit * /*killer*/)
{
events.Reset();
if (Unit* trapped = Unit::GetUnit((*me), uiTrappedGUID))
if (Player* trapped = ObjectAccessor::GetPlayer(*me, uiTrappedGUID))
trapped->RemoveAurasDueToSpell(SPELL_IMPALED);
}
@@ -364,7 +371,7 @@ class npc_bone_spike : public CreatureScript
return;
events.Update(diff);
Unit* trapped = Unit::GetUnit(*me, uiTrappedGUID);
Player* trapped = ObjectAccessor::GetPlayer(*me, uiTrappedGUID);
if ((trapped && trapped->isAlive() && !trapped->HasAura(SPELL_IMPALED)) || !trapped)
me->Kill(me);
@@ -373,10 +380,11 @@ class npc_bone_spike : public CreatureScript
instance->SetData(DATA_BONED_ACHIEVEMENT, uint32(false));
}
void SetTrappedUnit(Unit* unit)
void SetGUID(const uint64& guid, int32 /*type = 0*/)
{
unit->EnterVehicle(vehicle, 0);
uiTrappedGUID = unit->GetGUID();
uiTrappedGUID = guid;
if (Player* target = ObjectAccessor::GetPlayer(*me, guid))
target->EnterVehicle(vehicle, 0);
}
void PassengerBoarded(Unit * who, int8 /*seatId*/, bool apply)
@@ -460,9 +468,9 @@ class spell_marrowgar_bone_spike_graveyard : public SpellScriptLoader
if (!target)
break;
yell = true;
//marrowgarAI->DoCast(*itr, SPELL_IMPALE); // this is the proper spell but if we use it we dont have any way to assign a victim to it
//GetCaster()->CastSpell(target, SPELL_IMPALE, true); // this is the proper spell but if we use it we dont have any way to assign a victim to it
Creature* pBone = GetCaster()->SummonCreature(NPC_BONE_SPIKE, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_CORPSE_DESPAWN);
CAST_AI(npc_bone_spike::npc_bone_spikeAI, pBone->AI())->SetTrappedUnit(target);
pBone->AI()->SetGUID(target->GetGUID());
}
if (yell)
@@ -75,6 +75,7 @@ enum eSpells
SPELL_PLAGUE_SICKNESS = 70953,
SPELL_UNBOUND_PLAGUE_PROTECTION = 70955,
SPELL_MUTATED_PLAGUE = 72451,
SPELL_UNHOLY_INFUSION_CREDIT = 71518,
// Slime Puddle
SPELL_GROW_STACKER = 70345,
@@ -181,15 +182,22 @@ class boss_professor_putricide : public CreatureScript
boss_professor_putricideAI(Creature* pCreature) : BossAI(pCreature, DATA_PROFESSOR_PUTRICIDE),
fBaseSpeed(pCreature->GetSpeedRate(MOVE_RUN)), bExperimentState(EXPERIMENT_STATE_OOZE)
{
ASSERT(instance);
phase = ePhases(0);
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
if (!(events.GetPhaseMask() & PHASE_MASK_NOT_SELF))
instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, NOT_STARTED);
instance->SetData(DATA_NAUSEA___ACHIEVEMENT, uint32(true));
instance->SetData(DATA_NAUSEA_ACHIEVEMENT, uint32(true));
events.Reset();
summons.DespawnAll();
@@ -238,6 +246,7 @@ class boss_professor_putricide : public CreatureScript
{
DoScriptText(SAY_DEATH, me);
instance->SetBossState(DATA_PROFESSOR_PUTRICIDE, DONE);
DoCastAOE(SPELL_UNHOLY_INFUSION_CREDIT, true);
}
void JustSummoned(Creature* summon)
@@ -253,9 +262,6 @@ class boss_professor_putricide : public CreatureScript
// no possible aura seen in sniff adding the aurastate
summon->SetFlag(UNIT_FIELD_AURASTATE, 1 << (AURA_STATE_UNKNOWN22-1));
summon->CastSpell(summon, SPELL_GASEOUS_BLOAT_PROC, true);
// taunt immunity
summon->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
summon->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_GASEOUS_BLOAT_PROTECTION))
{
summon->AI()->AttackStart(target);
@@ -269,9 +275,6 @@ class boss_professor_putricide : public CreatureScript
// no possible aura seen in sniff adding the aurastate
summon->SetFlag(UNIT_FIELD_AURASTATE, 1 << (AURA_STATE_UNKNOWN19-1));
summon->CastSpell(summon, SPELL_OOZE_ERUPTION_SEARCH_PERIODIC, true);
// taunt immunity
summon->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true);
summon->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true);
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 1, 0.0f, true, -SPELL_VOLATILE_OOZE_PROTECTION))
{
summon->AI()->AttackStart(target);
@@ -320,12 +323,14 @@ class boss_professor_putricide : public CreatureScript
switch (id)
{
case POINT_FESTERGUT:
instance->SetBossState(DATA_FESTERGUT, IN_PROGRESS); // needed here for delayed gate close
me->SetSpeed(MOVE_RUN, fBaseSpeed, true);
DoAction(ACTION_FESTERGUT_GAS);
if (Creature* festergut = Unit::GetCreature(*me, instance->GetData64(DATA_FESTERGUT)))
festergut->CastSpell(festergut, SPELL_GASEOUS_BLIGHT_LARGE, false, NULL, NULL, festergut->GetGUID());
break;
case POINT_ROTFACE:
instance->SetBossState(DATA_ROTFACE, IN_PROGRESS); // needed here for delayed gate close
me->SetSpeed(MOVE_RUN, fBaseSpeed, true);
DoAction(ACTION_ROTFACE_OOZE);
events.ScheduleEvent(EVENT_ROTFACE_OOZE_FLOOD, 25000, 0, PHASE_ROTFACE);
@@ -1271,7 +1276,7 @@ class spell_putricide_regurgitated_ooze : public SpellScriptLoader
void ExtraEffect(SpellEffIndex /*effIndex*/)
{
if (InstanceScript* instance = GetCaster()->GetInstanceScript())
instance->SetData(DATA_NAUSEA___ACHIEVEMENT, uint32(false));
instance->SetData(DATA_NAUSEA_ACHIEVEMENT, uint32(false));
}
void Register()
@@ -86,11 +86,18 @@ class boss_rotface : public CreatureScript
{
boss_rotfaceAI(Creature* pCreature) : BossAI(pCreature, DATA_ROTFACE)
{
ASSERT(instance);
infectionStage = 0;
infectionCooldown = 14000;
}
void InitializeAI()
{
if (!instance || static_cast<InstanceMap*>(me->GetMap())->GetScriptId() != GetScriptId(ICCScriptName))
me->IsAIEnabled = false;
else if (!me->isDead())
Reset();
}
void Reset()
{
events.Reset();
@@ -107,7 +114,6 @@ class boss_rotface : public CreatureScript
void EnterCombat(Unit* /*who*/)
{
DoScriptText(SAY_AGGRO, me);
instance->SetBossState(DATA_ROTFACE, IN_PROGRESS);
if (Creature* professor = Unit::GetCreature(*me, instance->GetData64(DATA_PROFESSOR_PUTRICIDE)))
professor->AI()->DoAction(ACTION_ROTFACE_COMBAT);
@@ -18,6 +18,8 @@
#ifndef DEF_ICECROWN_CITADEL_H
#define DEF_ICECROWN_CITADEL_H
static const char* ICCScriptName = "instance_icecrown_citadel";
enum eSharedSpells
{
SPELL_BERSERK = 26662,
@@ -26,25 +28,29 @@ enum eSharedSpells
enum eData
{
DATA_LORD_MARROWGAR = 0,
DATA_LADY_DEATHWHISPER = 1,
DATA_GUNSHIP_EVENT = 2,
DATA_DEATHBRINGER_SAURFANG = 3,
DATA_FESTERGUT = 4,
DATA_ROTFACE = 5,
DATA_PROFESSOR_PUTRICIDE = 6,
DATA_BLOOD_PRINCE_COUNCIL = 7,
DATA_BLOOD_QUEEN_LANA_THEL = 8,
DATA_VALITHRIA_DREAMWALKER = 9,
DATA_SINDRAGOSA = 10,
DATA_THE_LICH_KING = 11,
DATA_LORD_MARROWGAR = 0,
DATA_LADY_DEATHWHISPER = 1,
DATA_GUNSHIP_EVENT = 2,
DATA_DEATHBRINGER_SAURFANG = 3,
DATA_FESTERGUT = 4,
DATA_ROTFACE = 5,
DATA_PROFESSOR_PUTRICIDE = 6,
DATA_BLOOD_PRINCE_COUNCIL = 7,
DATA_BLOOD_QUEEN_LANA_THEL = 8,
DATA_VALITHRIA_DREAMWALKER = 9,
DATA_SINDRAGOSA = 10,
DATA_THE_LICH_KING = 11,
DATA_SAURFANG_EVENT_NPC = 12,
DATA_BONED_ACHIEVEMENT = 13,
DATA_OOZE_DANCE_ACHIEVEMENT = 14,
DATA_PUTRICIDE_TABLE = 15,
DATA_NAUSEA___ACHIEVEMENT = 16,
DATA_SAURFANG_EVENT_NPC = 12,
DATA_BONED_ACHIEVEMENT = 13,
DATA_OOZE_DANCE_ACHIEVEMENT = 14,
DATA_PUTRICIDE_TABLE = 15,
DATA_NAUSEA_ACHIEVEMENT = 16,
DATA_ORB_WHISPERER_ACHIEVEMENT = 17,
DATA_PRINCE_KELESETH_GUID = 18,
DATA_PRINCE_TALDARAM_GUID = 19,
DATA_PRINCE_VALANAR_GUID = 20,
DATA_BLOOD_PRINCES_CONTROL = 21,
};
#define MAX_ENCOUNTER 12
@@ -110,30 +116,48 @@ enum eCreatures
NPC_VOLATILE_OOZE = 37697,
NPC_CHOKING_GAS_BOMB = 38159,
NPC_TEAR_GAS_TARGET_STALKER = 38317,
// Blood Prince Council
NPC_PRINCE_KELESETH = 37972,
NPC_PRINCE_TALDARAM = 37973,
NPC_PRINCE_VALANAR = 37970,
NPC_BLOOD_ORB_CONTROLLER = 38008,
NPC_FLOATING_TRIGGER = 30298,
NPC_DARK_NUCLEUS = 38369,
NPC_BALL_OF_FLAME = 38332,
NPC_BALL_OF_INFERNO_FLAME = 38451,
NPC_KINETIC_BOMB_TARGET = 38458,
NPC_KINETIC_BOMB = 38454,
NPC_SHOCK_VORTEX = 38422,
};
enum eGameobjects
{
GO_DOODAD_ICECROWN_ICEWALL02 = 201910,
GO_ICEWALL = 201911,
GO_LORD_MARROWGAR_S_ENTRANCE = 201857,
GO_ORATORY_OF_THE_DAMNED_ENTRANCE = 201563,
GO_LADY_DEATHWHISPER_ELEVATOR = 202220,
GO_SAURFANG_S_DOOR = 201825,
GO_DEATHBRINGER_S_CACHE_10N = 202239,
GO_DEATHBRINGER_S_CACHE_25N = 202240,
GO_DEATHBRINGER_S_CACHE_10H = 202238,
GO_DEATHBRINGER_S_CACHE_25H = 202241,
GO_SCOURGE_TRANSPORTER_SAURFANG = 202244,
GO_ORANGE_PLAGUE_MONSTER_ENTRANCE = 201371,
GO_GREEN_PLAGUE_MONSTER_ENTRANCE = 201370,
GO_SCIENTIST_AIRLOCK_DOOR_COLLISION = 201612,
GO_SCIENTIST_AIRLOCK_DOOR_ORANGE = 201613,
GO_SCIENTIST_AIRLOCK_DOOR_GREEN = 201614,
GO_DOODAD_ICECROWN_ORANGETUBES02 = 201617,
GO_DOODAD_ICECROWN_GREENTUBES02 = 201618,
GO_SCIENTIST_ENTRANCE = 201372,
GO_DRINK_ME = 201584,
GO_DOODAD_ICECROWN_ICEWALL02 = 201910,
GO_ICEWALL = 201911,
GO_LORD_MARROWGAR_S_ENTRANCE = 201857,
GO_ORATORY_OF_THE_DAMNED_ENTRANCE = 201563,
GO_LADY_DEATHWHISPER_ELEVATOR = 202220,
GO_SAURFANG_S_DOOR = 201825,
GO_DEATHBRINGER_S_CACHE_10N = 202239,
GO_DEATHBRINGER_S_CACHE_25N = 202240,
GO_DEATHBRINGER_S_CACHE_10H = 202238,
GO_DEATHBRINGER_S_CACHE_25H = 202241,
GO_SCOURGE_TRANSPORTER_SAURFANG = 202244,
GO_ORANGE_PLAGUE_MONSTER_ENTRANCE = 201371,
GO_GREEN_PLAGUE_MONSTER_ENTRANCE = 201370,
GO_SCIENTIST_AIRLOCK_DOOR_COLLISION = 201612,
GO_SCIENTIST_AIRLOCK_DOOR_ORANGE = 201613,
GO_SCIENTIST_AIRLOCK_DOOR_GREEN = 201614,
GO_DOODAD_ICECROWN_ORANGETUBES02 = 201617,
GO_DOODAD_ICECROWN_GREENTUBES02 = 201618,
GO_SCIENTIST_ENTRANCE = 201372,
GO_DRINK_ME = 201584,
GO_CRIMSON_HALL_DOOR = 201376,
GO_BLOOD_ELF_COUNCIL_DOOR = 201378,
GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT = 201377,
GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01 = 201746,
GO_DOODAD_ICECROWN_GRATE_01 = 201755,
};
enum eAchievementCriteria
@@ -150,6 +174,10 @@ enum eAchievementCriteria
CRITERIA_NAUSEA_25N = 12968,
CRITERIA_NAUSEA_10H = 12988,
CRITERIA_NAUSEA_25H = 12981,
CRITERIA_ORB_WHISPERER_10N = 13033,
CRITERIA_ORB_WHISPERER_25N = 12969,
CRITERIA_ORB_WHISPERER_10H = 13034,
CRITERIA_ORB_WHISPERER_25H = 13032,
};
enum ePutricideActions
@@ -18,22 +18,27 @@
#include "ScriptPCH.h"
#include "icecrown_citadel.h"
static const DoorData doorData[8] =
static const DoorData doorData[] =
{
{GO_LORD_MARROWGAR_S_ENTRANCE, DATA_LORD_MARROWGAR, DOOR_TYPE_ROOM, BOUNDARY_N },
{GO_ICEWALL, DATA_LORD_MARROWGAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{GO_DOODAD_ICECROWN_ICEWALL02, DATA_LORD_MARROWGAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{GO_ORATORY_OF_THE_DAMNED_ENTRANCE, DATA_LADY_DEATHWHISPER, DOOR_TYPE_ROOM, BOUNDARY_N },
{GO_ORANGE_PLAGUE_MONSTER_ENTRANCE, DATA_FESTERGUT, DOOR_TYPE_ROOM, BOUNDARY_E },
{GO_GREEN_PLAGUE_MONSTER_ENTRANCE, DATA_ROTFACE, DOOR_TYPE_ROOM, BOUNDARY_E },
{GO_SCIENTIST_ENTRANCE, DATA_PROFESSOR_PUTRICIDE, DOOR_TYPE_ROOM, BOUNDARY_E },
{0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE} // END
{GO_LORD_MARROWGAR_S_ENTRANCE, DATA_LORD_MARROWGAR, DOOR_TYPE_ROOM, BOUNDARY_N },
{GO_ICEWALL, DATA_LORD_MARROWGAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{GO_DOODAD_ICECROWN_ICEWALL02, DATA_LORD_MARROWGAR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{GO_ORATORY_OF_THE_DAMNED_ENTRANCE, DATA_LADY_DEATHWHISPER, DOOR_TYPE_ROOM, BOUNDARY_N },
{GO_ORANGE_PLAGUE_MONSTER_ENTRANCE, DATA_FESTERGUT, DOOR_TYPE_ROOM, BOUNDARY_E },
{GO_GREEN_PLAGUE_MONSTER_ENTRANCE, DATA_ROTFACE, DOOR_TYPE_ROOM, BOUNDARY_E },
{GO_SCIENTIST_ENTRANCE, DATA_PROFESSOR_PUTRICIDE, DOOR_TYPE_ROOM, BOUNDARY_E },
{GO_CRIMSON_HALL_DOOR, DATA_BLOOD_PRINCE_COUNCIL, DOOR_TYPE_ROOM, BOUNDARY_S },
{GO_BLOOD_ELF_COUNCIL_DOOR, DATA_BLOOD_PRINCE_COUNCIL, DOOR_TYPE_PASSAGE, BOUNDARY_W },
{GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT, DATA_BLOOD_PRINCE_COUNCIL, DOOR_TYPE_PASSAGE, BOUNDARY_E },
{GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01, DATA_BLOOD_QUEEN_LANA_THEL, DOOR_TYPE_ROOM, BOUNDARY_S },
{GO_DOODAD_ICECROWN_GRATE_01, DATA_BLOOD_QUEEN_LANA_THEL, DOOR_TYPE_PASSAGE, BOUNDARY_NONE},
{0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE} // END
};
class instance_icecrown_citadel : public InstanceMapScript
{
public:
instance_icecrown_citadel() : InstanceMapScript("instance_icecrown_citadel", 631) { }
instance_icecrown_citadel() : InstanceMapScript(ICCScriptName, 631) { }
struct instance_icecrown_citadel_InstanceMapScript : public InstanceScript
{
@@ -47,16 +52,19 @@ class instance_icecrown_citadel : public InstanceMapScript
uiSaurfangEventNPC = 0;
uiDeathbringersCache = 0;
uiSaurfangTeleport = 0;
memset(uiPutricidePipes, 0, 2*sizeof(uint32));
memset(uiPutricideGates, 0, 2*sizeof(uint32));
memset(uiPutricidePipes, 0, 2*sizeof(uint64));
memset(uiPutricideGates, 0, 2*sizeof(uint64));
uiPutricideCollision = 0;
uiFestergut = 0;
uiRotface = 0;
uiProfessorPutricide = 0;
uiPutricideTable;
uiPutricideTable = 0;
memset(uiBloodCouncil, 0, 3*sizeof(uint64));
uiBloodCouncilController = 0;
isBonedEligible = true;
isOozeDanceEligible = true;
isNauseaEligible = true;
isOrbWhispererEligible = true;
}
void OnCreatureCreate(Creature* creature, bool /*add*/)
@@ -123,6 +131,18 @@ class instance_icecrown_citadel : public InstanceMapScript
case NPC_PROFESSOR_PUTRICIDE:
uiProfessorPutricide = creature->GetGUID();
break;
case NPC_PRINCE_KELESETH:
uiBloodCouncil[0] = creature->GetGUID();
break;
case NPC_PRINCE_TALDARAM:
uiBloodCouncil[1] = creature->GetGUID();
break;
case NPC_PRINCE_VALANAR:
uiBloodCouncil[2] = creature->GetGUID();
break;
case NPC_BLOOD_ORB_CONTROLLER:
uiBloodCouncilController = creature->GetGUID();
break;
default:
break;
}
@@ -139,6 +159,11 @@ class instance_icecrown_citadel : public InstanceMapScript
case GO_ORANGE_PLAGUE_MONSTER_ENTRANCE:
case GO_GREEN_PLAGUE_MONSTER_ENTRANCE:
case GO_SCIENTIST_ENTRANCE:
case GO_CRIMSON_HALL_DOOR:
case GO_BLOOD_ELF_COUNCIL_DOOR:
case GO_BLOOD_ELF_COUNCIL_DOOR_RIGHT:
case GO_DOODAD_ICECROWN_BLOODPRINCE_DOOR_01:
case GO_DOODAD_ICECROWN_GRATE_01:
AddDoor(pGo, add);
break;
case GO_LADY_DEATHWHISPER_ELEVATOR:
@@ -218,7 +243,14 @@ class instance_icecrown_citadel : public InstanceMapScript
return uiProfessorPutricide;
case DATA_PUTRICIDE_TABLE:
return uiPutricideTable;
break;
case DATA_PRINCE_KELESETH_GUID:
return uiBloodCouncil[0];
case DATA_PRINCE_TALDARAM_GUID:
return uiBloodCouncil[1];
case DATA_PRINCE_VALANAR_GUID:
return uiBloodCouncil[2];
case DATA_BLOOD_PRINCES_CONTROL:
return uiBloodCouncilController;
default:
break;
}
@@ -290,13 +322,14 @@ class instance_icecrown_citadel : public InstanceMapScript
HandleGameObject(uiPutricidePipes[1], true);
}
break;
case DATA_PROFESSOR_PUTRICIDE:
case DATA_BLOOD_PRINCE_COUNCIL:
case DATA_BLOOD_QUEEN_LANA_THEL:
case DATA_VALITHRIA_DREAMWALKER:
case DATA_SINDRAGOSA:
case DATA_THE_LICH_KING:
break;
default:
break;
}
return true;
@@ -312,9 +345,12 @@ class instance_icecrown_citadel : public InstanceMapScript
case DATA_OOZE_DANCE_ACHIEVEMENT:
isOozeDanceEligible = data ? true : false;
break;
case DATA_NAUSEA___ACHIEVEMENT:
case DATA_NAUSEA_ACHIEVEMENT:
isNauseaEligible = data ? true : false;
break;
case DATA_ORB_WHISPERER_ACHIEVEMENT:
isOrbWhispererEligible = data ? true : false;
break;
default:
break;
}
@@ -339,6 +375,11 @@ class instance_icecrown_citadel : public InstanceMapScript
case CRITERIA_NAUSEA_10H:
case CRITERIA_NAUSEA_25H:
return isNauseaEligible;
case CRITERIA_ORB_WHISPERER_10N:
case CRITERIA_ORB_WHISPERER_25N:
case CRITERIA_ORB_WHISPERER_10H:
case CRITERIA_ORB_WHISPERER_25H:
return isOrbWhispererEligible;
default:
break;
}
@@ -401,9 +442,12 @@ class instance_icecrown_citadel : public InstanceMapScript
uint64 uiRotface;
uint64 uiProfessorPutricide;
uint64 uiPutricideTable;
uint64 uiBloodCouncil[3];
uint64 uiBloodCouncilController;
bool isBonedEligible;
bool isOozeDanceEligible;
bool isNauseaEligible;
bool isOrbWhispererEligible;
};
InstanceScript* GetInstanceScript(InstanceMap* pMap) const