aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-06-24 22:03:14 +0200
committerLopin <davca.hr@seznam.cz>2011-06-24 22:03:14 +0200
commit29cacd96b2968d43f9bc6b27615377f2f848f2b9 (patch)
tree544f359aff5808e2b2945e8d59f5533725fc5eab
parent9c70f586e0a30a57c78bd62929b807e8fd222a8a (diff)
Scripts/Halls Of Stone: Properly fixed achievement Brann Sparklin' News
-rw-r--r--sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql9
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp57
2 files changed, 45 insertions, 21 deletions
diff --git a/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..e228625014e
--- /dev/null
+++ b/sql/updates/world/2011_06_24_07_world_achievement_criteria_data.sql
@@ -0,0 +1,9 @@
+DELETE FROM `spell_dbc` WHERE `id`=59046;
+INSERT INTO `spell_dbc` (`Id`,`Effect1`,`EffectRadiusIndex1`,`EffectImplicitTargetA1`,`EffectImplicitTargetB1`,`comment`)
+VALUES
+(59046,3,28,22,30,'Tribunal of Ages - Criteria Marker');
+
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7590 AND `type`=11;
+INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
+VALUES
+(7590,11,0,0,'achievement_brann_sparklin_news');
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
index f237871ef90..9d2f5647df2 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp
@@ -110,7 +110,9 @@ enum Spells
H_SPELL_DARK_MATTER = 59868,
//Abedneum
SPELL_SEARING_GAZE = 51136,
- H_SPELL_SEARING_GAZE = 59867
+ H_SPELL_SEARING_GAZE = 59867,
+
+ SPELL_REWARD_ACHIEVEMENT = 59046,
};
enum Quests
@@ -118,13 +120,9 @@ enum Quests
QUEST_HALLS_OF_STONE = 13207
};
-enum Achievements
-{
- ACHIEV_BRANN_SPANKIN_NEW = 2154
-};
-
#define GOSSIP_ITEM_START "Brann, it would be our honor!"
#define GOSSIP_ITEM_PROGRESS "Let's move Brann, enough of the history lessons!"
+#define DATA_BRANN_SPARKLIN_NEWS 1
static Position SpawnLocations[]=
{
@@ -184,7 +182,7 @@ public:
}
void UpdateFacesList()
- {
+ {
/*GetCreatureListWithEntryInGrid(lKaddrakGUIDList, me, CREATURE_KADDRAK, 50.0f);
if (!lKaddrakGUIDList.empty())
{
@@ -315,7 +313,7 @@ public:
bool bIsBattle;
bool bIsLowHP;
- bool bHasBeenDamaged;
+ bool brannSparklinNews;
void Reset()
{
@@ -323,10 +321,10 @@ public:
{
bIsLowHP = false;
bIsBattle = false;
- bHasBeenDamaged = false;
uiStep = 0;
uiPhaseTimer = 0;
uiControllerGUID = 0;
+ brannSparklinNews = true;
DespawnDwarf();
@@ -425,8 +423,16 @@ public:
void DamageTaken(Unit* /*done_by*/, uint32 & /*damage*/)
{
- if (!bHasBeenDamaged)
- bHasBeenDamaged = true;
+ if (brannSparklinNews)
+ brannSparklinNews = false;
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_BRANN_SPARKLIN_NEWS)
+ return brannSparklinNews ? 1 : 0;
+
+ return 0;
}
void UpdateEscortAI(const uint32 uiDiff)
@@ -590,17 +596,8 @@ public:
case 29:
DoScriptText(SAY_EVENT_END_02, me);
if (pInstance)
- {
pInstance->SetData(DATA_BRANN_EVENT, DONE);
-
- // Achievement criteria is with spell 59046 which does not exist.
- // There is thus no way it can be given by casting the spell on the players.
- pInstance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 59046);
-
- if (!bHasBeenDamaged)
- pInstance->DoCompleteAchievement(ACHIEV_BRANN_SPANKIN_NEW);
- }
-
+ me->CastSpell(me, SPELL_REWARD_ACHIEVEMENT, true);
JumpToNextStep(5500);
break;
case 30:
@@ -738,8 +735,26 @@ public:
};
+class achievement_brann_sparklin_news : public AchievementCriteriaScript
+{
+ public:
+ achievement_brann_sparklin_news() : AchievementCriteriaScript("achievement_brann_sparklin_news")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Brann = target->ToCreature())
+ if (Brann->AI()->GetData(DATA_BRANN_SPARKLIN_NEWS))
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_halls_of_stone()
{
new npc_brann_hos();
new mob_tribuna_controller();
+ new achievement_brann_sparklin_news();
}