Ejemplo n.º 1
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            downedSky = flags[0];
        }
Ejemplo n.º 2
0
        /*public override void SetDefaults(Item item)
         * {
         *  List<ItemProperties> itemConfig = ItemConfig.Instance.ItemChanges;
         *  int index = itemConfig.FindIndex(prop => prop.Type == item.type);
         *  if (index != -1)
         *  {
         *      item.CopyItemProperties(itemConfig[index]);
         *  }
         * }*/

        public override void NetSend(Item item, BinaryWriter writer)
        {
            Item defaultItem = new Item();

            defaultItem.SetDefaults(item.type);
            BitsByte flags1 = new BitsByte();
            BitsByte flags2 = new BitsByte();
            BitsByte flags3 = new BitsByte();
            BitsByte flags4 = new BitsByte();
            BitsByte flags5 = new BitsByte();

            if (item.autoReuse != defaultItem.autoReuse)
            {
                flags2[0] = true;
            }
            if (item.consumable != defaultItem.consumable)
            {
                flags2[1] = true;
            }
            if (item.potion != defaultItem.potion)
            {
                flags2[2] = true;
            }
            if (item.accessory != defaultItem.accessory)
            {
                flags2[3] = true;
            }
            int damageType = item.DamageType();

            if (damageType != defaultItem.DamageType())
            {
                flags2[4] = true;
            }
            if (item.damage != defaultItem.damage)
            {
                flags2[5] = true;
            }
            if (item.knockBack != defaultItem.knockBack)
            {
                flags2[6] = true;
            }
            if (item.crit != defaultItem.crit)
            {
                flags2[7] = true;
            }
            if (item.shoot != defaultItem.shoot)
            {
                flags3[0] = true;
            }
            if (item.shootSpeed != defaultItem.shootSpeed)
            {
                flags3[1] = true;
            }
            if (item.createTile != defaultItem.createTile)
            {
                flags3[2] = true;
            }
            if (item.tileBoost != defaultItem.tileBoost)
            {
                flags3[3] = true;
            }
            if (item.buffType != defaultItem.buffType)
            {
                flags3[4] = true;
            }
            if (item.buffTime != defaultItem.buffTime)
            {
                flags3[5] = true;
            }
            if (item.healLife != defaultItem.healLife)
            {
                flags3[6] = true;
            }
            if (item.healMana != defaultItem.healMana)
            {
                flags3[7] = true;
            }
            if (item.axe != defaultItem.axe)
            {
                flags4[0] = true;
            }
            if (item.pick != defaultItem.pick)
            {
                flags4[1] = true;
            }
            if (item.hammer != defaultItem.hammer)
            {
                flags4[2] = true;
            }
            if (item.maxStack != defaultItem.maxStack)
            {
                flags4[3] = true;
            }
            if (item.useAnimation != defaultItem.useAnimation)
            {
                flags4[4] = true;
            }
            if (item.useTime != defaultItem.useTime)
            {
                flags4[5] = true;
            }
            if (item.defense != defaultItem.defense)
            {
                flags4[6] = true;
            }
            if (item.fishingPole != defaultItem.fishingPole)
            {
                flags4[7] = true;
            }
            if (item.scale != defaultItem.scale)
            {
                flags5[0] = true;
            }
            if (item.useStyle != defaultItem.useStyle)
            {
                flags5[1] = true;
            }
            if (item.mana != defaultItem.mana)
            {
                flags5[2] = true;
            }
            if (flags2 != 0)
            {
                flags1[0] = true;
            }
            if (flags3 != 0)
            {
                flags1[1] = true;
            }
            if (flags4 != 0)
            {
                flags1[2] = true;
            }
            if (flags5 != 0)
            {
                flags1[3] = true;
            }
            writer.Write(flags1);
            if (flags1 != 0)
            {
                if (flags1[0])
                {
                    writer.Write(flags2);
                    if (flags2[0])
                    {
                        writer.Write(item.autoReuse);
                    }
                    if (flags2[1])
                    {
                        writer.Write(item.consumable);
                    }
                    if (flags2[2])
                    {
                        writer.Write(item.potion);
                    }
                    if (flags2[3])
                    {
                        writer.Write(item.accessory);
                    }
                    if (flags2[4])
                    {
                        writer.Write((byte)damageType);
                    }
                    if (flags2[5])
                    {
                        writer.Write(item.damage);
                    }
                    if (flags2[6])
                    {
                        writer.Write(item.knockBack);
                    }
                    if (flags2[7])
                    {
                        writer.Write((ushort)item.crit);
                    }
                }
                if (flags1[1])
                {
                    writer.Write(flags3);
                    if (flags3[0])
                    {
                        writer.Write((ushort)item.shoot);
                    }
                    if (flags3[1])
                    {
                        writer.Write(item.shootSpeed);
                    }
                    if (flags3[2])
                    {
                        writer.Write((ushort)(item.createTile + 1));
                    }
                    if (flags3[3])
                    {
                        writer.Write((sbyte)item.tileBoost);
                    }
                    if (flags3[4])
                    {
                        writer.Write((ushort)item.buffType);
                    }
                    if (flags3[5])
                    {
                        writer.Write(item.buffTime);
                    }
                    if (flags3[6])
                    {
                        writer.Write((ushort)item.healLife);
                    }
                    if (flags3[7])
                    {
                        writer.Write((ushort)item.healMana);
                    }
                }
                if (flags1[2])
                {
                    writer.Write(flags4);
                    if (flags4[0])
                    {
                        writer.Write((ushort)item.axe);
                    }
                    if (flags4[1])
                    {
                        writer.Write((ushort)item.pick);
                    }
                    if (flags4[2])
                    {
                        writer.Write((ushort)item.hammer);
                    }
                    if (flags4[3])
                    {
                        writer.Write(item.maxStack);
                    }
                    if (flags4[4])
                    {
                        writer.Write((ushort)item.useAnimation);
                    }
                    if (flags4[5])
                    {
                        writer.Write((ushort)item.useTime);
                    }
                    if (flags4[6])
                    {
                        writer.Write(item.defense);
                    }
                    if (flags4[7])
                    {
                        writer.Write((ushort)item.fishingPole);
                    }
                }
                if (flags1[3])
                {
                    writer.Write(flags5);
                    if (flags5[0])
                    {
                        writer.Write(item.scale);
                    }
                    if (flags5[1])
                    {
                        writer.Write((byte)item.useStyle);
                    }
                    if (flags5[2])
                    {
                        writer.Write((ushort)item.mana);
                    }
                }
            }
        }
