예제 #1
0
            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;
                }
            }
예제 #2
0
            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;
                            }
                        }
                    }
                }
            }