Scripts/Halls Of Stone: Properly fixed achievement Abuse the Ooze

This commit is contained in:
Lopin
2011-06-25 13:30:51 +02:00
parent 835efdacd1
commit ea55e54a50
2 changed files with 45 additions and 17 deletions

View File

@@ -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');

View File

@@ -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();
}