Ejemplo n.º 3
0
        private void OnGetData(GetDataEventArgs args)
        {
            // TshockではGhostへのタイル送信が行われないため、プレイヤーが移動するPlayerUpdateパケットで送信する
            if (!args.Handled &&
                args.MsgID == PacketTypes.PlayerUpdate)
            {
                if (Main.player[args.Msg.whoAmI].ghost)
                {
                    BinaryReader reader      = new BinaryReader(new MemoryStream(args.Msg.readBuffer, args.Index, args.Length));
                    int          playerIndex = reader.ReadByte();
                    if (playerIndex != Main.myPlayer ||
                        Main.ServerSideCharacter)
                    {
                        // Update Player
                        Player player = Main.player[playerIndex];

                        BitsByte bitsByte10 = reader.ReadByte();
                        BitsByte bitsByte11 = reader.ReadByte();
                        BitsByte bitsByte12 = reader.ReadByte();
                        BitsByte bitsByte13 = reader.ReadByte();
                        player.controlUp      = bitsByte10[0];
                        player.controlDown    = bitsByte10[1];
                        player.controlLeft    = bitsByte10[2];
                        player.controlRight   = bitsByte10[3];
                        player.controlJump    = bitsByte10[4];
                        player.controlUseItem = bitsByte10[5];
                        player.direction      = (bitsByte10[6] ? 1 : (-1));
                        if (bitsByte11[0])
                        {
                            player.pulley    = true;
                            player.pulleyDir = (byte)((!bitsByte11[1]) ? 1 : 2);
                        }
                        else
                        {
                            player.pulley = false;
                        }
                        player.vortexStealthActive = bitsByte11[3];
                        player.gravDir             = (bitsByte11[4] ? 1 : (-1));
                        player.TryTogglingShield(bitsByte11[5]);
                        player.ghost        = bitsByte11[6];
                        player.selectedItem = reader.ReadByte();
                        player.position     = reader.ReadVector2();
                        if (bitsByte11[2])
                        {
                            player.velocity = reader.ReadVector2();
                        }
                        else
                        {
                            player.velocity = Vector2.Zero;
                        }
                        if (bitsByte12[6])
                        {
                            player.PotionOfReturnOriginalUsePosition = reader.ReadVector2();
                            player.PotionOfReturnHomePosition        = reader.ReadVector2();
                        }
                        else
                        {
                            player.PotionOfReturnOriginalUsePosition = null;
                            player.PotionOfReturnHomePosition        = null;
                        }
                        player.tryKeepingHoveringUp        = bitsByte12[0];
                        player.IsVoidVaultEnabled          = bitsByte12[1];
                        player.sitting.isSitting           = bitsByte12[2];
                        player.downedDD2EventAnyDifficulty = bitsByte12[3];
                        player.isPettingAnimal             = bitsByte12[4];
                        player.isTheAnimalBeingPetSmall    = bitsByte12[5];
                        player.tryKeepingHoveringDown      = bitsByte12[7];
                        player.sleeping.SetIsSleepingAndAdjustPlayerRotation(player, bitsByte13[0]);

                        RemoteClient.CheckSection(playerIndex, player.position);
                    }
                }

                // ひとまずGhostと同じ処理
                if (!Main.player[args.Msg.whoAmI].active)
                {
                    BinaryReader reader      = new BinaryReader(new MemoryStream(args.Msg.readBuffer, args.Index, args.Length));
                    int          playerIndex = reader.ReadByte();
                    if (playerIndex != Main.myPlayer ||
                        Main.ServerSideCharacter)
                    {
                        // Update Player
                        Player player = Main.player[playerIndex];

                        BitsByte bitsByte10 = reader.ReadByte();
                        BitsByte bitsByte11 = reader.ReadByte();
                        BitsByte bitsByte12 = reader.ReadByte();
                        BitsByte bitsByte13 = reader.ReadByte();
                        player.controlUp      = bitsByte10[0];
                        player.controlDown    = bitsByte10[1];
                        player.controlLeft    = bitsByte10[2];
                        player.controlRight   = bitsByte10[3];
                        player.controlJump    = bitsByte10[4];
                        player.controlUseItem = bitsByte10[5];
                        player.direction      = (bitsByte10[6] ? 1 : (-1));
                        if (bitsByte11[0])
                        {
                            player.pulley    = true;
                            player.pulleyDir = (byte)((!bitsByte11[1]) ? 1 : 2);
                        }
                        else
                        {
                            player.pulley = false;
                        }
                        player.vortexStealthActive = bitsByte11[3];
                        player.gravDir             = (bitsByte11[4] ? 1 : (-1));
                        player.TryTogglingShield(bitsByte11[5]);
                        player.ghost        = bitsByte11[6];
                        player.selectedItem = reader.ReadByte();
                        player.position     = reader.ReadVector2();
                        if (bitsByte11[2])
                        {
                            player.velocity = reader.ReadVector2();
                        }
                        else
                        {
                            player.velocity = Vector2.Zero;
                        }
                        if (bitsByte12[6])
                        {
                            player.PotionOfReturnOriginalUsePosition = reader.ReadVector2();
                            player.PotionOfReturnHomePosition        = reader.ReadVector2();
                        }
                        else
                        {
                            player.PotionOfReturnOriginalUsePosition = null;
                            player.PotionOfReturnHomePosition        = null;
                        }
                        player.tryKeepingHoveringUp        = bitsByte12[0];
                        player.IsVoidVaultEnabled          = bitsByte12[1];
                        player.sitting.isSitting           = bitsByte12[2];
                        player.downedDD2EventAnyDifficulty = bitsByte12[3];
                        player.isPettingAnimal             = bitsByte12[4];
                        player.isTheAnimalBeingPetSmall    = bitsByte12[5];
                        player.tryKeepingHoveringDown      = bitsByte12[7];
                        player.sleeping.SetIsSleepingAndAdjustPlayerRotation(player, bitsByte13[0]);

                        RemoteClient.CheckSection(playerIndex, player.position);
                    }
                }
            }
        }
Ejemplo n.º 4
0
 //in Terraria.NetMessage.SendData at end of case 27 call
 //  ProjectileLoader.SendExtraAI(projectile, writer, ref bb14);
 public static byte[] SendExtraAI(Projectile projectile, ref BitsByte flags)
 {
     if (projectile.modProjectile != null)
     {
         byte[] data;
         using (MemoryStream stream = new MemoryStream())
         {
             using (BinaryWriter modWriter = new BinaryWriter(stream))
             {
                 projectile.modProjectile.SendExtraAI(modWriter);
                 modWriter.Flush();
                 data = stream.ToArray();
             }
         }
         if (data.Length > 0)
         {
             flags[Projectile.maxAI + 1] = true;
         }
         return data;
     }
     return new byte[0];
 }
Ejemplo n.º 5
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            DownedCloudBoss = flags[0];
        }
        public bool Read(int bufferId, int start, int length)
        {
            var buffer = NetMessage.buffer[bufferId];

            int      identity  = (int)buffer.reader.ReadInt16();
            Vector2  position  = buffer.reader.ReadVector2();
            Vector2  velocity  = buffer.reader.ReadVector2();
            float    knockBack = buffer.reader.ReadSingle();
            int      damage    = (int)buffer.reader.ReadInt16();
            int      owner     = (int)buffer.reader.ReadByte();
            int      type      = (int)buffer.reader.ReadInt16();
            BitsByte flags     = buffer.reader.ReadByte();

            float[] ai = new float[Projectile.maxAI];

            for (int i = 0; i < Projectile.maxAI; i++)
            {
                if (flags[i])
                {
                    ai[i] = buffer.reader.ReadSingle();
                }
                else
                {
                    ai[i] = 0;
                }
            }
            int uuid = (int)(flags[Projectile.maxAI] ? buffer.reader.ReadInt16() : -1);

            if (uuid >= 1000)
            {
                uuid = -1;
            }
            if (Main.netMode == 2)
            {
                owner = bufferId;
                if (Main.projHostile[type])
                {
                    return(true);
                }
            }
            int index = 1000;

            for (int i = 0; i < 1000; i++)
            {
                if (Main.projectile[i].owner == owner && Main.projectile[i].identity == identity && Main.projectile[i].active)
                {
                    index = i;
                    break;
                }
            }
            if (index == 1000)
            {
                for (int i = 0; i < 1000; i++)
                {
                    if (!Main.projectile[i].active)
                    {
                        index = i;
                        break;
                    }
                }
            }

            var player = Main.player[bufferId];
            var ctx    = new HookContext
            {
                Connection = player.Connection.Socket,
                Player     = player,
                Sender     = player,
            };

            var args = new TDSMHookArgs.ProjectileReceived
            {
                Position      = position,
                Velocity      = velocity,
                Id            = identity,
                Owner         = bufferId,
                Knockback     = knockBack,
                Damage        = damage,
                Type          = type,
                AI            = ai,
                ExistingIndex = index < 1000 ? index : -1
            };

            TDSMHookPoints.ProjectileReceived.Invoke(ref ctx, ref args);

            if (ctx.Result == HookResult.DEFAULT)
            {
                if (index > -1 && index < 1000)
                {
                    Projectile projectile = Main.projectile[index];
                    if (!projectile.active || projectile.type != type)
                    {
                        projectile.SetDefaults(type);
                        if (Main.netMode == 2)
                        {
                            Netplay.Clients[bufferId].SpamProjectile += 1;
                        }
                    }
                    projectile.identity  = identity;
                    projectile.position  = position;
                    projectile.velocity  = velocity;
                    projectile.type      = type;
                    projectile.damage    = damage;
                    projectile.knockBack = knockBack;
                    projectile.owner     = owner;
                    for (int i = 0; i < Projectile.maxAI; i++)
                    {
                        projectile.ai[i] = ai[i];
                    }
                    if (uuid >= 0)
                    {
                        projectile.projUUID = uuid;
                        Main.projectileIdentity[owner, uuid] = index;
                    }
                    projectile.ProjectileFixDesperation();
                    if (Main.netMode == 2)
                    {
                        NetMessage.SendData(27, -1, bufferId, "", index, 0, 0, 0, 0, 0, 0);
                    }
                }
            }
            return(true);
        }
