diff options
author | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-06-02 23:16:18 +0200 |
---|---|---|
committer | Vincent-Michael <Vincent_Michael@gmx.de> | 2013-06-02 23:16:18 +0200 |
commit | 216827201ec604a25ea05d12e609f1f136e12b13 (patch) | |
tree | 890ba5aecc706015a07e5bc850c69ce49fd645a9 | |
parent | 3e108f068026e6bc54828c2f829c728928c349c7 (diff) |
Script/Ulduar: Fix try for Assembly Of Iron achievement "I choose you, xxx"
-rw-r--r-- | sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql | 16 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp | 48 |
2 files changed, 59 insertions, 5 deletions
diff --git a/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql new file mode 100644 index 00000000000..55ee9f6b954 --- /dev/null +++ b/sql/updates/world/2013_06_02_00_world_achievement_criteria_data.sql @@ -0,0 +1,16 @@ +DELETE FROM `disables` WHERE `sourceType` IN (10082,10083,10084,10085,10086,10087); + +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10082,10083,10084,10085,10086,10087); +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`, `ScriptName`) VALUES +(10082, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10082, 12, 0, 0, ''), +(10083, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10083, 12, 0, 0, ''), +(10084, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10084, 12, 0, 0, ''), +(10085, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10085, 12, 1, 0, ''), +(10086, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10086, 12, 1, 0, ''), +(10087, 11, 0, 0, 'achievement_assembly_i_choose_you'), +(10087, 12, 1, 0, '');
\ No newline at end of file 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 6ad70d38635..b3f5cc38c9f 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 @@ -122,9 +122,11 @@ enum AssemblyYells EMOTE_BRUNDIR_OVERLOAD = 7 }; -enum AssemblyNPCs +enum Misc { - NPC_WORLD_TRIGGER = 22515 + NPC_WORLD_TRIGGER = 22515, + + DATA_PHASE_3 = 1 }; #define FLOOR_Z 427.28f @@ -158,6 +160,14 @@ class boss_steelbreaker : public CreatureScript events.ScheduleEvent(EVENT_FUSION_PUNCH, 15000); } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void DoAction(int32 action) { switch (action) @@ -184,7 +194,7 @@ class boss_steelbreaker : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_STEELBREAKER_ENCOUNTER_DEFEATED); } else @@ -287,6 +297,14 @@ class boss_runemaster_molgeim : public CreatureScript events.ScheduleEvent(EVENT_RUNE_OF_POWER, 20000); } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void DoAction(int32 action) { switch (action) @@ -313,7 +331,7 @@ class boss_runemaster_molgeim : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_MOLGEIM_ENCOUNTER_DEFEATED); } else @@ -429,6 +447,14 @@ class boss_stormcaller_brundir : public CreatureScript me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, false); // Reset immumity, Brundir should be stunnable by default } + uint32 GetData(uint32 type) const + { + if (type == DATA_PHASE_3) + return (phase >= 3) ? 1 : 0; + + return 0; + } + void EnterCombat(Unit* /*who*/) { _EnterCombat(); @@ -470,7 +496,7 @@ class boss_stormcaller_brundir : public CreatureScript if (instance->GetBossState(BOSS_ASSEMBLY_OF_IRON) == DONE) { - DoCastAOE(SPELL_KILL_CREDIT); + DoCastAOE(SPELL_KILL_CREDIT, true); Talk(SAY_BRUNDIR_ENCOUNTER_DEFEATED); } else @@ -697,6 +723,17 @@ class spell_assembly_rune_of_summoning : public SpellScriptLoader } }; +class achievement_assembly_i_choose_you : public AchievementCriteriaScript +{ + public: + achievement_assembly_i_choose_you() : AchievementCriteriaScript("achievement_assembly_i_choose_you") { } + + bool OnCheck(Player* /*player*/, Unit* target) + { + return target && target->GetAI()->GetData(DATA_PHASE_3); + } +}; + void AddSC_boss_assembly_of_iron() { new boss_steelbreaker(); @@ -705,4 +742,5 @@ void AddSC_boss_assembly_of_iron() new spell_shield_of_runes(); new spell_assembly_meltdown(); new spell_assembly_rune_of_summoning(); + new achievement_assembly_i_choose_you(); } |