Example #1
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket = packet.Holder.Chat = new PacketChat();
            var        text       = new CreatureText
            {
                Type       = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("SlashCmd"),
                Language   = packet.ReadByteE <Language>("Language"),
                SenderGUID = packet.ReadPackedGuid128("SenderGUID")
            };

            packet.ReadPackedGuid128("SenderGuildGUID");
            packet.ReadPackedGuid128("WowAccountGUID");
            text.ReceiverGUID = packet.ReadPackedGuid128("TargetGUID");
            packet.ReadUInt32("TargetVirtualAddress");
            packet.ReadUInt32("SenderVirtualAddress");
            packet.ReadPackedGuid128("PartyGUID");
            packet.ReadUInt32("AchievementID");
            packet.ReadSingle("DisplayTime");

            var bits24     = packet.ReadBits(11);
            var bits1121   = packet.ReadBits(11);
            var prefixLen  = packet.ReadBits(5);
            var channelLen = packet.ReadBits(7);
            var textLen    = packet.ReadBits(12);
            var flags      = packet.ReadBits("ChatFlags", ClientVersion.AddedInVersion(ClientVersionBuild.V6_1_2_19802) ? 11 : 10);

            packet.ReadBit("HideChatLog");
            packet.ReadBit("FakeSenderName");

            text.SenderName   = packet.ReadWoWString("Sender Name", bits24);
            text.ReceiverName = packet.ReadWoWString("Receiver Name", bits1121);
            packet.ReadWoWString("Addon Message Prefix", prefixLen);
            packet.ReadWoWString("Channel Name", channelLen);

            chatPacket.Text     = text.Text = packet.ReadWoWString("Text", textLen);
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int)text.Language;
            chatPacket.Type     = (int)text.Type;
            chatPacket.Flags    = flags;

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #2
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText
            {
                Type        = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("SlashCmd"),
                Language801 = packet.ReadUInt32E <Language801>("Language"),
                SenderGUID  = packet.ReadPackedGuid128("SenderGUID")
            };

            packet.ReadPackedGuid128("SenderGuildGUID");
            packet.ReadPackedGuid128("WowAccountGUID");
            text.ReceiverGUID = packet.ReadPackedGuid128("TargetGUID");
            packet.ReadUInt32("TargetVirtualAddress");
            packet.ReadUInt32("SenderVirtualAddress");
            packet.ReadPackedGuid128("PartyGUID");
            packet.ReadInt32("AchievementID");
            packet.ReadSingle("DisplayTime");

            var  senderNameLen   = packet.ReadBits(11);
            var  receiverNameLen = packet.ReadBits(11);
            var  prefixLen       = packet.ReadBits(5);
            uint channelLen      = packet.ReadBits(7);
            var  textLen         = packet.ReadBits(12);

            packet.ReadBits("ChatFlags", 11);

            packet.ReadBit("HideChatLog");
            packet.ReadBit("FakeSenderName");
            bool unk801bit = packet.ReadBit("Unk801_Bit");

            text.SenderName   = packet.ReadWoWString("Sender Name", senderNameLen);
            text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverNameLen);
            packet.ReadWoWString("Addon Message Prefix", prefixLen);
            packet.ReadWoWString("Channel Name", channelLen);

            text.Text = packet.ReadWoWString("Text", textLen);
            if (unk801bit)
            {
                packet.ReadUInt32("Unk801");
            }

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #3
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText
            {
                Type       = (ChatMessageType)packet.ReadByte("Chat type"),
                Language   = packet.ReadEnum <Language>("Language", TypeCode.Byte),
                SenderGUID = packet.ReadPackedGuid128("SenderGUID")
            };

            packet.ReadPackedGuid128("SenderGuildGUID");
            packet.ReadPackedGuid128("WowAccountGUID");
            text.ReceiverGUID = packet.ReadPackedGuid128("TargetGUID");
            packet.ReadUInt32("TargetVirtualAddress");
            packet.ReadUInt32("SenderVirtualAddress");
            packet.ReadPackedGuid128("PartyGUID");
            packet.ReadUInt32("AchievementID");
            packet.ReadSingle("DisplayTime");

            var bits24     = packet.ReadBits(11);
            var bits1121   = packet.ReadBits(11);
            var prefixLen  = packet.ReadBits(5);
            var channelLen = packet.ReadBits(7);
            var textLen    = packet.ReadBits(12);

            packet.ReadBits("ChatFlags", 10);

            packet.ReadBit("HideChatLog");
            packet.ReadBit("FakeSenderName");

            text.SenderName   = packet.ReadWoWString("Sender Name", bits24);
            text.ReceiverName = packet.ReadWoWString("Receiver Name", bits1121);
            packet.ReadWoWString("Addon Message Prefix", prefixLen);
            packet.ReadWoWString("Channel Name", channelLen);

            text.Text = packet.ReadWoWString("Text", textLen);

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #4
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            var senderGUIDBytes   = new byte[8];
            var guildGUIDBytes    = new byte[8];
            var receiverGUIDBytes = new byte[8];
            var groupGUIDBytes    = new byte[8];

            var hasSender = !packet.ReadBit();

            packet.ReadBit("Show only in bubble"); // 0 Show in chat log, 1 for showing only in bubble

            var senderNameLen = 0u;

            if (hasSender)
            {
                senderNameLen = packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit
            var hasChannel  = !packet.ReadBit();
            var bit1499     = packet.ReadBit();
            var bit1494     = !packet.ReadBit();
            var bit1490     = !packet.ReadBit();
            var hasRealmId1 = !packet.ReadBit();

            packet.StartBitStream(groupGUIDBytes, 0, 1, 5, 4, 3, 2, 6, 7);
            var bits1490 = 0u;

            if (bit1490)
            {
                bits1490 = packet.ReadBits(9);
            }
            packet.ReadBit(); // fake bit
            packet.StartBitStream(receiverGUIDBytes, 7, 6, 1, 4, 0, 2, 3, 5);
            packet.ReadBit(); // fake bit
            var hasLang   = !packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            packet.StartBitStream(senderGUIDBytes, 0, 3, 7, 2, 1, 5, 4, 6);
            var hasAchi    = !packet.ReadBit();
            var hasText    = !packet.ReadBit();
            var channelLen = 0u;

            if (hasChannel)
            {
                channelLen = packet.ReadBits(7);
            }
            var textLen = 0u;

            if (hasText)
            {
                textLen = packet.ReadBits(12);
            }
            var hasReceiver = !packet.ReadBit();
            var prefixLen   = 0u;

            if (hasPrefix)
            {
                prefixLen = packet.ReadBits(5);
            }
            var hasRealmId2 = !packet.ReadBit();
            var receiverLen = 0u;

            if (hasReceiver)
            {
                receiverLen = packet.ReadBits(11);
            }
            packet.ReadBit(); // fake bit ??????
            packet.StartBitStream(guildGUIDBytes, 2, 5, 7, 4, 0, 1, 3, 6);

            packet.ParseBitStream(guildGUIDBytes, 4, 5, 7, 3, 2, 6, 0, 1);
            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }
            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            if (bit1494)
            {
                packet.ReadSingle("Float1494");
            }

            packet.ParseBitStream(senderGUIDBytes, 4, 7, 1, 5, 0, 6, 2, 3);

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageType540>("Chat type");
            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }
            packet.ParseBitStream(groupGUIDBytes, 1, 3, 4, 6, 0, 2, 5, 7);
            packet.ParseBitStream(receiverGUIDBytes, 2, 5, 3, 6, 7, 4, 1, 0);
            if (hasLang)
            {
                text.Language = packet.ReadByteE <Language>("Language");
            }
            if (hasRealmId2)
            {
                packet.ReadInt32("Realm Id 2");
            }
            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }
            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }
            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderNameLen);
            }
            if (hasRealmId1)
            {
                packet.ReadInt32("Realm Id");
            }

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #5
0
 public override string Text()
 {
     return(CreatureText.AttackString("a", power));
 }
