Scripts/Ulduar: Move handling of Freya's "Knock" achievements to instance script + clean up

This commit is contained in:
Lopin
2011-06-26 16:35:51 +02:00
parent e05f608919
commit e7778c7231
4 changed files with 664 additions and 677 deletions
@@ -220,8 +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
#define DATA_GETTING_BACK_TO_NATURE 2
#define DATA_GETTING_BACK_TO_NATURE 1
class npc_iron_roots : public CreatureScript
{
@@ -382,6 +381,8 @@ class boss_freya : public CreatureScript
}
}
instance->SetData(DATA_KNOCK_ON_WOOD_ACHIEVEMENTS, elderCount);
if (Elder[0]->isAlive())
{
Elder[0]->CastSpell(me, SPELL_BRIGHTLEAF_ESSENCE, true);
@@ -415,8 +416,6 @@ class boss_freya : public CreatureScript
{
switch (type)
{
case DATA_KNOCK_ON_WOOD:
return elderCount;
case DATA_GETTING_BACK_TO_NATURE:
return attunedToNature;
}
@@ -1611,66 +1610,6 @@ 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 (!target)
return false;
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 (!target)
return false;
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 (!target)
return false;
if (Creature* Freya = target->ToCreature())
if (Freya->AI()->GetData(DATA_KNOCK_ON_WOOD) == 3)
return true;
return false;
}
};
class achievement_getting_back_to_nature : public AchievementCriteriaScript
{
public:
@@ -1710,8 +1649,5 @@ 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();
new achievement_getting_back_to_nature();
}
File diff suppressed because it is too large Load Diff
@@ -157,22 +157,40 @@ enum UlduarTowerEvents
EVENT_TOWER_OF_LIFE_DESTROYED = 21030,
};
enum UlduarAchievementCriteria
enum UlduarAchievementCriteriaIds
{
ACHIEVEMENT_UNBROKEN_10 = 10044, // Leviathan
ACHIEVEMENT_UNBROKEN_25 = 10045,
ACHIEVEMENT_CRITERIA_SHUTOUT_10 = 10054,
ACHIEVEMENT_CRITERIA_SHUTOUT_25 = 10055,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_CHOPPER_10 = 10046,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_SIEGE_10 = 10047,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_DEMOLISHER_10 = 10048,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_CHOPPER_25 = 10049,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_SIEGE_25 = 10050,
ACHIEVEMENT_CRITERIA_3_CAR_GARAGE_DEMOLISHER_25 = 10051,
ACHIEVEMENT_CRITERIA_HOT_POCKET_10 = 10430, // Ignis
ACHIEVEMENT_CRITERIA_HOT_POCKET_25 = 10431,
ACHIEVEMENT_CRITERIA_QUICK_SHAVE_10 = 10062, // Razorscale
ACHIEVEMENT_CRITERIA_QUICK_SHAVE_25 = 10063,
// Flame Leviathan
CRITERIA_UNBROKEN_10 = 10044,
CRITERIA_UNBROKEN_25 = 10045,
CRITERIA_SHUTOUT_10 = 10054,
CRITERIA_SHUTOUT_25 = 10055,
CRITERIA_3_CAR_GARAGE_CHOPPER_10 = 10046,
CRITERIA_3_CAR_GARAGE_SIEGE_10 = 10047,
CRITERIA_3_CAR_GARAGE_DEMOLISHER_10 = 10048,
CRITERIA_3_CAR_GARAGE_CHOPPER_25 = 10049,
CRITERIA_3_CAR_GARAGE_SIEGE_25 = 10050,
CRITERIA_3_CAR_GARAGE_DEMOLISHER_25 = 10051,
// Ignis
CRITERIA_HOT_POCKET_10 = 10430,
CRITERIA_HOT_POCKET_25 = 10431,
// Razorscale
CRITERIA_QUICK_SHAVE_10 = 10062,
CRITERIA_QUICK_SHAVE_25 = 10063,
// Freya
CRITERIA_KNOCK_ON_WOOD_10 = 10447,
CRITERIA_KNOCK_ON_WOOD_25 = 10459,
CRITERIA_KNOCK_KNOCK_ON_WOOD_10 = 10448,
CRITERIA_KNOCK_KNOCK_ON_WOOD_25 = 10460,
CRITERIA_KNOCK_KNOCK_KNOCK_ON_WOOD_10 = 10449,
CRITERIA_KNOCK_KNOCK_KNOCK_ON_WOOD_25 = 10461,
};
enum UlduarAchievementData
{
DATA_KNOCK_ON_WOOD_ACHIEVEMENTS = 1,
};
template<class AI>