aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-07-01 18:04:00 +0200
committerLopin <davca.hr@seznam.cz>2011-07-01 18:04:00 +0200
commit08be81caca0a694230a8db84d3d1399360cedb16 (patch)
tree6fd4326cfd270c595d4e808ea3290e2a37ee3aca /src
parentbb921ae78c365b608b604f820ba7292b786637aa (diff)
Scripts/Ulduar: Fixed achievement Iron Dwarf, Medium Rare in Razorscale's encounter. Thanks to Shauren for help with this achievement
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
index 73baeae441f..46bf7f99ae5 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_razorscale.cpp
@@ -129,6 +129,7 @@ enum Events
#define GROUND_Z 391.517f
#define GOSSIP_ITEM_1 "Activate Harpoons!"
#define DATA_QUICK_SHAVE 29192921 // 2919, 2921 are achievement IDs
+#define DATA_IRON_DWARF_MEDIUM_RARE 29232924
const Position PosEngRepair[4] =
{
@@ -890,8 +891,21 @@ class npc_darkrune_guardian : public CreatureScript
void Reset()
{
StormTimer = urand(3000, 6000);
+ killedByBreath = false;
}
+ uint32 GetData(uint32 type)
+ {
+ return type == DATA_IRON_DWARF_MEDIUM_RARE ? killedByBreath : 0;
+ }
+
+ void SetData(uint32 type, uint32 value)
+ {
+ if (type == DATA_IRON_DWARF_MEDIUM_RARE)
+ killedByBreath = value;
+ }
+
+
void UpdateAI(uint32 const Diff)
{
if (!UpdateVictim())
@@ -907,6 +921,9 @@ class npc_darkrune_guardian : public CreatureScript
DoMeleeAttackIfReady();
}
+
+ private:
+ bool killedByBreath;
};
CreatureAI* GetAI(Creature* creature) const
@@ -1007,6 +1024,50 @@ class spell_razorscale_devouring_flame : public SpellScriptLoader
}
};
+class spell_razorscale_flame_breath : public SpellScriptLoader
+{
+ public:
+ spell_razorscale_flame_breath() : SpellScriptLoader("spell_razorscale_flame_breath") { }
+
+ class spell_razorscale_flame_breath_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_razorscale_flame_breath_SpellScript);
+
+ void CheckDamage()
+ {
+ Creature* target = GetHitCreature();
+ if (!target || target->GetEntry() != NPC_DARK_RUNE_GUARDIAN)
+ return;
+
+ if (GetHitDamage() >= int32(target->GetHealth()))
+ target->AI()->SetData(DATA_IRON_DWARF_MEDIUM_RARE, 1);
+ }
+
+ void Register()
+ {
+ OnHit += SpellHitFn(spell_razorscale_flame_breath_SpellScript::CheckDamage);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_razorscale_flame_breath_SpellScript();
+ }
+};
+
+class achievement_iron_dwarf_medium_rare : public AchievementCriteriaScript
+{
+ public:
+ achievement_iron_dwarf_medium_rare() : AchievementCriteriaScript("achievement_iron_dwarf_medium_rare")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ return target && target->IsAIEnabled && target->GetAI()->GetData(DATA_IRON_DWARF_MEDIUM_RARE);
+ }
+};
+
class achievement_quick_shave : public AchievementCriteriaScript
{
public:
@@ -1035,5 +1096,7 @@ void AddSC_boss_razorscale()
new npc_darkrune_guardian();
new npc_darkrune_sentinel();
new spell_razorscale_devouring_flame();
+ new spell_razorscale_flame_breath();
+ new achievement_iron_dwarf_medium_rare();
new achievement_quick_shave();
} \ No newline at end of file