Ejemplo n.º 7
0
        void OnSendBytes(SendBytesEventArgs e)
        {
            if (TShock.Players[e.Socket.Id] == null)
            {
                return;
            }

            bool build = TShock.Players[e.Socket.Id].GetData <bool>("buildmode");

            switch (e.Buffer[2])
            {
            case (byte)PacketTypes.WorldInfo:                     //7
                using (var writer = new BinaryWriter(new MemoryStream(e.Buffer, 3, e.Count - 3)))
                {
                    writer.Write(build ? 27000 : (int)Main.time);
                    BitsByte bb = 0;
                    bb[0] = build ? true : Main.dayTime;
                    bb[1] = build ? false : Main.bloodMoon;
                    bb[2] = build ? false : Main.eclipse;
                    writer.Write(bb);

                    writer.BaseStream.Position += 9;
                    writer.Write(build ? (short)Main.maxTilesY : (short)Main.worldSurface);
                    writer.Write(build ? (short)Main.maxTilesY : (short)Main.rockLayer);

                    writer.BaseStream.Position += 4;
                    writer.Write(Main.worldName);
                    writer.Write(Main.ActiveWorldFileData.UniqueId.ToString());

                    writer.BaseStream.Position += 49;
                    writer.Write(build ? 0f : Main.maxRaining);
                }
                break;

            case (byte)PacketTypes.TimeSet:                     //18
                using (var writer = new BinaryWriter(new MemoryStream(e.Buffer, 3, e.Count - 3)))
                {
                    writer.Write(build ? true : Main.dayTime);
                    writer.Write(build ? 27000 : (int)Main.time);
                }
                break;

            case (byte)PacketTypes.MassWireOperationPay:
                TSPlayer tsplr = TShock.Players[e.Buffer[7]];
                if (tsplr.GetData <bool>("buildmode"))
                {
                    e.Handled = true;                     //Will never decrement wires/actuators in inventory
                }
                break;

            case (byte)PacketTypes.NpcUpdate:                     //23
                NPC npc = Main.npc[BitConverter.ToInt16(e.Buffer, 3)];
                if (!npc.friendly)
                {
                    Buffer.BlockCopy(BitConverter.GetBytes(build ? 0f : npc.position.X), 0, e.Buffer, 5, 4);
                    Buffer.BlockCopy(BitConverter.GetBytes(build ? 0f : npc.position.Y), 0, e.Buffer, 9, 4);
                }
                break;

            case (byte)PacketTypes.ProjectileNew:                     //27
                short      id    = BitConverter.ToInt16(e.Buffer, 3);
                int        owner = e.Buffer[21];
                Projectile proj  = Main.projectile[TShock.Utils.SearchProjectile(id, owner)];
                if (!proj.friendly)
                {
                    Buffer.BlockCopy(BitConverter.GetBytes((short)(build ? 0 : proj.type)), 0, e.Buffer, 22, 2);
                }
                break;
            }
        }
Ejemplo n.º 8
0
        public static void GetData(GetDataEventArgs args)
        {
            var plr = Main.player[args.Msg.whoAmI];
            var tsp = plr.TSPlayer();

            using (MemoryStream reader = new MemoryStream(args.Msg.readBuffer, args.Index, args.Length - 1))
            {
                switch (args.MsgID)
                {
                case PacketTypes.ItemOwner:
                    int item = reader.ReadInt16();
                    int ID   = (int)reader.ReadByte();
                    if (item == 0)
                    {
                        StatusSender.GetPingPakcet(args.Msg.whoAmI);
                    }
                    break;

                case PacketTypes.PlayerHp:
                    reader.ReadByte();
                    int life = reader.ReadInt16();
                    args.Handled = PlayerHeal(plr, life);
                    break;

                case PacketTypes.PlayerHurtV2:
                    reader.ReadByte();
                    PlayerDeathReason playerDeathReason = new PlayerDeathReason();
                    BitsByte          bitsByte          = (BitsByte)reader.ReadByte();
                    if (bitsByte[0])
                    {
                        playerDeathReason._sourcePlayerIndex = (int)reader.ReadInt16();
                    }
                    if (bitsByte[1])
                    {
                        playerDeathReason._sourceNPCIndex = (int)reader.ReadInt16();
                    }
                    if (bitsByte[2])
                    {
                        playerDeathReason._sourceProjectileIndex = (int)reader.ReadInt16();
                    }
                    if (bitsByte[3])
                    {
                        playerDeathReason._sourceOtherIndex = (int)reader.ReadByte();
                    }
                    if (bitsByte[4])
                    {
                        playerDeathReason._sourceProjectileType = (int)reader.ReadInt16();
                    }
                    if (bitsByte[5])
                    {
                        playerDeathReason._sourceItemType = (int)reader.ReadInt16();
                    }
                    if (bitsByte[6])
                    {
                        playerDeathReason._sourceItemPrefix = (int)reader.ReadByte();
                    }
                    if (bitsByte[7])
                    {
                        playerDeathReason._sourceCustomReason = reader.ReadString();
                    }
                    int damage = reader.ReadInt16();
                    args.Handled = PlayerDamage(plr, damage);
                    break;
                }
            }

            if (args.MsgID == PacketTypes.PlayerUpdate)
            {
                if (plr.controlUseItem && (plr.HeldItem.useStyle == 2 || plr.HeldItem.useStyle == 9 || plr.HeldItem.netID == 5) && UserManager.TryGetEPlayeFromName(plr.name, out Account.EPlayer eplr) && eplr.HungrValue < 34200 && eplr.CanEat)
                {
                    HungrSystem.OnEat(eplr, plr.HeldItem.buffTime);
                }
            }
        }
Ejemplo n.º 9
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            downedRajahsRevenge = flags[0];
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Modify the world data packet so that it sends serversidecharacter information
        /// </summary>
        /// <param name="writer"></param>
        public static void ModifyWorldData(ref BinaryWriter writer)
        {
            writer.Write((int)Main.time);
            BitsByte bb7 = (byte)0;

            bb7[0] = Main.dayTime;
            bb7[1] = Main.bloodMoon;
            bb7[2] = Main.eclipse;
            writer.Write(bb7);
            writer.Write((byte)Main.moonPhase);
            writer.Write((short)Main.maxTilesX);
            writer.Write((short)Main.maxTilesY);
            writer.Write((short)Main.spawnTileX);
            writer.Write((short)Main.spawnTileY);
            writer.Write((short)Main.worldSurface);
            writer.Write((short)Main.rockLayer);
            writer.Write(Main.worldID);
            writer.Write(Main.worldName);
            writer.Write(Main.ActiveWorldFileData.UniqueId.ToByteArray());
            writer.Write(Main.ActiveWorldFileData.WorldGeneratorVersion);
            writer.Write((byte)Main.moonType);
            writer.Write((byte)WorldGen.treeBG);
            writer.Write((byte)WorldGen.corruptBG);
            writer.Write((byte)WorldGen.jungleBG);
            writer.Write((byte)WorldGen.snowBG);
            writer.Write((byte)WorldGen.hallowBG);
            writer.Write((byte)WorldGen.crimsonBG);
            writer.Write((byte)WorldGen.desertBG);
            writer.Write((byte)WorldGen.oceanBG);
            writer.Write((byte)Main.iceBackStyle);
            writer.Write((byte)Main.jungleBackStyle);
            writer.Write((byte)Main.hellBackStyle);
            writer.Write(Main.windSpeedSet);
            writer.Write((byte)Main.numClouds);
            for (var l = 0; l < 3; l++)
            {
                writer.Write(Main.treeX[l]);
            }
            for (var m = 0; m < 4; m++)
            {
                writer.Write((byte)Main.treeStyle[m]);
            }
            for (var n = 0; n < 3; n++)
            {
                writer.Write(Main.caveBackX[n]);
            }
            for (var num9 = 0; num9 < 4; num9++)
            {
                writer.Write((byte)Main.caveBackStyle[num9]);
            }
            if (!Main.raining)
            {
                Main.maxRaining = 0f;
            }
            writer.Write(Main.maxRaining);
            BitsByte bb8 = 0;

            bb8[0] = WorldGen.shadowOrbSmashed;
            bb8[1] = NPC.downedBoss1;
            bb8[2] = NPC.downedBoss2;
            bb8[3] = NPC.downedBoss3;
            bb8[4] = Main.hardMode;
            bb8[5] = NPC.downedClown;
            bb8[6] = true;              // ssc mode here
            bb8[7] = NPC.downedPlantBoss;
            writer.Write(bb8);
            BitsByte bb9 = 0;

            bb9[0] = NPC.downedMechBoss1;
            bb9[1] = NPC.downedMechBoss2;
            bb9[2] = NPC.downedMechBoss3;
            bb9[3] = NPC.downedMechBossAny;
            bb9[4] = (Main.cloudBGActive >= 1f);
            bb9[5] = WorldGen.crimson;
            bb9[6] = Main.pumpkinMoon;
            bb9[7] = Main.snowMoon;
            writer.Write(bb9);
            BitsByte bb10 = 0;

            bb10[0] = Main.expertMode;
            bb10[1] = Main.fastForwardTime;
            bb10[2] = Main.slimeRain;
            bb10[3] = NPC.downedSlimeKing;
            bb10[4] = NPC.downedQueenBee;
            bb10[5] = NPC.downedFishron;
            bb10[6] = NPC.downedMartians;
            bb10[7] = NPC.downedAncientCultist;
            writer.Write(bb10);
            BitsByte bb11 = 0;

            bb11[0] = NPC.downedMoonlord;
            bb11[1] = NPC.downedHalloweenKing;
            bb11[2] = NPC.downedHalloweenTree;
            bb11[3] = NPC.downedChristmasIceQueen;
            bb11[4] = NPC.downedChristmasSantank;
            bb11[5] = NPC.downedChristmasTree;
            bb11[6] = NPC.downedGolemBoss;
            bb11[7] = BirthdayParty.PartyIsUp;
            writer.Write(bb11);
            BitsByte bb12 = 0;

            bb12[0] = NPC.downedPirates;
            bb12[1] = NPC.downedFrost;
            bb12[2] = NPC.downedGoblins;
            bb12[3] = Sandstorm.Happening;
            bb12[4] = DD2Event.Ongoing;
            bb12[5] = DD2Event.DownedInvasionT1;
            bb12[6] = DD2Event.DownedInvasionT2;
            bb12[7] = DD2Event.DownedInvasionT3;
            writer.Write(bb12);
            writer.Write((sbyte)Main.invasionType);
            if (!ModNet.AllowVanillaClients)
            {
                // We have to call `WorldIO.SendModData(binaryWriter)` using reflection
                var type   = typeof(Main).Assembly.GetType("Terraria.ModLoader.IO.WorldIO");
                var method = type.GetMethod("SendModData", new[] { typeof(BinaryWriter) });
                if (method != null)
                {
                    method.Invoke(null, new object[] { writer });
                }
            }

            writer.Write(SocialAPI.Network != null ? SocialAPI.Network.GetLobbyId() : 0uL);
            writer.Write(Sandstorm.IntendedSeverity);
        }
