public override void UpdateAI(uint diff) { base.UpdateAI(diff); if (uiTimer <= diff) { switch (uiPhase) { case 1: DoSummonGrandChampion(uiSecondBoss); NextStep(10000, true); break; case 2: DoSummonGrandChampion(uiThirdBoss); NextStep(0, false); break; case 3: if (!Champion1List.Empty()) { foreach (var guid in Champion1List) { Creature summon = ObjectAccessor.GetCreature(me, guid); if (summon) { AggroAllPlayers(summon); } } NextStep(0, false); } break; } } else { uiTimer -= diff; } if (!UpdateVictim()) { return; } }
void DoSummonGrandChampion(uint uiBoss) { ++uiSummonTimes; uint VEHICLE_TO_SUMMON1 = 0; uint VEHICLE_TO_SUMMON2 = 0; switch (uiBoss) { case 0: VEHICLE_TO_SUMMON1 = VehicleIds.MOKRA_SKILLCRUSHER_MOUNT; VEHICLE_TO_SUMMON2 = VehicleIds.ORGRIMMAR_WOLF; break; case 1: VEHICLE_TO_SUMMON1 = VehicleIds.ERESSEA_DAWNSINGER_MOUNT; VEHICLE_TO_SUMMON2 = VehicleIds.SILVERMOON_HAWKSTRIDER; break; case 2: VEHICLE_TO_SUMMON1 = VehicleIds.RUNOK_WILDMANE_MOUNT; VEHICLE_TO_SUMMON2 = VehicleIds.THUNDER_BLUFF_KODO; break; case 3: VEHICLE_TO_SUMMON1 = VehicleIds.ZUL_TORE_MOUNT; VEHICLE_TO_SUMMON2 = VehicleIds.DARKSPEAR_RAPTOR; break; case 4: VEHICLE_TO_SUMMON1 = VehicleIds.DEATHSTALKER_VESCERI_MOUNT; VEHICLE_TO_SUMMON2 = VehicleIds.FORSAKE_WARHORSE; break; default: return; } Creature pBoss = me.SummonCreature(VEHICLE_TO_SUMMON1, SpawnPosition); if (pBoss) { ObjectGuid uiGrandChampionBoss = ObjectGuid.Empty; Vehicle pVehicle = pBoss.GetVehicleKit(); if (pVehicle) { Unit unit = pVehicle.GetPassenger(0); if (unit) { uiGrandChampionBoss = unit.GetGUID(); } } switch (uiSummonTimes) { case 1: uiVehicle1GUID = pBoss.GetGUID(); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_VEHICLE_1, uiVehicle1GUID); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_1, uiGrandChampionBoss); break; case 2: uiVehicle2GUID = pBoss.GetGUID(); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_VEHICLE_2, uiVehicle2GUID); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_2, uiGrandChampionBoss); break; case 3: uiVehicle3GUID = pBoss.GetGUID(); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_VEHICLE_3, uiVehicle3GUID); instance.SetGuidData((uint)Data64.DATA_GRAND_CHAMPION_3, uiGrandChampionBoss); break; default: return; } pBoss.GetAI().SetData(uiSummonTimes, 0); for (byte i = 0; i < 3; ++i) { Creature pAdd = me.SummonCreature(VEHICLE_TO_SUMMON2, SpawnPosition, TempSummonType.CorpseDespawn); if (pAdd) { switch (uiSummonTimes) { case 1: Champion1List.Add(pAdd.GetGUID()); break; case 2: Champion2List.Add(pAdd.GetGUID()); break; case 3: Champion3List.Add(pAdd.GetGUID()); break; } switch (i) { case 0: pAdd.GetMotionMaster().MoveFollow(pBoss, 2.0f, MathFunctions.PI); break; case 1: pAdd.GetMotionMaster().MoveFollow(pBoss, 2.0f, MathFunctions.PI / 2); break; case 2: pAdd.GetMotionMaster().MoveFollow(pBoss, 2.0f, MathFunctions.PI / 2 + MathFunctions.PI); break; } } } } }