aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLopin <davca.hr@seznam.cz>2011-06-25 13:30:51 +0200
committerLopin <davca.hr@seznam.cz>2011-06-25 13:30:51 +0200
commitea55e54a50b53ff6d69023d14a64788b05f75fa8 (patch)
tree71730d684bf62d7cdd8401070b6a29e6012a38eb
parent835efdacd1fd6671f14e2a83ef5a11c0d27b044a (diff)
Scripts/Halls Of Stone: Properly fixed achievement Abuse the Ooze
-rw-r--r--sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql6
-rw-r--r--src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp56
2 files changed, 45 insertions, 17 deletions
diff --git a/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql b/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql
new file mode 100644
index 00000000000..66a9ff7f115
--- /dev/null
+++ b/sql/updates/world/2011_06_25_04_world_achievement_criteria_data.sql
@@ -0,0 +1,6 @@
+DELETE FROM `disables` WHERE `entry`=7593 AND `sourceType`=4;
+
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=7593 AND `type`=11;
+INSERT INTO `achievement_criteria_data` (`criteria_id`,`type`,`value1`,`value2`,`ScriptName`)
+VALUES
+(7593,11,0,0,'achievement_abuse_the_ooze');
diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
index 2377c5e908a..6de54d357c5 100644
--- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_sjonnir.cpp
@@ -60,11 +60,7 @@ enum SjonnirCreatures
CREATURE_IRON_SLUDGE = 28165
};
-enum Misc
-{
- DATA_TIME_BEFORE_OOZE = 150000, //2min 30 secs
- ACHIEV_ABUSE_THE_OOZE = 2155
-};
+#define DATA_TIME_BEFORE_OOZE 150000 //2min 30 secs
struct Locations
{
@@ -73,10 +69,13 @@ struct Locations
static Locations PipeLocations[] =
{
- {1295.44f, 734.07f, 200.3f}, //left
- {1297.7f, 595.6f, 199.9f} //right
+ {1295.44f, 734.07f, 200.3f}, //left
+ {1297.7f, 595.6f, 199.9f} //right
};
+#define ACTION_OOZE_DEAD 1
+#define DATA_ABUSE_THE_OOZE 2
+
static Locations CenterPoint = {1295.21f, 667.157f, 189.691f};
class boss_sjonnir : public CreatureScript
@@ -105,7 +104,7 @@ public:
uint32 uiSummonTimer;
uint32 uiFrenzyTimer;
uint32 uiEncounterTimer;
- uint32 uiKilledIronSludges;
+ uint8 abuseTheOoze;
SummonList lSummons;
@@ -122,7 +121,7 @@ public:
uiLightningRingTimer = 30000 + rand()%5000;
uiSummonTimer = 5000;
uiFrenzyTimer = 300000; //5 minutes
- uiKilledIronSludges = 0;
+ abuseTheOoze = 0;
lSummons.DespawnAll();
@@ -221,11 +220,7 @@ public:
lSummons.DespawnAll();
if (pInstance)
- {
pInstance->SetData(DATA_SJONNIR_EVENT, DONE);
- if (IsHeroic() && uiKilledIronSludges > 4)
- pInstance->DoCompleteAchievement(ACHIEV_ABUSE_THE_OOZE);
- }
}
void KilledUnit(Unit* victim)
{
@@ -234,9 +229,18 @@ public:
DoScriptText(RAND(SAY_SLAY_1, SAY_SLAY_2, SAY_SLAY_3), me);
}
- void KilledIronSludge()
+ void DoAction(int32 const action)
{
- ++uiKilledIronSludges;
+ if (action == ACTION_OOZE_DEAD)
+ ++abuseTheOoze;
+ }
+
+ uint32 GetData(uint32 type)
+ {
+ if (type == DATA_ABUSE_THE_OOZE)
+ return abuseTheOoze;
+
+ return 0;
}
};
@@ -307,16 +311,34 @@ public:
void JustDied(Unit* /*pKiller*/)
{
if (pInstance)
- if (Creature* pSjonnir = Unit::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR)))
- CAST_AI(boss_sjonnir::boss_sjonnirAI, pSjonnir->AI())->KilledIronSludge();
+ if (Creature* Sjonnir = ObjectAccessor::GetCreature(*me, pInstance->GetData64(DATA_SJONNIR)))
+ Sjonnir->AI()->DoAction(ACTION_OOZE_DEAD);
}
};
};
+class achievement_abuse_the_ooze : public AchievementCriteriaScript
+{
+ public:
+ achievement_abuse_the_ooze() : AchievementCriteriaScript("achievement_abuse_the_ooze")
+ {
+ }
+
+ bool OnCheck(Player* /*player*/, Unit* target)
+ {
+ if (Creature* Sjonnir = target->ToCreature())
+ if (Sjonnir->AI()->GetData(DATA_ABUSE_THE_OOZE) >= 5)
+ return true;
+
+ return false;
+ }
+};
+
void AddSC_boss_sjonnir()
{
new boss_sjonnir();
new mob_malformed_ooze();
new mob_iron_sludge();
+ new achievement_abuse_the_ooze();
}