mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Scripts/Halls Of Stone: Properly fixed achievement Abuse the Ooze
This commit is contained in:
@@ -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');
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user