Ejemplo n.º 11
0
        //Sync downed data
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            downedDungueonInvasion = flags[0];
        }
Ejemplo n.º 12
0
        public override void NetSend(BinaryWriter writer)
        {
            BitsByte gems = new BitsByte(natureJewelActivated, tideJewelActivated, forgeJewelActivated);

            writer.Write(gems);
        }
Ejemplo n.º 13
0
        public void Pack(Stream stream)
        {
            var bits = new BitsByte();

            if ((Active) && (!Inactive))
            {
                bits[0] = true;
            }

            if (HasWall)
            {
                bits[2] = true;
            }

            if (HasLiquid)
            {
                bits[3] = true;
            }

            if (Wire)
            {
                bits[4] = true;
            }

            if (IsHalf)
            {
                bits[5] = true;
            }

            if (IsActuator)
            {
                bits[6] = true;
            }

            if (Inactive)
            {
                bits[7] = true;
            }

            stream.WriteInt8((byte)bits);

            bits = new BitsByte();

            if ((Wire2))
            {
                bits[0] = true;
            }

            if (Wire3)
            {
                bits[1] = true;
            }

            if (HasColor)
            {
                bits[2] = true;
            }

            if (HasWallColor)
            {
                bits[3] = true;
            }

            if (Slope)
            {
                bits[4] = true;
            }

            if (Slope2)
            {
                bits[5] = true;
            }

            if (Slope3)
            {
                bits[6] = true;
            }


            stream.WriteInt8((byte)bits);

            if (HasColor)
            {
                stream.WriteByte(TileColor);
            }

            if (HasWallColor)
            {
                stream.WriteByte(WallColor);
            }

            if (Active)
            {
                stream.WriteInt16((short)Type);
                if (FrameImportant)
                {
                    stream.WriteInt16(FrameX);
                    stream.WriteInt16(FrameY);
                }
            }

            if (HasWall)
            {
                stream.WriteInt8(Wall);
            }

            if (HasLiquid)
            {
                stream.WriteInt8(Liquid);
                stream.WriteInt8(LiquidType);
            }
        }
        /// <summary></summary>
        /// <param name="writer"></param>
        /// <param name="tile"></param>
        /// <param name="forceFrames"></param>
        /// <param name="forceWallFrames"></param>
        /// <param name="forceLiquids"></param>
        public static void ToStream(
            BinaryWriter writer,
            Tile tile,
            bool forceFrames     = false,
            bool forceWallFrames = false,
            bool forceLiquids    = false)
        {
            BitsByte bits1  = 0;
            BitsByte bits2  = 0;
            byte     fColor = 0;
            byte     wColor = 0;

            bits1[0] = tile.active();
            bits1[2] = tile.wall > 0;
            bits1[3] = tile.liquid > 0 && Main.netMode == NetmodeID.Server;
            bits1[5] = tile.halfBrick();
            bits1[6] = tile.actuator();
            bits1[7] = tile.inActive();

            bits1[4] = tile.wire();
            bits2[0] = tile.wire2();
            bits2[1] = tile.wire3();
            bits2[7] = tile.wire4();

            if (tile.active() && tile.color() > 0)
            {
                bits2[2] = true;
                fColor   = tile.color();
            }
            if (tile.wall > 0 && tile.wallColor() > 0)
            {
                bits2[3] = true;
                wColor   = tile.wallColor();
            }
            bits2 += (byte)(tile.slope() << 4);

            writer.Write((byte)bits1);
            writer.Write((byte)bits2);

            if (fColor > 0)
            {
                writer.Write((byte)fColor);
            }
            if (wColor > 0)
            {
                writer.Write((byte)wColor);
            }

            if (tile.active())
            {
                writer.Write((ushort)tile.type);

                if (forceFrames || Main.tileFrameImportant[(int)tile.type])
                {
                    writer.Write((short)tile.frameX);
                    writer.Write((short)tile.frameY);
                }
            }

            if (tile.wall > 0)
            {
                if (ModNet.AllowVanillaClients)
                {
                    writer.Write((byte)tile.wall);
                }
                else
                {
                    writer.Write((ushort)tile.wall);
                }

                if (forceWallFrames)
                {
                    writer.Write((short)tile.wallFrameX());
                    writer.Write((short)tile.wallFrameY());
                }
            }

            if (forceLiquids || (tile.liquid > 0 && Main.netMode == NetmodeID.Server))
            {
                writer.Write((byte)tile.liquid);
                writer.Write((byte)tile.liquidType());
            }
        }
        /// <summary></summary>
        /// <param name="reader"></param>
        /// <param name="tile"></param>
        /// <param name="forceFrames"></param>
        /// <param name="forceWallFrames"></param>
        /// <param name="forceLiquids"></param>
        public static void FromStream(
            BinaryReader reader,
            ref Tile tile,
            bool forceFrames     = false,
            bool forceWallFrames = false,
            bool forceLiquids    = false)
        {
            BitsByte bits1 = 0;
            BitsByte bits2 = 0;

            bool wasActive = tile.active();

            bits1 = reader.ReadByte();
            bits2 = reader.ReadByte();

            tile.active(bits1[0]);
            tile.wall = (byte)(bits1[2] ? 1 : 0);

            bool isLiquid = bits1[3];

            if (forceLiquids || Main.netMode != NetmodeID.Server)
            {
                tile.liquid = (byte)(isLiquid ? 1 : 0);
            }

            tile.halfBrick(bits1[5]);
            tile.actuator(bits1[6]);
            tile.inActive(bits1[7]);

            tile.wire(bits1[4]);
            tile.wire2(bits2[0]);
            tile.wire3(bits2[1]);
            tile.wire4(bits2[7]);

            if (bits2[2])
            {
                tile.color(reader.ReadByte());
            }
            if (bits2[3])
            {
                tile.wallColor(reader.ReadByte());
            }

            if (tile.active())
            {
                int oldTileType = (int)tile.type;

                tile.type = reader.ReadUInt16();

                if (forceFrames || Main.tileFrameImportant[(int)tile.type])
                {
                    tile.frameX = reader.ReadInt16();
                    tile.frameY = reader.ReadInt16();
                }
                else if (!wasActive || (int)tile.type != oldTileType)
                {
                    tile.frameX = -1;
                    tile.frameY = -1;
                }

                byte slope = 0;
                if (bits2[4])
                {
                    slope += 1;
                }
                if (bits2[5])
                {
                    slope += 2;
                }
                if (bits2[6])
                {
                    slope += 4;
                }
                tile.slope(slope);
            }

            if (tile.wall > 0)
            {
                tile.wall = ModNet.AllowVanillaClients
                                        ? reader.ReadByte()
                                        : reader.ReadUInt16();

                if (forceWallFrames)
                {
                    tile.wallFrameX((int)reader.ReadInt16());
                    tile.wallFrameY((int)reader.ReadInt16());
                }
            }

            if (isLiquid)
            {
                tile.liquid = reader.ReadByte();
                tile.liquidType((int)reader.ReadByte());
            }
        }
