diff options
author | Lopin <davca.hr@seznam.cz> | 2011-07-01 18:04:00 +0200 |
---|---|---|
committer | Lopin <davca.hr@seznam.cz> | 2011-07-01 18:04:00 +0200 |
commit | 08be81caca0a694230a8db84d3d1399360cedb16 (patch) | |
tree | 6fd4326cfd270c595d4e808ea3290e2a37ee3aca /src | |
parent | bb921ae78c365b608b604f820ba7292b786637aa (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.cpp | 63 |
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 |