aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent-Michael <Vincent_Michael@gmx.de>2013-06-02 23:16:18 +0200
committerVincent-Michael <Vincent_Michael@gmx.de>2013-06-02 23:16:18 +0200
commit216827201ec604a25ea05d12e609f1f136e12b13 (patch)
tree890ba5aecc706015a07e5bc850c69ce49fd645a9
parent3e108f068026e6bc54828c2f829c728928c349c7 (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.sql16
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_assembly_of_iron.cpp48
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();
}