Ejemplo n.º 16
0
 public override void ReceiveExtraAI(BinaryReader reader)
 {
     flags    = reader.ReadByte();
     attached = reader.ReadInt16();
 }
Ejemplo n.º 17
0
        public override void ReceiveCustomBiomes(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            TheFortress = flags[0];
        }
        //        static long sameTiles = 0;
        //        static long diffTiles = 0;

        public override void Process(int whoAmI, byte[] readBuffer, int length, int num)
        {
            short size   = ReadInt16(readBuffer);
            int   startX = (int)ReadInt16(readBuffer);
            int   startY = (int)ReadInt16(readBuffer);

            //TODO implement the old methods
            var player = Main.player[whoAmI];

            var ctx = new HookContext
            {
                Sender     = player,
                Player     = player,
                Connection = player.Connection
            };

            var args = new HookArgs.TileSquareReceived
            {
                X          = startX,
                Y          = startY,
                Size       = size,
                readBuffer = readBuffer,
                start      = num,
            };

            HookPoints.TileSquareReceived.Invoke(ref ctx, ref args);

            if (args.applied > 0)
            {
                WorldGen.RangeFrame(startX, startY, startX + (int)size, startY + (int)size);
                NewNetMessage.SendData((int)Packet.TILE_SQUARE, -1, whoAmI, String.Empty, (int)size, (float)startX, (float)startY, 0f, 0);
            }

            if (ctx.CheckForKick() || ctx.Result == HookResult.IGNORE)
            {
                return;
            }

            //			args.ForEach (player, this.EachTile);

            BitsByte bitsByte6 = 0;
            BitsByte bitsByte7 = 0;

            for (int num46 = startX; num46 < startX + (int)size; num46++)
            {
                for (int num47 = startY; num47 < startY + (int)size; num47++)
                {
                    if (Main.tile[num46, num47] == null)
                    {
                        Main.tile[num46, num47] = new Tile();
                    }
                    Tile tile  = Main.tile[num46, num47];
                    bool flag5 = tile.active();
                    bitsByte6 = ReadByte(readBuffer);
                    bitsByte7 = ReadByte(readBuffer);
                    tile.active(bitsByte6[0]);
                    tile.wall = (byte)(bitsByte6[2] ? 1 : 0);
                    bool flag6 = bitsByte6[3];
                    if (Main.netMode != 2)
                    {
                        tile.liquid = (byte)(flag6 ? 1 : 0);
                    }
                    tile.wire(bitsByte6[4]);
                    tile.halfBrick(bitsByte6[5]);
                    tile.actuator(bitsByte6[6]);
                    tile.inActive(bitsByte6[7]);
                    tile.wire2(bitsByte7[0]);
                    tile.wire3(bitsByte7[1]);
                    if (bitsByte7[2])
                    {
                        tile.color(ReadByte(readBuffer));
                    }
                    if (bitsByte7[3])
                    {
                        tile.wallColor(ReadByte(readBuffer));
                    }
                    if (tile.active())
                    {
                        int type2 = (int)tile.type;
                        tile.type = ReadUInt16(readBuffer);
                        if (Main.tileFrameImportant[(int)tile.type])
                        {
                            tile.frameX = ReadInt16(readBuffer);
                            tile.frameY = ReadInt16(readBuffer);
                        }
                        else
                        {
                            if (!flag5 || (int)tile.type != type2)
                            {
                                tile.frameX = -1;
                                tile.frameY = -1;
                            }
                        }
                        byte b4 = 0;
                        if (bitsByte7[4])
                        {
                            b4 += 1;
                        }
                        if (bitsByte7[5])
                        {
                            b4 += 2;
                        }
                        if (bitsByte7[6])
                        {
                            b4 += 4;
                        }
                        tile.slope(b4);
                    }
                    if (tile.wall > 0)
                    {
                        tile.wall = ReadByte(readBuffer);
                    }
                    if (flag6)
                    {
                        tile.liquid = ReadByte(readBuffer);
                        tile.liquidType((int)ReadByte(readBuffer));
                    }
                }
            }
            WorldGen.RangeFrame(startX, startY, startX + (int)size, startY + (int)size);
            NewNetMessage.SendData((int)Packet.TILE_SQUARE, -1, whoAmI, String.Empty, (int)size, (float)startX, (float)startY, 0f, 0);
        }
        public override void HandlePacket(BinaryReader reader, int whoAmI)
        {
            ModMessageType msgType = (ModMessageType)reader.ReadByte();

            switch (msgType)
            {
            case ModMessageType.ArrowMessage:
                int  identity     = reader.ReadInt32();
                byte owner        = reader.ReadByte();
                int  realIdentity = Projectile.GetByUUID(owner, identity);
                if (realIdentity != -1)
                {
                    Main.projectile[realIdentity].GetGlobalProjectile <arrowHoming>().B4HomingArrow = true;
                }
                if (Main.netMode == 2)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)ModMessageType.ArrowMessage);
                    packet.Write(identity);
                    packet.Write(owner);
                    packet.Send();
                }
                break;

            case ModMessageType.FinnedRandomSwimMessage:

                int   identity2     = reader.ReadInt32();
                byte  owner2        = reader.ReadByte();
                float randomSwim    = reader.Read();
                int   realIdentity2 = Projectile.GetByUUID(owner2, identity2);

                if (realIdentity2 != -1)
                {
                    Main.projectile[realIdentity2].ai[1] = randomSwim;
                }

                if (Main.netMode == 2)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)ModMessageType.FinnedRandomSwimMessage);
                    packet.Write(identity2);
                    packet.Write(owner2);
                    packet.Write(randomSwim);
                    packet.Send();
                }
                break;

            case ModMessageType.ScaleMessage:

                int  identity3 = reader.ReadInt32();
                byte owner3    = reader.ReadByte();

                int realIdentity3 = Projectile.GetByUUID(owner3, identity3);

                if (realIdentity3 != -1)
                {
                    Main.projectile[realIdentity3].scale = 3;
                }

                if (Main.netMode == 2)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)ModMessageType.ScaleMessage);
                    packet.Write(identity3);
                    packet.Write(owner3);

                    packet.Send();
                }
                break;

            case ModMessageType.UpdateClassBools:
                int  identity4     = reader.ReadInt32();
                byte owner4        = reader.ReadByte();
                int  realIdentity4 = Projectile.GetByUUID(owner4, identity4);
                if (realIdentity4 != -1)
                {
                    BitsByte flags = reader.ReadByte();
                    Main.projectile[realIdentity4].melee  = flags[0];
                    Main.projectile[realIdentity4].ranged = flags[1];
                    Main.projectile[realIdentity4].magic  = flags[2];
                    Main.projectile[realIdentity4].minion = flags[3];
                    Main.projectile[realIdentity4].thrown = flags[4];
                    Main.projectile[realIdentity4].GetGlobalProjectile <MorphProjectile>().morph = flags[5];
                }
                if (Main.netMode == 2)
                {
                    UpdateProjectileClass(Main.projectile[realIdentity4]);
                }
                break;

            case ModMessageType.UpdateLocalCursor:
                byte    playerIndex = reader.ReadByte();
                Vector2 Cursor      = reader.ReadVector2();

                LocalCursor[playerIndex] = Cursor;
                if (Main.netMode == 2)
                {
                    ModPacket packet = GetPacket();
                    packet.Write((byte)ModMessageType.UpdateLocalCursor);     // Message type, you would need to create an enum for this
                    packet.Write(playerIndex);
                    packet.WriteVector2(Cursor);
                    packet.Send();
                }
                break;

            case ModMessageType.UpdatePlayerVelocity:
                byte    playerIndex2 = reader.ReadByte();
                Vector2 vel          = reader.ReadVector2();

                Main.player[playerIndex2].velocity = vel;
                if (Main.netMode == 2)
                {
                    UpdatePlayerVelocity(playerIndex2, vel);
                    NetMessage.SendData(MessageID.PlayerControls, -1, -1, null, playerIndex2);
                }
                break;

            case ModMessageType.UpdatePlayerPosition:
                byte    playerIndex3 = reader.ReadByte();
                Vector2 pos          = reader.ReadVector2();

                Main.player[playerIndex3].position = pos;

                if (Main.netMode == 2)
                {
                    UpdatePlayerPosition(playerIndex3, pos);
                    NetMessage.SendData(MessageID.PlayerControls, -1, -1, null, playerIndex3);
                }
                break;

            case ModMessageType.ProjectileAIUpdate:
                int   identity6     = reader.ReadInt32();
                byte  owner6        = reader.ReadByte();
                int   realIdentity6 = Projectile.GetByUUID(owner6, identity6);
                float ai0           = reader.ReadSingle();
                float ai1           = reader.ReadSingle();
                if (realIdentity6 != -1)
                {
                    Main.projectile[realIdentity6].ai[0] = ai0;
                    Main.projectile[realIdentity6].ai[1] = ai1;
                    if (Main.netMode == 2)
                    {
                        ProjectileAIUpdate(Main.projectile[realIdentity6]);
                    }
                }

                break;

            case ModMessageType.DivineCall:
                QwertyWorld.FortressBossQuotes();
                Vector2 summonAt = reader.ReadVector2();
                int     npcID    = NPC.NewNPC((int)summonAt.X, (int)summonAt.Y, NPCType("FortressBoss"));
                break;

            case ModMessageType.StartDinoEvent:
                QwertyWorld.DinoEvent     = true;
                QwertyWorld.DinoKillCount = 0;
                if (Main.netMode == NetmodeID.Server)
                {
                    NetMessage.SendData(MessageID.WorldData);     // Immediately inform clients of new world state.
                }

                break;
            }
        }
