예제 #1
0
        public void Initialize(ChatMsg chatType, Language language, WorldObject sender, WorldObject receiver, string message, uint achievementId = 0, string channelName = "", Locale locale = Locale.enUS, string addonPrefix = "")
        {
            // Clear everything because same packet can be used multiple times
            Clear();

            SenderGUID.Clear();
            SenderAccountGUID.Clear();
            SenderGuildGUID.Clear();
            PartyGUID.Clear();
            TargetGUID.Clear();
            SenderName = "";
            TargetName = "";
            _ChatFlags = ChatFlags.None;

            SlashCmd  = chatType;
            _Language = language;

            if (sender)
            {
                SetSender(sender, locale);
            }

            if (receiver)
            {
                SetReceiver(receiver, locale);
            }

            SenderVirtualAddress = Global.WorldMgr.GetVirtualRealmAddress();
            TargetVirtualAddress = Global.WorldMgr.GetVirtualRealmAddress();
            AchievementID        = achievementId;
            Channel  = channelName;
            Prefix   = addonPrefix;
            ChatText = message;
        }
예제 #2
0
 void Initialize()
 {
     PhaseTimer = 4000;
     Phase      = 0;
     Intro      = false;
     TargetGUID.Clear();
 }
예제 #3
0
        public override void UpdateAI(uint diff)
        {
            if (!Intro || TargetGUID.IsEmpty())
            {
                return;
            }

            if (PhaseTimer <= diff)
            {
                switch (Phase)
                {
                case 0:
                    Talk(TextIds.SayDarkRider);
                    PhaseTimer = 5000;
                    Phase      = 1;
                    break;

                case 1:
                    Unit target = Global.ObjAccessor.GetUnit(me, TargetGUID);
                    if (target)
                    {
                        DoCast(target, SpellIds.DespawnHorse, true);
                    }
                    PhaseTimer = 3000;
                    Phase      = 2;
                    break;

                case 2:
                    me.SetVisible(false);
                    PhaseTimer = 2000;
                    Phase      = 3;
                    break;

                case 3:
                    me.DespawnOrUnsummon();
                    break;

                default:
                    break;
                }
            }
            else
            {
                PhaseTimer -= diff;
            }
        }