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/server/scripts/Northrend | |
| parent | 4a66290fb94faf4cdd882cb749008de32f00b298 (diff) | |
Core/Ulduar:
- Implemented kill credit for hodir and assembly of iron
- Some cleanup
Diffstat (limited to 'src/server/scripts/Northrend')
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()  | 