Ejemplo n.º 20
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            flags[0] = DownedEmeraldSlime;
        }
Ejemplo n.º 21
0
 //in Terraria.MessageBuffer.GetData for case 27 after reading all data add
 //  byte[] extraAI = ProjectileLoader.ReadExtraAI(reader, bitsByte14);
 public static byte[] ReadExtraAI(BinaryReader reader, BitsByte flags)
 {
     if (flags[Projectile.maxAI + 1])
     {
         return reader.ReadBytes(reader.ReadByte());
     }
     return new byte[0];
 }
Ejemplo n.º 22
0
        // should love quake
        private bool ShouldDropPacket(byte[] buffer, int offset, int count, byte receiver)
        {
            if (count < 3)
            {
                return(false);
            }
            var bOffset = offset + 3;

            switch (buffer[offset + 2])
            {
            case 4:
            case 5:
            case 12:
            case 13:
            case 14:
            case 16:
            case 30:
            case 35:
            case 36:
            case 40:
            case 41:
            case 42:
            case 43:
            case 45:
            case 50:
            case 51:
            case 55:
            case 58:
            case 62:
            case 66:
            case 80:
            case 84:
            case 96:
            case 99:
            case 102:
            case 115:
            case 117:
            case 118:
                if (count <= bOffset)
                {
                    return(false);
                }
                if (!ShouldSeeUser(buffer[bOffset], receiver))
                {
                    return(true);
                }
                break;

            case 22:
            case 24:
            case 29:
            case 70:
                if (count <= bOffset + 2)
                {
                    return(false);
                }
                if (!ShouldSeeUser(buffer[bOffset + 2], receiver))
                {
                    return(true);
                }
                break;

            case 20:
            case 61:
                if (count <= bOffset + 1)
                {
                    return(false);
                }
                if (!ShouldSeeUser((byte)BitConverter.ToUInt16(buffer, bOffset), receiver))
                {
                    return(true);
                }
                break;

            case 23:
                if (count < bOffset + 19)
                {
                    return(false);
                }
                if (!ShouldSeeUser((byte)BitConverter.ToUInt16(buffer, bOffset + 18), receiver))
                {
                    return(true);
                }
                break;

            case 27:
                if (count < bOffset + 24)
                {
                    return(false);
                }
                if (!ShouldSeeUser(buffer[bOffset + 24], receiver))
                {
                    return(true);
                }
                break;

            case 65:
                if (count < bOffset + 2)
                {
                    return(false);
                }
                BitsByte flag = buffer[bOffset];
                if (flag[0] || flag[2])
                {
                    if (!ShouldSeeUser((byte)BitConverter.ToUInt16(buffer, bOffset + 1), receiver))
                    {
                        return(true);
                    }
                }

                break;

            case 108:
                if (count < bOffset + 14)
                {
                    return(false);
                }
                if (!ShouldSeeUser(buffer[bOffset + 14], receiver))
                {
                    return(true);
                }
                break;

            case 110:
                if (count < bOffset + 4)
                {
                    return(false);
                }
                if (!ShouldSeeUser(buffer[bOffset + 4], receiver))
                {
                    return(true);
                }
                break;

            case 21:
                if (_ignoredPlayerIndexes[receiver])
                {
                    return(true);
                }
                break;
            }

            return(false);
        }
Ejemplo n.º 23
0
        public static void Update()
        {
            life     = player.statLife;
            lifeM    = player.statLifeMax + player.statLifeMax2;
            mana     = player.statMana;
            manaM    = player.statManaMax + player.statManaMax2;
            def      = player.statDefense;
            minions  = player.slotsMinions;
            minionsM = player.maxMinions;


            string expert;
            string HardMode;

            if (Main.expertMode)
            {
                expert = "Expert";
            }
            else
            {
                expert = "Normal";
            }

            if (Main.hardMode)
            {
                HardMode = "Hardmode";
            }
            else
            {
                HardMode = "Pre-Hardmode";
            }

            Timer += 1;

            if (Timer / 1.5 >= 3)
            {
                Presence1 = false;
            }
            if (Timer / 1.5 >= 6)
            {
                Presence1 = true;
                Timer     = 0;
            }

            zone1 = player.zone1;
            zone2 = player.zone2;
            zone3 = player.zone3;

            item = player.HeldItem;

            if (!dead)
            {
                if (!Presence1)
                {
                    RPControl.presence.state = string.Format("HP: {0}/{1} MP: {2}/{3} DEF: {4} (Debug {10})", life, lifeM, mana, manaM, def, minions, minionsM, player.position.X, player.position.Y, Class, (Timer / 1.5));
                }
                else
                {
                    RPControl.presence.state = string.Format("Minions: {5}/{6} Class: {9} (Debug {10})", life, lifeM, mana, manaM, def, minions, minionsM, player.position.X, player.position.Y, Class, (Timer / 1.5));
                }
            }
            else
            {
                RPControl.presence.state = string.Format("Dead, Class: {0}", Class);
            }

            GetItemStat();

            //bossNPC = Main.npc.Take(200).Where(npc => npc.active && (bossID.Contains(npc.type) || npc.boss)).LastOrDefault();

            GetBiome();

            //if (bossNPC == null)
            //	GetBiome();
            //else
            //	GetBoss();

            RPControl.Update();
        }
Ejemplo n.º 24
0
        public override void NetSend(BinaryWriter writer)
        {
            BitsByte adventurerQuests = new BitsByte(zombieQuestStart);

            writer.Write(adventurerQuests);
        }
Ejemplo n.º 25
0
        public override void NetSend(BinaryWriter writer)
        {
            BitsByte flags = new BitsByte(downedScarabeus, downedAncientFlier, downedAtlas, downedInfernon, downedDusking, downedIlluminantMaster, downedOverseer);

            writer.Write(flags);
        }
Ejemplo n.º 26
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte adventurerQuests = reader.ReadByte();

            zombieQuestStart = adventurerQuests[0];
        }
Ejemplo n.º 27
0
        public override void NetReceive(Item item, BinaryReader reader)
        {
            BitsByte flags1 = reader.ReadByte();

            if (flags1 == 0)
            {
                return;
            }
            if (flags1[0])
            {
                BitsByte flags2 = reader.ReadByte();
                if (flags2[0])
                {
                    item.autoReuse = reader.ReadBoolean();
                }
                if (flags2[1])
                {
                    item.consumable = reader.ReadBoolean();
                }
                if (flags2[2])
                {
                    item.potion = reader.ReadBoolean();
                }
                if (flags2[3])
                {
                    item.accessory = reader.ReadBoolean();
                }
                if (flags2[4])
                {
                    item.SetDamageType(reader.ReadByte());
                }
                if (flags2[5])
                {
                    item.damage = reader.ReadInt32();
                }
                if (flags2[6])
                {
                    item.knockBack = reader.ReadSingle();
                }
                if (flags2[7])
                {
                    item.crit = reader.ReadUInt16();
                }
            }
            if (flags1[1])
            {
                BitsByte flags3 = reader.ReadByte();
                if (flags3[0])
                {
                    item.shoot = reader.ReadUInt16();
                }
                if (flags3[1])
                {
                    item.shootSpeed = reader.ReadSingle();
                }
                if (flags3[2])
                {
                    item.createTile = reader.ReadUInt16() - 1;
                }
                if (flags3[3])
                {
                    item.tileBoost = reader.ReadSByte();
                }
                if (flags3[4])
                {
                    item.buffType = reader.ReadUInt16();
                }
                if (flags3[5])
                {
                    item.buffTime = reader.ReadInt32();
                }
                if (flags3[6])
                {
                    item.healLife = reader.ReadUInt16();
                }
                if (flags3[7])
                {
                    item.healMana = reader.ReadUInt16();
                }
            }
            if (flags1[2])
            {
                BitsByte flags4 = reader.ReadByte();
                if (flags4[0])
                {
                    item.axe = reader.ReadUInt16();
                }
                if (flags4[1])
                {
                    item.pick = reader.ReadUInt16();
                }
                if (flags4[2])
                {
                    item.hammer = reader.ReadUInt16();
                }
                if (flags4[3])
                {
                    item.maxStack = reader.ReadInt32();
                }
                if (flags4[4])
                {
                    item.useAnimation = reader.ReadUInt16();
                }
                if (flags4[5])
                {
                    item.useTime = reader.ReadUInt16();
                }
                if (flags4[6])
                {
                    item.defense = reader.ReadInt32();
                }
                if (flags4[7])
                {
                    item.fishingPole = reader.ReadUInt16();
                }
            }
            if (flags1[3])
            {
                BitsByte flags5 = reader.ReadByte();
                if (flags5[0])
                {
                    item.scale = reader.ReadSingle();
                }
                if (flags5[1])
                {
                    item.useStyle = reader.ReadByte();
                }
                if (flags5[2])
                {
                    item.mana = reader.ReadUInt16();
                }
            }
        }
