diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2012-12-01 17:34:00 +0100 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2012-12-01 17:34:00 +0100 |
commit | 7afbacd6e15a46b3ac8e0919ae08f02844bcb2fb (patch) | |
tree | 9e3816fea29b5dc7cfca37348841193ba0068b06 /src | |
parent | 4a66290fb94faf4cdd882cb749008de32f00b298 (diff) |
Core/Ulduar:
- Implemented kill credit for hodir and assembly of iron
- Some cleanup
Diffstat (limited to 'src')
4 files changed, 85 insertions, 115 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp index 0094412895c..db8c7f38ef7 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp @@ -33,6 +33,7 @@ enum AssemblySpells // General SPELL_SUPERCHARGE = 61920, SPELL_BERSERK = 47008, // Hard enrage, don't know the correct ID. + SPELL_KILL_CREDIT = 65195, // spell_dbc // Steelbreaker SPELL_HIGH_VOLTAGE = 61890, @@ -136,9 +137,7 @@ class boss_steelbreaker : public CreatureScript struct boss_steelbreakerAI : public BossAI { - boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) - { - } + boss_steelbreakerAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { } uint32 phase; @@ -185,7 +184,7 @@ class boss_steelbreaker : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - // todo: kill credit + DoCastAOE(SPELL_KILL_CREDIT); Talk(SAY_STEELBREAKER_ENCOUNTER_DEFEATED); } else @@ -267,9 +266,7 @@ class boss_runemaster_molgeim : public CreatureScript struct boss_runemaster_molgeimAI : public BossAI { - boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) - { - } + boss_runemaster_molgeimAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { } uint32 phase; @@ -295,6 +292,7 @@ class boss_runemaster_molgeim : public CreatureScript switch (action) { case ACTION_SUPERCHARGE: + { me->SetFullHealth(); me->AddAura(SPELL_SUPERCHARGE, me); events.SetPhase(++phase); @@ -304,7 +302,8 @@ class boss_runemaster_molgeim : public CreatureScript events.RescheduleEvent(EVENT_RUNE_OF_DEATH, 30000); if (phase >= 3) events.RescheduleEvent(EVENT_RUNE_OF_SUMMONING, urand(20000, 30000)); - break; + break; + } } } @@ -314,7 +313,7 @@ class boss_runemaster_molgeim : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - // todo: kill credit + DoCastAOE(SPELL_KILL_CREDIT); Talk(SAY_MOLGEIM_ENCOUNTER_DEFEATED); } else @@ -416,9 +415,7 @@ class boss_stormcaller_brundir : public CreatureScript struct boss_stormcaller_brundirAI : public BossAI { - boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) - { - } + boss_stormcaller_brundirAI(Creature* creature) : BossAI(creature, BOSS_ASSEMBLY_OF_IRON) { } uint32 phase; @@ -429,7 +426,7 @@ class boss_stormcaller_brundir : public CreatureScript me->RemoveAllAuras(); me->SetDisableGravity(false); me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_INTERRUPT, false); // Should be interruptable unless overridden by spell (Overload) - me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default + me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default } void EnterCombat(Unit* /*who*/) @@ -448,6 +445,7 @@ class boss_stormcaller_brundir : public CreatureScript switch (action) { case ACTION_SUPERCHARGE: + { me->SetFullHealth(); me->AddAura(SPELL_SUPERCHARGE, me); events.SetPhase(++phase); @@ -461,8 +459,8 @@ class boss_stormcaller_brundir : public CreatureScript events.RescheduleEvent(EVENT_LIGHTNING_TENDRILS, urand(50000, 60000)); me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, true); // Apply immumity to stuns } - break; - + break; + } } } @@ -472,7 +470,7 @@ class boss_stormcaller_brundir : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - // todo: kill credit + DoCastAOE(SPELL_KILL_CREDIT); Talk(SAY_BRUNDIR_ENCOUNTER_DEFEATED); } else diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp index ac7c4ce8da5..b894706e0bf 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp @@ -148,7 +148,7 @@ enum FreyaSpells // Attuned To Nature spells SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION = 62524, SPELL_ATTUNED_TO_NATURE_10_DOSE_REDUCTION = 62525, - SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION = 62521, + SPELL_ATTUNED_TO_NATURE_25_DOSE_REDUCTION = 62521 }; enum FreyaNpcs @@ -166,13 +166,13 @@ enum FreyaNpcs NPC_IRON_ROOTS = 33088, NPC_STRENGTHENED_IRON_ROOTS = 33168, - OBJECT_NATURE_BOMB = 194902, + OBJECT_NATURE_BOMB = 194902 }; enum FreyaActions { ACTION_ELDER_DEATH = 1, - ACTION_ELDER_FREYA_KILLED = 2, + ACTION_ELDER_FREYA_KILLED = 2 }; enum FreyaEvents @@ -200,13 +200,16 @@ enum FreyaEvents // Elder Brightleaf EVENT_SOLAR_FLARE = 15, EVENT_UNSTABLE_SUN_BEAM = 16, - EVENT_FLUX = 17, + EVENT_FLUX = 17 }; -#define WAVE_TIME 60000 // Normal wave is one minute -#define TIME_DIFFERENCE 10000 // If difference between waveTime and WAVE_TIME is bigger then TIME_DIFFERENCE, schedule EVENT_WAVE in 10 seconds -#define DATA_GETTING_BACK_TO_NATURE 1 -#define DATA_KNOCK_ON_WOOD 2 +enum Misc +{ + WAVE_TIME = 60000, // Normal wave is one minute + TIME_DIFFERENCE = 10000, // If difference between waveTime and WAVE_TIME is bigger then TIME_DIFFERENCE, schedule EVENT_WAVE in 10 seconds + DATA_GETTING_BACK_TO_NATURE = 1, + DATA_KNOCK_ON_WOOD = 2 +}; class npc_iron_roots : public CreatureScript { @@ -262,9 +265,7 @@ class boss_freya : public CreatureScript struct boss_freyaAI : public BossAI { - boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA) - { - } + boss_freyaAI(Creature* creature) : BossAI(creature, BOSS_FREYA) { } uint64 ElementalGUID[3][2]; @@ -1519,19 +1520,17 @@ class npc_unstable_sun_beam : public CreatureScript class spell_freya_attuned_to_nature_dose_reduction : public SpellScriptLoader { public: - spell_freya_attuned_to_nature_dose_reduction() : SpellScriptLoader("spell_freya_attuned_to_nature_dose_reduction") - { - } + spell_freya_attuned_to_nature_dose_reduction() : SpellScriptLoader("spell_freya_attuned_to_nature_dose_reduction") { } class spell_freya_attuned_to_nature_dose_reduction_SpellScript : public SpellScript { - PrepareSpellScript(spell_freya_attuned_to_nature_dose_reduction_SpellScript) + PrepareSpellScript(spell_freya_attuned_to_nature_dose_reduction_SpellScript); void HandleScript(SpellEffIndex /*effIndex*/) { Unit* target = GetHitUnit(); - SpellInfo const* spellInfo = GetSpellInfo(); - switch (spellInfo->Id) + + switch (GetSpellInfo()->Id) { case SPELL_ATTUNED_TO_NATURE_2_DOSE_REDUCTION: if (target->HasAura(GetEffectValue())) @@ -1568,9 +1567,7 @@ class spell_freya_attuned_to_nature_dose_reduction : public SpellScriptLoader class spell_freya_iron_roots : public SpellScriptLoader { public: - spell_freya_iron_roots() : SpellScriptLoader("spell_freya_iron_roots") - { - } + spell_freya_iron_roots() : SpellScriptLoader("spell_freya_iron_roots") { } class spell_freya_iron_roots_SpellScript : public SpellScript { @@ -1603,80 +1600,44 @@ class spell_freya_iron_roots : public SpellScriptLoader class achievement_getting_back_to_nature : public AchievementCriteriaScript { public: - achievement_getting_back_to_nature() : AchievementCriteriaScript("achievement_getting_back_to_nature") - { - } + achievement_getting_back_to_nature() : AchievementCriteriaScript("achievement_getting_back_to_nature") { } bool OnCheck(Player* /*player*/, Unit* target) { - if (!target) - return false; - - if (Creature* Freya = target->ToCreature()) - if (Freya->AI()->GetData(DATA_GETTING_BACK_TO_NATURE) >= 25) - return true; - - return false; + return target && target->GetAI()->GetData(DATA_GETTING_BACK_TO_NATURE) >= 25; } }; class achievement_knock_on_wood : public AchievementCriteriaScript { public: - achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood") - { - } + achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood") { } bool OnCheck(Player* /*player*/, Unit* target) { - if (!target) - return false; - - if (Creature* Freya = target->ToCreature()) - if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 1) - return true; - - return false; + return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) >= 1; } }; class achievement_knock_knock_on_wood : public AchievementCriteriaScript { public: - achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood") - { - } + achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood") { } bool OnCheck(Player* /*player*/, Unit* target) { - if (!target) - return false; - - if (Creature* Freya = target->ToCreature()) - if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 2) - return true; - - return false; + return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) >= 2; } }; class achievement_knock_knock_knock_on_wood : public AchievementCriteriaScript { public: - achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood") - { - } + achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood") { } bool OnCheck(Player* /*player*/, Unit* target) { - if (!target) - return false; - - if (Creature* Freya = target->ToCreature()) - if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3) - return true; - - return false; + return target && target->GetAI()->GetData(DATA_KNOCK_ON_WOOD) == 3; } }; diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp index ae865ded40a..8247236016c 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp @@ -67,6 +67,8 @@ enum HodirSpells SPELL_ICE_SHARD = 62457, SPELL_ICE_SHARD_HIT = 65370, + SPELL_KILL_CREDIT = 64899, + // Druids SPELL_WRATH = 62793, SPELL_STARLIGHT = 62807, @@ -373,6 +375,8 @@ class boss_hodir : public CreatureScript me->setFaction(35); me->DespawnOrUnsummon(10000); + DoCastAOE(SPELL_KILL_CREDIT); + _JustDied(); } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 0e4d5026caf..c1fc0a81989 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -30,34 +30,40 @@ SDComment: TODO: Achievements SDCategory: Ulduar EndScriptData */ -#define SPELL_ARM_DEAD_DAMAGE RAID_MODE(63629, 63979) -#define SPELL_TWO_ARM_SMASH RAID_MODE(63356, 64003) -#define SPELL_ONE_ARM_SMASH RAID_MODE(63573, 64006) -#define SPELL_ARM_SWEEP RAID_MODE(63766, 63983) -#define SPELL_STONE_SHOUT RAID_MODE(63716, 64005) -#define SPELL_PETRIFY_BREATH RAID_MODE(62030, 63980) -#define SPELL_STONE_GRIP RAID_MODE(62166, 63981) -#define SPELL_STONE_GRIP_CANCEL 65594 -#define SPELL_SUMMON_RUBBLE 63633 -#define SPELL_FALLING_RUBBLE 63821 -#define SPELL_ARM_ENTER_VEHICLE 65343 -#define SPELL_ARM_ENTER_VISUAL 64753 - -#define SPELL_SUMMON_FOCUSED_EYEBEAM 63342 -#define SPELL_FOCUSED_EYEBEAM_PERIODIC RAID_MODE(63347, 63977) -#define SPELL_FOCUSED_EYEBEAM_VISUAL 63369 -#define SPELL_FOCUSED_EYEBEAM_VISUAL_LEFT 63676 -#define SPELL_FOCUSED_EYEBEAM_VISUAL_RIGHT 63702 - -// Passive -#define SPELL_KOLOGARN_REDUCE_PARRY 64651 -#define SPELL_KOLOGARN_PACIFY 63726 -#define SPELL_KOLOGARN_UNK_0 65219 // Not found in DBC - -#define SPELL_BERSERK 47008 // guess - -#define NPC_RUBBLE_STALKER 33809 -#define NPC_ARM_SWEEP_STALKER 33661 +enum Spells +{ + SPELL_ARM_DEAD_DAMAGE = 63629, + SPELL_TWO_ARM_SMASH = 63356, + SPELL_ONE_ARM_SMASH = 63573, + SPELL_ARM_SWEEP = 63766, + SPELL_STONE_SHOUT = 63716, + SPELL_PETRIFY_BREATH = 62030, + SPELL_STONE_GRIP = 62166, + SPELL_STONE_GRIP_CANCEL = 65594, + SPELL_SUMMON_RUBBLE = 63633, + SPELL_FALLING_RUBBLE = 63821, + SPELL_ARM_ENTER_VEHICLE = 65343, + SPELL_ARM_ENTER_VISUAL = 64753, + + SPELL_SUMMON_FOCUSED_EYEBEAM = 63342, + SPELL_FOCUSED_EYEBEAM_PERIODIC = 63347, + SPELL_FOCUSED_EYEBEAM_VISUAL = 63369, + SPELL_FOCUSED_EYEBEAM_VISUAL_LEFT = 63676, + SPELL_FOCUSED_EYEBEAM_VISUAL_RIGHT = 63702, + + // Passive + SPELL_KOLOGARN_REDUCE_PARRY = 64651, + SPELL_KOLOGARN_PACIFY = 63726, + SPELL_KOLOGARN_UNK_0 = 65219, // Not found in DBC + + SPELL_BERSERK = 47008 // guess +}; + +enum NPCs +{ + NPC_RUBBLE_STALKER = 33809, + NPC_ARM_SWEEP_STALKER = 33661 +}; enum Events { @@ -295,8 +301,8 @@ class boss_kologarn : public CreatureScript Talk(EMOTE_STONE_GRIP); } events.ScheduleEvent(EVENT_STONE_GRIP, 25 * IN_MILLISECONDS); + break; } - break; case EVENT_FOCUSED_EYEBEAM: if (Unit* eyebeamTargetUnit = SelectTarget(SELECT_TARGET_FARTHEST, 0, 0, true)) { @@ -406,12 +412,12 @@ class spell_ulduar_stone_grip_cast_target : public SpellScriptLoader } // For subsequent effects - m_unitList = unitList; + _unitList = unitList; } void FillTargetsSubsequential(std::list<WorldObject*>& unitList) { - unitList = m_unitList; + unitList = _unitList; } void Register() @@ -421,8 +427,9 @@ class spell_ulduar_stone_grip_cast_target : public SpellScriptLoader OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_ulduar_stone_grip_cast_target_SpellScript::FillTargetsSubsequential, EFFECT_2, TARGET_UNIT_SRC_AREA_ENEMY); } + private: // Shared between effects - std::list<WorldObject*> m_unitList; + std::list<WorldObject*> _unitList; }; SpellScript* GetSpellScript() const @@ -627,10 +634,10 @@ class spell_kologarn_summon_focused_eyebeam : public SpellScriptLoader { PrepareSpellScript(spell_kologarn_summon_focused_eyebeam_SpellScript); - void HandleForceCast(SpellEffIndex eff) + void HandleForceCast(SpellEffIndex effIndex) { - PreventHitDefaultEffect(eff); - GetCaster()->CastSpell(GetCaster(), GetSpellInfo()->Effects[eff].TriggerSpell, true); + PreventHitDefaultEffect(effIndex); + GetCaster()->CastSpell(GetCaster(), GetSpellInfo()->Effects[effIndex].TriggerSpell, true); } void Register() |