Example #6
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket        = packet.Holder.Chat = new PacketChat();
            var        text              = new CreatureText();
            var        senderGUIDBytes   = new byte[8];
            var        guildGUIDBytes    = new byte[8];
            var        receiverGUIDBytes = new byte[8];
            var        groupGUIDBytes    = new byte[8];

            var hasSender = !packet.ReadBit();
            var hasText   = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(groupGUIDBytes, 1, 0, 6, 7, 3, 4, 2, 5);

            var hasReceiver = !packet.ReadBit();
            var hasRealmId  = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            var bit1495    = packet.ReadBit();
            var bit11      = !packet.ReadBit();
            var hasChannel = !packet.ReadBit();

            packet.StartBitStream(guildGUIDBytes, 0, 7, 6, 4, 1, 3, 2, 5);

            var senderNameLen = 0u;

            if (hasSender)
            {
                senderNameLen = packet.ReadBits(11);
            }

            var textLen = 0u;

            if (hasText)
            {
                textLen = packet.ReadBits(12);
            }

            packet.ReadBit(); // fake bit

            var hasAchi = !packet.ReadBit();

            packet.StartBitStream(senderGUIDBytes, 4, 2, 7, 5, 1, 3, 0, 6);

            var bit148C   = !packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            var prefixLen = 0u;

            if (hasPrefix)
            {
                prefixLen = packet.ReadBits(5);
            }

            var channelLen = 0u;

            if (hasChannel)
            {
                channelLen = packet.ReadBits(7);
            }

            var bit1494 = packet.ReadBit();
            var bit1490 = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            var bits148C = 0u;

            if (bit148C)
            {
                bits148C = packet.ReadBits(9);
            }

            packet.StartBitStream(receiverGUIDBytes, 1, 5, 4, 6, 3, 2, 7, 0);

            var receiverNameLen = 0u;

            if (hasReceiver)
            {
                receiverNameLen = packet.ReadBits(11);
            }

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverNameLen);
            }

            if (hasRealmId)
            {
                packet.ReadInt32("Realm Id");
            }

            packet.ParseBitStream(groupGUIDBytes, 2, 3, 1, 4, 0, 5, 6, 7);
            packet.ParseBitStream(receiverGUIDBytes, 2, 7, 5, 0, 3, 4, 1, 6);
            packet.ParseBitStream(senderGUIDBytes, 5, 7, 3, 1, 6, 2, 4, 0);
            packet.ParseBitStream(guildGUIDBytes, 5, 7, 4, 1, 2, 0, 6, 3);

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            if (bit11)
            {
                packet.ReadByte("Byte11");
            }

            if (bit1490)
            {
                packet.ReadSingle("Float1490");
            }

            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderNameLen);
            }

            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("SlashCmd");

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int?)text.Language ?? 0;
            chatPacket.Type     = (int)text.Type;

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #7
0
 public override string Text(Creature user)
 {
     return(CreatureText.ProtectionString(protection));
 }