Ejemplo n.º 28
0
        public override void NetSend(BinaryWriter writer)
        {
            BitsByte flags = new BitsByte();

            flags[0] = foundAglet;
            flags[1] = foundClimbingClaws;
            flags[2] = foundAnklet;
            flags[3] = foundShoeSpikes;
            flags[4] = foundBalloon;
            flags[5] = foundHermesBoots;
            flags[6] = foundFlippers;
            flags[7] = foundFrogLeg;
            writer.Write(flags);

            BitsByte flags2 = new BitsByte();

            flags2[0] = foundCloud;
            flags2[1] = foundBlizzard;
            flags2[2] = foundSandstorm;
            flags2[3] = foundPuffer;
            flags2[4] = foundTsunami;
            flags2[5] = foundWWB;
            flags2[6] = foundIceSkates;
            flags2[7] = foundLavaCharm;
            writer.Write(flags2);

            BitsByte flags3 = new BitsByte();

            flags3[0] = foundHorseshoe;
            flags3[1] = foundCMagnet;
            flags3[2] = foundPStone;
            flags3[3] = foundHTFL;
            flags3[4] = foundAnglerEarring;
            flags3[5] = foundTackleBox;
            flags3[6] = foundJFNeck;
            flags3[7] = foundFlowerBoots;
            writer.Write(flags3);

            BitsByte flags4 = new BitsByte();

            flags4[0] = foundTabi;
            flags4[1] = foundGoldRing;
            flags4[2] = foundLuckyCoin;
            flags4[3] = foundDiscountCard;
            flags4[4] = foundNeptuneShell;
            flags4[5] = foundString;
            flags4[6] = foundGreenCW;
            flags4[7] = foundYoyoGlove;
            writer.Write(flags4);

            BitsByte flags5 = new BitsByte();

            flags5[0] = foundArmorPolish;
            flags5[1] = foundVitamins;
            flags5[2] = foundBezoar;
            flags5[3] = foundAdhesiveBandage;
            flags5[4] = foundFastClock;
            flags5[5] = foundTrifoldMap;
            flags5[6] = foundMegaphone;
            flags5[7] = foundNazar;
            writer.Write(flags5);

            BitsByte flags6 = new BitsByte();

            flags6[0] = foundBlindfold;
            flags6[1] = foundSorcE;
            flags6[2] = foundWE;
            flags6[3] = foundRE;
            flags6[4] = foundSumE;
            flags6[5] = foundFeralClaw;
            flags6[6] = foundTitanGlove;
            flags6[7] = foundMagmaStone;
            writer.Write(flags6);

            BitsByte flags7 = new BitsByte();

            flags7[0] = foundSharkTooth;
            flags7[1] = foundBlackBelt;
            flags7[2] = foundMoonCharm;
            flags7[3] = foundMoonStone;
            flags7[4] = foundRifleScope;
            flags7[5] = foundPaladinShield;
            flags7[6] = foundFrozenTurtleShell;
            flags7[7] = foundPutridScent;
            writer.Write(flags7);

            BitsByte flags8 = new BitsByte();

            flags8[0] = foundFleshKnuckles;
            flags8[1] = foundMagicQuiver;
            flags8[2] = foundCobaltShield;
            flags8[3] = foundPanicNecklace;
            flags8[4] = foundCrossNecklace;
            flags8[5] = foundStarCloak;
            flags8[6] = foundNecromanticScroll;
            flags8[7] = foundObsidianRose;
            writer.Write(flags8);

            BitsByte flags9 = new BitsByte();

            flags9[0] = foundShackle;
            flags9[1] = foundSunStone;
            flags9[2] = foundHerculesBeetle;
            flags9[3] = foundPygmyNecklace;
            flags9[4] = foundMP7;
            flags9[5] = foundT1;
            flags9[6] = foundT2;
            flags9[7] = foundT3;
            writer.Write(flags9);

            BitsByte flags10 = new BitsByte();

            flags10[0] = foundPHD;
            flags10[1] = foundAntiBuffMode;
            flags10[2] = foundFlyingCarpet;
            writer.Write(flags10);

            BitsByte flags11 = new BitsByte();

            flags11[0] = downedDOGPumpking;
            flags11[1] = downedDOGIceQueen;
            flags11[2] = downedSandElemental;
            writer.Write(flags11);
        }
Ejemplo n.º 29
0
        public override void ReceiveCustomBiomes(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            zoneBiome = flags[0];
        }
Ejemplo n.º 30
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags = reader.ReadByte();

            foundAglet         = flags[0];
            foundClimbingClaws = flags[1];
            foundAnklet        = flags[2];
            foundShoeSpikes    = flags[3];
            foundBalloon       = flags[4];
            foundHermesBoots   = flags[5];
            foundFlippers      = flags[6];
            foundFrogLeg       = flags[7];

            BitsByte flags2 = reader.ReadByte();

            foundCloud     = flags2[0];
            foundBlizzard  = flags2[1];
            foundSandstorm = flags2[2];
            foundPuffer    = flags2[3];
            foundTsunami   = flags2[4];
            foundWWB       = flags2[5];
            foundIceSkates = flags2[6];
            foundLavaCharm = flags2[7];

            BitsByte flags3 = reader.ReadByte();

            foundHorseshoe     = flags3[0];
            foundCMagnet       = flags3[1];
            foundPStone        = flags3[2];
            foundHTFL          = flags3[3];
            foundAnglerEarring = flags3[4];
            foundTackleBox     = flags3[5];
            foundJFNeck        = flags3[6];
            foundFlowerBoots   = flags3[7];

            BitsByte flags4 = reader.ReadByte();

            foundTabi         = flags4[0];
            foundGoldRing     = flags4[1];
            foundLuckyCoin    = flags4[2];
            foundDiscountCard = flags4[3];
            foundNeptuneShell = flags4[4];
            foundString       = flags4[5];
            foundGreenCW      = flags4[6];
            foundYoyoGlove    = flags4[7];

            BitsByte flags5 = reader.ReadByte();

            foundArmorPolish     = flags5[0];
            foundVitamins        = flags5[1];
            foundBezoar          = flags5[2];
            foundAdhesiveBandage = flags5[3];
            foundFastClock       = flags5[4];
            foundTrifoldMap      = flags5[5];
            foundMegaphone       = flags5[6];
            foundNazar           = flags5[7];

            BitsByte flags6 = reader.ReadByte();

            foundBlindfold  = flags6[0];
            foundSorcE      = flags6[1];
            foundWE         = flags6[2];
            foundRE         = flags6[3];
            foundSumE       = flags6[4];
            foundFeralClaw  = flags6[5];
            foundTitanGlove = flags6[6];
            foundMagmaStone = flags6[7];

            BitsByte flags7 = reader.ReadByte();

            foundSharkTooth        = flags7[0];
            foundBlackBelt         = flags7[1];
            foundMoonCharm         = flags7[2];
            foundMoonStone         = flags7[3];
            foundRifleScope        = flags7[4];
            foundPaladinShield     = flags7[5];
            foundFrozenTurtleShell = flags7[6];
            foundPutridScent       = flags7[7];

            BitsByte flags8 = reader.ReadByte();

            foundFleshKnuckles     = flags8[0];
            foundMagicQuiver       = flags8[1];
            foundCobaltShield      = flags8[2];
            foundPanicNecklace     = flags8[3];
            foundCrossNecklace     = flags8[4];
            foundStarCloak         = flags8[5];
            foundNecromanticScroll = flags8[6];
            foundObsidianRose      = flags8[7];

            BitsByte flags9 = reader.ReadByte();

            foundShackle        = flags9[0];
            foundSunStone       = flags9[1];
            foundHerculesBeetle = flags9[2];
            foundPygmyNecklace  = flags9[3];
            foundMP7            = flags9[4];
            foundT1             = flags9[5];
            foundT2             = flags9[6];
            foundT3             = flags9[7];

            BitsByte flags10 = reader.ReadByte();

            foundPHD          = flags10[0];
            foundAntiBuffMode = flags10[1];
            foundFlyingCarpet = flags10[2];

            BitsByte flags11 = reader.ReadByte();

            downedDOGPumpking   = flags11[0];
            downedDOGIceQueen   = flags11[1];
            downedSandElemental = flags11[2];
            // As mentioned in NetSend, BitBytes can contain 8 values. If you have more, be sure to read the additional data:
            // BitsByte flags2 = reader.ReadByte();
            // downed9thBoss = flags[0];
        }
