3116 lines
136 KiB
C#
3116 lines
136 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: Terraria.MessageBuffer
|
|
// Assembly: Terraria, Version=1.4.0.5, Culture=neutral, PublicKeyToken=null
|
|
// MVID: 67F9E73E-0A81-4937-A22C-5515CD405A83
|
|
// Assembly location: C:\Users\mikeyisbaeyt\Downloads\depotdownloader-2.4.5\depots\105601\6707058\Terraria.exe
|
|
|
|
using Microsoft.Xna.Framework;
|
|
using Microsoft.Xna.Framework.Graphics.PackedVector;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using Terraria.Audio;
|
|
using Terraria.Chat;
|
|
using Terraria.DataStructures;
|
|
using Terraria.Enums;
|
|
using Terraria.GameContent;
|
|
using Terraria.GameContent.Achievements;
|
|
using Terraria.GameContent.Creative;
|
|
using Terraria.GameContent.Events;
|
|
using Terraria.GameContent.Golf;
|
|
using Terraria.GameContent.Tile_Entities;
|
|
using Terraria.GameContent.UI;
|
|
using Terraria.ID;
|
|
using Terraria.Localization;
|
|
using Terraria.Net;
|
|
using Terraria.Testing;
|
|
using Terraria.UI;
|
|
|
|
namespace Terraria
|
|
{
|
|
public class MessageBuffer
|
|
{
|
|
public const int readBufferMax = 131070;
|
|
public const int writeBufferMax = 131070;
|
|
public bool broadcast;
|
|
public byte[] readBuffer = new byte[131070];
|
|
public byte[] writeBuffer = new byte[131070];
|
|
public bool writeLocked;
|
|
public int messageLength;
|
|
public int totalData;
|
|
public int whoAmI;
|
|
public int spamCount;
|
|
public int maxSpam;
|
|
public bool checkBytes;
|
|
public MemoryStream readerStream;
|
|
public MemoryStream writerStream;
|
|
public BinaryReader reader;
|
|
public BinaryWriter writer;
|
|
public PacketHistory History = new PacketHistory();
|
|
|
|
public static event TileChangeReceivedEvent OnTileChangeReceived;
|
|
|
|
public void Reset()
|
|
{
|
|
Array.Clear((Array) this.readBuffer, 0, this.readBuffer.Length);
|
|
Array.Clear((Array) this.writeBuffer, 0, this.writeBuffer.Length);
|
|
this.writeLocked = false;
|
|
this.messageLength = 0;
|
|
this.totalData = 0;
|
|
this.spamCount = 0;
|
|
this.broadcast = false;
|
|
this.checkBytes = false;
|
|
this.ResetReader();
|
|
this.ResetWriter();
|
|
}
|
|
|
|
public void ResetReader()
|
|
{
|
|
if (this.readerStream != null)
|
|
this.readerStream.Close();
|
|
this.readerStream = new MemoryStream(this.readBuffer);
|
|
this.reader = new BinaryReader((Stream) this.readerStream);
|
|
}
|
|
|
|
public void ResetWriter()
|
|
{
|
|
if (this.writerStream != null)
|
|
this.writerStream.Close();
|
|
this.writerStream = new MemoryStream(this.writeBuffer);
|
|
this.writer = new BinaryWriter((Stream) this.writerStream);
|
|
}
|
|
|
|
public void GetData(int start, int length, out int messageType)
|
|
{
|
|
if (this.whoAmI < 256)
|
|
Netplay.Clients[this.whoAmI].TimeOutTimer = 0;
|
|
else
|
|
Netplay.Connection.TimeOutTimer = 0;
|
|
int bufferStart = start + 1;
|
|
byte num1 = this.readBuffer[start];
|
|
messageType = (int) num1;
|
|
if (num1 >= (byte) 140)
|
|
return;
|
|
Main.ActiveNetDiagnosticsUI.CountReadMessage((int) num1, length);
|
|
if (Main.netMode == 1 && Netplay.Connection.StatusMax > 0)
|
|
++Netplay.Connection.StatusCount;
|
|
if (Main.verboseNetplay)
|
|
{
|
|
int num2 = start;
|
|
while (num2 < start + length)
|
|
++num2;
|
|
for (int index = start; index < start + length; ++index)
|
|
{
|
|
int num3 = (int) this.readBuffer[index];
|
|
}
|
|
}
|
|
if (Main.netMode == 2 && num1 != (byte) 38 && Netplay.Clients[this.whoAmI].State == -1)
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: Lang.mp[1].ToNetworkText());
|
|
}
|
|
else
|
|
{
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Netplay.Clients[this.whoAmI].State < 10 && num1 > (byte) 12 && num1 != (byte) 93 && num1 != (byte) 16 && num1 != (byte) 42 && num1 != (byte) 50 && num1 != (byte) 38 && num1 != (byte) 68)
|
|
NetMessage.BootPlayer(this.whoAmI, Lang.mp[2].ToNetworkText());
|
|
if (Netplay.Clients[this.whoAmI].State == 0 && num1 != (byte) 1)
|
|
NetMessage.BootPlayer(this.whoAmI, Lang.mp[2].ToNetworkText());
|
|
}
|
|
if (this.reader == null)
|
|
this.ResetReader();
|
|
this.reader.BaseStream.Position = (long) bufferStart;
|
|
switch (num1)
|
|
{
|
|
case 1:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
if (Main.dedServ && Netplay.IsBanned(Netplay.Clients[this.whoAmI].Socket.GetRemoteAddress()))
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: Lang.mp[3].ToNetworkText());
|
|
break;
|
|
}
|
|
if (Netplay.Clients[this.whoAmI].State != 0)
|
|
break;
|
|
if (this.reader.ReadString() == "Terraria" + (object) 230)
|
|
{
|
|
if (string.IsNullOrEmpty(Netplay.ServerPassword))
|
|
{
|
|
Netplay.Clients[this.whoAmI].State = 1;
|
|
NetMessage.TrySendData(3, this.whoAmI);
|
|
break;
|
|
}
|
|
Netplay.Clients[this.whoAmI].State = -1;
|
|
NetMessage.TrySendData(37, this.whoAmI);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(2, this.whoAmI, text: Lang.mp[4].ToNetworkText());
|
|
break;
|
|
case 2:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Netplay.Disconnect = true;
|
|
Main.statusText = NetworkText.Deserialize(this.reader).ToString();
|
|
break;
|
|
case 3:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
if (Netplay.Connection.State == 1)
|
|
Netplay.Connection.State = 2;
|
|
int number1 = (int) this.reader.ReadByte();
|
|
if (number1 != Main.myPlayer)
|
|
{
|
|
Main.player[number1] = Main.ActivePlayerFileData.Player;
|
|
Main.player[Main.myPlayer] = new Player();
|
|
}
|
|
Main.player[number1].whoAmI = number1;
|
|
Main.myPlayer = number1;
|
|
Player player1 = Main.player[number1];
|
|
NetMessage.TrySendData(4, number: number1);
|
|
NetMessage.TrySendData(68, number: number1);
|
|
NetMessage.TrySendData(16, number: number1);
|
|
NetMessage.TrySendData(42, number: number1);
|
|
NetMessage.TrySendData(50, number: number1);
|
|
for (int index = 0; index < 59; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) index), number3: ((float) player1.inventory[index].prefix));
|
|
for (int index = 0; index < player1.armor.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (59 + index)), number3: ((float) player1.armor[index].prefix));
|
|
for (int index = 0; index < player1.dye.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + 1 + index)), number3: ((float) player1.dye[index].prefix));
|
|
for (int index = 0; index < player1.miscEquips.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + 1 + index)), number3: ((float) player1.miscEquips[index].prefix));
|
|
for (int index = 0; index < player1.miscDyes.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + 1 + index)), number3: ((float) player1.miscDyes[index].prefix));
|
|
for (int index = 0; index < player1.bank.item.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + 1 + index)), number3: ((float) player1.bank.item[index].prefix));
|
|
for (int index = 0; index < player1.bank2.item.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + 1 + index)), number3: ((float) player1.bank2.item[index].prefix));
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + player1.bank2.item.Length + 1)), number3: ((float) player1.trashItem.prefix));
|
|
for (int index = 0; index < player1.bank3.item.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + player1.bank2.item.Length + 2 + index)), number3: ((float) player1.bank3.item[index].prefix));
|
|
for (int index = 0; index < player1.bank4.item.Length; ++index)
|
|
NetMessage.TrySendData(5, number: number1, number2: ((float) (58 + player1.armor.Length + player1.dye.Length + player1.miscEquips.Length + player1.miscDyes.Length + player1.bank.item.Length + player1.bank2.item.Length + player1.bank3.item.Length + 2 + index)), number3: ((float) player1.bank4.item[index].prefix));
|
|
NetMessage.TrySendData(6);
|
|
if (Netplay.Connection.State != 2)
|
|
break;
|
|
Netplay.Connection.State = 3;
|
|
break;
|
|
case 4:
|
|
int number2 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number2 = this.whoAmI;
|
|
if (number2 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
break;
|
|
Player player2 = Main.player[number2];
|
|
player2.whoAmI = number2;
|
|
player2.skinVariant = (int) this.reader.ReadByte();
|
|
player2.skinVariant = (int) MathHelper.Clamp((float) player2.skinVariant, 0.0f, 11f);
|
|
player2.hair = (int) this.reader.ReadByte();
|
|
if (player2.hair >= 162)
|
|
player2.hair = 0;
|
|
player2.name = this.reader.ReadString().Trim().Trim();
|
|
player2.hairDye = this.reader.ReadByte();
|
|
BitsByte bitsByte1 = (BitsByte) this.reader.ReadByte();
|
|
for (int key = 0; key < 8; ++key)
|
|
player2.hideVisibleAccessory[key] = bitsByte1[key];
|
|
bitsByte1 = (BitsByte) this.reader.ReadByte();
|
|
for (int key = 0; key < 2; ++key)
|
|
player2.hideVisibleAccessory[key + 8] = bitsByte1[key];
|
|
player2.hideMisc = (BitsByte) this.reader.ReadByte();
|
|
player2.hairColor = this.reader.ReadRGB();
|
|
player2.skinColor = this.reader.ReadRGB();
|
|
player2.eyeColor = this.reader.ReadRGB();
|
|
player2.shirtColor = this.reader.ReadRGB();
|
|
player2.underShirtColor = this.reader.ReadRGB();
|
|
player2.pantsColor = this.reader.ReadRGB();
|
|
player2.shoeColor = this.reader.ReadRGB();
|
|
BitsByte bitsByte2 = (BitsByte) this.reader.ReadByte();
|
|
player2.difficulty = (byte) 0;
|
|
if (bitsByte2[0])
|
|
player2.difficulty = (byte) 1;
|
|
if (bitsByte2[1])
|
|
player2.difficulty = (byte) 2;
|
|
if (bitsByte2[3])
|
|
player2.difficulty = (byte) 3;
|
|
if (player2.difficulty > (byte) 3)
|
|
player2.difficulty = (byte) 3;
|
|
player2.extraAccessory = bitsByte2[2];
|
|
BitsByte bitsByte3 = (BitsByte) this.reader.ReadByte();
|
|
player2.UsingBiomeTorches = bitsByte3[0];
|
|
player2.happyFunTorchTime = bitsByte3[1];
|
|
if (Main.netMode != 2)
|
|
break;
|
|
bool flag1 = false;
|
|
if (Netplay.Clients[this.whoAmI].State < 10)
|
|
{
|
|
for (int index = 0; index < (int) byte.MaxValue; ++index)
|
|
{
|
|
if (index != number2 && player2.name == Main.player[index].name && Netplay.Clients[index].IsActive)
|
|
flag1 = true;
|
|
}
|
|
}
|
|
if (flag1)
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: NetworkText.FromKey(Lang.mp[5].Key, (object) player2.name));
|
|
break;
|
|
}
|
|
if (player2.name.Length > Player.nameLen)
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: NetworkText.FromKey("Net.NameTooLong"));
|
|
break;
|
|
}
|
|
if (player2.name == "")
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: NetworkText.FromKey("Net.EmptyName"));
|
|
break;
|
|
}
|
|
if (player2.difficulty == (byte) 3 && !Main.GameModeInfo.IsJourneyMode)
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: NetworkText.FromKey("Net.PlayerIsCreativeAndWorldIsNotCreative"));
|
|
break;
|
|
}
|
|
if (player2.difficulty != (byte) 3 && Main.GameModeInfo.IsJourneyMode)
|
|
{
|
|
NetMessage.TrySendData(2, this.whoAmI, text: NetworkText.FromKey("Net.PlayerIsNotCreativeAndWorldIsCreative"));
|
|
break;
|
|
}
|
|
Netplay.Clients[this.whoAmI].Name = player2.name;
|
|
Netplay.Clients[this.whoAmI].Name = player2.name;
|
|
NetMessage.TrySendData(4, ignoreClient: this.whoAmI, number: number2);
|
|
break;
|
|
case 5:
|
|
int number3 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number3 = this.whoAmI;
|
|
if (number3 == Main.myPlayer && !Main.ServerSideCharacter && !Main.player[number3].HasLockedInventory())
|
|
break;
|
|
Player player3 = Main.player[number3];
|
|
lock (player3)
|
|
{
|
|
int index1 = (int) this.reader.ReadInt16();
|
|
int num4 = (int) this.reader.ReadInt16();
|
|
int pre = (int) this.reader.ReadByte();
|
|
int type1 = (int) this.reader.ReadInt16();
|
|
Item[] objArray1 = (Item[]) null;
|
|
Item[] objArray2 = (Item[]) null;
|
|
int index2 = 0;
|
|
bool flag2 = false;
|
|
if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length + player3.bank3.item.Length + 1)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length + player3.bank3.item.Length + 1) - 1;
|
|
objArray1 = player3.bank4.item;
|
|
objArray2 = Main.clientPlayer.bank4.item;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length + 1)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length + 1) - 1;
|
|
objArray1 = player3.bank3.item;
|
|
objArray2 = Main.clientPlayer.bank3.item;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length + player3.bank2.item.Length)
|
|
flag2 = true;
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length + player3.bank.item.Length) - 1;
|
|
objArray1 = player3.bank2.item;
|
|
objArray2 = Main.clientPlayer.bank2.item;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length) - 1;
|
|
objArray1 = player3.bank.item;
|
|
objArray2 = Main.clientPlayer.bank.item;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length + player3.miscEquips.Length) - 1;
|
|
objArray1 = player3.miscDyes;
|
|
objArray2 = Main.clientPlayer.miscDyes;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length + player3.dye.Length)
|
|
{
|
|
index2 = index1 - 58 - (player3.armor.Length + player3.dye.Length) - 1;
|
|
objArray1 = player3.miscEquips;
|
|
objArray2 = Main.clientPlayer.miscEquips;
|
|
}
|
|
else if (index1 > 58 + player3.armor.Length)
|
|
{
|
|
index2 = index1 - 58 - player3.armor.Length - 1;
|
|
objArray1 = player3.dye;
|
|
objArray2 = Main.clientPlayer.dye;
|
|
}
|
|
else if (index1 > 58)
|
|
{
|
|
index2 = index1 - 58 - 1;
|
|
objArray1 = player3.armor;
|
|
objArray2 = Main.clientPlayer.armor;
|
|
}
|
|
else
|
|
{
|
|
index2 = index1;
|
|
objArray1 = player3.inventory;
|
|
objArray2 = Main.clientPlayer.inventory;
|
|
}
|
|
if (flag2)
|
|
{
|
|
player3.trashItem = new Item();
|
|
player3.trashItem.netDefaults(type1);
|
|
player3.trashItem.stack = num4;
|
|
player3.trashItem.Prefix(pre);
|
|
if (number3 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
Main.clientPlayer.trashItem = player3.trashItem.Clone();
|
|
}
|
|
else if (index1 <= 58)
|
|
{
|
|
int type2 = objArray1[index2].type;
|
|
int stack = objArray1[index2].stack;
|
|
objArray1[index2] = new Item();
|
|
objArray1[index2].netDefaults(type1);
|
|
objArray1[index2].stack = num4;
|
|
objArray1[index2].Prefix(pre);
|
|
if (number3 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
objArray2[index2] = objArray1[index2].Clone();
|
|
if (number3 == Main.myPlayer && index2 == 58)
|
|
Main.mouseItem = objArray1[index2].Clone();
|
|
if (number3 == Main.myPlayer && Main.netMode == 1)
|
|
{
|
|
Main.player[number3].inventoryChestStack[index1] = false;
|
|
if (objArray1[index2].stack != stack || objArray1[index2].type != type2)
|
|
{
|
|
Recipe.FindRecipes(true);
|
|
SoundEngine.PlaySound(7);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
objArray1[index2] = new Item();
|
|
objArray1[index2].netDefaults(type1);
|
|
objArray1[index2].stack = num4;
|
|
objArray1[index2].Prefix(pre);
|
|
if (number3 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
objArray2[index2] = objArray1[index2].Clone();
|
|
}
|
|
if (Main.netMode != 2 || number3 != this.whoAmI || index1 > 58 + player3.armor.Length + player3.dye.Length + player3.miscEquips.Length + player3.miscDyes.Length)
|
|
break;
|
|
NetMessage.TrySendData(5, ignoreClient: this.whoAmI, number: number3, number2: ((float) index1), number3: ((float) pre));
|
|
break;
|
|
}
|
|
case 6:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
if (Netplay.Clients[this.whoAmI].State == 1)
|
|
Netplay.Clients[this.whoAmI].State = 2;
|
|
NetMessage.TrySendData(7, this.whoAmI);
|
|
Main.SyncAnInvasion(this.whoAmI);
|
|
break;
|
|
case 7:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.time = (double) this.reader.ReadInt32();
|
|
BitsByte bitsByte4 = (BitsByte) this.reader.ReadByte();
|
|
Main.dayTime = bitsByte4[0];
|
|
Main.bloodMoon = bitsByte4[1];
|
|
Main.eclipse = bitsByte4[2];
|
|
Main.moonPhase = (int) this.reader.ReadByte();
|
|
Main.maxTilesX = (int) this.reader.ReadInt16();
|
|
Main.maxTilesY = (int) this.reader.ReadInt16();
|
|
Main.spawnTileX = (int) this.reader.ReadInt16();
|
|
Main.spawnTileY = (int) this.reader.ReadInt16();
|
|
Main.worldSurface = (double) this.reader.ReadInt16();
|
|
Main.rockLayer = (double) this.reader.ReadInt16();
|
|
Main.worldID = this.reader.ReadInt32();
|
|
Main.worldName = this.reader.ReadString();
|
|
Main.GameMode = (int) this.reader.ReadByte();
|
|
Main.ActiveWorldFileData.UniqueId = new Guid(this.reader.ReadBytes(16));
|
|
Main.ActiveWorldFileData.WorldGeneratorVersion = this.reader.ReadUInt64();
|
|
Main.moonType = (int) this.reader.ReadByte();
|
|
WorldGen.setBG(0, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(10, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(11, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(12, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(1, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(2, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(3, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(4, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(5, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(6, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(7, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(8, (int) this.reader.ReadByte());
|
|
WorldGen.setBG(9, (int) this.reader.ReadByte());
|
|
Main.iceBackStyle = (int) this.reader.ReadByte();
|
|
Main.jungleBackStyle = (int) this.reader.ReadByte();
|
|
Main.hellBackStyle = (int) this.reader.ReadByte();
|
|
Main.windSpeedTarget = this.reader.ReadSingle();
|
|
Main.numClouds = (int) this.reader.ReadByte();
|
|
for (int index = 0; index < 3; ++index)
|
|
Main.treeX[index] = this.reader.ReadInt32();
|
|
for (int index = 0; index < 4; ++index)
|
|
Main.treeStyle[index] = (int) this.reader.ReadByte();
|
|
for (int index = 0; index < 3; ++index)
|
|
Main.caveBackX[index] = this.reader.ReadInt32();
|
|
for (int index = 0; index < 4; ++index)
|
|
Main.caveBackStyle[index] = (int) this.reader.ReadByte();
|
|
WorldGen.TreeTops.SyncReceive(this.reader);
|
|
WorldGen.BackgroundsCache.UpdateCache();
|
|
Main.maxRaining = this.reader.ReadSingle();
|
|
Main.raining = (double) Main.maxRaining > 0.0;
|
|
BitsByte bitsByte5 = (BitsByte) this.reader.ReadByte();
|
|
WorldGen.shadowOrbSmashed = bitsByte5[0];
|
|
NPC.downedBoss1 = bitsByte5[1];
|
|
NPC.downedBoss2 = bitsByte5[2];
|
|
NPC.downedBoss3 = bitsByte5[3];
|
|
Main.hardMode = bitsByte5[4];
|
|
NPC.downedClown = bitsByte5[5];
|
|
Main.ServerSideCharacter = bitsByte5[6];
|
|
NPC.downedPlantBoss = bitsByte5[7];
|
|
BitsByte bitsByte6 = (BitsByte) this.reader.ReadByte();
|
|
NPC.downedMechBoss1 = bitsByte6[0];
|
|
NPC.downedMechBoss2 = bitsByte6[1];
|
|
NPC.downedMechBoss3 = bitsByte6[2];
|
|
NPC.downedMechBossAny = bitsByte6[3];
|
|
Main.cloudBGActive = bitsByte6[4] ? 1f : 0.0f;
|
|
WorldGen.crimson = bitsByte6[5];
|
|
Main.pumpkinMoon = bitsByte6[6];
|
|
Main.snowMoon = bitsByte6[7];
|
|
BitsByte bitsByte7 = (BitsByte) this.reader.ReadByte();
|
|
Main.fastForwardTime = bitsByte7[1];
|
|
Main.UpdateTimeRate();
|
|
int num5 = bitsByte7[2] ? 1 : 0;
|
|
NPC.downedSlimeKing = bitsByte7[3];
|
|
NPC.downedQueenBee = bitsByte7[4];
|
|
NPC.downedFishron = bitsByte7[5];
|
|
NPC.downedMartians = bitsByte7[6];
|
|
NPC.downedAncientCultist = bitsByte7[7];
|
|
BitsByte bitsByte8 = (BitsByte) this.reader.ReadByte();
|
|
NPC.downedMoonlord = bitsByte8[0];
|
|
NPC.downedHalloweenKing = bitsByte8[1];
|
|
NPC.downedHalloweenTree = bitsByte8[2];
|
|
NPC.downedChristmasIceQueen = bitsByte8[3];
|
|
NPC.downedChristmasSantank = bitsByte8[4];
|
|
NPC.downedChristmasTree = bitsByte8[5];
|
|
NPC.downedGolemBoss = bitsByte8[6];
|
|
BirthdayParty.ManualParty = bitsByte8[7];
|
|
BitsByte bitsByte9 = (BitsByte) this.reader.ReadByte();
|
|
NPC.downedPirates = bitsByte9[0];
|
|
NPC.downedFrost = bitsByte9[1];
|
|
NPC.downedGoblins = bitsByte9[2];
|
|
Sandstorm.Happening = bitsByte9[3];
|
|
DD2Event.Ongoing = bitsByte9[4];
|
|
DD2Event.DownedInvasionT1 = bitsByte9[5];
|
|
DD2Event.DownedInvasionT2 = bitsByte9[6];
|
|
DD2Event.DownedInvasionT3 = bitsByte9[7];
|
|
BitsByte bitsByte10 = (BitsByte) this.reader.ReadByte();
|
|
NPC.combatBookWasUsed = bitsByte10[0];
|
|
LanternNight.ManualLanterns = bitsByte10[1];
|
|
NPC.downedTowerSolar = bitsByte10[2];
|
|
NPC.downedTowerVortex = bitsByte10[3];
|
|
NPC.downedTowerNebula = bitsByte10[4];
|
|
NPC.downedTowerStardust = bitsByte10[5];
|
|
Main.forceHalloweenForToday = bitsByte10[6];
|
|
Main.forceXMasForToday = bitsByte10[7];
|
|
BitsByte bitsByte11 = (BitsByte) this.reader.ReadByte();
|
|
NPC.boughtCat = bitsByte11[0];
|
|
NPC.boughtDog = bitsByte11[1];
|
|
NPC.boughtBunny = bitsByte11[2];
|
|
NPC.freeCake = bitsByte11[3];
|
|
Main.drunkWorld = bitsByte11[4];
|
|
NPC.downedEmpressOfLight = bitsByte11[5];
|
|
NPC.downedQueenSlime = bitsByte11[6];
|
|
Main.getGoodWorld = bitsByte11[7];
|
|
WorldGen.SavedOreTiers.Copper = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Iron = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Silver = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Gold = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Cobalt = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Mythril = (int) this.reader.ReadInt16();
|
|
WorldGen.SavedOreTiers.Adamantite = (int) this.reader.ReadInt16();
|
|
if (num5 != 0)
|
|
Main.StartSlimeRain();
|
|
else
|
|
Main.StopSlimeRain();
|
|
Main.invasionType = (int) this.reader.ReadSByte();
|
|
Main.LobbyId = this.reader.ReadUInt64();
|
|
Sandstorm.IntendedSeverity = this.reader.ReadSingle();
|
|
if (Netplay.Connection.State == 3)
|
|
{
|
|
Main.windSpeedCurrent = Main.windSpeedTarget;
|
|
Netplay.Connection.State = 4;
|
|
}
|
|
Main.checkHalloween();
|
|
Main.checkXMas();
|
|
break;
|
|
case 8:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int num6 = this.reader.ReadInt32();
|
|
int y1 = this.reader.ReadInt32();
|
|
bool flag3 = true;
|
|
if (num6 == -1 || y1 == -1)
|
|
flag3 = false;
|
|
else if (num6 < 10 || num6 > Main.maxTilesX - 10)
|
|
flag3 = false;
|
|
else if (y1 < 10 || y1 > Main.maxTilesY - 10)
|
|
flag3 = false;
|
|
int number4 = Netplay.GetSectionX(Main.spawnTileX) - 2;
|
|
int num7 = Netplay.GetSectionY(Main.spawnTileY) - 1;
|
|
int num8 = number4 + 5;
|
|
int num9 = num7 + 3;
|
|
if (number4 < 0)
|
|
number4 = 0;
|
|
if (num8 >= Main.maxSectionsX)
|
|
num8 = Main.maxSectionsX - 1;
|
|
if (num7 < 0)
|
|
num7 = 0;
|
|
if (num9 >= Main.maxSectionsY)
|
|
num9 = Main.maxSectionsY - 1;
|
|
int num10 = (num8 - number4) * (num9 - num7);
|
|
List<Point> dontInclude = new List<Point>();
|
|
for (int x = number4; x < num8; ++x)
|
|
{
|
|
for (int y2 = num7; y2 < num9; ++y2)
|
|
dontInclude.Add(new Point(x, y2));
|
|
}
|
|
int num11 = -1;
|
|
int num12 = -1;
|
|
if (flag3)
|
|
{
|
|
num6 = Netplay.GetSectionX(num6) - 2;
|
|
y1 = Netplay.GetSectionY(y1) - 1;
|
|
num11 = num6 + 5;
|
|
num12 = y1 + 3;
|
|
if (num6 < 0)
|
|
num6 = 0;
|
|
if (num11 >= Main.maxSectionsX)
|
|
num11 = Main.maxSectionsX - 1;
|
|
if (y1 < 0)
|
|
y1 = 0;
|
|
if (num12 >= Main.maxSectionsY)
|
|
num12 = Main.maxSectionsY - 1;
|
|
for (int x = num6; x < num11; ++x)
|
|
{
|
|
for (int y3 = y1; y3 < num12; ++y3)
|
|
{
|
|
if (x < number4 || x >= num8 || y3 < num7 || y3 >= num9)
|
|
{
|
|
dontInclude.Add(new Point(x, y3));
|
|
++num10;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
int num13 = 1;
|
|
List<Point> portals;
|
|
List<Point> portalCenters;
|
|
PortalHelper.SyncPortalsOnPlayerJoin(this.whoAmI, 1, dontInclude, out portals, out portalCenters);
|
|
int number5 = num10 + portals.Count;
|
|
if (Netplay.Clients[this.whoAmI].State == 2)
|
|
Netplay.Clients[this.whoAmI].State = 3;
|
|
NetMessage.TrySendData(9, this.whoAmI, text: Lang.inter[44].ToNetworkText(), number: number5);
|
|
Netplay.Clients[this.whoAmI].StatusText2 = Language.GetTextValue("Net.IsReceivingTileData");
|
|
Netplay.Clients[this.whoAmI].StatusMax += number5;
|
|
for (int sectionX = number4; sectionX < num8; ++sectionX)
|
|
{
|
|
for (int sectionY = num7; sectionY < num9; ++sectionY)
|
|
NetMessage.SendSection(this.whoAmI, sectionX, sectionY);
|
|
}
|
|
NetMessage.TrySendData(11, this.whoAmI, number: number4, number2: ((float) num7), number3: ((float) (num8 - 1)), number4: ((float) (num9 - 1)));
|
|
if (flag3)
|
|
{
|
|
for (int sectionX = num6; sectionX < num11; ++sectionX)
|
|
{
|
|
for (int sectionY = y1; sectionY < num12; ++sectionY)
|
|
NetMessage.SendSection(this.whoAmI, sectionX, sectionY, true);
|
|
}
|
|
NetMessage.TrySendData(11, this.whoAmI, number: num6, number2: ((float) y1), number3: ((float) (num11 - 1)), number4: ((float) (num12 - 1)));
|
|
}
|
|
for (int index = 0; index < portals.Count; ++index)
|
|
NetMessage.SendSection(this.whoAmI, portals[index].X, portals[index].Y, true);
|
|
for (int index = 0; index < portalCenters.Count; ++index)
|
|
NetMessage.TrySendData(11, this.whoAmI, number: (portalCenters[index].X - num13), number2: ((float) (portalCenters[index].Y - num13)), number3: ((float) (portalCenters[index].X + num13 + 1)), number4: ((float) (portalCenters[index].Y + num13 + 1)));
|
|
for (int number6 = 0; number6 < 400; ++number6)
|
|
{
|
|
if (Main.item[number6].active)
|
|
{
|
|
NetMessage.TrySendData(21, this.whoAmI, number: number6);
|
|
NetMessage.TrySendData(22, this.whoAmI, number: number6);
|
|
}
|
|
}
|
|
for (int number7 = 0; number7 < 200; ++number7)
|
|
{
|
|
if (Main.npc[number7].active)
|
|
NetMessage.TrySendData(23, this.whoAmI, number: number7);
|
|
}
|
|
for (int number8 = 0; number8 < 1000; ++number8)
|
|
{
|
|
if (Main.projectile[number8].active && (Main.projPet[Main.projectile[number8].type] || Main.projectile[number8].netImportant))
|
|
NetMessage.TrySendData(27, this.whoAmI, number: number8);
|
|
}
|
|
for (int number9 = 0; number9 < 289; ++number9)
|
|
NetMessage.TrySendData(83, this.whoAmI, number: number9);
|
|
NetMessage.TrySendData(49, this.whoAmI);
|
|
NetMessage.TrySendData(57, this.whoAmI);
|
|
NetMessage.TrySendData(7, this.whoAmI);
|
|
NetMessage.TrySendData(103, number: NPC.MoonLordCountdown);
|
|
NetMessage.TrySendData(101, this.whoAmI);
|
|
NetMessage.TrySendData(136, this.whoAmI);
|
|
Main.BestiaryTracker.OnPlayerJoining(this.whoAmI);
|
|
CreativePowerManager.Instance.SyncThingsToJoiningPlayer(this.whoAmI);
|
|
Main.PylonSystem.OnPlayerJoining(this.whoAmI);
|
|
break;
|
|
case 9:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Netplay.Connection.StatusMax += this.reader.ReadInt32();
|
|
Netplay.Connection.StatusText = NetworkText.Deserialize(this.reader).ToString();
|
|
Netplay.Connection.StatusTextFlags = (BitsByte) this.reader.ReadByte();
|
|
break;
|
|
case 10:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
NetMessage.DecompressTileBlock(this.readBuffer, bufferStart, length);
|
|
break;
|
|
case 11:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
WorldGen.SectionTileFrame((int) this.reader.ReadInt16(), (int) this.reader.ReadInt16(), (int) this.reader.ReadInt16(), (int) this.reader.ReadInt16());
|
|
break;
|
|
case 12:
|
|
int index3 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index3 = this.whoAmI;
|
|
Player player4 = Main.player[index3];
|
|
player4.SpawnX = (int) this.reader.ReadInt16();
|
|
player4.SpawnY = (int) this.reader.ReadInt16();
|
|
player4.respawnTimer = this.reader.ReadInt32();
|
|
if (player4.respawnTimer > 0)
|
|
player4.dead = true;
|
|
PlayerSpawnContext context = (PlayerSpawnContext) this.reader.ReadByte();
|
|
player4.Spawn(context);
|
|
if (index3 == Main.myPlayer && Main.netMode != 2)
|
|
{
|
|
Main.ActivePlayerFileData.StartPlayTimer();
|
|
Player.Hooks.EnterWorld(Main.myPlayer);
|
|
}
|
|
if (Main.netMode != 2 || Netplay.Clients[this.whoAmI].State < 3)
|
|
break;
|
|
if (Netplay.Clients[this.whoAmI].State == 3)
|
|
{
|
|
Netplay.Clients[this.whoAmI].State = 10;
|
|
NetMessage.buffer[this.whoAmI].broadcast = true;
|
|
NetMessage.SyncConnectedPlayer(this.whoAmI);
|
|
bool flag4 = NetMessage.DoesPlayerSlotCountAsAHost(this.whoAmI);
|
|
Main.countsAsHostForGameplay[this.whoAmI] = flag4;
|
|
if (NetMessage.DoesPlayerSlotCountAsAHost(this.whoAmI))
|
|
NetMessage.TrySendData(139, this.whoAmI, number: this.whoAmI, number2: ((float) flag4.ToInt()));
|
|
NetMessage.TrySendData(12, ignoreClient: this.whoAmI, number: this.whoAmI, number2: ((float) (byte) context));
|
|
NetMessage.TrySendData(74, this.whoAmI, text: NetworkText.FromLiteral(Main.player[this.whoAmI].name), number: Main.anglerQuest);
|
|
NetMessage.TrySendData(129, this.whoAmI);
|
|
NetMessage.greetPlayer(this.whoAmI);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(12, ignoreClient: this.whoAmI, number: this.whoAmI, number2: ((float) (byte) context));
|
|
break;
|
|
case 13:
|
|
int number10 = (int) this.reader.ReadByte();
|
|
if (number10 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
break;
|
|
if (Main.netMode == 2)
|
|
number10 = this.whoAmI;
|
|
Player player5 = Main.player[number10];
|
|
BitsByte bitsByte12 = (BitsByte) this.reader.ReadByte();
|
|
BitsByte bitsByte13 = (BitsByte) this.reader.ReadByte();
|
|
BitsByte bitsByte14 = (BitsByte) this.reader.ReadByte();
|
|
BitsByte bitsByte15 = (BitsByte) this.reader.ReadByte();
|
|
player5.controlUp = bitsByte12[0];
|
|
player5.controlDown = bitsByte12[1];
|
|
player5.controlLeft = bitsByte12[2];
|
|
player5.controlRight = bitsByte12[3];
|
|
player5.controlJump = bitsByte12[4];
|
|
player5.controlUseItem = bitsByte12[5];
|
|
player5.direction = bitsByte12[6] ? 1 : -1;
|
|
if (bitsByte13[0])
|
|
{
|
|
player5.pulley = true;
|
|
player5.pulleyDir = bitsByte13[1] ? (byte) 2 : (byte) 1;
|
|
}
|
|
else
|
|
player5.pulley = false;
|
|
player5.vortexStealthActive = bitsByte13[3];
|
|
player5.gravDir = bitsByte13[4] ? 1f : -1f;
|
|
player5.TryTogglingShield(bitsByte13[5]);
|
|
player5.ghost = bitsByte13[6];
|
|
player5.selectedItem = (int) this.reader.ReadByte();
|
|
player5.position = this.reader.ReadVector2();
|
|
if (bitsByte13[2])
|
|
player5.velocity = this.reader.ReadVector2();
|
|
else
|
|
player5.velocity = Vector2.Zero;
|
|
if (bitsByte14[6])
|
|
{
|
|
player5.PotionOfReturnOriginalUsePosition = new Vector2?(this.reader.ReadVector2());
|
|
player5.PotionOfReturnHomePosition = new Vector2?(this.reader.ReadVector2());
|
|
}
|
|
else
|
|
{
|
|
player5.PotionOfReturnOriginalUsePosition = new Vector2?();
|
|
player5.PotionOfReturnHomePosition = new Vector2?();
|
|
}
|
|
player5.tryKeepingHoveringUp = bitsByte14[0];
|
|
player5.IsVoidVaultEnabled = bitsByte14[1];
|
|
player5.sitting.isSitting = bitsByte14[2];
|
|
player5.downedDD2EventAnyDifficulty = bitsByte14[3];
|
|
player5.isPettingAnimal = bitsByte14[4];
|
|
player5.isTheAnimalBeingPetSmall = bitsByte14[5];
|
|
player5.tryKeepingHoveringDown = bitsByte14[7];
|
|
player5.sleeping.SetIsSleepingAndAdjustPlayerRotation(player5, bitsByte15[0]);
|
|
if (Main.netMode != 2 || Netplay.Clients[this.whoAmI].State != 10)
|
|
break;
|
|
NetMessage.TrySendData(13, ignoreClient: this.whoAmI, number: number10);
|
|
break;
|
|
case 14:
|
|
int playerIndex = (int) this.reader.ReadByte();
|
|
int num14 = (int) this.reader.ReadByte();
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int num15 = Main.player[playerIndex].active ? 1 : 0;
|
|
if (num14 == 1)
|
|
{
|
|
if (!Main.player[playerIndex].active)
|
|
Main.player[playerIndex] = new Player();
|
|
Main.player[playerIndex].active = true;
|
|
}
|
|
else
|
|
Main.player[playerIndex].active = false;
|
|
int num16 = Main.player[playerIndex].active ? 1 : 0;
|
|
if (num15 == num16)
|
|
break;
|
|
if (Main.player[playerIndex].active)
|
|
{
|
|
Player.Hooks.PlayerConnect(playerIndex);
|
|
break;
|
|
}
|
|
Player.Hooks.PlayerDisconnect(playerIndex);
|
|
break;
|
|
case 15:
|
|
break;
|
|
case 16:
|
|
int number11 = (int) this.reader.ReadByte();
|
|
if (number11 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
break;
|
|
if (Main.netMode == 2)
|
|
number11 = this.whoAmI;
|
|
Player player6 = Main.player[number11];
|
|
player6.statLife = (int) this.reader.ReadInt16();
|
|
player6.statLifeMax = (int) this.reader.ReadInt16();
|
|
if (player6.statLifeMax < 100)
|
|
player6.statLifeMax = 100;
|
|
player6.dead = player6.statLife <= 0;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(16, ignoreClient: this.whoAmI, number: number11);
|
|
break;
|
|
case 17:
|
|
byte num17 = this.reader.ReadByte();
|
|
int index4 = (int) this.reader.ReadInt16();
|
|
int index5 = (int) this.reader.ReadInt16();
|
|
short num18 = this.reader.ReadInt16();
|
|
int num19 = (int) this.reader.ReadByte();
|
|
bool fail = num18 == (short) 1;
|
|
if (!WorldGen.InWorld(index4, index5, 3))
|
|
break;
|
|
if (Main.tile[index4, index5] == null)
|
|
Main.tile[index4, index5] = new Tile();
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (!fail)
|
|
{
|
|
if (num17 == (byte) 0 || num17 == (byte) 2 || num17 == (byte) 4)
|
|
++Netplay.Clients[this.whoAmI].SpamDeleteBlock;
|
|
if (num17 == (byte) 1 || num17 == (byte) 3)
|
|
++Netplay.Clients[this.whoAmI].SpamAddBlock;
|
|
}
|
|
if (!Netplay.Clients[this.whoAmI].TileSections[Netplay.GetSectionX(index4), Netplay.GetSectionY(index5)])
|
|
fail = true;
|
|
}
|
|
if (num17 == (byte) 0)
|
|
{
|
|
WorldGen.KillTile(index4, index5, fail);
|
|
if (Main.netMode == 1 && !fail)
|
|
HitTile.ClearAllTilesAtThisLocation(index4, index5);
|
|
}
|
|
if (num17 == (byte) 1)
|
|
WorldGen.PlaceTile(index4, index5, (int) num18, forced: true, style: num19);
|
|
if (num17 == (byte) 2)
|
|
WorldGen.KillWall(index4, index5, fail);
|
|
if (num17 == (byte) 3)
|
|
WorldGen.PlaceWall(index4, index5, (int) num18);
|
|
if (num17 == (byte) 4)
|
|
WorldGen.KillTile(index4, index5, fail, noItem: true);
|
|
if (num17 == (byte) 5)
|
|
WorldGen.PlaceWire(index4, index5);
|
|
if (num17 == (byte) 6)
|
|
WorldGen.KillWire(index4, index5);
|
|
if (num17 == (byte) 7)
|
|
WorldGen.PoundTile(index4, index5);
|
|
if (num17 == (byte) 8)
|
|
WorldGen.PlaceActuator(index4, index5);
|
|
if (num17 == (byte) 9)
|
|
WorldGen.KillActuator(index4, index5);
|
|
if (num17 == (byte) 10)
|
|
WorldGen.PlaceWire2(index4, index5);
|
|
if (num17 == (byte) 11)
|
|
WorldGen.KillWire2(index4, index5);
|
|
if (num17 == (byte) 12)
|
|
WorldGen.PlaceWire3(index4, index5);
|
|
if (num17 == (byte) 13)
|
|
WorldGen.KillWire3(index4, index5);
|
|
if (num17 == (byte) 14)
|
|
WorldGen.SlopeTile(index4, index5, (int) num18);
|
|
if (num17 == (byte) 15)
|
|
Minecart.FrameTrack(index4, index5, true);
|
|
if (num17 == (byte) 16)
|
|
WorldGen.PlaceWire4(index4, index5);
|
|
if (num17 == (byte) 17)
|
|
WorldGen.KillWire4(index4, index5);
|
|
if (num17 == (byte) 18)
|
|
{
|
|
Wiring.SetCurrentUser(this.whoAmI);
|
|
Wiring.PokeLogicGate(index4, index5);
|
|
Wiring.SetCurrentUser();
|
|
break;
|
|
}
|
|
if (num17 == (byte) 19)
|
|
{
|
|
Wiring.SetCurrentUser(this.whoAmI);
|
|
Wiring.Actuate(index4, index5);
|
|
Wiring.SetCurrentUser();
|
|
break;
|
|
}
|
|
if (num17 == (byte) 20)
|
|
{
|
|
if (!WorldGen.InWorld(index4, index5, 2))
|
|
break;
|
|
int type = (int) Main.tile[index4, index5].type;
|
|
WorldGen.KillTile(index4, index5, fail);
|
|
short num20 = (int) Main.tile[index4, index5].type == type ? (short) 1 : (short) 0;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(17, number: ((int) num17), number2: ((float) index4), number3: ((float) index5), number4: ((float) num20), number5: num19);
|
|
break;
|
|
}
|
|
if (num17 == (byte) 21)
|
|
WorldGen.ReplaceTile(index4, index5, (ushort) num18, num19);
|
|
if (num17 == (byte) 22)
|
|
WorldGen.ReplaceWall(index4, index5, (ushort) num18);
|
|
if (num17 == (byte) 23)
|
|
{
|
|
WorldGen.SlopeTile(index4, index5, (int) num18);
|
|
WorldGen.PoundTile(index4, index5);
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(17, ignoreClient: this.whoAmI, number: ((int) num17), number2: ((float) index4), number3: ((float) index5), number4: ((float) num18), number5: num19);
|
|
if (num17 != (byte) 1 && num17 != (byte) 21 || !TileID.Sets.Falling[(int) num18])
|
|
break;
|
|
NetMessage.SendTileSquare(-1, index4, index5, 1);
|
|
break;
|
|
case 18:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.dayTime = this.reader.ReadByte() == (byte) 1;
|
|
Main.time = (double) this.reader.ReadInt32();
|
|
Main.sunModY = this.reader.ReadInt16();
|
|
Main.moonModY = this.reader.ReadInt16();
|
|
break;
|
|
case 19:
|
|
byte num21 = this.reader.ReadByte();
|
|
int num22 = (int) this.reader.ReadInt16();
|
|
int num23 = (int) this.reader.ReadInt16();
|
|
if (!WorldGen.InWorld(num22, num23, 3))
|
|
break;
|
|
int direction1 = this.reader.ReadByte() == (byte) 0 ? -1 : 1;
|
|
switch (num21)
|
|
{
|
|
case 0:
|
|
WorldGen.OpenDoor(num22, num23, direction1);
|
|
break;
|
|
case 1:
|
|
WorldGen.CloseDoor(num22, num23, true);
|
|
break;
|
|
case 2:
|
|
WorldGen.ShiftTrapdoor(num22, num23, direction1 == 1, 1);
|
|
break;
|
|
case 3:
|
|
WorldGen.ShiftTrapdoor(num22, num23, direction1 == 1, 0);
|
|
break;
|
|
case 4:
|
|
WorldGen.ShiftTallGate(num22, num23, false, true);
|
|
break;
|
|
case 5:
|
|
WorldGen.ShiftTallGate(num22, num23, true, true);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(19, ignoreClient: this.whoAmI, number: ((int) num21), number2: ((float) num22), number3: ((float) num23), number4: (direction1 == 1 ? 1f : 0.0f));
|
|
break;
|
|
case 20:
|
|
int num24 = (int) this.reader.ReadUInt16();
|
|
short num25 = (short) (num24 & (int) short.MaxValue);
|
|
int num26 = (uint) (num24 & 32768) > 0U ? 1 : 0;
|
|
byte num27 = 0;
|
|
if (num26 != 0)
|
|
num27 = this.reader.ReadByte();
|
|
int num28 = (int) this.reader.ReadInt16();
|
|
int num29 = (int) this.reader.ReadInt16();
|
|
if (!WorldGen.InWorld(num28, num29, 3))
|
|
break;
|
|
TileChangeType type3 = TileChangeType.None;
|
|
if (Enum.IsDefined(typeof (TileChangeType), (object) num27))
|
|
type3 = (TileChangeType) num27;
|
|
if (MessageBuffer.OnTileChangeReceived != null)
|
|
MessageBuffer.OnTileChangeReceived(num28, num29, (int) num25, type3);
|
|
BitsByte bitsByte16 = (BitsByte) (byte) 0;
|
|
BitsByte bitsByte17 = (BitsByte) (byte) 0;
|
|
for (int index6 = num28; index6 < num28 + (int) num25; ++index6)
|
|
{
|
|
for (int index7 = num29; index7 < num29 + (int) num25; ++index7)
|
|
{
|
|
if (Main.tile[index6, index7] == null)
|
|
Main.tile[index6, index7] = new Tile();
|
|
Tile tile = Main.tile[index6, index7];
|
|
bool flag5 = tile.active();
|
|
BitsByte bitsByte18 = (BitsByte) this.reader.ReadByte();
|
|
BitsByte bitsByte19 = (BitsByte) this.reader.ReadByte();
|
|
tile.active(bitsByte18[0]);
|
|
tile.wall = bitsByte18[2] ? (ushort) 1 : (ushort) 0;
|
|
bool flag6 = bitsByte18[3];
|
|
if (Main.netMode != 2)
|
|
tile.liquid = flag6 ? (byte) 1 : (byte) 0;
|
|
tile.wire(bitsByte18[4]);
|
|
tile.halfBrick(bitsByte18[5]);
|
|
tile.actuator(bitsByte18[6]);
|
|
tile.inActive(bitsByte18[7]);
|
|
tile.wire2(bitsByte19[0]);
|
|
tile.wire3(bitsByte19[1]);
|
|
if (bitsByte19[2])
|
|
tile.color(this.reader.ReadByte());
|
|
if (bitsByte19[3])
|
|
tile.wallColor(this.reader.ReadByte());
|
|
if (tile.active())
|
|
{
|
|
int type4 = (int) tile.type;
|
|
tile.type = this.reader.ReadUInt16();
|
|
if (Main.tileFrameImportant[(int) tile.type])
|
|
{
|
|
tile.frameX = this.reader.ReadInt16();
|
|
tile.frameY = this.reader.ReadInt16();
|
|
}
|
|
else if (!flag5 || (int) tile.type != type4)
|
|
{
|
|
tile.frameX = (short) -1;
|
|
tile.frameY = (short) -1;
|
|
}
|
|
byte slope = 0;
|
|
if (bitsByte19[4])
|
|
++slope;
|
|
if (bitsByte19[5])
|
|
slope += (byte) 2;
|
|
if (bitsByte19[6])
|
|
slope += (byte) 4;
|
|
tile.slope(slope);
|
|
}
|
|
tile.wire4(bitsByte19[7]);
|
|
if (tile.wall > (ushort) 0)
|
|
tile.wall = this.reader.ReadUInt16();
|
|
if (flag6)
|
|
{
|
|
tile.liquid = this.reader.ReadByte();
|
|
tile.liquidType((int) this.reader.ReadByte());
|
|
}
|
|
}
|
|
}
|
|
WorldGen.RangeFrame(num28, num29, num28 + (int) num25, num29 + (int) num25);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData((int) num1, ignoreClient: this.whoAmI, number: ((int) num25), number2: ((float) num28), number3: ((float) num29));
|
|
break;
|
|
case 21:
|
|
case 90:
|
|
int index8 = (int) this.reader.ReadInt16();
|
|
Vector2 vector2_1 = this.reader.ReadVector2();
|
|
Vector2 vector2_2 = this.reader.ReadVector2();
|
|
int Stack = (int) this.reader.ReadInt16();
|
|
int pre1 = (int) this.reader.ReadByte();
|
|
int num30 = (int) this.reader.ReadByte();
|
|
int type5 = (int) this.reader.ReadInt16();
|
|
if (Main.netMode == 1)
|
|
{
|
|
if (type5 == 0)
|
|
{
|
|
Main.item[index8].active = false;
|
|
break;
|
|
}
|
|
int index9 = index8;
|
|
Item obj = Main.item[index9];
|
|
ItemSyncPersistentStats syncPersistentStats = new ItemSyncPersistentStats();
|
|
syncPersistentStats.CopyFrom(obj);
|
|
bool flag7 = (obj.newAndShiny || obj.netID != type5) && ItemSlot.Options.HighlightNewItems && (type5 < 0 || type5 >= 5045 || !ItemID.Sets.NeverAppearsAsNewInInventory[type5]);
|
|
obj.netDefaults(type5);
|
|
obj.newAndShiny = flag7;
|
|
obj.Prefix(pre1);
|
|
obj.stack = Stack;
|
|
obj.position = vector2_1;
|
|
obj.velocity = vector2_2;
|
|
obj.active = true;
|
|
if (num1 == (byte) 90)
|
|
{
|
|
obj.instanced = true;
|
|
obj.playerIndexTheItemIsReservedFor = Main.myPlayer;
|
|
obj.keepTime = 600;
|
|
}
|
|
obj.wet = Collision.WetCollision(obj.position, obj.width, obj.height);
|
|
syncPersistentStats.PasteInto(obj);
|
|
break;
|
|
}
|
|
if (Main.timeItemSlotCannotBeReusedFor[index8] > 0)
|
|
break;
|
|
if (type5 == 0)
|
|
{
|
|
if (index8 >= 400)
|
|
break;
|
|
Main.item[index8].active = false;
|
|
NetMessage.TrySendData(21, number: index8);
|
|
break;
|
|
}
|
|
bool flag8 = false;
|
|
if (index8 == 400)
|
|
flag8 = true;
|
|
if (flag8)
|
|
{
|
|
Item obj = new Item();
|
|
obj.netDefaults(type5);
|
|
index8 = Item.NewItem((int) vector2_1.X, (int) vector2_1.Y, obj.width, obj.height, obj.type, Stack, true);
|
|
}
|
|
Item obj1 = Main.item[index8];
|
|
obj1.netDefaults(type5);
|
|
obj1.Prefix(pre1);
|
|
obj1.stack = Stack;
|
|
obj1.position = vector2_1;
|
|
obj1.velocity = vector2_2;
|
|
obj1.active = true;
|
|
obj1.playerIndexTheItemIsReservedFor = Main.myPlayer;
|
|
if (flag8)
|
|
{
|
|
NetMessage.TrySendData(21, number: index8);
|
|
if (num30 == 0)
|
|
{
|
|
Main.item[index8].ownIgnore = this.whoAmI;
|
|
Main.item[index8].ownTime = 100;
|
|
}
|
|
Main.item[index8].FindOwner(index8);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(21, ignoreClient: this.whoAmI, number: index8);
|
|
break;
|
|
case 22:
|
|
int number12 = (int) this.reader.ReadInt16();
|
|
int num31 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2 && Main.item[number12].playerIndexTheItemIsReservedFor != this.whoAmI)
|
|
break;
|
|
Main.item[number12].playerIndexTheItemIsReservedFor = num31;
|
|
Main.item[number12].keepTime = num31 != Main.myPlayer ? 0 : 15;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
Main.item[number12].playerIndexTheItemIsReservedFor = (int) byte.MaxValue;
|
|
Main.item[number12].keepTime = 15;
|
|
NetMessage.TrySendData(22, number: number12);
|
|
break;
|
|
case 23:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index10 = (int) this.reader.ReadInt16();
|
|
Vector2 vector2_3 = this.reader.ReadVector2();
|
|
Vector2 vector2_4 = this.reader.ReadVector2();
|
|
int num32 = (int) this.reader.ReadUInt16();
|
|
if (num32 == (int) ushort.MaxValue)
|
|
num32 = 0;
|
|
BitsByte bitsByte20 = (BitsByte) this.reader.ReadByte();
|
|
BitsByte bitsByte21 = (BitsByte) this.reader.ReadByte();
|
|
float[] numArray1 = new float[NPC.maxAI];
|
|
for (int index11 = 0; index11 < NPC.maxAI; ++index11)
|
|
numArray1[index11] = !bitsByte20[index11 + 2] ? 0.0f : this.reader.ReadSingle();
|
|
int Type1 = (int) this.reader.ReadInt16();
|
|
int? nullable = new int?(1);
|
|
if (bitsByte21[0])
|
|
nullable = new int?((int) this.reader.ReadByte());
|
|
float num33 = 1f;
|
|
if (bitsByte21[2])
|
|
num33 = this.reader.ReadSingle();
|
|
int num34 = 0;
|
|
if (!bitsByte20[7])
|
|
{
|
|
switch (this.reader.ReadByte())
|
|
{
|
|
case 2:
|
|
num34 = (int) this.reader.ReadInt16();
|
|
break;
|
|
case 4:
|
|
num34 = this.reader.ReadInt32();
|
|
break;
|
|
default:
|
|
num34 = (int) this.reader.ReadSByte();
|
|
break;
|
|
}
|
|
}
|
|
int oldType = -1;
|
|
NPC npc1 = Main.npc[index10];
|
|
if (npc1.active && Main.multiplayerNPCSmoothingRange > 0 && (double) Vector2.DistanceSquared(npc1.position, vector2_3) < 640000.0)
|
|
npc1.netOffset += npc1.position - vector2_3;
|
|
if (!npc1.active || npc1.netID != Type1)
|
|
{
|
|
npc1.netOffset *= 0.0f;
|
|
if (npc1.active)
|
|
oldType = npc1.type;
|
|
npc1.active = true;
|
|
npc1.SetDefaults(Type1);
|
|
}
|
|
npc1.position = vector2_3;
|
|
npc1.velocity = vector2_4;
|
|
npc1.target = num32;
|
|
npc1.direction = bitsByte20[0] ? 1 : -1;
|
|
npc1.directionY = bitsByte20[1] ? 1 : -1;
|
|
npc1.spriteDirection = bitsByte20[6] ? 1 : -1;
|
|
if (bitsByte20[7])
|
|
num34 = npc1.life = npc1.lifeMax;
|
|
else
|
|
npc1.life = num34;
|
|
if (num34 <= 0)
|
|
npc1.active = false;
|
|
npc1.SpawnedFromStatue = bitsByte21[0];
|
|
if (npc1.SpawnedFromStatue)
|
|
npc1.value = 0.0f;
|
|
for (int index12 = 0; index12 < NPC.maxAI; ++index12)
|
|
npc1.ai[index12] = numArray1[index12];
|
|
if (oldType > -1 && oldType != npc1.type)
|
|
npc1.TransformVisuals(oldType, npc1.type);
|
|
if (Type1 == 262)
|
|
NPC.plantBoss = index10;
|
|
if (Type1 == 245)
|
|
NPC.golemBoss = index10;
|
|
if (npc1.type < 0 || npc1.type >= 663 || !Main.npcCatchable[npc1.type])
|
|
break;
|
|
npc1.releaseOwner = (short) this.reader.ReadByte();
|
|
break;
|
|
case 24:
|
|
int number13 = (int) this.reader.ReadInt16();
|
|
int index13 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index13 = this.whoAmI;
|
|
Player player7 = Main.player[index13];
|
|
Main.npc[number13].StrikeNPC(player7.inventory[player7.selectedItem].damage, player7.inventory[player7.selectedItem].knockBack, player7.direction);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(24, ignoreClient: this.whoAmI, number: number13, number2: ((float) index13));
|
|
NetMessage.TrySendData(23, number: number13);
|
|
break;
|
|
case 25:
|
|
break;
|
|
case 26:
|
|
break;
|
|
case 27:
|
|
int num35 = (int) this.reader.ReadInt16();
|
|
Vector2 vector2_5 = this.reader.ReadVector2();
|
|
Vector2 vector2_6 = this.reader.ReadVector2();
|
|
int index14 = (int) this.reader.ReadByte();
|
|
int Type2 = (int) this.reader.ReadInt16();
|
|
BitsByte bitsByte22 = (BitsByte) this.reader.ReadByte();
|
|
float[] numArray2 = new float[Projectile.maxAI];
|
|
for (int key = 0; key < Projectile.maxAI; ++key)
|
|
numArray2[key] = !bitsByte22[key] ? 0.0f : this.reader.ReadSingle();
|
|
int num36 = bitsByte22[4] ? (int) this.reader.ReadInt16() : 0;
|
|
float num37 = bitsByte22[5] ? this.reader.ReadSingle() : 0.0f;
|
|
int num38 = bitsByte22[6] ? (int) this.reader.ReadInt16() : 0;
|
|
int index15 = bitsByte22[7] ? (int) this.reader.ReadInt16() : -1;
|
|
if (index15 >= 1000)
|
|
index15 = -1;
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Type2 == 949)
|
|
{
|
|
index14 = (int) byte.MaxValue;
|
|
}
|
|
else
|
|
{
|
|
index14 = this.whoAmI;
|
|
if (Main.projHostile[Type2])
|
|
break;
|
|
}
|
|
}
|
|
int number14 = 1000;
|
|
for (int index16 = 0; index16 < 1000; ++index16)
|
|
{
|
|
if (Main.projectile[index16].owner == index14 && Main.projectile[index16].identity == num35 && Main.projectile[index16].active)
|
|
{
|
|
number14 = index16;
|
|
break;
|
|
}
|
|
}
|
|
if (number14 == 1000)
|
|
{
|
|
for (int index17 = 0; index17 < 1000; ++index17)
|
|
{
|
|
if (!Main.projectile[index17].active)
|
|
{
|
|
number14 = index17;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
if (number14 == 1000)
|
|
number14 = Projectile.FindOldestProjectile();
|
|
Projectile projectile = Main.projectile[number14];
|
|
if (!projectile.active || projectile.type != Type2)
|
|
{
|
|
projectile.SetDefaults(Type2);
|
|
if (Main.netMode == 2)
|
|
++Netplay.Clients[this.whoAmI].SpamProjectile;
|
|
}
|
|
projectile.identity = num35;
|
|
projectile.position = vector2_5;
|
|
projectile.velocity = vector2_6;
|
|
projectile.type = Type2;
|
|
projectile.damage = num36;
|
|
projectile.originalDamage = num38;
|
|
projectile.knockBack = num37;
|
|
projectile.owner = index14;
|
|
for (int index18 = 0; index18 < Projectile.maxAI; ++index18)
|
|
projectile.ai[index18] = numArray2[index18];
|
|
if (index15 >= 0)
|
|
{
|
|
projectile.projUUID = index15;
|
|
Main.projectileIdentity[index14, index15] = number14;
|
|
}
|
|
projectile.ProjectileFixDesperation();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(27, ignoreClient: this.whoAmI, number: number14);
|
|
break;
|
|
case 28:
|
|
int number15 = (int) this.reader.ReadInt16();
|
|
int Damage1 = (int) this.reader.ReadInt16();
|
|
float num39 = this.reader.ReadSingle();
|
|
int hitDirection = (int) this.reader.ReadByte() - 1;
|
|
byte num40 = this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (Damage1 < 0)
|
|
Damage1 = 0;
|
|
Main.npc[number15].PlayerInteraction(this.whoAmI);
|
|
}
|
|
if (Damage1 >= 0)
|
|
{
|
|
Main.npc[number15].StrikeNPC(Damage1, num39, hitDirection, num40 == (byte) 1, fromNet: true);
|
|
}
|
|
else
|
|
{
|
|
Main.npc[number15].life = 0;
|
|
Main.npc[number15].HitEffect();
|
|
Main.npc[number15].active = false;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(28, ignoreClient: this.whoAmI, number: number15, number2: ((float) Damage1), number3: num39, number4: ((float) hitDirection), number5: ((int) num40));
|
|
if (Main.npc[number15].life <= 0)
|
|
NetMessage.TrySendData(23, number: number15);
|
|
else
|
|
Main.npc[number15].netUpdate = true;
|
|
if (Main.npc[number15].realLife < 0)
|
|
break;
|
|
if (Main.npc[Main.npc[number15].realLife].life <= 0)
|
|
{
|
|
NetMessage.TrySendData(23, number: Main.npc[number15].realLife);
|
|
break;
|
|
}
|
|
Main.npc[Main.npc[number15].realLife].netUpdate = true;
|
|
break;
|
|
case 29:
|
|
int number16 = (int) this.reader.ReadInt16();
|
|
int num41 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
num41 = this.whoAmI;
|
|
for (int index19 = 0; index19 < 1000; ++index19)
|
|
{
|
|
if (Main.projectile[index19].owner == num41 && Main.projectile[index19].identity == number16 && Main.projectile[index19].active)
|
|
{
|
|
Main.projectile[index19].Kill();
|
|
break;
|
|
}
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(29, ignoreClient: this.whoAmI, number: number16, number2: ((float) num41));
|
|
break;
|
|
case 30:
|
|
int number17 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number17 = this.whoAmI;
|
|
bool flag9 = this.reader.ReadBoolean();
|
|
Main.player[number17].hostile = flag9;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(30, ignoreClient: this.whoAmI, number: number17);
|
|
LocalizedText localizedText1 = flag9 ? Lang.mp[11] : Lang.mp[12];
|
|
Color color1 = Main.teamColor[Main.player[number17].team];
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(localizedText1.Key, (object) Main.player[number17].name), color1);
|
|
break;
|
|
case 31:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int num42 = (int) this.reader.ReadInt16();
|
|
int num43 = (int) this.reader.ReadInt16();
|
|
int chest1 = Chest.FindChest(num42, num43);
|
|
if (chest1 <= -1 || Chest.UsingChest(chest1) != -1)
|
|
break;
|
|
for (int index20 = 0; index20 < 40; ++index20)
|
|
NetMessage.TrySendData(32, this.whoAmI, number: chest1, number2: ((float) index20));
|
|
NetMessage.TrySendData(33, this.whoAmI, number: chest1);
|
|
Main.player[this.whoAmI].chest = chest1;
|
|
if (Main.myPlayer == this.whoAmI)
|
|
Main.recBigList = false;
|
|
NetMessage.TrySendData(80, ignoreClient: this.whoAmI, number: this.whoAmI, number2: ((float) chest1));
|
|
if (Main.netMode != 2 || !WorldGen.IsChestRigged(num42, num43))
|
|
break;
|
|
Wiring.SetCurrentUser(this.whoAmI);
|
|
Wiring.HitSwitch(num42, num43);
|
|
Wiring.SetCurrentUser();
|
|
NetMessage.TrySendData(59, ignoreClient: this.whoAmI, number: num42, number2: ((float) num43));
|
|
break;
|
|
case 32:
|
|
int index21 = (int) this.reader.ReadInt16();
|
|
int index22 = (int) this.reader.ReadByte();
|
|
int num44 = (int) this.reader.ReadInt16();
|
|
int pre2 = (int) this.reader.ReadByte();
|
|
int type6 = (int) this.reader.ReadInt16();
|
|
if (index21 < 0 || index21 >= 8000)
|
|
break;
|
|
if (Main.chest[index21] == null)
|
|
Main.chest[index21] = new Chest();
|
|
if (Main.chest[index21].item[index22] == null)
|
|
Main.chest[index21].item[index22] = new Item();
|
|
Main.chest[index21].item[index22].netDefaults(type6);
|
|
Main.chest[index21].item[index22].Prefix(pre2);
|
|
Main.chest[index21].item[index22].stack = num44;
|
|
Recipe.FindRecipes(true);
|
|
break;
|
|
case 33:
|
|
int num45 = (int) this.reader.ReadInt16();
|
|
int index23 = (int) this.reader.ReadInt16();
|
|
int index24 = (int) this.reader.ReadInt16();
|
|
int num46 = (int) this.reader.ReadByte();
|
|
string str1 = string.Empty;
|
|
if (num46 != 0)
|
|
{
|
|
if (num46 <= 20)
|
|
str1 = this.reader.ReadString();
|
|
else if (num46 != (int) byte.MaxValue)
|
|
num46 = 0;
|
|
}
|
|
if (Main.netMode == 1)
|
|
{
|
|
Player player8 = Main.player[Main.myPlayer];
|
|
if (player8.chest == -1)
|
|
{
|
|
Main.playerInventory = true;
|
|
SoundEngine.PlaySound(10);
|
|
}
|
|
else if (player8.chest != num45 && num45 != -1)
|
|
{
|
|
Main.playerInventory = true;
|
|
SoundEngine.PlaySound(12);
|
|
Main.recBigList = false;
|
|
}
|
|
else if (player8.chest != -1 && num45 == -1)
|
|
{
|
|
SoundEngine.PlaySound(11);
|
|
Main.recBigList = false;
|
|
}
|
|
player8.chest = num45;
|
|
player8.chestX = index23;
|
|
player8.chestY = index24;
|
|
Recipe.FindRecipes(true);
|
|
if (Main.tile[index23, index24].frameX < (short) 36 || Main.tile[index23, index24].frameX >= (short) 72)
|
|
break;
|
|
AchievementsHelper.HandleSpecialEvent(Main.player[Main.myPlayer], 16);
|
|
break;
|
|
}
|
|
if (num46 != 0)
|
|
{
|
|
int chest2 = Main.player[this.whoAmI].chest;
|
|
Chest chest3 = Main.chest[chest2];
|
|
chest3.name = str1;
|
|
NetMessage.TrySendData(69, ignoreClient: this.whoAmI, number: chest2, number2: ((float) chest3.x), number3: ((float) chest3.y));
|
|
}
|
|
Main.player[this.whoAmI].chest = num45;
|
|
Recipe.FindRecipes(true);
|
|
NetMessage.TrySendData(80, ignoreClient: this.whoAmI, number: this.whoAmI, number2: ((float) num45));
|
|
break;
|
|
case 34:
|
|
byte num47 = this.reader.ReadByte();
|
|
int index25 = (int) this.reader.ReadInt16();
|
|
int index26 = (int) this.reader.ReadInt16();
|
|
int style1 = (int) this.reader.ReadInt16();
|
|
int id = (int) this.reader.ReadInt16();
|
|
if (Main.netMode == 2)
|
|
id = 0;
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (num47 == (byte) 0)
|
|
{
|
|
int number5_1 = WorldGen.PlaceChest(index25, index26, style: style1);
|
|
if (number5_1 == -1)
|
|
{
|
|
NetMessage.TrySendData(34, this.whoAmI, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_1);
|
|
Item.NewItem(index25 * 16, index26 * 16, 32, 32, Chest.chestItemSpawn[style1], noBroadcast: true);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_1);
|
|
break;
|
|
}
|
|
if (num47 == (byte) 1 && Main.tile[index25, index26].type == (ushort) 21)
|
|
{
|
|
Tile tile = Main.tile[index25, index26];
|
|
if ((int) tile.frameX % 36 != 0)
|
|
--index25;
|
|
if ((int) tile.frameY % 36 != 0)
|
|
--index26;
|
|
int chest4 = Chest.FindChest(index25, index26);
|
|
WorldGen.KillTile(index25, index26);
|
|
if (tile.active())
|
|
break;
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number5: chest4);
|
|
break;
|
|
}
|
|
if (num47 == (byte) 2)
|
|
{
|
|
int number5_2 = WorldGen.PlaceChest(index25, index26, (ushort) 88, style: style1);
|
|
if (number5_2 == -1)
|
|
{
|
|
NetMessage.TrySendData(34, this.whoAmI, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_2);
|
|
Item.NewItem(index25 * 16, index26 * 16, 32, 32, Chest.dresserItemSpawn[style1], noBroadcast: true);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_2);
|
|
break;
|
|
}
|
|
if (num47 == (byte) 3 && Main.tile[index25, index26].type == (ushort) 88)
|
|
{
|
|
Tile tile = Main.tile[index25, index26];
|
|
int num48 = index25 - (int) tile.frameX % 54 / 18;
|
|
if ((int) tile.frameY % 36 != 0)
|
|
--index26;
|
|
int chest5 = Chest.FindChest(num48, index26);
|
|
WorldGen.KillTile(num48, index26);
|
|
if (tile.active())
|
|
break;
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) num48), number3: ((float) index26), number5: chest5);
|
|
break;
|
|
}
|
|
if (num47 == (byte) 4)
|
|
{
|
|
int number5_3 = WorldGen.PlaceChest(index25, index26, (ushort) 467, style: style1);
|
|
if (number5_3 == -1)
|
|
{
|
|
NetMessage.TrySendData(34, this.whoAmI, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_3);
|
|
Item.NewItem(index25 * 16, index26 * 16, 32, 32, Chest.chestItemSpawn2[style1], noBroadcast: true);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number4: ((float) style1), number5: number5_3);
|
|
break;
|
|
}
|
|
if (num47 != (byte) 5 || Main.tile[index25, index26].type != (ushort) 467)
|
|
break;
|
|
Tile tile1 = Main.tile[index25, index26];
|
|
if ((int) tile1.frameX % 36 != 0)
|
|
--index25;
|
|
if ((int) tile1.frameY % 36 != 0)
|
|
--index26;
|
|
int chest6 = Chest.FindChest(index25, index26);
|
|
WorldGen.KillTile(index25, index26);
|
|
if (tile1.active())
|
|
break;
|
|
NetMessage.TrySendData(34, number: ((int) num47), number2: ((float) index25), number3: ((float) index26), number5: chest6);
|
|
break;
|
|
}
|
|
switch (num47)
|
|
{
|
|
case 0:
|
|
if (id == -1)
|
|
{
|
|
WorldGen.KillTile(index25, index26);
|
|
return;
|
|
}
|
|
SoundEngine.PlaySound(0, index25 * 16, index26 * 16);
|
|
WorldGen.PlaceChestDirect(index25, index26, (ushort) 21, style1, id);
|
|
return;
|
|
case 2:
|
|
if (id == -1)
|
|
{
|
|
WorldGen.KillTile(index25, index26);
|
|
return;
|
|
}
|
|
SoundEngine.PlaySound(0, index25 * 16, index26 * 16);
|
|
WorldGen.PlaceDresserDirect(index25, index26, (ushort) 88, style1, id);
|
|
return;
|
|
case 4:
|
|
if (id == -1)
|
|
{
|
|
WorldGen.KillTile(index25, index26);
|
|
return;
|
|
}
|
|
SoundEngine.PlaySound(0, index25 * 16, index26 * 16);
|
|
WorldGen.PlaceChestDirect(index25, index26, (ushort) 467, style1, id);
|
|
return;
|
|
default:
|
|
Chest.DestroyChestDirect(index25, index26, id);
|
|
WorldGen.KillTile(index25, index26);
|
|
return;
|
|
}
|
|
case 35:
|
|
int number18 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number18 = this.whoAmI;
|
|
int healAmount1 = (int) this.reader.ReadInt16();
|
|
if (number18 != Main.myPlayer || Main.ServerSideCharacter)
|
|
Main.player[number18].HealEffect(healAmount1);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(35, ignoreClient: this.whoAmI, number: number18, number2: ((float) healAmount1));
|
|
break;
|
|
case 36:
|
|
int number19 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number19 = this.whoAmI;
|
|
Player player9 = Main.player[number19];
|
|
player9.zone1 = (BitsByte) this.reader.ReadByte();
|
|
player9.zone2 = (BitsByte) this.reader.ReadByte();
|
|
player9.zone3 = (BitsByte) this.reader.ReadByte();
|
|
player9.zone4 = (BitsByte) this.reader.ReadByte();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(36, ignoreClient: this.whoAmI, number: number19);
|
|
break;
|
|
case 37:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
if (Main.autoPass)
|
|
{
|
|
NetMessage.TrySendData(38);
|
|
Main.autoPass = false;
|
|
break;
|
|
}
|
|
Netplay.ServerPassword = "";
|
|
Main.menuMode = 31;
|
|
break;
|
|
case 38:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
if (this.reader.ReadString() == Netplay.ServerPassword)
|
|
{
|
|
Netplay.Clients[this.whoAmI].State = 1;
|
|
NetMessage.TrySendData(3, this.whoAmI);
|
|
break;
|
|
}
|
|
NetMessage.TrySendData(2, this.whoAmI, text: Lang.mp[1].ToNetworkText());
|
|
break;
|
|
case 39:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int number20 = (int) this.reader.ReadInt16();
|
|
Main.item[number20].playerIndexTheItemIsReservedFor = (int) byte.MaxValue;
|
|
NetMessage.TrySendData(22, number: number20);
|
|
break;
|
|
case 40:
|
|
int number21 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number21 = this.whoAmI;
|
|
int npcIndex = (int) this.reader.ReadInt16();
|
|
Main.player[number21].SetTalkNPC(npcIndex, true);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(40, ignoreClient: this.whoAmI, number: number21);
|
|
break;
|
|
case 41:
|
|
int number22 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number22 = this.whoAmI;
|
|
Player player10 = Main.player[number22];
|
|
float num49 = this.reader.ReadSingle();
|
|
int num50 = (int) this.reader.ReadInt16();
|
|
player10.itemRotation = num49;
|
|
player10.itemAnimation = num50;
|
|
player10.channel = player10.inventory[player10.selectedItem].channel;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(41, ignoreClient: this.whoAmI, number: number22);
|
|
break;
|
|
case 42:
|
|
int index27 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index27 = this.whoAmI;
|
|
else if (Main.myPlayer == index27 && !Main.ServerSideCharacter)
|
|
break;
|
|
int num51 = (int) this.reader.ReadInt16();
|
|
int num52 = (int) this.reader.ReadInt16();
|
|
Main.player[index27].statMana = num51;
|
|
Main.player[index27].statManaMax = num52;
|
|
break;
|
|
case 43:
|
|
int number23 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number23 = this.whoAmI;
|
|
int manaAmount = (int) this.reader.ReadInt16();
|
|
if (number23 != Main.myPlayer)
|
|
Main.player[number23].ManaEffect(manaAmount);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(43, ignoreClient: this.whoAmI, number: number23, number2: ((float) manaAmount));
|
|
break;
|
|
case 44:
|
|
break;
|
|
case 45:
|
|
int number24 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number24 = this.whoAmI;
|
|
int index28 = (int) this.reader.ReadByte();
|
|
Player player11 = Main.player[number24];
|
|
int team = player11.team;
|
|
player11.team = index28;
|
|
Color color2 = Main.teamColor[index28];
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(45, ignoreClient: this.whoAmI, number: number24);
|
|
LocalizedText localizedText2 = Lang.mp[13 + index28];
|
|
if (index28 == 5)
|
|
localizedText2 = Lang.mp[22];
|
|
for (int playerId = 0; playerId < (int) byte.MaxValue; ++playerId)
|
|
{
|
|
if (playerId == this.whoAmI || team > 0 && Main.player[playerId].team == team || index28 > 0 && Main.player[playerId].team == index28)
|
|
ChatHelper.SendChatMessageToClient(NetworkText.FromKey(localizedText2.Key, (object) player11.name), color2, playerId);
|
|
}
|
|
break;
|
|
case 46:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int number25 = Sign.ReadSign((int) this.reader.ReadInt16(), (int) this.reader.ReadInt16());
|
|
if (number25 < 0)
|
|
break;
|
|
NetMessage.TrySendData(47, this.whoAmI, number: number25, number2: ((float) this.whoAmI));
|
|
break;
|
|
case 47:
|
|
int index29 = (int) this.reader.ReadInt16();
|
|
int num53 = (int) this.reader.ReadInt16();
|
|
int num54 = (int) this.reader.ReadInt16();
|
|
string text1 = this.reader.ReadString();
|
|
int num55 = (int) this.reader.ReadByte();
|
|
BitsByte bitsByte23 = (BitsByte) this.reader.ReadByte();
|
|
if (index29 < 0 || index29 >= 1000)
|
|
break;
|
|
string str2 = (string) null;
|
|
if (Main.sign[index29] != null)
|
|
str2 = Main.sign[index29].text;
|
|
Main.sign[index29] = new Sign();
|
|
Main.sign[index29].x = num53;
|
|
Main.sign[index29].y = num54;
|
|
Sign.TextSign(index29, text1);
|
|
if (Main.netMode == 2 && str2 != text1)
|
|
{
|
|
num55 = this.whoAmI;
|
|
NetMessage.TrySendData(47, ignoreClient: this.whoAmI, number: index29, number2: ((float) num55));
|
|
}
|
|
if (Main.netMode != 1 || num55 != Main.myPlayer || Main.sign[index29] == null || bitsByte23[0])
|
|
break;
|
|
Main.playerInventory = false;
|
|
Main.player[Main.myPlayer].SetTalkNPC(-1, true);
|
|
Main.npcChatCornerItem = 0;
|
|
Main.editSign = false;
|
|
SoundEngine.PlaySound(10);
|
|
Main.player[Main.myPlayer].sign = index29;
|
|
Main.npcChatText = Main.sign[index29].text;
|
|
break;
|
|
case 48:
|
|
int i1 = (int) this.reader.ReadInt16();
|
|
int j1 = (int) this.reader.ReadInt16();
|
|
byte num56 = this.reader.ReadByte();
|
|
byte num57 = this.reader.ReadByte();
|
|
if (Main.netMode == 2 && Netplay.SpamCheck)
|
|
{
|
|
int whoAmI = this.whoAmI;
|
|
int num58 = (int) ((double) Main.player[whoAmI].position.X + (double) (Main.player[whoAmI].width / 2));
|
|
int num59 = (int) ((double) Main.player[whoAmI].position.Y + (double) (Main.player[whoAmI].height / 2));
|
|
int num60 = 10;
|
|
int num61 = num58 - num60;
|
|
int num62 = num58 + num60;
|
|
int num63 = num59 - num60;
|
|
int num64 = num59 + num60;
|
|
if (i1 < num61 || i1 > num62 || j1 < num63 || j1 > num64)
|
|
{
|
|
NetMessage.BootPlayer(this.whoAmI, NetworkText.FromKey("Net.CheatingLiquidSpam"));
|
|
break;
|
|
}
|
|
}
|
|
if (Main.tile[i1, j1] == null)
|
|
Main.tile[i1, j1] = new Tile();
|
|
lock (Main.tile[i1, j1])
|
|
{
|
|
Main.tile[i1, j1].liquid = num56;
|
|
Main.tile[i1, j1].liquidType((int) num57);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
WorldGen.SquareTileFrame(i1, j1);
|
|
break;
|
|
}
|
|
case 49:
|
|
if (Netplay.Connection.State != 6)
|
|
break;
|
|
Netplay.Connection.State = 10;
|
|
Main.ActivePlayerFileData.StartPlayTimer();
|
|
Player.Hooks.EnterWorld(Main.myPlayer);
|
|
Main.player[Main.myPlayer].Spawn(PlayerSpawnContext.SpawningIntoWorld);
|
|
break;
|
|
case 50:
|
|
int number26 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number26 = this.whoAmI;
|
|
else if (number26 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
break;
|
|
Player player12 = Main.player[number26];
|
|
for (int index30 = 0; index30 < 22; ++index30)
|
|
{
|
|
player12.buffType[index30] = (int) this.reader.ReadUInt16();
|
|
player12.buffTime[index30] = player12.buffType[index30] <= 0 ? 0 : 60;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(50, ignoreClient: this.whoAmI, number: number26);
|
|
break;
|
|
case 51:
|
|
byte num65 = this.reader.ReadByte();
|
|
byte num66 = this.reader.ReadByte();
|
|
switch (num66)
|
|
{
|
|
case 1:
|
|
NPC.SpawnSkeletron();
|
|
return;
|
|
case 2:
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.TrySendData(51, ignoreClient: this.whoAmI, number: ((int) num65), number2: ((float) num66));
|
|
return;
|
|
}
|
|
SoundEngine.PlaySound(SoundID.Item1, (int) Main.player[(int) num65].position.X, (int) Main.player[(int) num65].position.Y);
|
|
return;
|
|
case 3:
|
|
if (Main.netMode != 2)
|
|
return;
|
|
Main.Sundialing();
|
|
return;
|
|
case 4:
|
|
Main.npc[(int) num65].BigMimicSpawnSmoke();
|
|
return;
|
|
default:
|
|
return;
|
|
}
|
|
case 52:
|
|
int num67 = (int) this.reader.ReadByte();
|
|
int num68 = (int) this.reader.ReadInt16();
|
|
int num69 = (int) this.reader.ReadInt16();
|
|
if (num67 == 1)
|
|
{
|
|
Chest.Unlock(num68, num69);
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.TrySendData(52, ignoreClient: this.whoAmI, number2: ((float) num67), number3: ((float) num68), number4: ((float) num69));
|
|
NetMessage.SendTileSquare(-1, num68, num69, 2);
|
|
}
|
|
}
|
|
if (num67 != 2)
|
|
break;
|
|
WorldGen.UnlockDoor(num68, num69);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(52, ignoreClient: this.whoAmI, number2: ((float) num67), number3: ((float) num68), number4: ((float) num69));
|
|
NetMessage.SendTileSquare(-1, num68, num69, 2);
|
|
break;
|
|
case 53:
|
|
int number27 = (int) this.reader.ReadInt16();
|
|
int type7 = (int) this.reader.ReadUInt16();
|
|
int time1 = (int) this.reader.ReadInt16();
|
|
Main.npc[number27].AddBuff(type7, time1, true);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(54, number: number27);
|
|
break;
|
|
case 54:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index31 = (int) this.reader.ReadInt16();
|
|
NPC npc2 = Main.npc[index31];
|
|
for (int index32 = 0; index32 < 5; ++index32)
|
|
{
|
|
npc2.buffType[index32] = (int) this.reader.ReadUInt16();
|
|
npc2.buffTime[index32] = (int) this.reader.ReadInt16();
|
|
}
|
|
break;
|
|
case 55:
|
|
int index33 = (int) this.reader.ReadByte();
|
|
int type8 = (int) this.reader.ReadUInt16();
|
|
int timeToAdd = this.reader.ReadInt32();
|
|
if (Main.netMode == 2 && index33 != this.whoAmI && !Main.pvpBuff[type8])
|
|
break;
|
|
if (Main.netMode == 1 && index33 == Main.myPlayer)
|
|
{
|
|
Main.player[index33].AddBuff(type8, timeToAdd);
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(55, index33, number: index33, number2: ((float) type8), number3: ((float) timeToAdd));
|
|
break;
|
|
case 56:
|
|
int number28 = (int) this.reader.ReadInt16();
|
|
if (number28 < 0 || number28 >= 200)
|
|
break;
|
|
if (Main.netMode == 1)
|
|
{
|
|
string str3 = this.reader.ReadString();
|
|
Main.npc[number28].GivenName = str3;
|
|
int num70 = this.reader.ReadInt32();
|
|
Main.npc[number28].townNpcVariationIndex = num70;
|
|
break;
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(56, this.whoAmI, number: number28);
|
|
break;
|
|
case 57:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
WorldGen.tGood = this.reader.ReadByte();
|
|
WorldGen.tEvil = this.reader.ReadByte();
|
|
WorldGen.tBlood = this.reader.ReadByte();
|
|
break;
|
|
case 58:
|
|
int index34 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index34 = this.whoAmI;
|
|
float num71 = this.reader.ReadSingle();
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.TrySendData(58, ignoreClient: this.whoAmI, number: this.whoAmI, number2: num71);
|
|
break;
|
|
}
|
|
Player player13 = Main.player[index34];
|
|
int type9 = player13.inventory[player13.selectedItem].type;
|
|
switch (type9)
|
|
{
|
|
case 4057:
|
|
case 4372:
|
|
case 4715:
|
|
player13.PlayGuitarChord(num71);
|
|
return;
|
|
case 4673:
|
|
player13.PlayDrums(num71);
|
|
return;
|
|
default:
|
|
Main.musicPitch = num71;
|
|
LegacySoundStyle type10 = SoundID.Item26;
|
|
if (type9 == 507)
|
|
type10 = SoundID.Item35;
|
|
if (type9 == 1305)
|
|
type10 = SoundID.Item47;
|
|
SoundEngine.PlaySound(type10, player13.position);
|
|
return;
|
|
}
|
|
case 59:
|
|
int num72 = (int) this.reader.ReadInt16();
|
|
int j2 = (int) this.reader.ReadInt16();
|
|
Wiring.SetCurrentUser(this.whoAmI);
|
|
Wiring.HitSwitch(num72, j2);
|
|
Wiring.SetCurrentUser();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(59, ignoreClient: this.whoAmI, number: num72, number2: ((float) j2));
|
|
break;
|
|
case 60:
|
|
int n = (int) this.reader.ReadInt16();
|
|
int x1 = (int) this.reader.ReadInt16();
|
|
int y4 = (int) this.reader.ReadInt16();
|
|
byte num73 = this.reader.ReadByte();
|
|
if (n >= 200)
|
|
{
|
|
NetMessage.BootPlayer(this.whoAmI, NetworkText.FromKey("Net.CheatingInvalid"));
|
|
break;
|
|
}
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.npc[n].homeless = num73 == (byte) 1;
|
|
Main.npc[n].homeTileX = x1;
|
|
Main.npc[n].homeTileY = y4;
|
|
if (num73 == (byte) 1)
|
|
{
|
|
WorldGen.TownManager.KickOut(Main.npc[n].type);
|
|
break;
|
|
}
|
|
if (num73 != (byte) 2)
|
|
break;
|
|
WorldGen.TownManager.SetRoom(Main.npc[n].type, x1, y4);
|
|
break;
|
|
}
|
|
if (num73 == (byte) 1)
|
|
{
|
|
WorldGen.kickOut(n);
|
|
break;
|
|
}
|
|
WorldGen.moveRoom(x1, y4, n);
|
|
break;
|
|
case 61:
|
|
int plr = (int) this.reader.ReadInt16();
|
|
int Type3 = (int) this.reader.ReadInt16();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
if (Type3 >= 0 && Type3 < 663 && NPCID.Sets.MPAllowedEnemies[Type3])
|
|
{
|
|
if (NPC.AnyNPCs(Type3))
|
|
break;
|
|
NPC.SpawnOnPlayer(plr, Type3);
|
|
break;
|
|
}
|
|
switch (Type3)
|
|
{
|
|
case -14:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Misc.LicenseBunnyUsed"), new Color(50, (int) byte.MaxValue, 130));
|
|
NPC.boughtBunny = true;
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -13:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Misc.LicenseDogUsed"), new Color(50, (int) byte.MaxValue, 130));
|
|
NPC.boughtDog = true;
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -12:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Misc.LicenseCatUsed"), new Color(50, (int) byte.MaxValue, 130));
|
|
NPC.boughtCat = true;
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -11:
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Misc.CombatBookUsed"), new Color(50, (int) byte.MaxValue, 130));
|
|
NPC.combatBookWasUsed = true;
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -10:
|
|
if (Main.dayTime || Main.bloodMoon)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[8].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
Main.bloodMoon = true;
|
|
if (Main.GetMoonPhase() == MoonPhase.Empty)
|
|
Main.moonPhase = 5;
|
|
AchievementsHelper.NotifyProgressionEvent(4);
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -8:
|
|
if (!NPC.downedGolemBoss || !Main.hardMode || NPC.AnyDanger() || NPC.AnyoneNearCultists())
|
|
return;
|
|
WorldGen.StartImpendingDoom();
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -7:
|
|
Main.invasionDelay = 0;
|
|
Main.StartInvasion(4);
|
|
NetMessage.TrySendData(7);
|
|
NetMessage.TrySendData(78, number2: 1f, number3: ((float) (Main.invasionType + 3)));
|
|
return;
|
|
case -6:
|
|
if (!Main.dayTime || Main.eclipse)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[20].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
Main.eclipse = true;
|
|
NetMessage.TrySendData(7);
|
|
return;
|
|
case -5:
|
|
if (Main.dayTime || DD2Event.Ongoing)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[34].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
Main.startSnowMoon();
|
|
NetMessage.TrySendData(7);
|
|
NetMessage.TrySendData(78, number2: 1f, number3: 1f, number4: 1f);
|
|
return;
|
|
case -4:
|
|
if (Main.dayTime || DD2Event.Ongoing)
|
|
return;
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey(Lang.misc[31].Key), new Color(50, (int) byte.MaxValue, 130));
|
|
Main.startPumpkinMoon();
|
|
NetMessage.TrySendData(7);
|
|
NetMessage.TrySendData(78, number2: 1f, number3: 2f, number4: 1f);
|
|
return;
|
|
default:
|
|
if (Type3 >= 0)
|
|
return;
|
|
int type11 = 1;
|
|
if (Type3 > -5)
|
|
type11 = -Type3;
|
|
if (type11 > 0 && Main.invasionType == 0)
|
|
{
|
|
Main.invasionDelay = 0;
|
|
Main.StartInvasion(type11);
|
|
}
|
|
NetMessage.TrySendData(78, number2: 1f, number3: ((float) (Main.invasionType + 3)));
|
|
return;
|
|
}
|
|
case 62:
|
|
int number29 = (int) this.reader.ReadByte();
|
|
int num74 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number29 = this.whoAmI;
|
|
if (num74 == 1)
|
|
Main.player[number29].NinjaDodge();
|
|
if (num74 == 2)
|
|
Main.player[number29].ShadowDodge();
|
|
if (num74 == 4)
|
|
Main.player[number29].BrainOfConfusionDodge();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(62, ignoreClient: this.whoAmI, number: number29, number2: ((float) num74));
|
|
break;
|
|
case 63:
|
|
int num75 = (int) this.reader.ReadInt16();
|
|
int y5 = (int) this.reader.ReadInt16();
|
|
byte color3 = this.reader.ReadByte();
|
|
WorldGen.paintTile(num75, y5, color3);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(63, ignoreClient: this.whoAmI, number: num75, number2: ((float) y5), number3: ((float) color3));
|
|
break;
|
|
case 64:
|
|
int num76 = (int) this.reader.ReadInt16();
|
|
int y6 = (int) this.reader.ReadInt16();
|
|
byte color4 = this.reader.ReadByte();
|
|
WorldGen.paintWall(num76, y6, color4);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(64, ignoreClient: this.whoAmI, number: num76, number2: ((float) y6), number3: ((float) color4));
|
|
break;
|
|
case 65:
|
|
BitsByte bitsByte24 = (BitsByte) this.reader.ReadByte();
|
|
int index35 = (int) this.reader.ReadInt16();
|
|
if (Main.netMode == 2)
|
|
index35 = this.whoAmI;
|
|
Vector2 vector2_7 = this.reader.ReadVector2();
|
|
int num77 = (int) this.reader.ReadByte();
|
|
int number30 = 0;
|
|
if (bitsByte24[0])
|
|
++number30;
|
|
if (bitsByte24[1])
|
|
number30 += 2;
|
|
bool flag10 = false;
|
|
if (bitsByte24[2])
|
|
flag10 = true;
|
|
int num78 = 0;
|
|
if (bitsByte24[3])
|
|
num78 = this.reader.ReadInt32();
|
|
if (flag10)
|
|
vector2_7 = Main.player[index35].position;
|
|
switch (number30)
|
|
{
|
|
case 0:
|
|
Main.player[index35].Teleport(vector2_7, num77, num78);
|
|
break;
|
|
case 1:
|
|
Main.npc[index35].Teleport(vector2_7, num77, num78);
|
|
break;
|
|
case 2:
|
|
Main.player[index35].Teleport(vector2_7, num77, num78);
|
|
if (Main.netMode == 2)
|
|
{
|
|
RemoteClient.CheckSection(this.whoAmI, vector2_7);
|
|
NetMessage.TrySendData(65, number2: ((float) index35), number3: vector2_7.X, number4: vector2_7.Y, number5: num77, number6: flag10.ToInt(), number7: num78);
|
|
int index36 = -1;
|
|
float num79 = 9999f;
|
|
for (int index37 = 0; index37 < (int) byte.MaxValue; ++index37)
|
|
{
|
|
if (Main.player[index37].active && index37 != this.whoAmI)
|
|
{
|
|
Vector2 vector2_8 = Main.player[index37].position - Main.player[this.whoAmI].position;
|
|
if ((double) vector2_8.Length() < (double) num79)
|
|
{
|
|
num79 = vector2_8.Length();
|
|
index36 = index37;
|
|
}
|
|
}
|
|
}
|
|
if (index36 >= 0)
|
|
{
|
|
ChatHelper.BroadcastChatMessage(NetworkText.FromKey("Game.HasTeleportedTo", (object) Main.player[this.whoAmI].name, (object) Main.player[index36].name), new Color(250, 250, 0));
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
break;
|
|
}
|
|
if (Main.netMode != 2 || number30 != 0)
|
|
break;
|
|
NetMessage.TrySendData(65, ignoreClient: this.whoAmI, number: number30, number2: ((float) index35), number3: vector2_7.X, number4: vector2_7.Y, number5: num77, number6: flag10.ToInt(), number7: num78);
|
|
break;
|
|
case 66:
|
|
int number31 = (int) this.reader.ReadByte();
|
|
int healAmount2 = (int) this.reader.ReadInt16();
|
|
if (healAmount2 <= 0)
|
|
break;
|
|
Player player14 = Main.player[number31];
|
|
player14.statLife += healAmount2;
|
|
if (player14.statLife > player14.statLifeMax2)
|
|
player14.statLife = player14.statLifeMax2;
|
|
player14.HealEffect(healAmount2, false);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(66, ignoreClient: this.whoAmI, number: number31, number2: ((float) healAmount2));
|
|
break;
|
|
case 67:
|
|
break;
|
|
case 68:
|
|
this.reader.ReadString();
|
|
break;
|
|
case 69:
|
|
int number32 = (int) this.reader.ReadInt16();
|
|
int X1 = (int) this.reader.ReadInt16();
|
|
int Y1 = (int) this.reader.ReadInt16();
|
|
if (Main.netMode == 1)
|
|
{
|
|
if (number32 < 0 || number32 >= 8000)
|
|
break;
|
|
Chest chest7 = Main.chest[number32];
|
|
if (chest7 == null)
|
|
{
|
|
chest7 = new Chest();
|
|
chest7.x = X1;
|
|
chest7.y = Y1;
|
|
Main.chest[number32] = chest7;
|
|
}
|
|
else if (chest7.x != X1 || chest7.y != Y1)
|
|
break;
|
|
chest7.name = this.reader.ReadString();
|
|
break;
|
|
}
|
|
if (number32 < -1 || number32 >= 8000)
|
|
break;
|
|
if (number32 == -1)
|
|
{
|
|
number32 = Chest.FindChest(X1, Y1);
|
|
if (number32 == -1)
|
|
break;
|
|
}
|
|
Chest chest8 = Main.chest[number32];
|
|
if (chest8.x != X1 || chest8.y != Y1)
|
|
break;
|
|
NetMessage.TrySendData(69, this.whoAmI, number: number32, number2: ((float) X1), number3: ((float) Y1));
|
|
break;
|
|
case 70:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int i2 = (int) this.reader.ReadInt16();
|
|
int who = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
who = this.whoAmI;
|
|
if (i2 >= 200 || i2 < 0)
|
|
break;
|
|
NPC.CatchNPC(i2, who);
|
|
break;
|
|
case 71:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int x2 = this.reader.ReadInt32();
|
|
int num80 = this.reader.ReadInt32();
|
|
int num81 = (int) this.reader.ReadInt16();
|
|
byte num82 = this.reader.ReadByte();
|
|
int y7 = num80;
|
|
int Type4 = num81;
|
|
int Style1 = (int) num82;
|
|
int whoAmI1 = this.whoAmI;
|
|
NPC.ReleaseNPC(x2, y7, Type4, Style1, whoAmI1);
|
|
break;
|
|
case 72:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
for (int index38 = 0; index38 < 40; ++index38)
|
|
Main.travelShop[index38] = (int) this.reader.ReadInt16();
|
|
break;
|
|
case 73:
|
|
switch (this.reader.ReadByte())
|
|
{
|
|
case 0:
|
|
Main.player[this.whoAmI].TeleportationPotion();
|
|
return;
|
|
case 1:
|
|
Main.player[this.whoAmI].MagicConch();
|
|
return;
|
|
case 2:
|
|
Main.player[this.whoAmI].DemonConch();
|
|
return;
|
|
default:
|
|
return;
|
|
}
|
|
case 74:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.anglerQuest = (int) this.reader.ReadByte();
|
|
Main.anglerQuestFinished = this.reader.ReadBoolean();
|
|
break;
|
|
case 75:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
string name = Main.player[this.whoAmI].name;
|
|
if (Main.anglerWhoFinishedToday.Contains(name))
|
|
break;
|
|
Main.anglerWhoFinishedToday.Add(name);
|
|
break;
|
|
case 76:
|
|
int number33 = (int) this.reader.ReadByte();
|
|
if (number33 == Main.myPlayer && !Main.ServerSideCharacter)
|
|
break;
|
|
if (Main.netMode == 2)
|
|
number33 = this.whoAmI;
|
|
Player player15 = Main.player[number33];
|
|
player15.anglerQuestsFinished = this.reader.ReadInt32();
|
|
player15.golferScoreAccumulated = this.reader.ReadInt32();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(76, ignoreClient: this.whoAmI, number: number33);
|
|
break;
|
|
case 77:
|
|
int type12 = (int) this.reader.ReadInt16();
|
|
ushort num83 = this.reader.ReadUInt16();
|
|
short num84 = this.reader.ReadInt16();
|
|
short num85 = this.reader.ReadInt16();
|
|
int num86 = (int) num83;
|
|
int x3 = (int) num84;
|
|
int y8 = (int) num85;
|
|
Animation.NewTemporaryAnimation(type12, (ushort) num86, x3, y8);
|
|
break;
|
|
case 78:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.ReportInvasionProgress(this.reader.ReadInt32(), this.reader.ReadInt32(), (int) this.reader.ReadSByte(), (int) this.reader.ReadSByte());
|
|
break;
|
|
case 79:
|
|
int x4 = (int) this.reader.ReadInt16();
|
|
int y9 = (int) this.reader.ReadInt16();
|
|
short num87 = this.reader.ReadInt16();
|
|
int style2 = (int) this.reader.ReadInt16();
|
|
int num88 = (int) this.reader.ReadByte();
|
|
int random = (int) this.reader.ReadSByte();
|
|
int direction2 = !this.reader.ReadBoolean() ? -1 : 1;
|
|
if (Main.netMode == 2)
|
|
{
|
|
++Netplay.Clients[this.whoAmI].SpamAddBlock;
|
|
if (!WorldGen.InWorld(x4, y9, 10) || !Netplay.Clients[this.whoAmI].TileSections[Netplay.GetSectionX(x4), Netplay.GetSectionY(y9)])
|
|
break;
|
|
}
|
|
WorldGen.PlaceObject(x4, y9, (int) num87, style: style2, alternate: num88, random: random, direction: direction2);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendObjectPlacment(this.whoAmI, x4, y9, (int) num87, style2, num88, random, direction2);
|
|
break;
|
|
case 80:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index39 = (int) this.reader.ReadByte();
|
|
int num89 = (int) this.reader.ReadInt16();
|
|
if (num89 < -3 || num89 >= 8000)
|
|
break;
|
|
Main.player[index39].chest = num89;
|
|
Recipe.FindRecipes(true);
|
|
break;
|
|
case 81:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int x5 = (int) this.reader.ReadSingle();
|
|
int num90 = (int) this.reader.ReadSingle();
|
|
Color color5 = this.reader.ReadRGB();
|
|
int amount = this.reader.ReadInt32();
|
|
int y10 = num90;
|
|
CombatText.NewText(new Rectangle(x5, y10, 0, 0), color5, amount);
|
|
break;
|
|
case 82:
|
|
NetManager.Instance.Read(this.reader, this.whoAmI, length);
|
|
break;
|
|
case 83:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index40 = (int) this.reader.ReadInt16();
|
|
int num91 = this.reader.ReadInt32();
|
|
if (index40 < 0 || index40 >= 289)
|
|
break;
|
|
NPC.killCount[index40] = num91;
|
|
break;
|
|
case 84:
|
|
int number34 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number34 = this.whoAmI;
|
|
float num92 = this.reader.ReadSingle();
|
|
Main.player[number34].stealth = num92;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(84, ignoreClient: this.whoAmI, number: number34);
|
|
break;
|
|
case 85:
|
|
int whoAmI2 = this.whoAmI;
|
|
byte num93 = this.reader.ReadByte();
|
|
if (Main.netMode != 2 || whoAmI2 >= (int) byte.MaxValue || num93 >= (byte) 58)
|
|
break;
|
|
Chest.ServerPlaceItem(this.whoAmI, (int) num93);
|
|
break;
|
|
case 86:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int key1 = this.reader.ReadInt32();
|
|
if (!this.reader.ReadBoolean())
|
|
{
|
|
TileEntity tileEntity;
|
|
if (!TileEntity.ByID.TryGetValue(key1, out tileEntity))
|
|
break;
|
|
TileEntity.ByID.Remove(key1);
|
|
TileEntity.ByPosition.Remove(tileEntity.Position);
|
|
break;
|
|
}
|
|
TileEntity tileEntity1 = TileEntity.Read(this.reader, true);
|
|
tileEntity1.ID = key1;
|
|
TileEntity.ByID[tileEntity1.ID] = tileEntity1;
|
|
TileEntity.ByPosition[tileEntity1.Position] = tileEntity1;
|
|
break;
|
|
case 87:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int num94 = (int) this.reader.ReadInt16();
|
|
int num95 = (int) this.reader.ReadInt16();
|
|
int type13 = (int) this.reader.ReadByte();
|
|
if (!WorldGen.InWorld(num94, num95) || TileEntity.ByPosition.ContainsKey(new Point16(num94, num95)))
|
|
break;
|
|
TileEntity.PlaceEntityNet(num94, num95, type13);
|
|
break;
|
|
case 88:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index41 = (int) this.reader.ReadInt16();
|
|
if (index41 < 0 || index41 > 400)
|
|
break;
|
|
Item obj2 = Main.item[index41];
|
|
BitsByte bitsByte25 = (BitsByte) this.reader.ReadByte();
|
|
if (bitsByte25[0])
|
|
obj2.color.PackedValue = this.reader.ReadUInt32();
|
|
if (bitsByte25[1])
|
|
obj2.damage = (int) this.reader.ReadUInt16();
|
|
if (bitsByte25[2])
|
|
obj2.knockBack = this.reader.ReadSingle();
|
|
if (bitsByte25[3])
|
|
obj2.useAnimation = (int) this.reader.ReadUInt16();
|
|
if (bitsByte25[4])
|
|
obj2.useTime = (int) this.reader.ReadUInt16();
|
|
if (bitsByte25[5])
|
|
obj2.shoot = (int) this.reader.ReadInt16();
|
|
if (bitsByte25[6])
|
|
obj2.shootSpeed = this.reader.ReadSingle();
|
|
if (!bitsByte25[7])
|
|
break;
|
|
bitsByte25 = (BitsByte) this.reader.ReadByte();
|
|
if (bitsByte25[0])
|
|
obj2.width = (int) this.reader.ReadInt16();
|
|
if (bitsByte25[1])
|
|
obj2.height = (int) this.reader.ReadInt16();
|
|
if (bitsByte25[2])
|
|
obj2.scale = this.reader.ReadSingle();
|
|
if (bitsByte25[3])
|
|
obj2.ammo = (int) this.reader.ReadInt16();
|
|
if (bitsByte25[4])
|
|
obj2.useAmmo = (int) this.reader.ReadInt16();
|
|
if (!bitsByte25[5])
|
|
break;
|
|
obj2.notAmmo = this.reader.ReadBoolean();
|
|
break;
|
|
case 89:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int x6 = (int) this.reader.ReadInt16();
|
|
int num96 = (int) this.reader.ReadInt16();
|
|
int num97 = (int) this.reader.ReadInt16();
|
|
int num98 = (int) this.reader.ReadByte();
|
|
int num99 = (int) this.reader.ReadInt16();
|
|
int y11 = num96;
|
|
int netid1 = num97;
|
|
int prefix1 = num98;
|
|
int stack1 = num99;
|
|
TEItemFrame.TryPlacing(x6, y11, netid1, prefix1, stack1);
|
|
break;
|
|
case 91:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int num100 = this.reader.ReadInt32();
|
|
int type14 = (int) this.reader.ReadByte();
|
|
if (type14 == (int) byte.MaxValue)
|
|
{
|
|
if (!EmoteBubble.byID.ContainsKey(num100))
|
|
break;
|
|
EmoteBubble.byID.Remove(num100);
|
|
break;
|
|
}
|
|
int meta = (int) this.reader.ReadUInt16();
|
|
int time2 = (int) this.reader.ReadUInt16();
|
|
int emotion = (int) this.reader.ReadByte();
|
|
int num101 = 0;
|
|
if (emotion < 0)
|
|
num101 = (int) this.reader.ReadInt16();
|
|
WorldUIAnchor bubbleAnchor = EmoteBubble.DeserializeNetAnchor(type14, meta);
|
|
if (type14 == 1)
|
|
Main.player[meta].emoteTime = 360;
|
|
lock (EmoteBubble.byID)
|
|
{
|
|
if (!EmoteBubble.byID.ContainsKey(num100))
|
|
{
|
|
EmoteBubble.byID[num100] = new EmoteBubble(emotion, bubbleAnchor, time2);
|
|
}
|
|
else
|
|
{
|
|
EmoteBubble.byID[num100].lifeTime = time2;
|
|
EmoteBubble.byID[num100].lifeTimeStart = time2;
|
|
EmoteBubble.byID[num100].emote = emotion;
|
|
EmoteBubble.byID[num100].anchor = bubbleAnchor;
|
|
}
|
|
EmoteBubble.byID[num100].ID = num100;
|
|
EmoteBubble.byID[num100].metadata = num101;
|
|
EmoteBubble.OnBubbleChange(num100);
|
|
break;
|
|
}
|
|
case 92:
|
|
int number35 = (int) this.reader.ReadInt16();
|
|
int num102 = this.reader.ReadInt32();
|
|
float num103 = this.reader.ReadSingle();
|
|
float num104 = this.reader.ReadSingle();
|
|
if (number35 < 0 || number35 > 200)
|
|
break;
|
|
if (Main.netMode == 1)
|
|
{
|
|
Main.npc[number35].moneyPing(new Vector2(num103, num104));
|
|
Main.npc[number35].extraValue = num102;
|
|
break;
|
|
}
|
|
Main.npc[number35].extraValue += num102;
|
|
NetMessage.TrySendData(92, number: number35, number2: ((float) Main.npc[number35].extraValue), number3: num103, number4: num104);
|
|
break;
|
|
case 93:
|
|
break;
|
|
case 95:
|
|
ushort num105 = this.reader.ReadUInt16();
|
|
int num106 = (int) this.reader.ReadByte();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
for (int index42 = 0; index42 < 1000; ++index42)
|
|
{
|
|
if (Main.projectile[index42].owner == (int) num105 && Main.projectile[index42].active && Main.projectile[index42].type == 602 && (double) Main.projectile[index42].ai[1] == (double) num106)
|
|
{
|
|
Main.projectile[index42].Kill();
|
|
NetMessage.TrySendData(29, number: Main.projectile[index42].identity, number2: ((float) num105));
|
|
break;
|
|
}
|
|
}
|
|
break;
|
|
case 96:
|
|
int number36 = (int) this.reader.ReadByte();
|
|
Player player16 = Main.player[number36];
|
|
int extraInfo1 = (int) this.reader.ReadInt16();
|
|
Vector2 newPos1 = this.reader.ReadVector2();
|
|
Vector2 vector2_9 = this.reader.ReadVector2();
|
|
player16.lastPortalColorIndex = extraInfo1 + (extraInfo1 % 2 == 0 ? 1 : -1);
|
|
player16.Teleport(newPos1, 4, extraInfo1);
|
|
player16.velocity = vector2_9;
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendData(96, number: number36, number2: newPos1.X, number3: newPos1.Y, number4: ((float) extraInfo1));
|
|
break;
|
|
case 97:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
AchievementsHelper.NotifyNPCKilledDirect(Main.player[Main.myPlayer], (int) this.reader.ReadInt16());
|
|
break;
|
|
case 98:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
AchievementsHelper.NotifyProgressionEvent((int) this.reader.ReadInt16());
|
|
break;
|
|
case 99:
|
|
int number37 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number37 = this.whoAmI;
|
|
Main.player[number37].MinionRestTargetPoint = this.reader.ReadVector2();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(99, ignoreClient: this.whoAmI, number: number37);
|
|
break;
|
|
case 100:
|
|
int index43 = (int) this.reader.ReadUInt16();
|
|
NPC npc3 = Main.npc[index43];
|
|
int extraInfo2 = (int) this.reader.ReadInt16();
|
|
Vector2 newPos2 = this.reader.ReadVector2();
|
|
Vector2 vector2_10 = this.reader.ReadVector2();
|
|
npc3.lastPortalColorIndex = extraInfo2 + (extraInfo2 % 2 == 0 ? 1 : -1);
|
|
npc3.Teleport(newPos2, 4, extraInfo2);
|
|
npc3.velocity = vector2_10;
|
|
npc3.netOffset *= 0.0f;
|
|
break;
|
|
case 101:
|
|
if (Main.netMode == 2)
|
|
break;
|
|
NPC.ShieldStrengthTowerSolar = (int) this.reader.ReadUInt16();
|
|
NPC.ShieldStrengthTowerVortex = (int) this.reader.ReadUInt16();
|
|
NPC.ShieldStrengthTowerNebula = (int) this.reader.ReadUInt16();
|
|
NPC.ShieldStrengthTowerStardust = (int) this.reader.ReadUInt16();
|
|
if (NPC.ShieldStrengthTowerSolar < 0)
|
|
NPC.ShieldStrengthTowerSolar = 0;
|
|
if (NPC.ShieldStrengthTowerVortex < 0)
|
|
NPC.ShieldStrengthTowerVortex = 0;
|
|
if (NPC.ShieldStrengthTowerNebula < 0)
|
|
NPC.ShieldStrengthTowerNebula = 0;
|
|
if (NPC.ShieldStrengthTowerStardust < 0)
|
|
NPC.ShieldStrengthTowerStardust = 0;
|
|
if (NPC.ShieldStrengthTowerSolar > NPC.LunarShieldPowerExpert)
|
|
NPC.ShieldStrengthTowerSolar = NPC.LunarShieldPowerExpert;
|
|
if (NPC.ShieldStrengthTowerVortex > NPC.LunarShieldPowerExpert)
|
|
NPC.ShieldStrengthTowerVortex = NPC.LunarShieldPowerExpert;
|
|
if (NPC.ShieldStrengthTowerNebula > NPC.LunarShieldPowerExpert)
|
|
NPC.ShieldStrengthTowerNebula = NPC.LunarShieldPowerExpert;
|
|
if (NPC.ShieldStrengthTowerStardust <= NPC.LunarShieldPowerExpert)
|
|
break;
|
|
NPC.ShieldStrengthTowerStardust = NPC.LunarShieldPowerExpert;
|
|
break;
|
|
case 102:
|
|
int index44 = (int) this.reader.ReadByte();
|
|
ushort num107 = this.reader.ReadUInt16();
|
|
Vector2 Other = this.reader.ReadVector2();
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.TrySendData(102, number: this.whoAmI, number2: ((float) num107), number3: Other.X, number4: Other.Y);
|
|
break;
|
|
}
|
|
Player player17 = Main.player[index44];
|
|
for (int index45 = 0; index45 < (int) byte.MaxValue; ++index45)
|
|
{
|
|
Player player18 = Main.player[index45];
|
|
if (player18.active && !player18.dead && (player17.team == 0 || player17.team == player18.team) && (double) player18.Distance(Other) < 700.0)
|
|
{
|
|
Vector2 vector2_11 = player17.Center - player18.Center;
|
|
Vector2 vec = Vector2.Normalize(vector2_11);
|
|
if (!vec.HasNaNs())
|
|
{
|
|
int num108 = 90;
|
|
float num109 = 0.0f;
|
|
float num110 = 0.2094395f;
|
|
Vector2 spinningpoint = new Vector2(0.0f, -8f);
|
|
Vector2 vector2_12 = new Vector2(-3f);
|
|
float num111 = 0.0f;
|
|
float num112 = 0.005f;
|
|
switch (num107)
|
|
{
|
|
case 173:
|
|
num108 = 90;
|
|
break;
|
|
case 176:
|
|
num108 = 88;
|
|
break;
|
|
case 179:
|
|
num108 = 86;
|
|
break;
|
|
}
|
|
for (int index46 = 0; (double) index46 < (double) vector2_11.Length() / 6.0; ++index46)
|
|
{
|
|
Vector2 Position = player18.Center + 6f * (float) index46 * vec + spinningpoint.RotatedBy((double) num109) + vector2_12;
|
|
num109 += num110;
|
|
int Type5 = num108;
|
|
Color newColor = new Color();
|
|
int index47 = Dust.NewDust(Position, 6, 6, Type5, Alpha: 100, newColor: newColor, Scale: 1.5f);
|
|
Main.dust[index47].noGravity = true;
|
|
Main.dust[index47].velocity = Vector2.Zero;
|
|
Main.dust[index47].fadeIn = (num111 += num112);
|
|
Main.dust[index47].velocity += vec * 1.5f;
|
|
}
|
|
}
|
|
player18.NebulaLevelup((int) num107);
|
|
}
|
|
}
|
|
break;
|
|
case 103:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
NPC.MoonLordCountdown = this.reader.ReadInt32();
|
|
break;
|
|
case 104:
|
|
if (Main.netMode != 1 || Main.npcShop <= 0)
|
|
break;
|
|
Item[] objArray = Main.instance.shop[Main.npcShop].item;
|
|
int index48 = (int) this.reader.ReadByte();
|
|
int type15 = (int) this.reader.ReadInt16();
|
|
int num113 = (int) this.reader.ReadInt16();
|
|
int pre3 = (int) this.reader.ReadByte();
|
|
int num114 = this.reader.ReadInt32();
|
|
BitsByte bitsByte26 = (BitsByte) this.reader.ReadByte();
|
|
if (index48 >= objArray.Length)
|
|
break;
|
|
objArray[index48] = new Item();
|
|
objArray[index48].netDefaults(type15);
|
|
objArray[index48].stack = num113;
|
|
objArray[index48].Prefix(pre3);
|
|
objArray[index48].value = num114;
|
|
objArray[index48].buyOnce = bitsByte26[0];
|
|
break;
|
|
case 105:
|
|
if (Main.netMode == 1)
|
|
break;
|
|
int i3 = (int) this.reader.ReadInt16();
|
|
int num115 = (int) this.reader.ReadInt16();
|
|
bool flag11 = this.reader.ReadBoolean();
|
|
int j3 = num115;
|
|
int num116 = flag11 ? 1 : 0;
|
|
WorldGen.ToggleGemLock(i3, j3, num116 != 0);
|
|
break;
|
|
case 106:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Utils.PoofOfSmoke(new HalfVector2()
|
|
{
|
|
PackedValue = this.reader.ReadUInt32()
|
|
}.ToVector2());
|
|
break;
|
|
case 107:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Color color6 = this.reader.ReadRGB();
|
|
string text2 = NetworkText.Deserialize(this.reader).ToString();
|
|
int num117 = (int) this.reader.ReadInt16();
|
|
Color c = color6;
|
|
int WidthLimit = num117;
|
|
Main.NewTextMultiline(text2, c: c, WidthLimit: WidthLimit);
|
|
break;
|
|
case 108:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int Damage2 = (int) this.reader.ReadInt16();
|
|
float KnockBack = this.reader.ReadSingle();
|
|
int x7 = (int) this.reader.ReadInt16();
|
|
int y12 = (int) this.reader.ReadInt16();
|
|
int angle = (int) this.reader.ReadInt16();
|
|
int ammo = (int) this.reader.ReadInt16();
|
|
int owner = (int) this.reader.ReadByte();
|
|
if (owner != Main.myPlayer)
|
|
break;
|
|
WorldGen.ShootFromCannon(x7, y12, angle, ammo, Damage2, KnockBack, owner);
|
|
break;
|
|
case 109:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int x8 = (int) this.reader.ReadInt16();
|
|
int num118 = (int) this.reader.ReadInt16();
|
|
int x9 = (int) this.reader.ReadInt16();
|
|
int y13 = (int) this.reader.ReadInt16();
|
|
int num119 = (int) this.reader.ReadByte();
|
|
int whoAmI3 = this.whoAmI;
|
|
WiresUI.Settings.MultiToolMode toolMode = WiresUI.Settings.ToolMode;
|
|
WiresUI.Settings.ToolMode = (WiresUI.Settings.MultiToolMode) num119;
|
|
int y14 = num118;
|
|
Wiring.MassWireOperation(new Point(x8, y14), new Point(x9, y13), Main.player[whoAmI3]);
|
|
WiresUI.Settings.ToolMode = toolMode;
|
|
break;
|
|
case 110:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int type16 = (int) this.reader.ReadInt16();
|
|
int num120 = (int) this.reader.ReadInt16();
|
|
int index49 = (int) this.reader.ReadByte();
|
|
if (index49 != Main.myPlayer)
|
|
break;
|
|
Player player19 = Main.player[index49];
|
|
for (int index50 = 0; index50 < num120; ++index50)
|
|
player19.ConsumeItem(type16);
|
|
player19.wireOperationsCooldown = 0;
|
|
break;
|
|
case 111:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
BirthdayParty.ToggleManualParty();
|
|
break;
|
|
case 112:
|
|
int number38 = (int) this.reader.ReadByte();
|
|
int x10 = this.reader.ReadInt32();
|
|
int y15 = this.reader.ReadInt32();
|
|
int num121 = (int) this.reader.ReadByte();
|
|
int num122 = (int) this.reader.ReadInt16();
|
|
switch (number38)
|
|
{
|
|
case 1:
|
|
if (Main.netMode == 1)
|
|
WorldGen.TreeGrowFX(x10, y15, num121, num122);
|
|
if (Main.netMode != 2)
|
|
return;
|
|
NetMessage.TrySendData((int) num1, number: number38, number2: ((float) x10), number3: ((float) y15), number4: ((float) num121), number5: num122);
|
|
return;
|
|
case 2:
|
|
NPC.FairyEffects(new Vector2((float) x10, (float) y15), num121);
|
|
return;
|
|
default:
|
|
return;
|
|
}
|
|
case 113:
|
|
int x11 = (int) this.reader.ReadInt16();
|
|
int y16 = (int) this.reader.ReadInt16();
|
|
if (Main.netMode != 2 || Main.snowMoon || Main.pumpkinMoon)
|
|
break;
|
|
if (DD2Event.WouldFailSpawningHere(x11, y16))
|
|
DD2Event.FailureMessage(this.whoAmI);
|
|
DD2Event.SummonCrystal(x11, y16);
|
|
break;
|
|
case 114:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
DD2Event.WipeEntities();
|
|
break;
|
|
case 115:
|
|
int number39 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
number39 = this.whoAmI;
|
|
Main.player[number39].MinionAttackTargetNPC = (int) this.reader.ReadInt16();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(115, ignoreClient: this.whoAmI, number: number39);
|
|
break;
|
|
case 116:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
DD2Event.TimeLeftBetweenWaves = this.reader.ReadInt32();
|
|
break;
|
|
case 117:
|
|
int playerTargetIndex1 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2 && this.whoAmI != playerTargetIndex1 && (!Main.player[playerTargetIndex1].hostile || !Main.player[this.whoAmI].hostile))
|
|
break;
|
|
PlayerDeathReason playerDeathReason1 = PlayerDeathReason.FromReader(this.reader);
|
|
int num123 = (int) this.reader.ReadInt16();
|
|
int num124 = (int) this.reader.ReadByte() - 1;
|
|
BitsByte bitsByte27 = (BitsByte) this.reader.ReadByte();
|
|
bool flag12 = bitsByte27[0];
|
|
bool pvp1 = bitsByte27[1];
|
|
int num125 = (int) this.reader.ReadSByte();
|
|
Main.player[playerTargetIndex1].Hurt(playerDeathReason1, num123, num124, pvp1, true, flag12, num125);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendPlayerHurt(playerTargetIndex1, playerDeathReason1, num123, num124, flag12, pvp1, num125, ignoreClient: this.whoAmI);
|
|
break;
|
|
case 118:
|
|
int playerTargetIndex2 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
playerTargetIndex2 = this.whoAmI;
|
|
PlayerDeathReason playerDeathReason2 = PlayerDeathReason.FromReader(this.reader);
|
|
int damage = (int) this.reader.ReadInt16();
|
|
int num126 = (int) this.reader.ReadByte() - 1;
|
|
bool pvp2 = ((BitsByte) this.reader.ReadByte())[0];
|
|
Main.player[playerTargetIndex2].KillMe(playerDeathReason2, (double) damage, num126, pvp2);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendPlayerDeath(playerTargetIndex2, playerDeathReason2, damage, num126, pvp2, ignoreClient: this.whoAmI);
|
|
break;
|
|
case 119:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int x12 = (int) this.reader.ReadSingle();
|
|
int num127 = (int) this.reader.ReadSingle();
|
|
Color color7 = this.reader.ReadRGB();
|
|
NetworkText networkText = NetworkText.Deserialize(this.reader);
|
|
int y17 = num127;
|
|
CombatText.NewText(new Rectangle(x12, y17, 0, 0), color7, networkText.ToString());
|
|
break;
|
|
case 120:
|
|
int index51 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index51 = this.whoAmI;
|
|
int num128 = (int) this.reader.ReadByte();
|
|
if (num128 < 0 || num128 >= 145 || Main.netMode != 2)
|
|
break;
|
|
EmoteBubble.NewBubble(num128, new WorldUIAnchor((Entity) Main.player[index51]), 360);
|
|
EmoteBubble.CheckForNPCsToReactToEmoteBubble(num128, Main.player[index51]);
|
|
break;
|
|
case 121:
|
|
int num129 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
num129 = this.whoAmI;
|
|
int key2 = this.reader.ReadInt32();
|
|
int itemIndex1 = (int) this.reader.ReadByte();
|
|
bool dye1 = false;
|
|
if (itemIndex1 >= 8)
|
|
{
|
|
dye1 = true;
|
|
itemIndex1 -= 8;
|
|
}
|
|
TileEntity tileEntity2;
|
|
if (!TileEntity.ByID.TryGetValue(key2, out tileEntity2))
|
|
{
|
|
this.reader.ReadInt32();
|
|
int num130 = (int) this.reader.ReadByte();
|
|
break;
|
|
}
|
|
if (itemIndex1 >= 8)
|
|
tileEntity2 = (TileEntity) null;
|
|
if (tileEntity2 is TEDisplayDoll teDisplayDoll4)
|
|
{
|
|
teDisplayDoll4.ReadItem(itemIndex1, this.reader, dye1);
|
|
}
|
|
else
|
|
{
|
|
this.reader.ReadInt32();
|
|
int num131 = (int) this.reader.ReadByte();
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData((int) num1, ignoreClient: num129, number: num129, number2: ((float) key2), number3: ((float) itemIndex1), number4: ((float) dye1.ToInt()));
|
|
break;
|
|
case 122:
|
|
int num132 = this.reader.ReadInt32();
|
|
int index52 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
index52 = this.whoAmI;
|
|
if (Main.netMode == 2)
|
|
{
|
|
if (num132 == -1)
|
|
{
|
|
Main.player[index52].tileEntityAnchor.Clear();
|
|
NetMessage.TrySendData((int) num1, number: num132, number2: ((float) index52));
|
|
break;
|
|
}
|
|
TileEntity tileEntity3;
|
|
if (!TileEntity.IsOccupied(num132, out int _) && TileEntity.ByID.TryGetValue(num132, out tileEntity3))
|
|
{
|
|
Main.player[index52].tileEntityAnchor.Set(num132, (int) tileEntity3.Position.X, (int) tileEntity3.Position.Y);
|
|
NetMessage.TrySendData((int) num1, number: num132, number2: ((float) index52));
|
|
}
|
|
}
|
|
if (Main.netMode != 1)
|
|
break;
|
|
if (num132 == -1)
|
|
{
|
|
Main.player[index52].tileEntityAnchor.Clear();
|
|
break;
|
|
}
|
|
TileEntity tileEntity4;
|
|
if (!TileEntity.ByID.TryGetValue(num132, out tileEntity4))
|
|
break;
|
|
TileEntity.SetInteractionAnchor(Main.player[index52], (int) tileEntity4.Position.X, (int) tileEntity4.Position.Y, num132);
|
|
break;
|
|
case 123:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int x13 = (int) this.reader.ReadInt16();
|
|
int num133 = (int) this.reader.ReadInt16();
|
|
int num134 = (int) this.reader.ReadInt16();
|
|
int num135 = (int) this.reader.ReadByte();
|
|
int num136 = (int) this.reader.ReadInt16();
|
|
int y18 = num133;
|
|
int netid2 = num134;
|
|
int prefix2 = num135;
|
|
int stack2 = num136;
|
|
TEWeaponsRack.TryPlacing(x13, y18, netid2, prefix2, stack2);
|
|
break;
|
|
case 124:
|
|
int num137 = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
num137 = this.whoAmI;
|
|
int key3 = this.reader.ReadInt32();
|
|
int itemIndex2 = (int) this.reader.ReadByte();
|
|
bool dye2 = false;
|
|
if (itemIndex2 >= 2)
|
|
{
|
|
dye2 = true;
|
|
itemIndex2 -= 2;
|
|
}
|
|
TileEntity tileEntity5;
|
|
if (!TileEntity.ByID.TryGetValue(key3, out tileEntity5))
|
|
{
|
|
this.reader.ReadInt32();
|
|
int num138 = (int) this.reader.ReadByte();
|
|
break;
|
|
}
|
|
if (itemIndex2 >= 2)
|
|
tileEntity5 = (TileEntity) null;
|
|
if (tileEntity5 is TEHatRack teHatRack4)
|
|
{
|
|
teHatRack4.ReadItem(itemIndex2, this.reader, dye2);
|
|
}
|
|
else
|
|
{
|
|
this.reader.ReadInt32();
|
|
int num139 = (int) this.reader.ReadByte();
|
|
}
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData((int) num1, ignoreClient: num137, number: num137, number2: ((float) key3), number3: ((float) itemIndex2), number4: ((float) dye2.ToInt()));
|
|
break;
|
|
case 125:
|
|
int num140 = (int) this.reader.ReadByte();
|
|
int x14 = (int) this.reader.ReadInt16();
|
|
int y19 = (int) this.reader.ReadInt16();
|
|
int pickDamage = (int) this.reader.ReadByte();
|
|
if (Main.netMode == 2)
|
|
num140 = this.whoAmI;
|
|
if (Main.netMode == 1)
|
|
Main.player[Main.myPlayer].GetOtherPlayersPickTile(x14, y19, pickDamage);
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.TrySendData(125, ignoreClient: num140, number: num140, number2: ((float) x14), number3: ((float) y19), number4: ((float) pickDamage));
|
|
break;
|
|
case 126:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
NPC.RevengeManager.AddMarkerFromReader(this.reader);
|
|
break;
|
|
case 127:
|
|
int markerUniqueID = this.reader.ReadInt32();
|
|
if (Main.netMode != 1)
|
|
break;
|
|
NPC.RevengeManager.DestroyMarker(markerUniqueID);
|
|
break;
|
|
case 128:
|
|
int num141 = (int) this.reader.ReadByte();
|
|
int num142 = (int) this.reader.ReadUInt16();
|
|
int num143 = (int) this.reader.ReadUInt16();
|
|
int numberOfHits = (int) this.reader.ReadUInt16();
|
|
int projid = (int) this.reader.ReadUInt16();
|
|
if (Main.netMode == 2)
|
|
{
|
|
NetMessage.SendData(128, ignoreClient: num141, number: num141, number2: ((float) numberOfHits), number3: ((float) projid), number5: num142, number6: num143);
|
|
break;
|
|
}
|
|
GolfHelper.ContactListener.PutBallInCup_TextAndEffects(new Point(num142, num143), num141, numberOfHits, projid);
|
|
break;
|
|
case 129:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.FixUIScale();
|
|
Main.TrySetPreparationState(Main.WorldPreparationState.ProcessingData);
|
|
break;
|
|
case 130:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int num144 = (int) this.reader.ReadUInt16();
|
|
int num145 = (int) this.reader.ReadUInt16();
|
|
int Type6 = (int) this.reader.ReadInt16();
|
|
int X2 = num144 * 16;
|
|
int num146 = num145 * 16;
|
|
NPC npc4 = new NPC();
|
|
npc4.SetDefaults(Type6);
|
|
int type17 = npc4.type;
|
|
int netId = npc4.netID;
|
|
int Y2 = num146;
|
|
int Type7 = Type6;
|
|
int number40 = NPC.NewNPC(X2, Y2, Type7);
|
|
if (netId == type17)
|
|
break;
|
|
Main.npc[number40].SetDefaults(netId);
|
|
NetMessage.TrySendData(23, number: number40);
|
|
break;
|
|
case 131:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
int index53 = (int) this.reader.ReadUInt16();
|
|
NPC npc5 = index53 >= 200 ? new NPC() : Main.npc[index53];
|
|
if (this.reader.ReadByte() != (byte) 1)
|
|
break;
|
|
int time3 = this.reader.ReadInt32();
|
|
int fromWho = (int) this.reader.ReadInt16();
|
|
npc5.GetImmuneTime(fromWho, time3);
|
|
break;
|
|
case 132:
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Point point = this.reader.ReadVector2().ToPoint();
|
|
ushort key4 = this.reader.ReadUInt16();
|
|
LegacySoundStyle legacySoundStyle = SoundID.SoundByIndex[key4];
|
|
BitsByte bitsByte28 = (BitsByte) this.reader.ReadByte();
|
|
int Style2 = !bitsByte28[0] ? legacySoundStyle.Style : this.reader.ReadInt32();
|
|
float volumeScale = !bitsByte28[1] ? legacySoundStyle.Volume : MathHelper.Clamp(this.reader.ReadSingle(), 0.0f, 1f);
|
|
float pitchOffset = !bitsByte28[2] ? legacySoundStyle.GetRandomPitch() : MathHelper.Clamp(this.reader.ReadSingle(), -1f, 1f);
|
|
SoundEngine.PlaySound(legacySoundStyle.SoundId, point.X, point.Y, Style2, volumeScale, pitchOffset);
|
|
break;
|
|
case 133:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int x15 = (int) this.reader.ReadInt16();
|
|
int num147 = (int) this.reader.ReadInt16();
|
|
int num148 = (int) this.reader.ReadInt16();
|
|
int num149 = (int) this.reader.ReadByte();
|
|
int num150 = (int) this.reader.ReadInt16();
|
|
int y20 = num147;
|
|
int netid3 = num148;
|
|
int prefix3 = num149;
|
|
int stack3 = num150;
|
|
TEFoodPlatter.TryPlacing(x15, y20, netid3, prefix3, stack3);
|
|
break;
|
|
case 134:
|
|
int index54 = (int) this.reader.ReadByte();
|
|
int num151 = this.reader.ReadInt32();
|
|
float num152 = this.reader.ReadSingle();
|
|
byte num153 = this.reader.ReadByte();
|
|
bool flag13 = this.reader.ReadBoolean();
|
|
if (Main.netMode == 2)
|
|
index54 = this.whoAmI;
|
|
Player player20 = Main.player[index54];
|
|
player20.ladyBugLuckTimeLeft = num151;
|
|
player20.torchLuck = num152;
|
|
player20.luckPotion = num153;
|
|
player20.HasGardenGnomeNearby = flag13;
|
|
player20.RecalculateLuck();
|
|
if (Main.netMode != 2)
|
|
break;
|
|
NetMessage.SendData(134, ignoreClient: index54, number: index54);
|
|
break;
|
|
case 135:
|
|
int index55 = (int) this.reader.ReadByte();
|
|
if (Main.netMode != 1)
|
|
break;
|
|
Main.player[index55].immuneAlpha = (int) byte.MaxValue;
|
|
break;
|
|
case 136:
|
|
for (int index56 = 0; index56 < 2; ++index56)
|
|
{
|
|
for (int index57 = 0; index57 < 3; ++index57)
|
|
NPC.cavernMonsterType[index56, index57] = (int) this.reader.ReadUInt16();
|
|
}
|
|
break;
|
|
case 137:
|
|
if (Main.netMode != 2)
|
|
break;
|
|
int index58 = (int) this.reader.ReadInt16();
|
|
int buffTypeToRemove = (int) this.reader.ReadUInt16();
|
|
if (index58 < 0 || index58 >= 200)
|
|
break;
|
|
Main.npc[index58].RequestBuffRemoval(buffTypeToRemove);
|
|
break;
|
|
case 139:
|
|
if (Main.netMode == 2)
|
|
break;
|
|
int index59 = (int) this.reader.ReadByte();
|
|
bool flag14 = this.reader.ReadBoolean();
|
|
Main.countsAsHostForGameplay[index59] = flag14;
|
|
break;
|
|
default:
|
|
if (Netplay.Clients[this.whoAmI].State != 0)
|
|
break;
|
|
NetMessage.BootPlayer(this.whoAmI, Lang.mp[2].ToNetworkText());
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|