Example #8
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            text.Type     = packet.ReadEnum <ChatMessageType>("Type", TypeCode.Byte);
            text.Language = packet.ReadEnum <Language>("Language", TypeCode.Int32);
            var guid = packet.ReadGuid("GUID");

            uint entry = 0;

            if (guid.GetObjectType() == ObjectType.Unit)
            {
                entry = guid.GetEntry();
            }

            packet.ReadInt32("Constant time");

            switch (text.Type)
            {
            case ChatMessageType.Say:
            case ChatMessageType.Yell:
            case ChatMessageType.Party:
            case ChatMessageType.PartyLeader:
            case ChatMessageType.Raid:
            case ChatMessageType.RaidLeader:
            case ChatMessageType.RaidWarning:
            case ChatMessageType.Guild:
            case ChatMessageType.Officer:
            case ChatMessageType.Emote:
            case ChatMessageType.TextEmote:
            case ChatMessageType.Whisper:
            case ChatMessageType.WhisperInform:
            case ChatMessageType.System:
            case ChatMessageType.Channel:
            case ChatMessageType.Battleground:
            case ChatMessageType.BattlegroundLeader:
            case ChatMessageType.Achievement:
            case ChatMessageType.GuildAchievement:
            case ChatMessageType.Restricted:
            case ChatMessageType.Dnd:
            {
                if (text.Type == ChatMessageType.Channel)
                {
                    packet.ReadCString("Channel Name");
                }

                packet.ReadGuid("Sender GUID");
                break;
            }

            case ChatMessageType.BattlegroundNeutral:
            case ChatMessageType.BattlegroundAlliance:
            case ChatMessageType.BattlegroundHorde:
            {
                var target = packet.ReadGuid("Sender GUID");
                switch (target.GetHighType())
                {
                case HighGuidType.Unit:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                case HighGuidType.Pet:
                    packet.ReadInt32("Sender Name Length");
                    packet.ReadCString("Sender Name");
                    break;
                }
                break;
            }

            case ChatMessageType.MonsterSay:
            case ChatMessageType.MonsterYell:
            case ChatMessageType.MonsterParty:
            case ChatMessageType.MonsterEmote:
            case ChatMessageType.MonsterWhisper:
            case ChatMessageType.RaidBossEmote:
            case ChatMessageType.RaidBossWhisper:
            case ChatMessageType.BattleNet:
            {
                packet.ReadInt32("Name Length");
                text.Comment = packet.ReadCString("Name");

                var target = packet.ReadGuid("Receiver GUID");
                switch (target.GetHighType())
                {
                case HighGuidType.Unit:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                    packet.ReadInt32("Receiver Name Length");
                    text.Comment += " to " + packet.ReadCString("Receiver Name");
                    break;
                }
                break;
            }
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_1_0_13914) && text.Language == Language.Addon)
            {
                packet.ReadCString("Addon Message Prefix");
            }

            packet.ReadInt32("Text Length");
            text.Text = packet.ReadCString("Text");
            packet.ReadEnum <ChatTag>("Chat Tag", TypeCode.Byte);

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_2_0_14333))
            {
                if (text.Type == ChatMessageType.RaidBossEmote || text.Type == ChatMessageType.RaidBossWhisper)
                {
                    packet.ReadSingle("Unk single");
                    packet.ReadByte("Unk byte");
                }
            }

            if (text.Type == ChatMessageType.Achievement || text.Type == ChatMessageType.GuildAchievement)
            {
                packet.ReadInt32("Achievement ID");
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #9
0
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket = packet.Holder.Chat = new PacketChat();
            var        text       = new CreatureText
            {
                Type       = packet.ReadByteE <ChatMessageType>("Type"),
                Language   = packet.ReadInt32E <Language>("Language"),
                SenderGUID = packet.ReadGuid("GUID")
            };

            packet.ReadInt32("Constant time");

            switch (text.Type)
            {
            case ChatMessageType.Achievement:
            case ChatMessageType.GuildAchievement:
            {
                packet.ReadGuid("Sender GUID");
                break;
            }

            case ChatMessageType.WhisperForeign:
            {
                packet.ReadInt32("Name Length");
                text.SenderName   = packet.ReadCString("Name");
                text.ReceiverGUID = packet.ReadGuid("Receiver GUID");
                break;
            }

            case ChatMessageType.BattlegroundNeutral:
            case ChatMessageType.BattlegroundAlliance:
            case ChatMessageType.BattlegroundHorde:
            {
                var target = packet.ReadGuid("Sender GUID");
                switch (target.GetHighType())
                {
                case HighGuidType.Creature:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                case HighGuidType.Pet:
                    packet.ReadInt32("Sender Name Length");
                    packet.ReadCString("Sender Name");
                    break;
                }
                break;
            }

            case ChatMessageType.MonsterSay:
            case ChatMessageType.MonsterYell:
            case ChatMessageType.MonsterParty:
            case ChatMessageType.MonsterEmote:
            case ChatMessageType.MonsterWhisper:
            case ChatMessageType.RaidBossEmote:
            case ChatMessageType.RaidBossWhisper:
            case ChatMessageType.BattleNet:
            {
                packet.ReadInt32("Name Length");
                text.SenderName   = packet.ReadCString("Name");
                text.ReceiverGUID = packet.ReadGuid("Receiver GUID");
                switch (text.ReceiverGUID.GetHighType())
                {
                case HighGuidType.Creature:
                case HighGuidType.Vehicle:
                case HighGuidType.GameObject:
                case HighGuidType.Transport:
                    packet.ReadInt32("Receiver Name Length");
                    text.ReceiverName = packet.ReadCString("Receiver Name");
                    break;
                }
                break;
            }

            default:
            {
                if (packet.Opcode == Opcodes.GetOpcode(Opcode.SMSG_GM_MESSAGECHAT, Direction.ServerToClient))
                {
                    packet.ReadInt32("GMNameLength");
                    packet.ReadCString("GMSenderName");
                }

                if (text.Type == ChatMessageType.Channel)
                {
                    packet.ReadCString("Channel Name");
                }

                packet.ReadGuid("Sender GUID");
                break;
            }
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_1_0_13914) && text.Language == Language.Addon)
            {
                packet.ReadCString("Addon Message Prefix");
            }

            packet.ReadInt32("Text Length");
            text.Text = packet.ReadCString("Text");

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V5_1_0_16309))
            {
                packet.ReadInt16E <ChatTag>("Chat Tag");
            }
            else
            {
                packet.ReadByteE <ChatTag>("Chat Tag");
            }

            if (ClientVersion.AddedInVersion(ClientVersionBuild.V4_2_0_14333))
            {
                if (text.Type == ChatMessageType.RaidBossEmote || text.Type == ChatMessageType.RaidBossWhisper)
                {
                    packet.ReadSingle("Unk single");
                    packet.ReadByte("Unk byte");
                }
            }

            if (text.Type == ChatMessageType.Achievement || text.Type == ChatMessageType.GuildAchievement)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID != null && text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID?.ToUniversalGuid();
            chatPacket.Language = (int)text.Language;
            chatPacket.Type     = (int)text.Type;
        }