Ejemplo n.º 31
0
        public override void Pack(Stream stream)
        {
            BinaryWriter writer = new BinaryWriter(stream);

            writer.Write(Time);
            BitsByte worldinfo = new BitsByte(DayTime, BloodMoon, Eclipse);

            writer.Write(worldinfo);
            writer.Write(MoonPhase);
            writer.Write(MaxTilesX);
            writer.Write(MaxTilesY);
            writer.Write(SpawnX);
            writer.Write(SpawnY);
            writer.Write(WorldSurface);
            writer.Write(RockLayer);
            writer.Write(WorldID);
            writer.Write(WorldName);
            writer.Write(MoonType);

            writer.Write(SetBG0);
            writer.Write(SetBG1);
            writer.Write(SetBG2);
            writer.Write(SetBG3);
            writer.Write(SetBG4);
            writer.Write(SetBG5);
            writer.Write(SetBG6);
            writer.Write(SetBG7);
            writer.Write(IceBackStyle);
            writer.Write(JungleBackStyle);
            writer.Write(HellBackStyle);
            writer.Write(WindSpeed);
            writer.Write(NumberOfClouds);

            writer.Write(TreeX0);
            writer.Write(TreeX1);
            writer.Write(TreeX2);
            writer.Write(TreeStyle0);
            writer.Write(TreeStyle1);
            writer.Write(TreeStyle2);
            writer.Write(TreeStyle3);
            writer.Write(CaveBackX0);
            writer.Write(CaveBackX1);
            writer.Write(CaveBackX2);
            writer.Write(CaveBackStyle0);
            writer.Write(CaveBackStyle1);
            writer.Write(CaveBackStyle2);
            writer.Write(CaveBackStyle3);

            writer.Write(Rain);

            BitsByte bosses1 = new BitsByte((BossFlags & BossFlags.OrbSmashed) == BossFlags.OrbSmashed,
                                            (BossFlags & BossFlags.DownedBoss1) == BossFlags.DownedBoss1,
                                            (BossFlags & BossFlags.DownedBoss2) == BossFlags.DownedBoss2,
                                            (BossFlags & BossFlags.DownedBoss3) == BossFlags.DownedBoss3,
                                            (BossFlags & BossFlags.HardMode) == BossFlags.HardMode,
                                            (BossFlags & BossFlags.DownedClown) == BossFlags.DownedClown,
                                            (BossFlags & BossFlags.ServerSideCharacter) == BossFlags.ServerSideCharacter,
                                            (BossFlags & BossFlags.DownedPlantBoss) == BossFlags.DownedPlantBoss);

            writer.Write(bosses1);

            BitsByte bosses2 = new BitsByte((BossFlags2 & BossFlags2.DownedMechBoss1) == BossFlags2.DownedMechBoss1,
                                            (BossFlags2 & BossFlags2.DownedMechBoss2) == BossFlags2.DownedMechBoss2,
                                            (BossFlags2 & BossFlags2.DownedMechBoss3) == BossFlags2.DownedMechBoss3,
                                            (BossFlags2 & BossFlags2.DownedMechBossAny) == BossFlags2.DownedMechBossAny,
                                            (BossFlags2 & BossFlags2.CloudBg) == BossFlags2.CloudBg,
                                            (BossFlags2 & BossFlags2.Crimson) == BossFlags2.Crimson,
                                            (BossFlags2 & BossFlags2.PumpkinMoon) == BossFlags2.PumpkinMoon,
                                            (BossFlags2 & BossFlags2.SnowMoon) == BossFlags2.SnowMoon);

            writer.Write(bosses2);

            BitsByte bosses3 = new BitsByte((BossFlags3 & BossFlags3.ExpertMode) == BossFlags3.ExpertMode,
                                            (BossFlags3 & BossFlags3.FastForwardTime) == BossFlags3.FastForwardTime,
                                            (BossFlags3 & BossFlags3.SlimeRain) == BossFlags3.SlimeRain,
                                            (BossFlags3 & BossFlags3.DownedKingSlime) == BossFlags3.DownedKingSlime,
                                            (BossFlags3 & BossFlags3.DownedQueenBee) == BossFlags3.DownedQueenBee,
                                            (BossFlags3 & BossFlags3.DownedFishron) == BossFlags3.DownedFishron,
                                            (BossFlags3 & BossFlags3.DownedMartians) == BossFlags3.DownedMartians,
                                            (BossFlags3 & BossFlags3.DownedAncientCultist) == BossFlags3.DownedAncientCultist);

            writer.Write(bosses3);

            BitsByte bosses4 = new BitsByte((BossFlags4 & BossFlags4.DownedMoonLord) == BossFlags4.DownedMoonLord,
                                            (BossFlags4 & BossFlags4.DownedHalloweenKing) == BossFlags4.DownedHalloweenKing,
                                            (BossFlags4 & BossFlags4.DownedHalloweenTree) == BossFlags4.DownedHalloweenTree,
                                            (BossFlags4 & BossFlags4.DownedChristmasIceQueen) == BossFlags4.DownedChristmasIceQueen,
                                            (BossFlags4 & BossFlags4.DownedChristmasSantank) == BossFlags4.DownedChristmasSantank,
                                            (BossFlags4 & BossFlags4.DownedChristmasTree) == BossFlags4.DownedChristmasTree);

            writer.Write(bosses4);

            writer.Write((sbyte)Main.invasionType);
            writer.Write(Main.LobbyId);
        }
Ejemplo n.º 32
0
        public override void NetReceive(BinaryReader reader)
        {
            BitsByte flags1 = reader.ReadByte();

            downedAqueous        = flags1[0];
            downedVoidLeviathan  = flags1[1];
            downedInfernace      = flags1[2];
            downedScourgeFighter = flags1[3];
            downedRegaroth       = flags1[4];
            downedCelestial      = flags1[5];
            downedWasteland      = flags1[6];
            downedPermafrost     = flags1[7];

            BitsByte flags2 = reader.ReadByte();

            downedGuardian    = flags2[0];
            downedEye         = flags2[1];
            downedAncientWyrm = flags2[2];
            downedObsidious   = flags2[3];
            downedShadeWyrm   = flags2[4];
            downedVolcanox    = flags2[5];
            downedVoidEvent   = flags2[6];
            downedToySlime    = flags2[7];

            BitsByte flags3 = reader.ReadByte();

            downedAzana          = flags3[0];
            downedAncients       = flags3[1];
            downedCosmicObserver = flags3[2];

            // lab gen & drive obtained
            BitsByte flags4 = reader.ReadByte();

            generatedLabs   = flags4[0];
            aqueousDrive    = flags4[1];
            azanaDrive      = flags4[2];
            celestialDrive  = flags4[3];
            guardianDrive   = flags4[4];
            infernaceDrive  = flags4[5];
            obsidiousDrive  = flags4[6];
            permafrostDrive = flags4[7];

            BitsByte flags5 = reader.ReadByte();

            regarothDrive       = flags5[0];
            scourgeFighterDrive = flags5[1];
            voidLeviathanDrive  = flags5[2];
            volcanoxDrive       = flags5[3];
            wastelandDrive      = flags5[4];

            // essence notifacations
            BitsByte flags6 = reader.ReadByte();

            desertText = flags6[0];
            fireText   = flags6[1];
            skyText    = flags6[2];
            frostText  = flags6[3];
            waterText  = flags6[4];
            voidText   = flags6[5];

            //random
            BitsByte flags7 = reader.ReadByte();

            awakenedMode = flags7[0];
        }