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:
@@ -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'),
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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');
|
||||
@@ -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');
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user