Implemented right Snobold Vassal behavior on Gormok fight.

This commit is contained in:
hondacrx
2017-10-04 12:34:11 -04:00
parent eadb7d40ee
commit 4424eb6af6
3 changed files with 792 additions and 559 deletions
File diff suppressed because it is too large Load Diff
@@ -67,7 +67,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (instance.IsHeroic()) if (instance.IsHeroic())
{ {
player.SendUpdateWorldState(WorldStateIds.Show, 1); player.SendUpdateWorldState(WorldStateIds.Show, 1);
player.SendUpdateWorldState(WorldStateIds.Count, GetData(DataTypes.TypeCounter)); player.SendUpdateWorldState(WorldStateIds.Count, GetData(DataTypes.Counter));
} }
else else
player.SendUpdateWorldState(WorldStateIds.Show, 0); player.SendUpdateWorldState(WorldStateIds.Show, 0);
@@ -409,25 +409,25 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
{ {
switch (type) switch (type)
{ {
case DataTypes.TypeCounter: case DataTypes.Counter:
TrialCounter = data; TrialCounter = data;
data = (uint)EncounterState.Done; data = (uint)EncounterState.Done;
break; break;
case DataTypes.TypeEvent: case DataTypes.Event:
EventStage = data; EventStage = data;
data = (uint)EncounterState.NotStarted; data = (uint)EncounterState.NotStarted;
break; break;
case DataTypes.TypeEventTimer: case DataTypes.EventTimer:
EventTimer = data; EventTimer = data;
data = (uint)EncounterState.NotStarted; data = (uint)EncounterState.NotStarted;
break; break;
case DataTypes.TypeNorthrendBeasts: case DataTypes.NorthrendBeasts:
northrendBeasts = (EncounterState)data; northrendBeasts = (EncounterState)data;
switch (data) switch (data)
{ {
case NorthrendBeasts.GormokDone: case NorthrendBeasts.GormokDone:
EventStage = 200; EventStage = 200;
SetData(DataTypes.TypeNorthrendBeasts, (uint)EncounterState.InProgress); SetData(DataTypes.NorthrendBeasts, (uint)EncounterState.InProgress);
break; break;
case NorthrendBeasts.SnakesInProgress: case NorthrendBeasts.SnakesInProgress:
NotOneButTwoJormungarsTimer = 0; NotOneButTwoJormungarsTimer = 0;
@@ -439,11 +439,11 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (NotOneButTwoJormungarsTimer > 0) if (NotOneButTwoJormungarsTimer > 0)
DoUpdateCriteria(CriteriaTypes.BeSpellTarget, AchievementData.SpellWormsKilledIn10Seconds); DoUpdateCriteria(CriteriaTypes.BeSpellTarget, AchievementData.SpellWormsKilledIn10Seconds);
EventStage = 300; EventStage = 300;
SetData(DataTypes.TypeNorthrendBeasts, (uint)EncounterState.InProgress); SetData(DataTypes.NorthrendBeasts, (uint)EncounterState.InProgress);
break; break;
case NorthrendBeasts.IcehowlDone: case NorthrendBeasts.IcehowlDone:
EventStage = 400; EventStage = 400;
SetData(DataTypes.TypeNorthrendBeasts, (uint)EncounterState.Done); SetData(DataTypes.NorthrendBeasts, (uint)EncounterState.Done);
SetBossState(DataTypes.BossBeasts, EncounterState.Done); SetBossState(DataTypes.BossBeasts, EncounterState.Done);
break; break;
case (uint)EncounterState.Fail: case (uint)EncounterState.Fail:
@@ -527,15 +527,15 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
{ {
switch (type) switch (type)
{ {
case DataTypes.TypeCounter: case DataTypes.Counter:
return TrialCounter; return TrialCounter;
case DataTypes.TypeEvent: case DataTypes.Event:
return EventStage; return EventStage;
case DataTypes.TypeNorthrendBeasts: case DataTypes.NorthrendBeasts:
return (uint)northrendBeasts; return (uint)northrendBeasts;
case DataTypes.TypeEventTimer: case DataTypes.EventTimer:
return EventTimer; return EventTimer;
case DataTypes.TypeEventNpc: case DataTypes.EventNpc:
switch (EventStage) switch (EventStage)
{ {
case 110: case 110:
@@ -625,7 +625,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
public override void Update(uint diff) public override void Update(uint diff)
{ {
if (GetData(DataTypes.TypeNorthrendBeasts) == NorthrendBeasts.SnakesSpecial && NotOneButTwoJormungarsTimer != 0) if (GetData(DataTypes.NorthrendBeasts) == NorthrendBeasts.SnakesSpecial && NotOneButTwoJormungarsTimer != 0)
{ {
if (NotOneButTwoJormungarsTimer <= diff) if (NotOneButTwoJormungarsTimer <= diff)
NotOneButTwoJormungarsTimer = 0; NotOneButTwoJormungarsTimer = 0;
@@ -810,7 +810,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
string _message = "We are ready!"; string _message = "We are ready!";
if (player.IsInCombat() || instance.IsEncounterInProgress() || instance.GetData(DataTypes.TypeEvent) != 0) if (player.IsInCombat() || instance.IsEncounterInProgress() || instance.GetData(DataTypes.Event) != 0)
return true; return true;
byte i = 0; byte i = 0;
@@ -841,8 +841,8 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (instance.GetBossState(DataTypes.BossBeasts) != EncounterState.Done) if (instance.GetBossState(DataTypes.BossBeasts) != EncounterState.Done)
{ {
instance.SetData(DataTypes.TypeEvent, 110); instance.SetData(DataTypes.Event, 110);
instance.SetData(DataTypes.TypeNorthrendBeasts, (uint)EncounterState.NotStarted); instance.SetData(DataTypes.NorthrendBeasts, (uint)EncounterState.NotStarted);
instance.SetBossState(DataTypes.BossBeasts, EncounterState.NotStarted); instance.SetBossState(DataTypes.BossBeasts, EncounterState.NotStarted);
} }
else if (instance.GetBossState(DataTypes.BossJaraxxus) != EncounterState.Done) else if (instance.GetBossState(DataTypes.BossJaraxxus) != EncounterState.Done)
@@ -858,21 +858,21 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
else else
{ {
instance.SetData(DataTypes.TypeEvent, 1010); instance.SetData(DataTypes.Event, 1010);
instance.SetBossState(DataTypes.BossJaraxxus, EncounterState.NotStarted); instance.SetBossState(DataTypes.BossJaraxxus, EncounterState.NotStarted);
} }
} }
else if (instance.GetBossState(DataTypes.BossCrusaders) != EncounterState.Done) else if (instance.GetBossState(DataTypes.BossCrusaders) != EncounterState.Done)
{ {
if (player.GetTeam() == Team.Alliance) if (player.GetTeam() == Team.Alliance)
instance.SetData(DataTypes.TypeEvent, 3000); instance.SetData(DataTypes.Event, 3000);
else else
instance.SetData(DataTypes.TypeEvent, 3001); instance.SetData(DataTypes.Event, 3001);
instance.SetBossState(DataTypes.BossCrusaders, EncounterState.NotStarted); instance.SetBossState(DataTypes.BossCrusaders, EncounterState.NotStarted);
} }
else if (instance.GetBossState(DataTypes.BossValkiries) != EncounterState.Done) else if (instance.GetBossState(DataTypes.BossValkiries) != EncounterState.Done)
{ {
instance.SetData(DataTypes.TypeEvent, 4000); instance.SetData(DataTypes.Event, 4000);
instance.SetBossState(DataTypes.BossValkiries, EncounterState.NotStarted); instance.SetBossState(DataTypes.BossValkiries, EncounterState.NotStarted);
} }
else if (instance.GetBossState(DataTypes.BossLichKing) != EncounterState.Done) else if (instance.GetBossState(DataTypes.BossLichKing) != EncounterState.Done)
@@ -934,10 +934,10 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
switch (id) switch (id)
{ {
case 0: case 0:
_instance.SetData(DataTypes.TypeEvent, 5030); _instance.SetData(DataTypes.Event, 5030);
break; break;
case 1: case 1:
_instance.SetData(DataTypes.TypeEvent, 5050); _instance.SetData(DataTypes.Event, 5050);
break; break;
default: default:
break; break;
@@ -949,47 +949,47 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (_instance == null) if (_instance == null)
return; return;
if (_instance.GetData(DataTypes.TypeEventNpc) != CreatureIds.LichKing) if (_instance.GetData(DataTypes.EventNpc) != CreatureIds.LichKing)
return; return;
_updateTimer = _instance.GetData(DataTypes.TypeEventTimer); _updateTimer = _instance.GetData(DataTypes.EventTimer);
if (_updateTimer <= uiDiff) if (_updateTimer <= uiDiff)
{ {
switch (_instance.GetData(DataTypes.TypeEvent)) switch (_instance.GetData(DataTypes.Event))
{ {
case 5010: case 5010:
Talk(Texts.Stage_4_02); Talk(Texts.Stage_4_02);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
me.GetMotionMaster().MovePoint(0, MiscData.LichKingLoc[0]); me.GetMotionMaster().MovePoint(0, MiscData.LichKingLoc[0]);
_instance.SetData(DataTypes.TypeEvent, 5020); _instance.SetData(DataTypes.Event, 5020);
break; break;
case 5030: case 5030:
Talk(Texts.Stage_4_04); Talk(Texts.Stage_4_04);
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.StateTalk); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.StateTalk);
_updateTimer = 10 * Time.InMilliseconds; _updateTimer = 10 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 5040); _instance.SetData(DataTypes.Event, 5040);
break; break;
case 5040: case 5040:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone);
me.GetMotionMaster().MovePoint(1, MiscData.LichKingLoc[1]); me.GetMotionMaster().MovePoint(1, MiscData.LichKingLoc[1]);
_updateTimer = 1 * Time.InMilliseconds; _updateTimer = 1 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 5050: case 5050:
me.HandleEmoteCommand(Emote.OneshotExclamation); me.HandleEmoteCommand(Emote.OneshotExclamation);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 5060); _instance.SetData(DataTypes.Event, 5060);
break; break;
case 5060: case 5060:
Talk(Texts.Stage_4_05); Talk(Texts.Stage_4_05);
me.HandleEmoteCommand(Emote.OneshotKneel); me.HandleEmoteCommand(Emote.OneshotKneel);
_updateTimer = (uint)(2.5 * Time.InMilliseconds); _updateTimer = (uint)(2.5 * Time.InMilliseconds);
_instance.SetData(DataTypes.TypeEvent, 5070); _instance.SetData(DataTypes.Event, 5070);
break; break;
case 5070: case 5070:
me.CastSpell(me, 68198, false); me.CastSpell(me, 68198, false);
_updateTimer = (uint)(1.5 * Time.InMilliseconds); _updateTimer = (uint)(1.5 * Time.InMilliseconds);
_instance.SetData(DataTypes.TypeEvent, 5080); _instance.SetData(DataTypes.Event, 5080);
break; break;
case 5080: case 5080:
{ {
@@ -1009,7 +1009,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (!temp || !temp.IsAlive()) if (!temp || !temp.IsAlive())
temp = me.SummonCreature(CreatureIds.Anubarak, MiscData.AnubarakLoc[0].GetPositionX(), MiscData.AnubarakLoc[0].GetPositionY(), MiscData.AnubarakLoc[0].GetPositionZ(), 3, TempSummonType.CorpseTimedDespawn, MiscData.DespawnTime); temp = me.SummonCreature(CreatureIds.Anubarak, MiscData.AnubarakLoc[0].GetPositionX(), MiscData.AnubarakLoc[0].GetPositionY(), MiscData.AnubarakLoc[0].GetPositionZ(), 3, TempSummonType.CorpseTimedDespawn, MiscData.DespawnTime);
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
me.DespawnOrUnsummon(); me.DespawnOrUnsummon();
_updateTimer = 20 * Time.InMilliseconds; _updateTimer = 20 * Time.InMilliseconds;
@@ -1022,7 +1022,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
else else
_updateTimer -= uiDiff; _updateTimer -= uiDiff;
_instance.SetData(DataTypes.TypeEventTimer, _updateTimer); _instance.SetData(DataTypes.EventTimer, _updateTimer);
} }
InstanceScript _instance; InstanceScript _instance;
@@ -1041,7 +1041,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
public override void JustDied(Unit killer) public override void JustDied(Unit killer)
{ {
Talk(Texts.Stage_1_06, killer); Talk(Texts.Stage_1_06, killer);
_instance.SetData(DataTypes.TypeEvent, 1180); _instance.SetData(DataTypes.Event, 1180);
Creature temp = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.Jaraxxus)); Creature temp = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.Jaraxxus));
if (temp) if (temp)
{ {
@@ -1068,8 +1068,8 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
case 1: case 1:
me.SetWalk(false); me.SetWalk(false);
_instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor)); _instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor));
_instance.SetData(DataTypes.TypeEvent, 1120); _instance.SetData(DataTypes.Event, 1120);
_instance.SetData(DataTypes.TypeEventTimer, 1 * Time.InMilliseconds); _instance.SetData(DataTypes.EventTimer, 1 * Time.InMilliseconds);
break; break;
default: default:
break; break;
@@ -1086,21 +1086,21 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (_instance == null) if (_instance == null)
return; return;
if (_instance.GetData(DataTypes.TypeEventNpc) != CreatureIds.Fizzlebang) if (_instance.GetData(DataTypes.EventNpc) != CreatureIds.Fizzlebang)
return; return;
_updateTimer = _instance.GetData(DataTypes.TypeEventTimer); _updateTimer = _instance.GetData(DataTypes.EventTimer);
if (_updateTimer <= uiDiff) if (_updateTimer <= uiDiff)
{ {
switch (_instance.GetData(DataTypes.TypeEvent)) switch (_instance.GetData(DataTypes.Event))
{ {
case 1110: case 1110:
_instance.SetData(DataTypes.TypeEvent, 1120); _instance.SetData(DataTypes.Event, 1120);
_updateTimer = 4 * Time.InMilliseconds; _updateTimer = 4 * Time.InMilliseconds;
break; break;
case 1120: case 1120:
Talk(Texts.Stage_1_02); Talk(Texts.Stage_1_02);
_instance.SetData(DataTypes.TypeEvent, 1130); _instance.SetData(DataTypes.Event, 1130);
_updateTimer = 12 * Time.InMilliseconds; _updateTimer = 12 * Time.InMilliseconds;
break; break;
case 1130: case 1130:
@@ -1116,13 +1116,13 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
pTrigger.SetDisplayId(pTrigger.ToCreature().GetCreatureTemplate().ModelId1); pTrigger.SetDisplayId(pTrigger.ToCreature().GetCreatureTemplate().ModelId1);
pTrigger.CastSpell(pTrigger, Spells.WilfredPortal, false); pTrigger.CastSpell(pTrigger, Spells.WilfredPortal, false);
} }
_instance.SetData(DataTypes.TypeEvent, 1132); _instance.SetData(DataTypes.Event, 1132);
_updateTimer = 4 * Time.InMilliseconds; _updateTimer = 4 * Time.InMilliseconds;
break; break;
} }
case 1132: case 1132:
me.GetMotionMaster().MovementExpired(); me.GetMotionMaster().MovementExpired();
_instance.SetData(DataTypes.TypeEvent, 1134); _instance.SetData(DataTypes.Event, 1134);
_updateTimer = 4 * Time.InMilliseconds; _updateTimer = 4 * Time.InMilliseconds;
break; break;
case 1134: case 1134:
@@ -1137,11 +1137,11 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
_portalGUID = pPortal.GetGUID(); _portalGUID = pPortal.GetGUID();
} }
_updateTimer = 4 * Time.InMilliseconds; _updateTimer = 4 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 1135); _instance.SetData(DataTypes.Event, 1135);
break; break;
} }
case 1135: case 1135:
_instance.SetData(DataTypes.TypeEvent, 1140); _instance.SetData(DataTypes.Event, 1140);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
break; break;
case 1140: case 1140:
@@ -1154,7 +1154,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
temp.SetReactState(ReactStates.Passive); temp.SetReactState(ReactStates.Passive);
temp.GetMotionMaster().MovePoint(0, MiscData.ToCCommonLoc[1].GetPositionX(), MiscData.ToCCommonLoc[1].GetPositionY() - 10, MiscData.ToCCommonLoc[1].GetPositionZ()); temp.GetMotionMaster().MovePoint(0, MiscData.ToCCommonLoc[1].GetPositionX(), MiscData.ToCCommonLoc[1].GetPositionY() - 10, MiscData.ToCCommonLoc[1].GetPositionZ());
} }
_instance.SetData(DataTypes.TypeEvent, 1142); _instance.SetData(DataTypes.Event, 1142);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
break; break;
} }
@@ -1171,7 +1171,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
Creature pPortal = ObjectAccessor.GetCreature(me, _portalGUID); Creature pPortal = ObjectAccessor.GetCreature(me, _portalGUID);
if (pPortal) if (pPortal)
pPortal.DespawnOrUnsummon(); pPortal.DespawnOrUnsummon();
_instance.SetData(DataTypes.TypeEvent, 1144); _instance.SetData(DataTypes.Event, 1144);
_updateTimer = 10 * Time.InMilliseconds; _updateTimer = 10 * Time.InMilliseconds;
break; break;
} }
@@ -1180,7 +1180,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
Creature temp = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.Jaraxxus)); Creature temp = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.Jaraxxus));
if (temp) if (temp)
temp.GetAI().Talk(Texts.Stage_1_05); temp.GetAI().Talk(Texts.Stage_1_05);
_instance.SetData(DataTypes.TypeEvent, 1150); _instance.SetData(DataTypes.Event, 1150);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
break; break;
} }
@@ -1195,7 +1195,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
temp.AddThreat(me, 1000.0f); temp.AddThreat(me, 1000.0f);
temp.GetAI().AttackStart(me); temp.GetAI().AttackStart(me);
} }
_instance.SetData(DataTypes.TypeEvent, 1160); _instance.SetData(DataTypes.Event, 1160);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
break; break;
} }
@@ -1203,7 +1203,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
else else
_updateTimer -= uiDiff; _updateTimer -= uiDiff;
_instance.SetData(DataTypes.TypeEventTimer, _updateTimer); _instance.SetData(DataTypes.EventTimer, _updateTimer);
} }
InstanceScript _instance; InstanceScript _instance;
@@ -1230,25 +1230,25 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (_instance == null) if (_instance == null)
return; return;
if (_instance.GetData(DataTypes.TypeEventNpc) != CreatureIds.Tirion) if (_instance.GetData(DataTypes.EventNpc) != CreatureIds.Tirion)
return; return;
_updateTimer = _instance.GetData(DataTypes.TypeEventTimer); _updateTimer = _instance.GetData(DataTypes.EventTimer);
if (_updateTimer <= uiDiff) if (_updateTimer <= uiDiff)
{ {
switch (_instance.GetData(DataTypes.TypeEvent)) switch (_instance.GetData(DataTypes.Event))
{ {
case 110: case 110:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk);
Talk(Texts.Stage_0_01); Talk(Texts.Stage_0_01);
_updateTimer = 22 * Time.InMilliseconds; _updateTimer = 22 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 120); _instance.SetData(DataTypes.Event, 120);
break; break;
case 140: case 140:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk);
Talk(Texts.Stage_0_02); Talk(Texts.Stage_0_02);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 150); _instance.SetData(DataTypes.Event, 150);
break; break;
case 150: case 150:
{ {
@@ -1266,14 +1266,14 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
} }
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 155); _instance.SetData(DataTypes.Event, 155);
break; break;
} }
case 155: case 155:
// keep the raid in combat for the whole encounter, pauses included // keep the raid in combat for the whole encounter, pauses included
me.SetInCombatWithZone(); me.SetInCombatWithZone();
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 160); _instance.SetData(DataTypes.Event, 160);
break; break;
case 200: case 200:
{ {
@@ -1290,11 +1290,11 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
} }
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 220); _instance.SetData(DataTypes.Event, 220);
break; break;
} }
case 220: case 220:
_instance.SetData(DataTypes.TypeEvent, 230); _instance.SetData(DataTypes.Event, 230);
break; break;
case 300: case 300:
{ {
@@ -1311,64 +1311,64 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
} }
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 315); _instance.SetData(DataTypes.Event, 315);
break; break;
} }
case 315: case 315:
_instance.SetData(DataTypes.TypeEvent, 320); _instance.SetData(DataTypes.Event, 320);
break; break;
case 400: case 400:
Talk(Texts.Stage_0_06); Talk(Texts.Stage_0_06);
me.GetThreatManager().clearReferences(); me.GetThreatManager().clearReferences();
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 666: case 666:
Talk(Texts.Stage_0_Wipe); Talk(Texts.Stage_0_Wipe);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 1010: case 1010:
Talk(Texts.Stage_1_01); Talk(Texts.Stage_1_01);
_updateTimer = 7 * Time.InMilliseconds; _updateTimer = 7 * Time.InMilliseconds;
_instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor)); _instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor));
me.SummonCreature(CreatureIds.Fizzlebang, MiscData.ToCSpawnLoc[0].GetPositionX(), MiscData.ToCSpawnLoc[0].GetPositionY(), MiscData.ToCSpawnLoc[0].GetPositionZ(), 2, TempSummonType.CorpseTimedDespawn, MiscData.DespawnTime); me.SummonCreature(CreatureIds.Fizzlebang, MiscData.ToCSpawnLoc[0].GetPositionX(), MiscData.ToCSpawnLoc[0].GetPositionY(), MiscData.ToCSpawnLoc[0].GetPositionZ(), 2, TempSummonType.CorpseTimedDespawn, MiscData.DespawnTime);
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 1180: case 1180:
Talk(Texts.Stage_1_07); Talk(Texts.Stage_1_07);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 2000: case 2000:
Talk(Texts.Stage_1_08); Talk(Texts.Stage_1_08);
_updateTimer = 18 * Time.InMilliseconds; _updateTimer = 18 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 2010); _instance.SetData(DataTypes.Event, 2010);
break; break;
case 2030: case 2030:
Talk(Texts.Stage_1_11); Talk(Texts.Stage_1_11);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 3000: case 3000:
Talk(Texts.Stage_2_01); Talk(Texts.Stage_2_01);
_updateTimer = 12 * Time.InMilliseconds; _updateTimer = 12 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3050); _instance.SetData(DataTypes.Event, 3050);
break; break;
case 3001: case 3001:
Talk(Texts.Stage_2_01); Talk(Texts.Stage_2_01);
_updateTimer = 10 * Time.InMilliseconds; _updateTimer = 10 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3051); _instance.SetData(DataTypes.Event, 3051);
break; break;
case 3060: case 3060:
Talk(Texts.Stage_2_03); Talk(Texts.Stage_2_03);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3070); _instance.SetData(DataTypes.Event, 3070);
break; break;
case 3061: case 3061:
Talk(Texts.Stage_2_03); Talk(Texts.Stage_2_03);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3071); _instance.SetData(DataTypes.Event, 3071);
break; break;
//Summoning crusaders //Summoning crusaders
case 3091: case 3091:
@@ -1377,7 +1377,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (pChampionController) if (pChampionController)
pChampionController.GetAI().SetData(0, (uint)Team.Horde); pChampionController.GetAI().SetData(0, (uint)Team.Horde);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3092); _instance.SetData(DataTypes.Event, 3092);
break; break;
} }
//Summoning crusaders //Summoning crusaders
@@ -1387,7 +1387,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (pChampionController) if (pChampionController)
pChampionController.GetAI().SetData(0, (uint)Team.Alliance); pChampionController.GetAI().SetData(0, (uint)Team.Alliance);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3092); _instance.SetData(DataTypes.Event, 3092);
break; break;
} }
case 3092: case 3092:
@@ -1395,19 +1395,19 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
Creature pChampionController = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.ChampionsController)); Creature pChampionController = ObjectAccessor.GetCreature(me, _instance.GetGuidData(CreatureIds.ChampionsController));
if (pChampionController) if (pChampionController)
pChampionController.GetAI().SetData(1, (uint)EncounterState.NotStarted); pChampionController.GetAI().SetData(1, (uint)EncounterState.NotStarted);
_instance.SetData(DataTypes.TypeEvent, 3095); _instance.SetData(DataTypes.Event, 3095);
break; break;
} }
//Crusaders battle end //Crusaders battle end
case 3100: case 3100:
Talk(Texts.Stage_2_06); Talk(Texts.Stage_2_06);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 4000: case 4000:
Talk(Texts.Stage_3_01); Talk(Texts.Stage_3_01);
_updateTimer = 13 * Time.InMilliseconds; _updateTimer = 13 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 4010); _instance.SetData(DataTypes.Event, 4010);
break; break;
case 4010: case 4010:
{ {
@@ -1430,7 +1430,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
temp.SummonCreature(CreatureIds.DarkEssence, MiscData.TwinValkyrsLoc[3].GetPositionX(), MiscData.TwinValkyrsLoc[3].GetPositionY(), MiscData.TwinValkyrsLoc[3].GetPositionZ()); temp.SummonCreature(CreatureIds.DarkEssence, MiscData.TwinValkyrsLoc[3].GetPositionX(), MiscData.TwinValkyrsLoc[3].GetPositionY(), MiscData.TwinValkyrsLoc[3].GetPositionZ());
} }
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 4015); _instance.SetData(DataTypes.Event, 4015);
break; break;
} }
case 4015: case 4015:
@@ -1450,38 +1450,38 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
temp.SetVisible(true); temp.SetVisible(true);
} }
_updateTimer = 10 * Time.InMilliseconds; _updateTimer = 10 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 4016); _instance.SetData(DataTypes.Event, 4016);
break; break;
} }
case 4016: case 4016:
_instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor)); _instance.DoUseDoorOrButton(_instance.GetGuidData(GameObjectIds.MainGateDoor));
_instance.SetData(DataTypes.TypeEvent, 4017); _instance.SetData(DataTypes.Event, 4017);
break; break;
case 4040: case 4040:
_updateTimer = 1 * Time.Minute * Time.InMilliseconds; _updateTimer = 1 * Time.Minute * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 5000); _instance.SetData(DataTypes.Event, 5000);
break; break;
case 5000: case 5000:
Talk(Texts.Stage_4_01); Talk(Texts.Stage_4_01);
_updateTimer = 10 * Time.InMilliseconds; _updateTimer = 10 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 5005); _instance.SetData(DataTypes.Event, 5005);
break; break;
case 5005: case 5005:
_updateTimer = 8 * Time.InMilliseconds; _updateTimer = 8 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 5010); _instance.SetData(DataTypes.Event, 5010);
me.SummonCreature(CreatureIds.LichKing, MiscData.ToCCommonLoc[2].GetPositionX(), MiscData.ToCCommonLoc[2].GetPositionY(), MiscData.ToCCommonLoc[2].GetPositionZ(), 5); me.SummonCreature(CreatureIds.LichKing, MiscData.ToCCommonLoc[2].GetPositionX(), MiscData.ToCCommonLoc[2].GetPositionY(), MiscData.ToCCommonLoc[2].GetPositionZ(), 5);
break; break;
case 5020: case 5020:
Talk(Texts.Stage_4_03); Talk(Texts.Stage_4_03);
_updateTimer = 1 * Time.InMilliseconds; _updateTimer = 1 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 0); _instance.SetData(DataTypes.Event, 0);
break; break;
case 6000: case 6000:
me.SummonCreature(CreatureIds.TirionFordring, MiscData.EndSpawnLoc[0]); me.SummonCreature(CreatureIds.TirionFordring, MiscData.EndSpawnLoc[0]);
me.SummonCreature(CreatureIds.ArgentMage, MiscData.EndSpawnLoc[1]); me.SummonCreature(CreatureIds.ArgentMage, MiscData.EndSpawnLoc[1]);
me.SummonGameObject(GameObjectIds.PortalToDalaran, MiscData.EndSpawnLoc[2], Quaternion.WAxis, 0); me.SummonGameObject(GameObjectIds.PortalToDalaran, MiscData.EndSpawnLoc[2], Quaternion.WAxis, 0);
_updateTimer = 20 * Time.InMilliseconds; _updateTimer = 20 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 6005); _instance.SetData(DataTypes.Event, 6005);
break; break;
case 6005: case 6005:
{ {
@@ -1489,7 +1489,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (tirionFordring) if (tirionFordring)
tirionFordring.GetAI().Talk(Texts.Stage_4_06); tirionFordring.GetAI().Talk(Texts.Stage_4_06);
_updateTimer = 20 * Time.InMilliseconds; _updateTimer = 20 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 6010); _instance.SetData(DataTypes.Event, 6010);
break; break;
} }
case 6010: case 6010:
@@ -1500,15 +1500,15 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
tirionFordring.GetAI().Talk(Texts.Stage_4_07); tirionFordring.GetAI().Talk(Texts.Stage_4_07);
_updateTimer = 1 * Time.Minute * Time.InMilliseconds; _updateTimer = 1 * Time.Minute * Time.InMilliseconds;
_instance.SetBossState(DataTypes.BossAnubarak, EncounterState.Special); _instance.SetBossState(DataTypes.BossAnubarak, EncounterState.Special);
_instance.SetData(DataTypes.TypeEvent, 6020); _instance.SetData(DataTypes.Event, 6020);
} }
else else
_instance.SetData(DataTypes.TypeEvent, 6030); _instance.SetData(DataTypes.Event, 6030);
break; break;
case 6020: case 6020:
me.DespawnOrUnsummon(); me.DespawnOrUnsummon();
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 6030); _instance.SetData(DataTypes.Event, 6030);
break; break;
default: default:
break; break;
@@ -1516,7 +1516,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
else else
_updateTimer -= uiDiff; _updateTimer -= uiDiff;
_instance.SetData(DataTypes.TypeEventTimer, _updateTimer); _instance.SetData(DataTypes.EventTimer, _updateTimer);
} }
InstanceScript _instance; InstanceScript _instance;
@@ -1540,49 +1540,49 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (_instance == null) if (_instance == null)
return; return;
if (_instance.GetData(DataTypes.TypeEventNpc) != CreatureIds.Garrosh) if (_instance.GetData(DataTypes.EventNpc) != CreatureIds.Garrosh)
return; return;
_updateTimer = _instance.GetData(DataTypes.TypeEventTimer); _updateTimer = _instance.GetData(DataTypes.EventTimer);
if (_updateTimer <= uiDiff) if (_updateTimer <= uiDiff)
{ {
switch (_instance.GetData(DataTypes.TypeEvent)) switch (_instance.GetData(DataTypes.Event))
{ {
case 130: case 130:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk);
Talk(Texts.Stage_0_03h); Talk(Texts.Stage_0_03h);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 132); _instance.SetData(DataTypes.Event, 132);
break; break;
case 132: case 132:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 140); _instance.SetData(DataTypes.Event, 140);
break; break;
case 2010: case 2010:
Talk(Texts.Stage_1_09); Talk(Texts.Stage_1_09);
_updateTimer = 9 * Time.InMilliseconds; _updateTimer = 9 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 2020); _instance.SetData(DataTypes.Event, 2020);
break; break;
case 3050: case 3050:
Talk(Texts.Stage_2_02h); Talk(Texts.Stage_2_02h);
_updateTimer = 15 * Time.InMilliseconds; _updateTimer = 15 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3060); _instance.SetData(DataTypes.Event, 3060);
break; break;
case 3070: case 3070:
Talk(Texts.Stage_2_04h); Talk(Texts.Stage_2_04h);
_updateTimer = 6 * Time.InMilliseconds; _updateTimer = 6 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3080); _instance.SetData(DataTypes.Event, 3080);
break; break;
case 3081: case 3081:
Talk(Texts.Stage_2_05h); Talk(Texts.Stage_2_05h);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3091); _instance.SetData(DataTypes.Event, 3091);
break; break;
case 4030: case 4030:
Talk(Texts.Stage_3_03h); Talk(Texts.Stage_3_03h);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 4040); _instance.SetData(DataTypes.Event, 4040);
break; break;
default: default:
break; break;
@@ -1590,7 +1590,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
else else
_updateTimer -= uiDiff; _updateTimer -= uiDiff;
_instance.SetData(DataTypes.TypeEventTimer, _updateTimer); _instance.SetData(DataTypes.EventTimer, _updateTimer);
} }
InstanceScript _instance; InstanceScript _instance;
@@ -1614,49 +1614,49 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
if (_instance == null) if (_instance == null)
return; return;
if (_instance.GetData(DataTypes.TypeEventNpc) != CreatureIds.Varian) if (_instance.GetData(DataTypes.EventNpc) != CreatureIds.Varian)
return; return;
_updateTimer = _instance.GetData(DataTypes.TypeEventTimer); _updateTimer = _instance.GetData(DataTypes.EventTimer);
if (_updateTimer <= uiDiff) if (_updateTimer <= uiDiff)
{ {
switch (_instance.GetData(DataTypes.TypeEvent)) switch (_instance.GetData(DataTypes.Event))
{ {
case 120: case 120:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotTalk);
Talk(Texts.Stage_0_03a); Talk(Texts.Stage_0_03a);
_updateTimer = 2 * Time.InMilliseconds; _updateTimer = 2 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 122); _instance.SetData(DataTypes.Event, 122);
break; break;
case 122: case 122:
me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone); me.SetUInt32Value(UnitFields.NpcEmotestate, (uint)Emote.OneshotNone);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 130); _instance.SetData(DataTypes.Event, 130);
break; break;
case 2020: case 2020:
Talk(Texts.Stage_1_10); Talk(Texts.Stage_1_10);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 2030); _instance.SetData(DataTypes.Event, 2030);
break; break;
case 3051: case 3051:
Talk(Texts.Stage_2_02a); Talk(Texts.Stage_2_02a);
_updateTimer = 17 * Time.InMilliseconds; _updateTimer = 17 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3061); _instance.SetData(DataTypes.Event, 3061);
break; break;
case 3071: case 3071:
Talk(Texts.Stage_2_04a); Talk(Texts.Stage_2_04a);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3081); _instance.SetData(DataTypes.Event, 3081);
break; break;
case 3080: case 3080:
Talk(Texts.Stage_2_05a); Talk(Texts.Stage_2_05a);
_updateTimer = 3 * Time.InMilliseconds; _updateTimer = 3 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 3090); _instance.SetData(DataTypes.Event, 3090);
break; break;
case 4020: case 4020:
Talk(Texts.Stage_3_03a); Talk(Texts.Stage_3_03a);
_updateTimer = 5 * Time.InMilliseconds; _updateTimer = 5 * Time.InMilliseconds;
_instance.SetData(DataTypes.TypeEvent, 4040); _instance.SetData(DataTypes.Event, 4040);
break; break;
default: default:
break; break;
@@ -1664,7 +1664,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
} }
else else
_updateTimer -= uiDiff; _updateTimer -= uiDiff;
_instance.SetData(DataTypes.TypeEventTimer, _updateTimer); _instance.SetData(DataTypes.EventTimer, _updateTimer);
} }
InstanceScript _instance; InstanceScript _instance;
@@ -31,12 +31,12 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
public const uint BossAnubarak = 5; public const uint BossAnubarak = 5;
public const uint MaxEncounters = 6; public const uint MaxEncounters = 6;
public const uint TypeCounter = 8; public const uint Counter = 8;
public const uint TypeEvent = 9; public const uint Event = 9;
public const uint TypeEventTimer = 101; public const uint EventTimer = 101;
public const uint TypeEventNpc = 102; public const uint EventNpc = 102;
public const uint TypeNorthrendBeasts = 103; public const uint NorthrendBeasts = 103;
public const uint SnoboldCount = 301; public const uint SnoboldCount = 301;
public const uint MistressOfPainCount = 302; public const uint MistressOfPainCount = 302;
@@ -70,7 +70,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
Anubarak = 724006 Anubarak = 724006
} }
struct CreatureIds public struct CreatureIds
{ {
public const uint Barrent = 34816; public const uint Barrent = 34816;
public const uint Tirion = 34996; public const uint Tirion = 34996;
@@ -132,7 +132,7 @@ namespace Scripts.Northrend.CrusadersColiseum.TrialOfTheCrusader
public const uint LightEssence = 34568; public const uint LightEssence = 34568;
public const uint Anubarak = 34564; public const uint Anubarak = 34564;
}; }
struct GameObjectIds struct GameObjectIds
{ {