Пример #1
0
        public override bool OnGossipHello(Player player, GameObject go)
        {
            InstanceScript instance = go.GetInstanceScript();

            if (instance == null)
            {
                return(false);
            }

            Creature PrinceTaldaram = ObjectAccessor.GetCreature(go, instance.GetGuidData(DataTypes.PrinceTaldaram));

            if (PrinceTaldaram && PrinceTaldaram.IsAlive())
            {
                go.SetFlag(GameObjectFields.Flags, GameObjectFlags.NotSelectable);
                go.SetGoState(GameObjectState.Active);

                switch (go.GetEntry())
                {
                case GameObjectIds.Sphere1:
                    instance.SetData(DataTypes.Sphere1, (uint)EncounterState.InProgress);
                    PrinceTaldaram.GetAI().Talk(TextIds.Say1);
                    break;

                case GameObjectIds.Sphere2:
                    instance.SetData(DataTypes.Sphere2, (uint)EncounterState.InProgress);
                    PrinceTaldaram.GetAI().Talk(TextIds.Say1);
                    break;
                }

                PrinceTaldaram.GetAI <boss_prince_taldaram>().CheckSpheres();
            }
            return(true);
        }
Пример #2
0
        public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
        {
            if (!entered)
            {
                return(true);
            }

            InstanceScript instance = player.GetInstanceScript();

            if (instance != null)
            {
                if (instance.GetData(DataTypes.CavernActive) != 0)
                {
                    return(true);
                }

                instance.SetData(DataTypes.CavernActive, 1);

                Creature tyrannus = ObjectAccessor.GetCreature(player, instance.GetGuidData(DataTypes.TyrannusEvent));
                if (tyrannus)
                {
                    tyrannus.GetAI().Talk(TextIds.SayTyrannusCavernEntrance);
                }
            }
            return(true);
        }
Пример #3
0
            void HandleScript(uint effIndex)
            {
                Unit caster = GetCaster();

                if (caster)
                {
                    InstanceScript instance = caster.GetInstanceScript();
                    if (instance != null)
                    {
                        Unit toyPile = Global.ObjAccessor.GetUnit(caster, instance.GetGuidData(InstanceData.ToyPile0 + RandomHelper.URand(0, 3)));
                        if (toyPile)
                        {
                            caster.CastSpell(toyPile, SpellIds.EnergyOrb, true);

                            // This should probably be incorporated in a dummy effect handler, but I've had trouble getting the correct target
                            // Weighed randomization (approximation)
                            uint[] spells = { SpellIds.RechargeScrapbot, SpellIds.RechargeScrapbot, SpellIds.RechargeScrapbot, SpellIds.RechargePummeler, SpellIds.RechargeBoombot };

                            for (byte i = 0; i < 5; ++i)
                            {
                                uint spellId = spells[RandomHelper.IRand(0, 4)];
                                toyPile.CastSpell(toyPile, spellId, true, null, null, instance.GetGuidData(BossIds.Xt002));
                            }
                        }
                    }

                    Creature creatureBase = caster.GetVehicleCreatureBase();
                    if (creatureBase)
                    {
                        creatureBase.GetAI().Talk(Texts.Summon);
                    }
                }
            }
Пример #4
0
        public override bool OnGossipHello(Player player, GameObject go)
        {
            InstanceScript instance = go.GetInstanceScript();

            Creature pKeristrasza = ObjectAccessor.GetCreature(go, instance.GetGuidData(DataTypes.Keristrasza));

            if (pKeristrasza && pKeristrasza.IsAlive())
            {
                // maybe these are hacks :(
                go.SetFlag(GameObjectFields.Flags, GameObjectFlags.NotSelectable);
                go.SetGoState(GameObjectState.Active);

                ((boss_keristrasza.boss_keristraszaAI)pKeristrasza.GetAI()).CheckContainmentSpheres(true);
            }
            return(true);
        }
Пример #5
0
        public override bool OnTrigger(Player player, AreaTriggerRecord areaTrigger, bool entered)
        {
            InstanceScript instance = player.GetInstanceScript();

            if (instance != null)
            {
                if (instance.GetBossState(Bosses.LadyDeathwhisper) != EncounterState.Done)
                {
                    Creature ladyDeathwhisper = ObjectAccessor.GetCreature(player, instance.GetGuidData(Bosses.LadyDeathwhisper));
                    if (ladyDeathwhisper)
                    {
                        ladyDeathwhisper.GetAI().DoAction(0);
                    }
                }
            }

            return(true);
        }
Пример #6
0
        public override void JustSummoned(Creature summon)
        {
            InstanceScript instance = me.GetInstanceScript();

            if (instance != null)
            {
                ObjectGuid guid = instance.GetGuidData(DTKDataTypes.Novos);
                if (!guid.IsEmpty())
                {
                    Creature novos = ObjectAccessor.GetCreature(me, guid);
                    if (novos)
                    {
                        novos.GetAI().JustSummoned(summon);
                    }
                }
            }

            if (summon)
            {
                summon.GetMotionMaster().MovePath(summon.GetEntry() * 100, false);
            }
        }
Пример #7
0
        public override void SummonedCreatureDies(Creature summon, Unit killer)
        {
            if (_crystalHandlerCount < 4)
            {
                return;
            }

            InstanceScript instance = me.GetInstanceScript();

            if (instance != null)
            {
                ObjectGuid guid = instance.GetGuidData(DTKDataTypes.Novos);
                if (!guid.IsEmpty())
                {
                    Creature novos = ObjectAccessor.GetCreature(me, guid);
                    if (novos)
                    {
                        novos.GetAI().DoAction(DTKDataTypes.ActionCrystalHandlerDied);
                    }
                }
            }
        }