aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2011_06_22_02_world_achievement_criteria_data.sql20
-rw-r--r--src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp66
2 files changed, 86 insertions, 0 deletions
diff --git a/sql/updates/world/2011_06_22_02_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_22_02_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..9834ca79932
--- /dev/null
+++ b/sql/updates/world/2011_06_22_02_world_achievement_criteria_data.sql
@@ -0,0 +1,20 @@
+DELETE FROM `spell_dbc` WHERE `id`=65074;
+INSERT INTO `spell_dbc` (`Id`,`Effect1`,`EffectRadiusIndex1`,`EffectImplicitTargetA1`,`EffectImplicitTargetB1`,`comment`)
+VALUES
+(65074,3,28,22,30,'Knock on Wood Achievements - Criteria Marker');
+
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (10447,10448,10449,10459,10460,10461);
+INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
+VALUES
+(10447,11,0,0,'achievement_knock_on_wood'),
+(10447,12,0,0,''),
+(10448,11,0,0,'achievement_knock_knock_on_wood'),
+(10448,12,0,0,''),
+(10449,11,0,0,'achievement_knock_knock_knock_on_wood'),
+(10449,12,0,0,''),
+(10459,11,0,0,'achievement_knock_on_wood'),
+(10459,12,1,0,''),
+(10460,11,0,0,'achievement_knock_knock_on_wood'),
+(10460,12,1,0,''),
+(10461,11,0,0,'achievement_knock_knock_knock_on_wood'),
+(10461,12,1,0,'');
diff --git a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp
index 0d052abd212..f65ee25811e 100644
--- a/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/ulduar/boss_freya.cpp
@@ -103,6 +103,7 @@ enum FreyaSpells
// Achievement spells
SPELL_DEFORESTATION_CREDIT = 65015,
+ SPELL_KNOCK_ON_WOOD_CREDIT = 65074,
// Wave summoning spells
SPELL_SUMMON_LASHERS = 62687,
@@ -219,6 +220,7 @@ enum FreyaEvents
#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_KNOCK_ON_WOOD 1
class npc_iron_roots : public CreatureScript
{
@@ -340,6 +342,8 @@ class boss_freya : public CreatureScript
me->DeleteThreatList();
me->CombatStop(true);
me->ForcedDespawn(7500);
+ if (elderCount)
+ me->CastSpell(me, SPELL_KNOCK_ON_WOOD_CREDIT, true);
Creature* Elder[3];
for (uint8 n = 0; n < 3; ++n)
@@ -406,6 +410,14 @@ class boss_freya : public CreatureScript
events.ScheduleEvent(EVENT_SUNBEAM, urand(5000, 15000));
}
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_KNOCK_ON_WOOD)
+ return elderCount;
+
+ return 0;
+ }
+
void UpdateAI(uint32 const diff)
{
if (!UpdateVictim())
@@ -1593,6 +1605,57 @@ class spell_freya_iron_roots : public SpellScriptLoader
}
};
+class achievement_knock_on_wood : public AchievementCriteriaScript
+{
+ public:
+ achievement_knock_on_wood() : AchievementCriteriaScript("achievement_knock_on_wood")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Freya = target->ToCreature())
+ if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 1)
+ return true;
+
+ return false;
+ }
+};
+
+class achievement_knock_knock_on_wood : public AchievementCriteriaScript
+{
+ public:
+ achievement_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_on_wood")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Freya = target->ToCreature())
+ if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) >= 2)
+ return true;
+
+ return false;
+ }
+};
+
+class achievement_knock_knock_knock_on_wood : public AchievementCriteriaScript
+{
+ public:
+ achievement_knock_knock_knock_on_wood() : AchievementCriteriaScript("achievement_knock_knock_knock_on_wood")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Freya = target->ToCreature())
+ if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3)
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_boss_freya()
{
new boss_freya();
@@ -1612,4 +1675,7 @@ void AddSC_boss_freya()
new npc_iron_roots();
new spell_freya_attuned_to_nature_dose_reduction();
new spell_freya_iron_roots();
+ new achievement_knock_on_wood();
+ new achievement_knock_knock_on_wood();
+ new achievement_knock_knock_knock_on_wood();
}