예제 #1
0
        private ModPacket GetPacket(ChaosSpiritMessageType type)
        {
            ModPacket packet = mod.GetPacket();

            packet.Write((byte)MessageType.ChaosSpirit);
            packet.Write(npc.whoAmI);
            packet.Write((byte)type);
            return(packet);
        }
예제 #2
0
        public void HandlePacket(BinaryReader reader)
        {
            ChaosSpiritMessageType type = (ChaosSpiritMessageType)reader.ReadByte();

            if (type == ChaosSpiritMessageType.HeroPlayer)
            {
                Player player = Main.player[Main.myPlayer];
                player.GetModPlayer <BluemagicPlayer>(mod).heroLives = reader.ReadInt32();
            }
            else if (type == ChaosSpiritMessageType.TargetList)
            {
                int numTargets = reader.ReadInt32();
                targets.Clear();
                for (int k = 0; k < numTargets; k++)
                {
                    targets.Add(reader.ReadInt32());
                }
            }
            else if (type == ChaosSpiritMessageType.DeActivate)
            {
                npc.active = false;
            }
            else if (type == ChaosSpiritMessageType.PlaySound)
            {
                int soundType = reader.ReadInt32();
                int style     = reader.ReadInt32();
                if (targets.Contains(Main.myPlayer))
                {
                    Main.PlaySound(soundType, -1, -1, style);
                }
                else
                {
                    Main.PlaySound(soundType, (int)npc.position.X, (int)npc.position.Y, style);
                }
            }
            else if (type == ChaosSpiritMessageType.Damage)
            {
                int damage = reader.ReadInt32();
                damageTotal += damage;
                if (Main.netMode == 2)
                {
                    ModPacket netMessage = GetPacket(ChaosSpiritMessageType.Damage);
                    int       ignore     = reader.ReadInt32();
                    netMessage.Write(damage);
                    netMessage.Send(-1, ignore);
                }
            }
        }