diff options
| author | Lopin <davca.hr@seznam.cz> | 2011-06-24 22:03:14 +0200 |
|---|---|---|
| committer | Lopin <davca.hr@seznam.cz> | 2011-06-24 22:03:14 +0200 |
| commit | 29cacd96b2968d43f9bc6b27615377f2f848f2b9 (patch) | |
| tree | 544f359aff5808e2b2945e8d59f5533725fc5eab | |
| parent | 9c70f586e0a30a57c78bd62929b807e8fd222a8a (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.sql | 9 | ||||
| -rw-r--r-- | src/server/scripts/Northrend/Ulduar/HallsOfStone/halls_of_stone.cpp | 57 |
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(); } |