Example #10
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            var senderGUIDBytes   = new byte[8];
            var guildGUIDBytes    = new byte[8];
            var receiverGUIDBytes = new byte[8];
            var groupGUIDBytes    = new byte[8];

            var hasLang     = !packet.ReadBit();
            var hasReceiver = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(groupGUIDBytes, 3, 7, 2, 6, 0, 4, 5, 1);

            var hasAchi   = !packet.ReadBit();
            var bit1495   = packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            var bit43D = !packet.ReadBit();

            packet.StartBitStream(guildGUIDBytes, 1, 6, 0, 5, 2, 4, 7, 3);

            packet.ReadBit(); // fake bit

            packet.StartBitStream(receiverGUIDBytes, 6, 1, 3, 5, 4, 2, 7, 0);

            var receiverLen = 0u;

            if (hasReceiver)
            {
                receiverLen = packet.ReadBits(11);
            }

            var hasChannel = !packet.ReadBit();
            var bit1494    = packet.ReadBit();
            var bit1490    = !packet.ReadBit();
            var hasRealmId = !packet.ReadBit();

            var bits43D = 0u;

            if (bit43D)
            {
                bits43D = packet.ReadBits(11);
            }

            var channelLen = 0u;

            if (hasChannel)
            {
                channelLen = packet.ReadBits(7);
            }

            var bit8CF = !packet.ReadBit();

            var textLen = 0u;

            if (bit8CF)
            {
                textLen = packet.ReadBits(12);
            }

            packet.ReadBit(); // fake bit

            packet.StartBitStream(senderGUIDBytes, 4, 1, 3, 6, 2, 5, 0, 7);

            var bit148C = !packet.ReadBit();

            var bits148C = 0u;

            if (bit148C)
            {
                bits148C = packet.ReadBits(9);
            }

            // TODO: missing sender name

            if (hasPrefix)
            {
                var prefixLen = packet.ReadBits(5);
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            packet.ParseBitStream(groupGUIDBytes, 4, 2, 7, 3, 6, 1, 5, 0);

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }

            packet.ParseBitStream(receiverGUIDBytes, 7, 4, 1, 3, 0, 6, 5, 2);
            packet.ParseBitStream(guildGUIDBytes, 5, 7, 3, 0, 4, 6, 1, 2);

            if (hasLang)
            {
                text.Language = packet.ReadByteE <Language>("Language");
            }

            packet.ParseBitStream(senderGUIDBytes, 7, 4, 0, 6, 3, 2, 5, 1);

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            text.Text = packet.ReadWoWString("Text", textLen);

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageType540>("Chat type");

            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            if (bit1490)
            {
                packet.ReadSingle("Float1490");
            }

            if (hasRealmId)
            {
                packet.ReadInt32("Realm Id");
            }

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #11
0
 public override string Text(Creature user)
 {
     return(CreatureText.StunString(-power));
 }
Example #12
0
 public override string Text(Creature user)
 {
     return(CreatureText.RegenerationString(-poison));
 }
Example #13
0
 public override string Text(Creature user)
 {
     return(CreatureText.AttackString("a", attack));
 }
        public static void HandleServerChatMessage(Packet packet)
        {
            PacketChat chatPacket        = packet.Holder.Chat = new PacketChat();
            var        text              = new CreatureText();
            var        groupGUIDBytes    = new byte[8];
            var        guildGUIDBytes    = new byte[8];
            var        receiverGUIDBytes = new byte[8];
            var        senderGUIDBytes   = new byte[8];

            var bit1316 = !packet.ReadBit();

            packet.ReadBit("bit5269");
            packet.ReadBit(); // fake bit
            var hasSender = !packet.ReadBit();

            packet.StartBitStream(groupGUIDBytes, 6, 1, 7, 5, 4, 3, 2, 0);
            packet.ReadBit(); // fake bit
            var hasChannel = !packet.ReadBit();

            packet.StartBitStream(receiverGUIDBytes, 1, 5, 7, 4, 2, 0, 6, 3);
            packet.ReadBit("bit5268");
            var hasReceiver = !packet.ReadBit();

            int receiverLen = 0;

            if (hasReceiver)
            {
                receiverLen = (int)packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit
            packet.StartBitStream(guildGUIDBytes, 0, 6, 1, 5, 7, 3, 4, 2);
            var hasText   = !packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            int senderName = 0;

            if (hasSender)
            {
                senderName = (int)packet.ReadBits(11);
            }

            int textLen = 0;

            if (hasText)
            {
                textLen = (int)packet.ReadBits(12);
            }

            var hasConstTime = !packet.ReadBit();
            var hasAchi      = !packet.ReadBit();

            packet.ReadBit(); // fake bit
            packet.StartBitStream(senderGUIDBytes, 5, 4, 1, 0, 6, 2, 7, 3);

            int channelLen = 0;

            if (hasChannel)
            {
                channelLen = (int)packet.ReadBits(7);
            }

            var bit2630 = !packet.ReadBit();

            if (bit2630)
            {
                packet.ReadBitsE <ChatTag>("Chat Tag", 9);
            }

            var hasLang   = !packet.ReadBit();
            int prefixLen = 0;

            if (hasPrefix)
            {
                prefixLen = (int)packet.ReadBits(5);
            }

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            packet.ParseBitStream(guildGUIDBytes, 3, 1, 5, 4, 6, 2, 0, 7);
            packet.ParseBitStream(receiverGUIDBytes, 7, 4, 2, 3, 1, 5, 6, 0);
            packet.ParseBitStream(senderGUIDBytes, 5, 0, 7, 4, 3, 2, 1, 6);
            packet.ParseBitStream(groupGUIDBytes, 3, 5, 2, 6, 4, 0, 1, 7);

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);

            if (hasAchi)
            {
                packet.ReadInt32 <AchievementId>("Achievement Id");
            }

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }

            text.Type = (ChatMessageType)packet.ReadByteE <ChatMessageTypeNew>("Chat type");
            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (hasConstTime)
            {
                packet.ReadInt32("Constant time");
            }

            if (bit1316)
            {
                packet.ReadSingle("float1316");
            }

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderName);
            }

            if (hasLang)
            {
                text.Language = packet.ReadByteE <Language>("Language");
            }

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }

            chatPacket.Text     = text.Text;
            chatPacket.Sender   = text.SenderGUID.ToUniversalGuid();
            chatPacket.Target   = text.ReceiverGUID.ToUniversalGuid();
            chatPacket.Language = (int?)text.Language ?? 0;
            chatPacket.Type     = (int?)text.Type ?? 0;
        }
Example #15
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text         = new CreatureText();
            var GroupGUID    = new byte[8];
            var GuildGUID    = new byte[8];
            var ReceiverGUID = new byte[8];
            var SenderGUID   = new byte[8];

            var bit1316 = !packet.ReadBit();

            packet.ReadBit("bit5269");
            packet.ReadBit(); // fake bit
            var hasSender = !packet.ReadBit();

            packet.StartBitStream(GroupGUID, 6, 1, 7, 5, 4, 3, 2, 0);
            packet.ReadBit(); // fake bit
            var hasChannel = !packet.ReadBit();

            packet.StartBitStream(ReceiverGUID, 1, 5, 7, 4, 2, 0, 6, 3);
            packet.ReadBit("bit5268");
            var hasReceiver = !packet.ReadBit();

            int receiverLen = 0;

            if (hasReceiver)
            {
                receiverLen = (int)packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit
            packet.StartBitStream(GuildGUID, 0, 6, 1, 5, 7, 3, 4, 2);
            var hasText   = !packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            int senderName = 0;

            if (hasSender)
            {
                senderName = (int)packet.ReadBits(11);
            }

            int textLen = 0;

            if (hasText)
            {
                textLen = (int)packet.ReadBits(12);
            }

            var hasConstTime = !packet.ReadBit();
            var hasAchi      = !packet.ReadBit();

            packet.ReadBit(); // fake bit
            packet.StartBitStream(SenderGUID, 5, 4, 1, 0, 6, 2, 7, 3);

            int channelLen = 0;

            if (hasChannel)
            {
                channelLen = (int)packet.ReadBits(7);
            }

            var bit2630 = !packet.ReadBit();

            if (bit2630)
            {
                packet.ReadEnum <ChatTag>("Chat Tag", 9);
            }

            var hasLang   = !packet.ReadBit();
            int prefixLen = 0;

            if (hasPrefix)
            {
                prefixLen = (int)packet.ReadBits(5);
            }

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            packet.ParseBitStream(GuildGUID, 3, 1, 5, 4, 6, 2, 0, 7);
            packet.ParseBitStream(ReceiverGUID, 7, 4, 2, 3, 1, 5, 6, 0);
            packet.ParseBitStream(SenderGUID, 5, 0, 7, 4, 3, 2, 1, 6);
            packet.ParseBitStream(GroupGUID, 3, 5, 2, 6, 4, 0, 1, 7);

            packet.WriteGuid("SenderGUID", SenderGUID);
            packet.WriteGuid("ReceiverGUID", ReceiverGUID);
            packet.WriteGuid("GroupGUID", GroupGUID);
            packet.WriteGuid("GuildGUID", GuildGUID);

            uint entry = 0;
            var  guid  = new Guid(BitConverter.ToUInt64(SenderGUID, 0));

            if (guid.GetObjectType() == ObjectType.Unit)
            {
                entry = guid.GetEntry();
            }

            if (hasAchi)
            {
                packet.ReadInt32("Achievement");
            }

            if (hasReceiver)
            {
                packet.ReadWoWString("Receiver Name", receiverLen);
            }

            text.Type = (ChatMessageType)packet.ReadEnum <ChatMessageType530>("Chat type", TypeCode.Byte);
            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (hasConstTime)
            {
                packet.ReadInt32("Constant time");
            }

            if (bit1316)
            {
                packet.ReadSingle("float1316");
            }

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasSender)
            {
                if (entry != 0)
                {
                    text.Comment = packet.ReadWoWString("Sender Name", senderName);
                }
                else
                {
                    packet.ReadWoWString("Sender Name", senderName);
                }
            }

            if (hasLang)
            {
                text.Language = packet.ReadEnum <Language>("Language", TypeCode.Byte);
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #16
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            var SenderGUID   = new byte[8];
            var GuildGUID    = new byte[8];
            var ReceiverGUID = new byte[8];
            var GroupGUID    = new byte[8];

            var hasLang     = !packet.ReadBit();
            var hasReceiver = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(GroupGUID, 3, 7, 2, 6, 0, 4, 5, 1);

            var hasAchi   = !packet.ReadBit();
            var bit1495   = packet.ReadBit();
            var hasPrefix = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            var bit43D = !packet.ReadBit();

            packet.StartBitStream(GuildGUID, 1, 6, 0, 5, 2, 4, 7, 3);

            packet.ReadBit(); // fake bit

            packet.StartBitStream(ReceiverGUID, 6, 1, 3, 5, 4, 2, 7, 0);

            var receiverLen = 0u;

            if (hasReceiver)
            {
                receiverLen = packet.ReadBits(11);
            }

            var hasChannel = !packet.ReadBit();
            var bit1494    = packet.ReadBit();
            var bit1490    = !packet.ReadBit();
            var hasRealmId = !packet.ReadBit();

            var bits43D = 0u;

            if (bit43D)
            {
                bits43D = packet.ReadBits(11);
            }

            var channelLen = 0u;

            if (hasChannel)
            {
                channelLen = packet.ReadBits(7);
            }

            var bit8CF = !packet.ReadBit();

            var textLen = 0u;

            if (bit8CF)
            {
                textLen = packet.ReadBits(12);
            }

            packet.ReadBit(); // fake bit

            packet.StartBitStream(SenderGUID, 4, 1, 3, 6, 2, 5, 0, 7);

            var bit148C = !packet.ReadBit();

            var bits148C = 0u;

            if (bit148C)
            {
                bits148C = packet.ReadBits(9);
            }

            var prefixLen = 0u;

            if (hasPrefix)
            {
                prefixLen = packet.ReadBits(5);
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            packet.ParseBitStream(GroupGUID, 4, 2, 7, 3, 6, 1, 5, 0);

            if (hasReceiver)
            {
                packet.ReadWoWString("Receiver Name", receiverLen);
            }

            packet.ParseBitStream(ReceiverGUID, 7, 4, 1, 3, 0, 6, 5, 2);
            packet.ParseBitStream(GuildGUID, 5, 7, 3, 0, 4, 6, 1, 2);

            if (hasLang)
            {
                text.Language = packet.ReadEnum <Language>("Language", TypeCode.Byte);
            }

            packet.ParseBitStream(SenderGUID, 7, 4, 0, 6, 3, 2, 5, 1);

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            text.Text = packet.ReadWoWString("Text", textLen);

            text.Type = (ChatMessageType)packet.ReadEnum <ChatMessageType540>("Chat type", TypeCode.Byte);

            if (hasAchi)
            {
                packet.ReadInt32("Achievement");
            }

            if (bit1490)
            {
                packet.ReadSingle("Float1490");
            }

            if (hasRealmId)
            {
                packet.ReadInt32("Realm Id");
            }

            packet.WriteGuid("SenderGUID", SenderGUID);
            packet.WriteGuid("ReceiverGUID", ReceiverGUID);
            packet.WriteGuid("GuildGUID", GuildGUID);
            packet.WriteGuid("GroupGUID", GroupGUID);

            uint entry = 0;
            var  guid  = new Guid(BitConverter.ToUInt64(SenderGUID, 0));

            if (guid.GetObjectType() == ObjectType.Unit)
            {
                entry = guid.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #17
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            var SenderGUID   = new byte[8];
            var GuildGUID    = new byte[8];
            var ReceiverGUID = new byte[8];
            var GroupGUID    = new byte[8];

            packet.ReadBit(); // fake bit
            packet.ReadBit(); // fake bit

            packet.StartBitStream(GuildGUID, 4, 5, 1, 0, 2, 6, 7, 3);

            var bit1490 = !packet.ReadBit();
            var hasLang = !packet.ReadBit();

            packet.StartBitStream(SenderGUID, 2, 7, 0, 3, 4, 6, 1, 5);

            var bubble = packet.ReadBit(); // 0 Show in chat log, 1 for showing only in bubble

            if (bubble)
            {
                packet.WriteLine("Show only in bubble");
            }
            var hasAchi     = !packet.ReadBit();
            var hasReceiver = !packet.ReadBit();
            var hasSender   = !packet.ReadBit();
            var hasText     = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(ReceiverGUID, 5, 7, 6, 4, 3, 2, 1, 0);

            var hasRealmId1 = !packet.ReadBit();

            var receiverLen = 0u;

            if (hasReceiver)
            {
                receiverLen = packet.ReadBits(11);
            }

            var senderNameLen = 0u;

            if (hasSender)
            {
                senderNameLen = packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit

            packet.StartBitStream(GroupGUID, 5, 2, 6, 1, 7, 3, 0, 4);

            var bit1494 = !packet.ReadBit();

            var bits1490 = 0u;

            if (bit1490)
            {
                bits1490 = packet.ReadBits(9);
            }

            var textLen = 0u;

            if (hasText)
            {
                textLen = packet.ReadBits(12);
            }

            var bit1499    = packet.ReadBit();
            var hasPrefix  = !packet.ReadBit();
            var hasChannel = !packet.ReadBit();

            var prefixLen = 0u;

            if (hasPrefix)
            {
                prefixLen = packet.ReadBits(5);
            }

            var channelLen = 0u;

            if (hasChannel)
            {
                channelLen = packet.ReadBits(7);
            }

            var hasRealmId2 = !packet.ReadBit();

            packet.ParseBitStream(GuildGUID, 7, 2, 1, 4, 6, 5, 3, 0);
            packet.ParseBitStream(GroupGUID, 5, 3, 2, 4, 1, 0, 7, 6);

            text.Type = (ChatMessageType)packet.ReadEnum <ChatMessageType540>("Chat type", TypeCode.Byte);

            if (hasRealmId1)
            {
                packet.ReadInt32("Realm Id");
            }

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            if (bit1494)
            {
                packet.ReadSingle("Float1494");
            }

            packet.ParseBitStream(ReceiverGUID, 4, 2, 3, 0, 6, 7, 5, 1);
            packet.ParseBitStream(SenderGUID, 6, 1, 0, 2, 4, 5, 7, 3);


            if (hasAchi)
            {
                packet.ReadInt32("Achievement");
            }

            if (hasReceiver)
            {
                packet.ReadWoWString("Receiver Name", receiverLen);
            }

            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (hasSender)
            {
                text.Comment = packet.ReadWoWString("Sender Name", senderNameLen);
            }

            if (hasLang)
            {
                text.Language = packet.ReadEnum <Language>("Language", TypeCode.Byte);
            }

            if (hasChannel)
            {
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasRealmId2)
            {
                packet.ReadInt32("Realm Id 2");
            }

            packet.WriteGuid("SenderGUID", SenderGUID);
            packet.WriteGuid("ReceiverGUID", ReceiverGUID);
            packet.WriteGuid("GuildGUID", GuildGUID);
            packet.WriteGuid("GroupGUID", GroupGUID);

            uint entry = 0;
            var  guid  = new Guid(BitConverter.ToUInt64(SenderGUID, 0));

            if (guid.GetObjectType() == ObjectType.Unit)
            {
                entry = guid.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #18
0
        public static void HandleServerChatMessage(Packet packet)
        {
            var text = new CreatureText();

            var senderGUIDBytes   = new byte[8];
            var guildGUIDBytes    = new byte[8];
            var receiverGUIDBytes = new byte[8];
            var groupGUIDBytes    = new byte[8];

            var bit1495 = packet.ReadBit();

            var hasText   = !packet.ReadBit();
            var hasAchi   = !packet.ReadBit();
            var hasSender = !packet.ReadBit();

            packet.ReadBit(); // fake bit

            packet.StartBitStream(senderGUIDBytes, 2, 4, 0, 6, 1, 3, 5, 7);

            packet.ReadBit(); // fake bit

            packet.StartBitStream(groupGUIDBytes, 6, 0, 4, 1, 2, 3, 7, 5);

            var hasPrefix  = !packet.ReadBit();
            var bit1494    = packet.ReadBit();
            var hasRealmId = !packet.ReadBit();
            var bit1490    = !packet.ReadBit();

            int senderName = 0;

            if (hasSender)
            {
                senderName = (int)packet.ReadBits(11);
            }

            packet.ReadBit(); // fake bit

            packet.StartBitStream(receiverGUIDBytes, 4, 0, 6, 7, 5, 1, 3, 2);

            int prefixLen = 0;

            if (hasPrefix)
            {
                prefixLen = (int)packet.ReadBits(5);
            }

            var hasReceiver = !packet.ReadBit();
            var bit148C     = !packet.ReadBit();

            int textLen = 0;

            if (hasText)
            {
                textLen = (int)packet.ReadBits(12);
            }

            var hasLang = !packet.ReadBit();

            int countBits148C = 0;

            if (bit148C)
            {
                countBits148C = (int)packet.ReadBits(9);
            }

            packet.ReadBit(); // fake bit

            int receiverLen = 0;

            if (hasReceiver)
            {
                receiverLen = (int)packet.ReadBits(11);
            }

            packet.StartBitStream(guildGUIDBytes, 0, 2, 1, 4, 6, 7, 5, 3);

            var hasChannel = !packet.ReadBit();

            if (hasChannel)
            {
                var channelLen = (int)packet.ReadBits(7);
                packet.ReadWoWString("Channel Name", channelLen);
            }

            if (hasSender)
            {
                text.SenderName = packet.ReadWoWString("Sender Name", senderName);
            }

            packet.ParseBitStream(groupGUIDBytes, 6, 7, 1, 2, 4, 3, 0, 5);

            packet.ParseBitStream(receiverGUIDBytes, 0, 4, 1, 3, 5, 7, 2, 6);

            text.Type = (ChatMessageType)packet.ReadEnum <ChatMessageType540>("Chat type", TypeCode.Byte);

            packet.ParseBitStream(senderGUIDBytes, 7, 6, 5, 4, 0, 2, 1, 3);

            if (hasPrefix)
            {
                packet.ReadWoWString("Addon Message Prefix", prefixLen);
            }

            if (hasRealmId)
            {
                packet.ReadInt32("Realm Id");
            }

            packet.ParseBitStream(guildGUIDBytes, 1, 0, 3, 7, 6, 5, 2, 4);

            if (hasReceiver)
            {
                text.ReceiverName = packet.ReadWoWString("Receiver Name", receiverLen);
            }

            if (hasAchi)
            {
                packet.ReadInt32("Achievement");
            }

            if (hasLang)
            {
                text.Language = packet.ReadEnum <Language>("Language", TypeCode.Byte);
            }

            if (hasText)
            {
                text.Text = packet.ReadWoWString("Text", textLen);
            }

            if (bit1490)
            {
                packet.ReadSingle("Float1490");
            }

            text.SenderGUID   = packet.WriteGuid("SenderGUID", senderGUIDBytes);
            text.ReceiverGUID = packet.WriteGuid("ReceiverGUID", receiverGUIDBytes);
            packet.WriteGuid("GuildGUID", guildGUIDBytes);
            packet.WriteGuid("GroupGUID", groupGUIDBytes);

            uint entry = 0;

            if (text.SenderGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.SenderGUID.GetEntry();
            }
            else if (text.ReceiverGUID.GetObjectType() == ObjectType.Unit)
            {
                entry = text.ReceiverGUID.GetEntry();
            }

            if (entry != 0)
            {
                Storage.CreatureTexts.Add(entry, text, packet.TimeSpan);
            }
        }
Example #19
0
 public override string Text()
 {
     return(CreatureText.AttackString($"{source.Text(owner)}na", power));
 }